@marinoscar/platform-api 0.1.0-next.21 → 0.1.0-next.23
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 +28 -0
- package/dist/ai/features/ai-feature.registry.d.ts +7 -0
- package/dist/ai/features/ai-feature.registry.d.ts.map +1 -1
- package/dist/ai/features/ai-feature.registry.js +3 -0
- package/dist/ai/features/ai-feature.registry.js.map +1 -1
- package/dist/ai/keys/ai-key-resolver.service.d.ts +16 -0
- package/dist/ai/keys/ai-key-resolver.service.d.ts.map +1 -1
- package/dist/ai/keys/ai-key-resolver.service.js +44 -0
- package/dist/ai/keys/ai-key-resolver.service.js.map +1 -1
- package/dist/ai/keys/usable-models.service.d.ts +13 -1
- package/dist/ai/keys/usable-models.service.d.ts.map +1 -1
- package/dist/ai/keys/usable-models.service.js +37 -12
- package/dist/ai/keys/usable-models.service.js.map +1 -1
- package/dist/ai/runtime/ai-limits.service.d.ts +2 -1
- package/dist/ai/runtime/ai-limits.service.d.ts.map +1 -1
- package/dist/ai/runtime/ai-limits.service.js +7 -2
- package/dist/ai/runtime/ai-limits.service.js.map +1 -1
- package/dist/ai/runtime/ai-runtime.types.d.ts +46 -1
- package/dist/ai/runtime/ai-runtime.types.d.ts.map +1 -1
- package/dist/ai/runtime/ai-runtime.types.js.map +1 -1
- package/dist/ai/runtime/ai.service.d.ts +142 -5
- package/dist/ai/runtime/ai.service.d.ts.map +1 -1
- package/dist/ai/runtime/ai.service.js +353 -46
- package/dist/ai/runtime/ai.service.js.map +1 -1
- package/dist/ai/runtime/index.d.ts +1 -1
- package/dist/ai/runtime/index.d.ts.map +1 -1
- package/dist/ai/runtime/target-resolver.d.ts +2 -2
- package/dist/ai/runtime/target-resolver.d.ts.map +1 -1
- package/dist/ai/runtime/target-resolver.js +2 -1
- package/dist/ai/runtime/target-resolver.js.map +1 -1
- package/dist/ai/testing/conformance/ai-key-policy.suite.d.ts.map +1 -1
- package/dist/ai/testing/conformance/ai-key-policy.suite.js +54 -0
- package/dist/ai/testing/conformance/ai-key-policy.suite.js.map +1 -1
- package/dist/ai/testing/conformance/ai-secret-egress.suite.d.ts.map +1 -1
- package/dist/ai/testing/conformance/ai-secret-egress.suite.js +59 -0
- package/dist/ai/testing/conformance/ai-secret-egress.suite.js.map +1 -1
- package/dist/identity/device-auth/device-auth.service.d.ts +9 -2
- package/dist/identity/device-auth/device-auth.service.d.ts.map +1 -1
- package/dist/identity/device-auth/device-auth.service.js +44 -4
- package/dist/identity/device-auth/device-auth.service.js.map +1 -1
- package/dist/identity/device-auth/dto/device-code-request.dto.d.ts +12 -0
- package/dist/identity/device-auth/dto/device-code-request.dto.d.ts.map +1 -1
- package/dist/identity/identity.options.d.ts +25 -0
- package/dist/identity/identity.options.d.ts.map +1 -1
- package/dist/identity/identity.options.js +11 -0
- package/dist/identity/identity.options.js.map +1 -1
- package/dist/identity/index.d.ts +1 -1
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/nodes/current-node.decorator.d.ts +18 -0
- package/dist/nodes/current-node.decorator.d.ts.map +1 -0
- package/dist/nodes/current-node.decorator.js +28 -0
- package/dist/nodes/current-node.decorator.js.map +1 -0
- package/dist/nodes/index.d.ts +8 -0
- package/dist/nodes/index.d.ts.map +1 -1
- package/dist/nodes/index.js +21 -2
- package/dist/nodes/index.js.map +1 -1
- package/dist/nodes/node-ownership.d.ts +34 -0
- package/dist/nodes/node-ownership.d.ts.map +1 -0
- package/dist/nodes/node-ownership.js +92 -0
- package/dist/nodes/node-ownership.js.map +1 -0
- package/dist/nodes/node-route.decorator.d.ts +31 -0
- package/dist/nodes/node-route.decorator.d.ts.map +1 -0
- package/dist/nodes/node-route.decorator.js +54 -0
- package/dist/nodes/node-route.decorator.js.map +1 -0
- package/dist/nodes/node-route.guard.d.ts +22 -0
- package/dist/nodes/node-route.guard.d.ts.map +1 -0
- package/dist/nodes/node-route.guard.js +74 -0
- package/dist/nodes/node-route.guard.js.map +1 -0
- package/dist/nodes/node-route.module.d.ts +21 -0
- package/dist/nodes/node-route.module.d.ts.map +1 -0
- package/dist/nodes/node-route.module.js +99 -0
- package/dist/nodes/node-route.module.js.map +1 -0
- package/dist/nodes/node-route.options.d.ts +59 -0
- package/dist/nodes/node-route.options.d.ts.map +1 -0
- package/dist/nodes/node-route.options.js +29 -0
- package/dist/nodes/node-route.options.js.map +1 -0
- package/dist/nodes/node-route.paths.d.ts +47 -0
- package/dist/nodes/node-route.paths.d.ts.map +1 -0
- package/dist/nodes/node-route.paths.js +129 -0
- package/dist/nodes/node-route.paths.js.map +1 -0
- package/dist/nodes/nodes.service.d.ts.map +1 -1
- package/dist/nodes/nodes.service.js +3 -15
- package/dist/nodes/nodes.service.js.map +1 -1
- package/dist/nodes/testing/conformance.d.ts +86 -0
- package/dist/nodes/testing/conformance.d.ts.map +1 -0
- package/dist/nodes/testing/conformance.js +230 -0
- package/dist/nodes/testing/conformance.js.map +1 -0
- package/dist/nodes/testing/discover.d.ts +13 -0
- package/dist/nodes/testing/discover.d.ts.map +1 -0
- package/dist/nodes/testing/discover.js +42 -0
- package/dist/nodes/testing/discover.js.map +1 -0
- package/dist/nodes/testing/index.d.ts +3 -0
- package/dist/nodes/testing/index.d.ts.map +1 -0
- package/dist/nodes/testing/index.js +13 -0
- package/dist/nodes/testing/index.js.map +1 -0
- package/dist/notifications/channels/browser-notification.channel.d.ts +11 -0
- package/dist/notifications/channels/browser-notification.channel.d.ts.map +1 -1
- package/dist/notifications/channels/browser-notification.channel.js +71 -48
- package/dist/notifications/channels/browser-notification.channel.js.map +1 -1
- package/dist/notifications/data/notifications-db.d.ts +19 -0
- package/dist/notifications/data/notifications-db.d.ts.map +1 -1
- package/dist/notifications/dto/notification.dto.d.ts +4 -0
- package/dist/notifications/dto/notification.dto.d.ts.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/notification-inbox-writer.d.ts +112 -0
- package/dist/notifications/notification-inbox-writer.d.ts.map +1 -0
- package/dist/notifications/notification-inbox-writer.js +217 -0
- package/dist/notifications/notification-inbox-writer.js.map +1 -0
- package/dist/notifications/notification-store.service.d.ts +10 -0
- package/dist/notifications/notification-store.service.d.ts.map +1 -1
- package/dist/notifications/notification-store.service.js +55 -10
- package/dist/notifications/notification-store.service.js.map +1 -1
- package/dist/notifications/notification-stream.service.d.ts +8 -0
- package/dist/notifications/notification-stream.service.d.ts.map +1 -1
- package/dist/notifications/notification-stream.service.js.map +1 -1
- package/dist/notifications/notification.types.d.ts +74 -0
- package/dist/notifications/notification.types.d.ts.map +1 -1
- package/dist/notifications/notification.types.js.map +1 -1
- package/dist/notifications/notifications.controller.d.ts +1 -0
- package/dist/notifications/notifications.controller.d.ts.map +1 -1
- package/dist/notifications/notifications.controller.js +23 -0
- package/dist/notifications/notifications.controller.js.map +1 -1
- package/dist/notifications/notifications.service.d.ts +56 -1
- package/dist/notifications/notifications.service.d.ts.map +1 -1
- package/dist/notifications/notifications.service.js +122 -0
- package/dist/notifications/notifications.service.js.map +1 -1
- package/dist/notifications/registry/event.registry.d.ts +15 -0
- package/dist/notifications/registry/event.registry.d.ts.map +1 -1
- package/dist/notifications/registry/event.registry.js +3 -0
- package/dist/notifications/registry/event.registry.js.map +1 -1
- package/dist/notifications/retention/notification-inbox-purge.handler.d.ts.map +1 -1
- package/dist/notifications/retention/notification-inbox-purge.handler.js +16 -4
- package/dist/notifications/retention/notification-inbox-purge.handler.js.map +1 -1
- package/dist/notifications/testing/index.d.ts +2 -0
- package/dist/notifications/testing/index.d.ts.map +1 -1
- package/dist/notifications/testing/index.js +5 -1
- package/dist/notifications/testing/index.js.map +1 -1
- package/dist/storage/config/storage-config.service.d.ts +24 -0
- package/dist/storage/config/storage-config.service.d.ts.map +1 -1
- package/dist/storage/config/storage-config.service.js +31 -5
- package/dist/storage/config/storage-config.service.js.map +1 -1
- package/dist/storage/handlers/storage-cleanup.handler.d.ts +3 -1
- package/dist/storage/handlers/storage-cleanup.handler.d.ts.map +1 -1
- package/dist/storage/handlers/storage-cleanup.handler.js +10 -3
- package/dist/storage/handlers/storage-cleanup.handler.js.map +1 -1
- package/dist/storage/index.d.ts +5 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +12 -3
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/objects/dto/get-part-urls.dto.d.ts +26 -0
- package/dist/storage/objects/dto/get-part-urls.dto.d.ts.map +1 -0
- package/dist/storage/objects/dto/get-part-urls.dto.js +25 -0
- package/dist/storage/objects/dto/get-part-urls.dto.js.map +1 -0
- package/dist/storage/objects/dto/init-upload.dto.d.ts +2 -1
- package/dist/storage/objects/dto/init-upload.dto.d.ts.map +1 -1
- package/dist/storage/objects/objects.controller.d.ts +13 -1
- package/dist/storage/objects/objects.controller.d.ts.map +1 -1
- package/dist/storage/objects/objects.controller.js +88 -1
- package/dist/storage/objects/objects.controller.js.map +1 -1
- package/dist/storage/objects/objects.service.d.ts +46 -1
- package/dist/storage/objects/objects.service.d.ts.map +1 -1
- package/dist/storage/objects/objects.service.js +277 -23
- package/dist/storage/objects/objects.service.js.map +1 -1
- package/dist/storage/objects/part-body-parser.d.ts +30 -0
- package/dist/storage/objects/part-body-parser.d.ts.map +1 -0
- package/dist/storage/objects/part-body-parser.js +45 -0
- package/dist/storage/objects/part-body-parser.js.map +1 -0
- package/dist/storage/objects/part-body.d.ts +23 -0
- package/dist/storage/objects/part-body.d.ts.map +1 -0
- package/dist/storage/objects/part-body.js +48 -0
- package/dist/storage/objects/part-body.js.map +1 -0
- package/dist/storage/processing/object-processing.service.d.ts +4 -1
- package/dist/storage/processing/object-processing.service.d.ts.map +1 -1
- package/dist/storage/processing/object-processing.service.js +11 -3
- package/dist/storage/processing/object-processing.service.js.map +1 -1
- package/dist/storage/profile-image/avatar.service.d.ts +3 -1
- package/dist/storage/profile-image/avatar.service.d.ts.map +1 -1
- package/dist/storage/profile-image/avatar.service.js +8 -3
- package/dist/storage/profile-image/avatar.service.js.map +1 -1
- package/dist/storage/profile-image/profile-image.service.d.ts +4 -1
- package/dist/storage/profile-image/profile-image.service.d.ts.map +1 -1
- package/dist/storage/profile-image/profile-image.service.js +11 -5
- package/dist/storage/profile-image/profile-image.service.js.map +1 -1
- package/dist/storage/providers/index.d.ts +3 -1
- package/dist/storage/providers/index.d.ts.map +1 -1
- package/dist/storage/providers/index.js +8 -1
- package/dist/storage/providers/index.js.map +1 -1
- package/dist/storage/providers/resolving-storage.provider.d.ts +11 -0
- package/dist/storage/providers/resolving-storage.provider.d.ts.map +1 -1
- package/dist/storage/providers/resolving-storage.provider.js +13 -0
- package/dist/storage/providers/resolving-storage.provider.js.map +1 -1
- package/dist/storage/providers/s3/s3-storage.provider.d.ts +9 -1
- package/dist/storage/providers/s3/s3-storage.provider.d.ts.map +1 -1
- package/dist/storage/providers/s3/s3-storage.provider.js +37 -0
- package/dist/storage/providers/s3/s3-storage.provider.js.map +1 -1
- package/dist/storage/providers/storage-provider-router.d.ts +64 -0
- package/dist/storage/providers/storage-provider-router.d.ts.map +1 -0
- package/dist/storage/providers/storage-provider-router.js +161 -0
- package/dist/storage/providers/storage-provider-router.js.map +1 -0
- package/dist/storage/providers/storage-provider.interface.d.ts +34 -1
- package/dist/storage/providers/storage-provider.interface.d.ts.map +1 -1
- package/dist/storage/providers/storage-provider.interface.js.map +1 -1
- package/dist/storage/providers/storage-provider.types.d.ts +86 -0
- package/dist/storage/providers/storage-provider.types.d.ts.map +1 -1
- package/dist/storage/providers/storage-provider.types.js +78 -0
- package/dist/storage/providers/storage-provider.types.js.map +1 -1
- package/dist/storage/providers/storage-providers.module.d.ts.map +1 -1
- package/dist/storage/providers/storage-providers.module.js +3 -1
- package/dist/storage/providers/storage-providers.module.js.map +1 -1
- package/dist/storage/testing/conformance.d.ts +12 -0
- package/dist/storage/testing/conformance.d.ts.map +1 -1
- package/dist/storage/testing/conformance.js +112 -0
- package/dist/storage/testing/conformance.js.map +1 -1
- package/dist/storage/testing/driver-conformance.d.ts +13 -1
- package/dist/storage/testing/driver-conformance.d.ts.map +1 -1
- package/dist/storage/testing/driver-conformance.js +134 -0
- package/dist/storage/testing/driver-conformance.js.map +1 -1
- package/dist/storage/testing/index.d.ts +1 -1
- package/dist/storage/testing/index.d.ts.map +1 -1
- package/dist/storage/testing/index.js +2 -1
- package/dist/storage/testing/index.js.map +1 -1
- package/dist/telemetry/stack/dto/telemetry-stack.dto.d.ts +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Where an app node route may live: the reserved sub-paths of `/api/nodes`
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// `JwtAuthGuard` admits a `nod_` credential on `/api/nodes` and anything under
|
|
7
|
+
// it (by raw URL). The platform's own control plane occupies part of that
|
|
8
|
+
// space; an app route that landed on top of it would be shadowed by, or would
|
|
9
|
+
// shadow, a platform route depending on module order. These helpers state the
|
|
10
|
+
// reserved part once, and compute a controller's routes so that the bootstrap
|
|
11
|
+
// check (`NodeRouteModule`) and the `nodes` conformance suite apply the very
|
|
12
|
+
// same rule.
|
|
13
|
+
// =============================================================================
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.RESERVED_NODE_SUBPATHS = void 0;
|
|
16
|
+
exports.controllerRoutes = controllerRoutes;
|
|
17
|
+
exports.reservedNodeSubpathOverlap = reservedNodeSubpathOverlap;
|
|
18
|
+
const constants_1 = require("@nestjs/common/constants");
|
|
19
|
+
const index_1 = require("../identity/index");
|
|
20
|
+
/**
|
|
21
|
+
* The sub-paths of `/api/nodes` the platform owns, relative to the collection,
|
|
22
|
+
* with `:param` for a path parameter. `''` is the collection itself; a trailing
|
|
23
|
+
* `/*` reserves everything beneath. A `@NodeRoute()` route that overlaps one
|
|
24
|
+
* (a parameter overlaps a literal, the HTTP method is ignored) fails at
|
|
25
|
+
* bootstrap and in the `nodes` conformance suite. Mount an app feature on a
|
|
26
|
+
* sub-path NOT listed here, for example `nodes/:id/<feature>/...`.
|
|
27
|
+
*
|
|
28
|
+
* @stability stable
|
|
29
|
+
*/
|
|
30
|
+
exports.RESERVED_NODE_SUBPATHS = Object.freeze([
|
|
31
|
+
'',
|
|
32
|
+
'register',
|
|
33
|
+
'job-types',
|
|
34
|
+
':id',
|
|
35
|
+
':id/events',
|
|
36
|
+
':id/deregister',
|
|
37
|
+
':id/heartbeat',
|
|
38
|
+
':id/claim',
|
|
39
|
+
':id/telemetry',
|
|
40
|
+
':id/jobs/*',
|
|
41
|
+
'models/*',
|
|
42
|
+
]);
|
|
43
|
+
function pathsOf(value) {
|
|
44
|
+
if (Array.isArray(value))
|
|
45
|
+
return value.map(String);
|
|
46
|
+
if (typeof value === 'string')
|
|
47
|
+
return [value];
|
|
48
|
+
return [''];
|
|
49
|
+
}
|
|
50
|
+
function segmentsOf(path) {
|
|
51
|
+
return path.split('/').filter((segment) => segment.length > 0);
|
|
52
|
+
}
|
|
53
|
+
/** The collection name, `nodes`, from {@link NODE_ROUTE_PREFIX}. */
|
|
54
|
+
const NODES_SEGMENT = index_1.NODE_ROUTE_PREFIX.split('/').filter(Boolean).pop();
|
|
55
|
+
/**
|
|
56
|
+
* Every route of `controller` with its full path. A leading `api` segment (the
|
|
57
|
+
* global prefix) is dropped, so `api/nodes/x` and `nodes/x` read the same.
|
|
58
|
+
*
|
|
59
|
+
* @param controller - a controller class.
|
|
60
|
+
* @returns one entry per handler per declared path.
|
|
61
|
+
*
|
|
62
|
+
* @stability experimental
|
|
63
|
+
*/
|
|
64
|
+
function controllerRoutes(controller) {
|
|
65
|
+
const out = [];
|
|
66
|
+
const prototype = controller.prototype;
|
|
67
|
+
const names = new Set();
|
|
68
|
+
for (let proto = prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) {
|
|
69
|
+
for (const name of Object.getOwnPropertyNames(proto))
|
|
70
|
+
names.add(name);
|
|
71
|
+
}
|
|
72
|
+
for (const handler of names) {
|
|
73
|
+
const fn = prototype[handler];
|
|
74
|
+
if (handler === 'constructor' || typeof fn !== 'function')
|
|
75
|
+
continue;
|
|
76
|
+
if (Reflect.getMetadata(constants_1.METHOD_METADATA, fn) === undefined || Reflect.getMetadata(constants_1.PATH_METADATA, fn) === undefined)
|
|
77
|
+
continue;
|
|
78
|
+
for (const base of pathsOf(Reflect.getMetadata(constants_1.PATH_METADATA, controller))) {
|
|
79
|
+
for (const leaf of pathsOf(Reflect.getMetadata(constants_1.PATH_METADATA, fn))) {
|
|
80
|
+
let segments = [...segmentsOf(base), ...segmentsOf(leaf)];
|
|
81
|
+
if (segments[0] === 'api')
|
|
82
|
+
segments = segments.slice(1);
|
|
83
|
+
out.push({
|
|
84
|
+
id: `${controller.name}#${handler}`,
|
|
85
|
+
handler,
|
|
86
|
+
path: segments.join('/'),
|
|
87
|
+
nodeSegments: segments[0] === NODES_SEGMENT ? segments.slice(1) : null,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return out;
|
|
93
|
+
}
|
|
94
|
+
function isParam(segment) {
|
|
95
|
+
return segment.startsWith(':');
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Whether the route's leading segments can match `pattern`. `routeParamMatches`
|
|
99
|
+
* lets a route's own `:param` match a reserved literal: right for an exact
|
|
100
|
+
* entry (a route `nodes/:x` swallows `nodes/register`), wrong for a `/*` prefix
|
|
101
|
+
* (a route `nodes/:id/reports` is not `nodes/models/...`: a node id is a uuid).
|
|
102
|
+
*/
|
|
103
|
+
function segmentsOverlap(route, pattern, routeParamMatches) {
|
|
104
|
+
return pattern.every((segment, index) => {
|
|
105
|
+
const other = route[index];
|
|
106
|
+
return segment === other || isParam(segment) || (routeParamMatches && isParam(other));
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The reserved sub-path a route overlaps, or `null`.
|
|
111
|
+
*
|
|
112
|
+
* @param nodeSegments - the route's segments after `nodes`.
|
|
113
|
+
* @returns the entry of {@link RESERVED_NODE_SUBPATHS} it collides with.
|
|
114
|
+
*
|
|
115
|
+
* @stability stable
|
|
116
|
+
*/
|
|
117
|
+
function reservedNodeSubpathOverlap(nodeSegments) {
|
|
118
|
+
for (const reserved of exports.RESERVED_NODE_SUBPATHS) {
|
|
119
|
+
const wildcard = reserved.endsWith('/*');
|
|
120
|
+
const pattern = segmentsOf(wildcard ? reserved.slice(0, -2) : reserved);
|
|
121
|
+
const overlaps = wildcard
|
|
122
|
+
? nodeSegments.length >= pattern.length && segmentsOverlap(nodeSegments, pattern, false)
|
|
123
|
+
: nodeSegments.length === pattern.length && segmentsOverlap(nodeSegments, pattern, true);
|
|
124
|
+
if (overlaps)
|
|
125
|
+
return reserved;
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=node-route.paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-route.paths.js","sourceRoot":"","sources":["../../src/nodes/node-route.paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.service.d.ts","sourceRoot":"","sources":["../../src/nodes/nodes.service.ts"],"names":[],"mappings":"AAsIA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,GAAG,EAA2B,KAAK,UAAU,EAAc,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"nodes.service.d.ts","sourceRoot":"","sources":["../../src/nodes/nodes.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -150,6 +150,7 @@ const index_8 = require("../jobs/index");
|
|
|
150
150
|
const index_9 = require("../jobs/index");
|
|
151
151
|
const index_10 = require("../jobs/index");
|
|
152
152
|
const node_events_service_1 = require("./node-events.service");
|
|
153
|
+
const node_ownership_1 = require("./node-ownership");
|
|
153
154
|
const node_settlement_ledger_1 = require("./node-settlement-ledger");
|
|
154
155
|
/**
|
|
155
156
|
* How recently a node must have heartbeated for a re-register to be WORTH
|
|
@@ -880,21 +881,8 @@ let NodesService = NodesService_1 = class NodesService {
|
|
|
880
881
|
* from "not yours" where `NodeCredentialService` deliberately does not.
|
|
881
882
|
*/
|
|
882
883
|
async assertOwnership(userId, nodeId) {
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
throw new common_1.NotFoundException({
|
|
886
|
-
message: `Worker node ${nodeId} was not found.`,
|
|
887
|
-
details: { nodeId },
|
|
888
|
-
});
|
|
889
|
-
}
|
|
890
|
-
if (node.createdById !== userId) {
|
|
891
|
-
throw new common_1.ForbiddenException({
|
|
892
|
-
message: `Worker node ${nodeId} belongs to another user. Check that this credential and ` +
|
|
893
|
-
`this node id came from the same registration.`,
|
|
894
|
-
details: { nodeId },
|
|
895
|
-
});
|
|
896
|
-
}
|
|
897
|
-
return node;
|
|
884
|
+
// One rule, shared with the app-route guard (`node-ownership.ts`).
|
|
885
|
+
return (0, node_ownership_1.assertNodeOwnedBy)(this.prisma, userId, nodeId);
|
|
898
886
|
}
|
|
899
887
|
/**
|
|
900
888
|
* The job is claimed by THIS node, is `running`, its lease has not expired,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.service.js","sourceRoot":"","sources":["../../src/nodes/nodes.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodes.service.js","sourceRoot":"","sources":["../../src/nodes/nodes.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type DynamicModule, type Type } from '@nestjs/common';
|
|
2
|
+
import type { ConformanceFinding, ConformanceSuite } from '../../testing/index';
|
|
3
|
+
import { type ResolvedNodeRouteOptions } from '../node-route.options';
|
|
4
|
+
declare module '../../testing/index' {
|
|
5
|
+
interface PlatformConformanceSuiteOptions {
|
|
6
|
+
/** The nodes slice's suite: its options, or `false` to opt out. Registered by importing `@marinoscar/platform-api/nodes/testing`. */
|
|
7
|
+
nodes?: NodesConformanceOptions | false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* What an app passes as `suites.nodes` to `runPlatformConformance()`.
|
|
12
|
+
*
|
|
13
|
+
* @stability experimental
|
|
14
|
+
*/
|
|
15
|
+
export interface NodesConformanceOptions {
|
|
16
|
+
/** The app's root module; every controller reachable from it is checked. */
|
|
17
|
+
readonly rootModule: Type<unknown> | DynamicModule;
|
|
18
|
+
/** Fewest packaged control-plane routes the walk must find (a vacuity guard); 1 by default. */
|
|
19
|
+
readonly minPlatformRoutes?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* One app route under `/api/nodes`, as the suite sees it.
|
|
23
|
+
*
|
|
24
|
+
* @stability experimental
|
|
25
|
+
*/
|
|
26
|
+
export interface NodeAppRoute {
|
|
27
|
+
/** `Controller#handler`. */
|
|
28
|
+
readonly id: string;
|
|
29
|
+
/** The controller class. */
|
|
30
|
+
readonly controller: Type<unknown>;
|
|
31
|
+
/** The handler function. */
|
|
32
|
+
readonly handler: (...args: never[]) => unknown;
|
|
33
|
+
/** The path after `nodes`, as segments. */
|
|
34
|
+
readonly nodeSegments: readonly string[];
|
|
35
|
+
/** What `@NodeRoute()` recorded, or `undefined` when the route does not carry it. */
|
|
36
|
+
readonly declared: ResolvedNodeRouteOptions | undefined;
|
|
37
|
+
/** Whether `NodeRouteGuard` is among the route's guards. */
|
|
38
|
+
readonly guarded: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* What {@link discoverNodeAppRoutes} found.
|
|
42
|
+
*
|
|
43
|
+
* @stability experimental
|
|
44
|
+
*/
|
|
45
|
+
export interface NodeAppRouteDiscovery {
|
|
46
|
+
/** The app's routes under `/api/nodes`. */
|
|
47
|
+
routes: NodeAppRoute[];
|
|
48
|
+
/** How many packaged control-plane routes the walk saw (a vacuity guard). */
|
|
49
|
+
platformRoutes: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Every route the app mounts under `/api/nodes` outside the packaged control plane.
|
|
53
|
+
*
|
|
54
|
+
* @param controllers - from `discoverControllers`.
|
|
55
|
+
* @returns the app routes, plus the count of packaged routes seen.
|
|
56
|
+
*
|
|
57
|
+
* @stability experimental
|
|
58
|
+
*/
|
|
59
|
+
export declare function discoverNodeAppRoutes(controllers: ReadonlyArray<Type<unknown>>): NodeAppRouteDiscovery;
|
|
60
|
+
/**
|
|
61
|
+
* Checks 1 and 2: declared, placed, guarded.
|
|
62
|
+
*
|
|
63
|
+
* @param routes - from {@link discoverNodeAppRoutes}.
|
|
64
|
+
* @returns the violations.
|
|
65
|
+
*
|
|
66
|
+
* @stability experimental
|
|
67
|
+
*/
|
|
68
|
+
export declare function checkNodeAppRoutes(routes: readonly NodeAppRoute[]): ConformanceFinding[];
|
|
69
|
+
/**
|
|
70
|
+
* Check 3: the guard on each declared route enforces credential kind and node ownership.
|
|
71
|
+
*
|
|
72
|
+
* @param routes - from {@link discoverNodeAppRoutes}.
|
|
73
|
+
* @returns the violations.
|
|
74
|
+
*
|
|
75
|
+
* @stability experimental
|
|
76
|
+
*/
|
|
77
|
+
export declare function checkNodeRouteOwnership(routes: readonly NodeAppRoute[]): Promise<ConformanceFinding[]>;
|
|
78
|
+
/**
|
|
79
|
+
* The `nodes` conformance suite. Registered when
|
|
80
|
+
* `@marinoscar/platform-api/nodes/testing` is imported.
|
|
81
|
+
*
|
|
82
|
+
* @extensionPoint registry
|
|
83
|
+
* @stability experimental
|
|
84
|
+
*/
|
|
85
|
+
export declare const nodesConformanceSuite: ConformanceSuite<NodesConformanceOptions>;
|
|
86
|
+
//# sourceMappingURL=conformance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/nodes/testing/conformance.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAyC,KAAK,aAAa,EAAyB,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAO7H,OAAO,KAAK,EAAmB,kBAAkB,EAAqB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGpH,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAK3F,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,+BAA+B;QACvC,qIAAqI;QACrI,KAAK,CAAC,EAAE,uBAAuB,GAAG,KAAK,CAAC;KACzC;CACF;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC;IACnD,+FAA+F;IAC/F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,4BAA4B;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;IAChD,2CAA2C;IAC3C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACxD,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,qBAAqB,CA0BtG;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,kBAAkB,EAAE,CAwBxF;AA6CD;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAmB5G;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,CAAC,uBAAuB,CAoC3E,CAAC"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The nodes slice's conformance suite (issue #1076)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// What it proves about the APP that consumes the package. Importing
|
|
7
|
+
// `@marinoscar/platform-api/nodes/testing` registers the `nodes` suite with
|
|
8
|
+
// `runPlatformConformance()`.
|
|
9
|
+
//
|
|
10
|
+
// 1. node-route-declared: every route an app mounts under `/api/nodes`
|
|
11
|
+
// (outside the packaged control plane) carries `@NodeRoute()`. A
|
|
12
|
+
// `nod_` credential reaches the whole prefix, so a route without it is
|
|
13
|
+
// one a leaked worker token can call with no node-ownership check.
|
|
14
|
+
// 2. node-route-placement: no such route overlaps `RESERVED_NODE_SUBPATHS`,
|
|
15
|
+
// and the guard is really on it.
|
|
16
|
+
// 3. node-route-ownership: for each declared route, the guard `@NodeRoute()`
|
|
17
|
+
// applies refuses a credential kind the route did not admit, refuses
|
|
18
|
+
// another user's node (403), a missing node (404), and admits the owner.
|
|
19
|
+
//
|
|
20
|
+
// Checks 1 and 2 run in the scan; 3 is asynchronous and runs in its own case.
|
|
21
|
+
// =============================================================================
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.nodesConformanceSuite = void 0;
|
|
24
|
+
exports.discoverNodeAppRoutes = discoverNodeAppRoutes;
|
|
25
|
+
exports.checkNodeAppRoutes = checkNodeAppRoutes;
|
|
26
|
+
exports.checkNodeRouteOwnership = checkNodeRouteOwnership;
|
|
27
|
+
const common_1 = require("@nestjs/common");
|
|
28
|
+
const constants_1 = require("@nestjs/common/constants");
|
|
29
|
+
const core_1 = require("@nestjs/core");
|
|
30
|
+
const discover_1 = require("./discover");
|
|
31
|
+
const index_1 = require("../../testing/index");
|
|
32
|
+
const current_node_decorator_1 = require("../current-node.decorator");
|
|
33
|
+
const node_route_guard_1 = require("../node-route.guard");
|
|
34
|
+
const node_route_options_1 = require("../node-route.options");
|
|
35
|
+
const node_route_paths_1 = require("../node-route.paths");
|
|
36
|
+
const nodes_controller_1 = require("../nodes.controller");
|
|
37
|
+
/**
|
|
38
|
+
* Every route the app mounts under `/api/nodes` outside the packaged control plane.
|
|
39
|
+
*
|
|
40
|
+
* @param controllers - from `discoverControllers`.
|
|
41
|
+
* @returns the app routes, plus the count of packaged routes seen.
|
|
42
|
+
*
|
|
43
|
+
* @stability experimental
|
|
44
|
+
*/
|
|
45
|
+
function discoverNodeAppRoutes(controllers) {
|
|
46
|
+
const routes = [];
|
|
47
|
+
let platformRoutes = 0;
|
|
48
|
+
for (const controller of controllers) {
|
|
49
|
+
for (const route of (0, node_route_paths_1.controllerRoutes)(controller)) {
|
|
50
|
+
if (route.nodeSegments === null)
|
|
51
|
+
continue;
|
|
52
|
+
if (controller === nodes_controller_1.NodesController) {
|
|
53
|
+
platformRoutes += 1;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const handler = controller.prototype[route.handler];
|
|
57
|
+
const guards = [
|
|
58
|
+
...(Reflect.getMetadata(constants_1.GUARDS_METADATA, controller) ?? []),
|
|
59
|
+
...(Reflect.getMetadata(constants_1.GUARDS_METADATA, handler) ?? []),
|
|
60
|
+
];
|
|
61
|
+
routes.push({
|
|
62
|
+
id: route.id,
|
|
63
|
+
controller,
|
|
64
|
+
handler,
|
|
65
|
+
nodeSegments: route.nodeSegments,
|
|
66
|
+
declared: (Reflect.getMetadata(node_route_options_1.NODE_ROUTE_METADATA, handler) ?? Reflect.getMetadata(node_route_options_1.NODE_ROUTE_METADATA, controller)),
|
|
67
|
+
guarded: guards.includes(node_route_guard_1.NodeRouteGuard),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return { routes, platformRoutes };
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Checks 1 and 2: declared, placed, guarded.
|
|
75
|
+
*
|
|
76
|
+
* @param routes - from {@link discoverNodeAppRoutes}.
|
|
77
|
+
* @returns the violations.
|
|
78
|
+
*
|
|
79
|
+
* @stability experimental
|
|
80
|
+
*/
|
|
81
|
+
function checkNodeAppRoutes(routes) {
|
|
82
|
+
const out = [];
|
|
83
|
+
for (const route of routes) {
|
|
84
|
+
const where = `/api/nodes/${route.nodeSegments.join('/')}`;
|
|
85
|
+
if (!route.declared) {
|
|
86
|
+
out.push({
|
|
87
|
+
file: route.id,
|
|
88
|
+
message: `is mounted at ${where}, which a nod_ worker credential can reach, but carries no @NodeRoute(). Add @NodeRoute() (it enforces node ownership before the handler runs) or move the route off /api/nodes.`,
|
|
89
|
+
});
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (!route.guarded) {
|
|
93
|
+
out.push({ file: route.id, message: `carries @NodeRoute() metadata but NodeRouteGuard is not among its guards, so ownership is not enforced.` });
|
|
94
|
+
}
|
|
95
|
+
const reserved = (0, node_route_paths_1.reservedNodeSubpathOverlap)(route.nodeSegments);
|
|
96
|
+
if (reserved !== null) {
|
|
97
|
+
out.push({ file: route.id, message: `${where} overlaps the platform-reserved sub-path "${reserved}" (RESERVED_NODE_SUBPATHS).` });
|
|
98
|
+
}
|
|
99
|
+
const param = route.declared.nodeParam;
|
|
100
|
+
if (param !== false && !route.nodeSegments.includes(`:${param}`)) {
|
|
101
|
+
out.push({ file: route.id, message: `declares nodeParam "${param}" but ${where} has no :${param} segment, so no node is ever resolved.` });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return out;
|
|
105
|
+
}
|
|
106
|
+
const OWNER = 'user-owner';
|
|
107
|
+
const STRANGER = 'user-stranger';
|
|
108
|
+
const OWN_NODE = '11111111-1111-4111-8111-111111111111';
|
|
109
|
+
const OTHER_NODE = '22222222-2222-4222-8222-222222222222';
|
|
110
|
+
const MISSING_NODE = '33333333-3333-4333-8333-333333333333';
|
|
111
|
+
const KINDS = [
|
|
112
|
+
{ kind: 'node', name: 'nod' },
|
|
113
|
+
{ kind: 'pat', name: 'pat' },
|
|
114
|
+
{ kind: 'jwt', name: 'jwt' },
|
|
115
|
+
];
|
|
116
|
+
const stubOwnership = {
|
|
117
|
+
async assertOwnership(userId, nodeId) {
|
|
118
|
+
if (nodeId === MISSING_NODE)
|
|
119
|
+
throw new common_1.NotFoundException();
|
|
120
|
+
if (nodeId === OTHER_NODE || userId !== OWNER)
|
|
121
|
+
throw new common_1.ForbiddenException();
|
|
122
|
+
return { id: nodeId, createdById: userId };
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
async function outcome(route, kind, userId, nodeId) {
|
|
126
|
+
const guard = new node_route_guard_1.NodeRouteGuard(new core_1.Reflector(), stubOwnership);
|
|
127
|
+
const request = {
|
|
128
|
+
user: { id: userId },
|
|
129
|
+
authCredential: kind === 'pat' ? { kind, tokenId: 'pat-1' } : { kind },
|
|
130
|
+
params: route.declared && route.declared.nodeParam !== false && nodeId ? { [route.declared.nodeParam]: nodeId } : {},
|
|
131
|
+
};
|
|
132
|
+
const context = {
|
|
133
|
+
getHandler: () => route.handler,
|
|
134
|
+
getClass: () => route.controller,
|
|
135
|
+
switchToHttp: () => ({ getRequest: () => request }),
|
|
136
|
+
};
|
|
137
|
+
try {
|
|
138
|
+
const admitted = await guard.canActivate(context);
|
|
139
|
+
if (admitted && request[current_node_decorator_1.NODE_ROUTE_REQUEST_KEY] === undefined && route.declared?.nodeParam !== false)
|
|
140
|
+
return 'other';
|
|
141
|
+
return admitted ? 'admitted' : 'other';
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
if (error instanceof common_1.ForbiddenException)
|
|
145
|
+
return 'forbidden';
|
|
146
|
+
if (error instanceof common_1.NotFoundException)
|
|
147
|
+
return 'not-found';
|
|
148
|
+
return 'other';
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Check 3: the guard on each declared route enforces credential kind and node ownership.
|
|
153
|
+
*
|
|
154
|
+
* @param routes - from {@link discoverNodeAppRoutes}.
|
|
155
|
+
* @returns the violations.
|
|
156
|
+
*
|
|
157
|
+
* @stability experimental
|
|
158
|
+
*/
|
|
159
|
+
async function checkNodeRouteOwnership(routes) {
|
|
160
|
+
const out = [];
|
|
161
|
+
for (const route of routes) {
|
|
162
|
+
const declared = route.declared;
|
|
163
|
+
if (!declared)
|
|
164
|
+
continue;
|
|
165
|
+
for (const { kind, name } of KINDS) {
|
|
166
|
+
const expected = declared.credentials.includes(name) ? 'admitted' : 'forbidden';
|
|
167
|
+
const actual = await outcome(route, kind, OWNER, OWN_NODE);
|
|
168
|
+
if (actual !== expected)
|
|
169
|
+
out.push({ file: route.id, message: `a ${name} credential should be ${expected} (it ${declared.credentials.includes(name) ? 'is' : 'is not'} listed), got ${actual}.` });
|
|
170
|
+
}
|
|
171
|
+
if (declared.nodeParam === false)
|
|
172
|
+
continue;
|
|
173
|
+
const foreign = await outcome(route, 'node', OWNER, OTHER_NODE);
|
|
174
|
+
if (foreign !== 'forbidden')
|
|
175
|
+
out.push({ file: route.id, message: `another user's node should be refused with 403, got ${foreign}.` });
|
|
176
|
+
const stranger = await outcome(route, 'node', STRANGER, OWN_NODE);
|
|
177
|
+
if (stranger !== 'forbidden')
|
|
178
|
+
out.push({ file: route.id, message: `a caller who does not own the node should be refused with 403, got ${stranger}.` });
|
|
179
|
+
const missing = await outcome(route, 'node', OWNER, MISSING_NODE);
|
|
180
|
+
if (missing !== 'not-found')
|
|
181
|
+
out.push({ file: route.id, message: `a missing node should answer 404, got ${missing}.` });
|
|
182
|
+
}
|
|
183
|
+
return out;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The `nodes` conformance suite. Registered when
|
|
187
|
+
* `@marinoscar/platform-api/nodes/testing` is imported.
|
|
188
|
+
*
|
|
189
|
+
* @extensionPoint registry
|
|
190
|
+
* @stability experimental
|
|
191
|
+
*/
|
|
192
|
+
exports.nodesConformanceSuite = {
|
|
193
|
+
id: 'nodes',
|
|
194
|
+
title: 'app routes on the node plane enforce node ownership',
|
|
195
|
+
description: 'Every app route under /api/nodes carries @NodeRoute(), stays off the platform-reserved sub-paths, and its guard refuses an unlisted credential kind, another user\'s node and a missing node.',
|
|
196
|
+
check(_context, options) {
|
|
197
|
+
const controllers = (0, discover_1.discoverAppControllers)(options.rootModule);
|
|
198
|
+
const { routes, platformRoutes } = discoverNodeAppRoutes(controllers);
|
|
199
|
+
const findings = checkNodeAppRoutes(routes);
|
|
200
|
+
const minimum = options.minPlatformRoutes ?? 1;
|
|
201
|
+
if (platformRoutes < minimum) {
|
|
202
|
+
findings.push({ file: 'routes', message: `the walk found ${platformRoutes} packaged node route(s), fewer than ${minimum}: is rootModule the app's root module?` });
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
scanned: { appNodeRoutes: routes.length, platformNodeRoutes: platformRoutes },
|
|
206
|
+
scannedFiles: { appNodeRoutes: routes.map((route) => route.id) },
|
|
207
|
+
findings,
|
|
208
|
+
};
|
|
209
|
+
},
|
|
210
|
+
cases(options) {
|
|
211
|
+
return [
|
|
212
|
+
{
|
|
213
|
+
name: 'node-route-declared: every app route under /api/nodes carries @NodeRoute() and stays off the reserved sub-paths',
|
|
214
|
+
run: (report, expect) => {
|
|
215
|
+
expect(report.findings).toEqual([]);
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: 'node-route-ownership: the guard refuses an unlisted credential, another user\'s node and a missing node',
|
|
220
|
+
run: async (_report, expect) => {
|
|
221
|
+
const { routes } = discoverNodeAppRoutes((0, discover_1.discoverAppControllers)(options.rootModule));
|
|
222
|
+
expect(await checkNodeRouteOwnership(routes)).toEqual([]);
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
];
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
if (!index_1.conformanceSuites.has(exports.nodesConformanceSuite.id))
|
|
229
|
+
index_1.conformanceSuites.register(exports.nodesConformanceSuite);
|
|
230
|
+
//# sourceMappingURL=conformance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/nodes/testing/conformance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DynamicModule, Type } from '@nestjs/common';
|
|
2
|
+
/**
|
|
3
|
+
* Every controller class reachable from `root` through module imports (static
|
|
4
|
+
* and dynamic), each once. A local copy of the identity suite's walk: a slice
|
|
5
|
+
* may not import another slice's internals, only its index.
|
|
6
|
+
*
|
|
7
|
+
* @param root - the app's root module.
|
|
8
|
+
* @returns the controllers, in discovery order.
|
|
9
|
+
*
|
|
10
|
+
* @stability experimental
|
|
11
|
+
*/
|
|
12
|
+
export declare function discoverAppControllers(root: Type<unknown> | DynamicModule): Array<Type<unknown>>;
|
|
13
|
+
//# sourceMappingURL=discover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/nodes/testing/discover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAoB,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAQ5E;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAoBhG"}
|