@strapi/core 5.49.0 → 5.50.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/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +2 -0
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +2 -0
- package/dist/Strapi.mjs.map +1 -1
- package/dist/configuration/config-loader.d.ts.map +1 -1
- package/dist/configuration/get-dirs.d.ts.map +1 -1
- package/dist/configuration/index.d.ts +0 -3
- package/dist/configuration/index.d.ts.map +1 -1
- package/dist/configuration/index.js +0 -3
- package/dist/configuration/index.js.map +1 -1
- package/dist/configuration/index.mjs +0 -3
- package/dist/configuration/index.mjs.map +1 -1
- package/dist/configuration/server-config.d.ts +11 -0
- package/dist/configuration/server-config.d.ts.map +1 -0
- package/dist/configuration/server-config.js +16 -0
- package/dist/configuration/server-config.js.map +1 -0
- package/dist/configuration/server-config.mjs +14 -0
- package/dist/configuration/server-config.mjs.map +1 -0
- package/dist/configuration/urls.d.ts.map +1 -1
- package/dist/core-api/controller/collection-type.d.ts.map +1 -1
- package/dist/core-api/controller/single-type.d.ts.map +1 -1
- package/dist/core-api/controller/transform.d.ts.map +1 -1
- package/dist/core-api/routes/index.d.ts.map +1 -1
- package/dist/core-api/routes/validation/attributes.d.ts.map +1 -1
- package/dist/core-api/routes/validation/mappers.d.ts.map +1 -1
- package/dist/core-api/routes/validation/utils.d.ts.map +1 -1
- package/dist/core-api/service/collection-type.d.ts.map +1 -1
- package/dist/core-api/service/pagination.d.ts.map +1 -1
- package/dist/core-api/service/single-type.d.ts.map +1 -1
- package/dist/domain/content-type/index.d.ts.map +1 -1
- package/dist/domain/content-type/validator.d.ts.map +1 -1
- package/dist/domain/module/index.d.ts.map +1 -1
- package/dist/domain/module/validation.d.ts.map +1 -1
- package/dist/ee/index.d.ts +2 -1
- package/dist/ee/index.d.ts.map +1 -1
- package/dist/ee/license.d.ts.map +1 -1
- package/dist/factories.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
- package/dist/loaders/sanitizers.d.ts.map +1 -1
- package/dist/loaders/src-index.d.ts.map +1 -1
- package/dist/loaders/validators.d.ts.map +1 -1
- package/dist/middlewares/body.d.ts.map +1 -1
- package/dist/middlewares/body.js +1 -1
- package/dist/middlewares/body.js.map +1 -1
- package/dist/middlewares/body.mjs +1 -1
- package/dist/middlewares/body.mjs.map +1 -1
- package/dist/middlewares/cors.d.ts.map +1 -1
- package/dist/middlewares/errors.d.ts +5 -0
- package/dist/middlewares/errors.d.ts.map +1 -1
- package/dist/middlewares/errors.js.map +1 -1
- package/dist/middlewares/errors.mjs.map +1 -1
- package/dist/middlewares/favicon.d.ts +0 -1
- package/dist/middlewares/favicon.d.ts.map +1 -1
- package/dist/migrations/draft-publish.d.ts.map +1 -1
- package/dist/migrations/first-published-at.d.ts.map +1 -1
- package/dist/migrations/i18n.d.ts.map +1 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/package.json.js +16 -19
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +16 -19
- package/dist/package.json.mjs.map +1 -1
- package/dist/providers/provider.d.ts.map +1 -1
- package/dist/registries/apis.d.ts.map +1 -1
- package/dist/registries/components.d.ts +1 -1
- package/dist/registries/components.d.ts.map +1 -1
- package/dist/registries/content-types.d.ts +2 -3
- package/dist/registries/content-types.d.ts.map +1 -1
- package/dist/registries/controllers.d.ts +3 -3
- package/dist/registries/controllers.d.ts.map +1 -1
- package/dist/registries/custom-fields.d.ts.map +1 -1
- package/dist/registries/hooks.d.ts +3 -4
- package/dist/registries/hooks.d.ts.map +1 -1
- package/dist/registries/middlewares.d.ts +2 -3
- package/dist/registries/middlewares.d.ts.map +1 -1
- package/dist/registries/models.d.ts +1 -1
- package/dist/registries/modules.d.ts.map +1 -1
- package/dist/registries/namespace.d.ts.map +1 -1
- package/dist/registries/plugins.d.ts.map +1 -1
- package/dist/registries/policies.d.ts +1 -2
- package/dist/registries/policies.d.ts.map +1 -1
- package/dist/registries/sanitizers.d.ts +2 -2
- package/dist/registries/services.d.ts +3 -3
- package/dist/registries/services.d.ts.map +1 -1
- package/dist/registries/validators.d.ts +2 -2
- package/dist/services/ai.d.ts.map +1 -1
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/content-api/index.d.ts +4 -4
- package/dist/services/content-api/index.d.ts.map +1 -1
- package/dist/services/content-api/permissions/engine.d.ts.map +1 -1
- package/dist/services/content-api/permissions/index.d.ts +2 -2
- package/dist/services/content-api/permissions/index.d.ts.map +1 -1
- package/dist/services/content-api/permissions/providers/action.d.ts +1 -1
- package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
- package/dist/services/content-api/permissions/providers/condition.d.ts +1 -1
- package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
- package/dist/services/content-source-maps.d.ts.map +1 -1
- package/dist/services/core-store.d.ts.map +1 -1
- package/dist/services/cron.d.ts +5 -5
- package/dist/services/custom-fields.d.ts.map +1 -1
- package/dist/services/document-service/attributes/index.d.ts +0 -1
- package/dist/services/document-service/attributes/index.d.ts.map +1 -1
- package/dist/services/document-service/common.d.ts.map +1 -1
- package/dist/services/document-service/components.d.ts +2 -2
- package/dist/services/document-service/components.d.ts.map +1 -1
- package/dist/services/document-service/draft-and-publish.d.ts +0 -1
- package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
- package/dist/services/document-service/entries.d.ts.map +1 -1
- package/dist/services/document-service/events.d.ts.map +1 -1
- package/dist/services/document-service/first-published-at.d.ts.map +1 -1
- package/dist/services/document-service/index.d.ts.map +1 -1
- package/dist/services/document-service/internationalization.d.ts +0 -1
- package/dist/services/document-service/internationalization.d.ts.map +1 -1
- package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
- package/dist/services/document-service/params.d.ts +1 -1
- package/dist/services/document-service/params.d.ts.map +1 -1
- package/dist/services/document-service/publication-filter.d.ts +1 -1
- package/dist/services/document-service/publication-filter.d.ts.map +1 -1
- package/dist/services/document-service/transform/data.d.ts.map +1 -1
- package/dist/services/document-service/transform/fields.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
- package/dist/services/document-service/transform/id-map.js +7 -4
- package/dist/services/document-service/transform/id-map.js.map +1 -1
- package/dist/services/document-service/transform/id-map.mjs +7 -4
- package/dist/services/document-service/transform/id-map.mjs.map +1 -1
- package/dist/services/document-service/transform/id-transform.d.ts +0 -1
- package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
- package/dist/services/document-service/transform/populate.d.ts.map +1 -1
- package/dist/services/document-service/transform/query.d.ts +0 -1
- package/dist/services/document-service/transform/query.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/data.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
- package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +0 -1
- package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
- package/dist/services/document-service/transform/relations/utils/xto-one.d.ts.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.js +7 -2
- package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
- package/dist/services/document-service/utils/bidirectional-relations.mjs +7 -2
- package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
- package/dist/services/document-service/utils/clean-component-join-table.d.ts.map +1 -1
- package/dist/services/document-service/utils/ordered-parallel.d.ts.map +1 -1
- package/dist/services/document-service/utils/populate.d.ts.map +1 -1
- package/dist/services/document-service/utils/self-referential-relations.d.ts.map +1 -1
- package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
- package/dist/services/entity-service/index.d.ts.map +1 -1
- package/dist/services/entity-validator/validators.d.ts.map +1 -1
- package/dist/services/errors.d.ts.map +1 -1
- package/dist/services/features.d.ts.map +1 -1
- package/dist/services/fs.d.ts.map +1 -1
- package/dist/services/mcp/authentication.d.ts.map +1 -1
- package/dist/services/mcp/handlers/handlePost.d.ts.map +1 -1
- package/dist/services/mcp/index.d.ts.map +1 -1
- package/dist/services/mcp/internal/McpCapabilityRegistry.d.ts +2 -2
- package/dist/services/mcp/internal/McpServerFactory.d.ts.map +1 -1
- package/dist/services/mcp/internal/syncMcpSessionCapabilities.d.ts.map +1 -1
- package/dist/services/mcp/metrics/metrics.d.ts.map +1 -1
- package/dist/services/mcp/metrics/normalizeMcpCapability.d.ts.map +1 -1
- package/dist/services/mcp/metrics/wrapCapabilityHandlerForMetrics.d.ts.map +1 -1
- package/dist/services/mcp/middleware/oauthDiscoveryFallback.d.ts.map +1 -1
- package/dist/services/mcp/prompt-registry.d.ts.map +1 -1
- package/dist/services/mcp/resource-registry.d.ts.map +1 -1
- package/dist/services/mcp/routes.d.ts +1 -1
- package/dist/services/mcp/routes.d.ts.map +1 -1
- package/dist/services/mcp/tool-registry.d.ts.map +1 -1
- package/dist/services/mcp/utils/createSafeCapabilityRegistration.d.ts.map +1 -1
- package/dist/services/mcp/utils/safeHandlerWrapper.d.ts.map +1 -1
- package/dist/services/mcp/utils/sendJsonRpcError.d.ts +0 -1
- package/dist/services/mcp/utils/sendJsonRpcError.d.ts.map +1 -1
- package/dist/services/mcp/utils/withTimeout.d.ts.map +1 -1
- package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
- package/dist/services/metrics/index.d.ts.map +1 -1
- package/dist/services/metrics/is-truthy.d.ts.map +1 -1
- package/dist/services/metrics/middleware.d.ts.map +1 -1
- package/dist/services/metrics/rate-limiter.d.ts +2 -1
- package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
- package/dist/services/metrics/sender.d.ts.map +1 -1
- package/dist/services/query-params.d.ts.map +1 -1
- package/dist/services/reloader.d.ts.map +1 -1
- package/dist/services/request-context.d.ts.map +1 -1
- package/dist/services/server/admin-api.d.ts +3 -5
- package/dist/services/server/admin-api.d.ts.map +1 -1
- package/dist/services/server/api.d.ts +3 -4
- package/dist/services/server/api.d.ts.map +1 -1
- package/dist/services/server/compose-endpoint.d.ts.map +1 -1
- package/dist/services/server/content-api.d.ts +3 -5
- package/dist/services/server/content-api.d.ts.map +1 -1
- package/dist/services/server/http-server.d.ts +0 -1
- package/dist/services/server/http-server.d.ts.map +1 -1
- package/dist/services/server/index.d.ts.map +1 -1
- package/dist/services/server/koa-methods.d.ts +107 -0
- package/dist/services/server/koa-methods.d.ts.map +1 -0
- package/dist/services/server/koa-methods.js +24 -0
- package/dist/services/server/koa-methods.js.map +1 -0
- package/dist/services/server/koa-methods.mjs +22 -0
- package/dist/services/server/koa-methods.mjs.map +1 -0
- package/dist/services/server/koa.d.ts +0 -9
- package/dist/services/server/koa.d.ts.map +1 -1
- package/dist/services/server/koa.js +6 -9
- package/dist/services/server/koa.js.map +1 -1
- package/dist/services/server/koa.mjs +7 -9
- package/dist/services/server/koa.mjs.map +1 -1
- package/dist/services/server/middleware.d.ts.map +1 -1
- package/dist/services/server/openapi.d.ts.map +1 -1
- package/dist/services/server/policy.d.ts.map +1 -1
- package/dist/services/server/register-middlewares.d.ts.map +1 -1
- package/dist/services/server/register-routes.d.ts.map +1 -1
- package/dist/services/server/routing.d.ts +0 -2
- package/dist/services/server/routing.d.ts.map +1 -1
- package/dist/services/session-manager.d.ts +20 -0
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +57 -0
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/session-manager.mjs +57 -0
- package/dist/services/session-manager.mjs.map +1 -1
- package/dist/services/webhook-store.d.ts.map +1 -1
- package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
- package/dist/utils/cron.d.ts.map +1 -1
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
- package/dist/utils/is-initialized.d.ts.map +1 -1
- package/dist/utils/load-config-file.d.ts.map +1 -1
- package/dist/utils/load-files.d.ts +1 -1
- package/dist/utils/load-files.d.ts.map +1 -1
- package/dist/utils/open-browser.d.ts +0 -1
- package/dist/utils/open-browser.d.ts.map +1 -1
- package/dist/utils/resolve-working-dirs.d.ts.map +1 -1
- package/dist/utils/signals.d.ts.map +1 -1
- package/dist/utils/startup-logger.d.ts.map +1 -1
- package/dist/utils/transform-content-types-to-models.d.ts +3 -3
- package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
- package/dist/utils/update-notifier/index.d.ts.map +1 -1
- package/package.json +16 -19
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
export interface ErrorMethodEntry {
|
|
2
|
+
/** HTTP status code (400–599). */
|
|
3
|
+
code: number;
|
|
4
|
+
/** Reason phrase from `node:http` `STATUS_CODES`, e.g. "Not Found". */
|
|
5
|
+
statusName: string;
|
|
6
|
+
/** camelCased helper name registered on the context, e.g. "notFound". */
|
|
7
|
+
methodName: keyof ContextDelegatedResponseErrorMethods;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Single source of truth for the generated error helpers: yields one entry per
|
|
11
|
+
* 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the
|
|
12
|
+
* type/runtime sync test iterate this, so they cannot drift.
|
|
13
|
+
*/
|
|
14
|
+
export declare function errorMethodEntries(): Generator<ErrorMethodEntry>;
|
|
15
|
+
export interface ContextDelegatedResponseErrorMethods {
|
|
16
|
+
/** 400 Bad Request */
|
|
17
|
+
badRequest(response?: string | object, details?: object): void;
|
|
18
|
+
/** 401 Unauthorized */
|
|
19
|
+
unauthorized(response?: string | object, details?: object): void;
|
|
20
|
+
/** 402 Payment Required */
|
|
21
|
+
paymentRequired(response?: string | object, details?: object): void;
|
|
22
|
+
/** 403 Forbidden */
|
|
23
|
+
forbidden(response?: string | object, details?: object): void;
|
|
24
|
+
/** 404 Not Found */
|
|
25
|
+
notFound(response?: string | object, details?: object): void;
|
|
26
|
+
/** 405 Method Not Allowed */
|
|
27
|
+
methodNotAllowed(response?: string | object, details?: object): void;
|
|
28
|
+
/** 406 Not Acceptable */
|
|
29
|
+
notAcceptable(response?: string | object, details?: object): void;
|
|
30
|
+
/** 407 Proxy Authentication Required */
|
|
31
|
+
proxyAuthenticationRequired(response?: string | object, details?: object): void;
|
|
32
|
+
/** 408 Request Timeout */
|
|
33
|
+
requestTimeout(response?: string | object, details?: object): void;
|
|
34
|
+
/** 409 Conflict */
|
|
35
|
+
conflict(response?: string | object, details?: object): void;
|
|
36
|
+
/** 410 Gone */
|
|
37
|
+
gone(response?: string | object, details?: object): void;
|
|
38
|
+
/** 411 Length Required */
|
|
39
|
+
lengthRequired(response?: string | object, details?: object): void;
|
|
40
|
+
/** 412 Precondition Failed */
|
|
41
|
+
preconditionFailed(response?: string | object, details?: object): void;
|
|
42
|
+
/** 413 Payload Too Large */
|
|
43
|
+
payloadTooLarge(response?: string | object, details?: object): void;
|
|
44
|
+
/** 414 Uri Too Long */
|
|
45
|
+
uriTooLong(response?: string | object, details?: object): void;
|
|
46
|
+
/** 415 Unsupported Media Type */
|
|
47
|
+
unsupportedMediaType(response?: string | object, details?: object): void;
|
|
48
|
+
/** 416 Range Not Satisfiable */
|
|
49
|
+
rangeNotSatisfiable(response?: string | object, details?: object): void;
|
|
50
|
+
/** 417 Expectation Failed */
|
|
51
|
+
expectationFailed(response?: string | object, details?: object): void;
|
|
52
|
+
/** 418 Im A Teapot */
|
|
53
|
+
imATeapot(response?: string | object, details?: object): void;
|
|
54
|
+
/** 421 Misdirected Request */
|
|
55
|
+
misdirectedRequest(response?: string | object, details?: object): void;
|
|
56
|
+
/** 422 Unprocessable Entity */
|
|
57
|
+
unprocessableEntity(response?: string | object, details?: object): void;
|
|
58
|
+
/** 423 Locked */
|
|
59
|
+
locked(response?: string | object, details?: object): void;
|
|
60
|
+
/** 424 Failed Dependency */
|
|
61
|
+
failedDependency(response?: string | object, details?: object): void;
|
|
62
|
+
/** 425 Too Early */
|
|
63
|
+
tooEarly(response?: string | object, details?: object): void;
|
|
64
|
+
/** 426 Upgrade Required */
|
|
65
|
+
upgradeRequired(response?: string | object, details?: object): void;
|
|
66
|
+
/** 428 Precondition Required */
|
|
67
|
+
preconditionRequired(response?: string | object, details?: object): void;
|
|
68
|
+
/** 429 Too Many Requests */
|
|
69
|
+
tooManyRequests(response?: string | object, details?: object): void;
|
|
70
|
+
/** 431 Request Header Fields Too Large */
|
|
71
|
+
requestHeaderFieldsTooLarge(response?: string | object, details?: object): void;
|
|
72
|
+
/** 451 Unavailable For Legal Reasons */
|
|
73
|
+
unavailableForLegalReasons(response?: string | object, details?: object): void;
|
|
74
|
+
/** 500 Internal Server Error */
|
|
75
|
+
internalServerError(response?: string | object, details?: object): void;
|
|
76
|
+
/** 501 Not Implemented */
|
|
77
|
+
notImplemented(response?: string | object, details?: object): void;
|
|
78
|
+
/** 502 Bad Gateway */
|
|
79
|
+
badGateway(response?: string | object, details?: object): void;
|
|
80
|
+
/** 503 Service Unavailable */
|
|
81
|
+
serviceUnavailable(response?: string | object, details?: object): void;
|
|
82
|
+
/** 504 Gateway Timeout */
|
|
83
|
+
gatewayTimeout(response?: string | object, details?: object): void;
|
|
84
|
+
/** 505 Http Version Not Supported */
|
|
85
|
+
httpVersionNotSupported(response?: string | object, details?: object): void;
|
|
86
|
+
/** 506 Variant Also Negotiates */
|
|
87
|
+
variantAlsoNegotiates(response?: string | object, details?: object): void;
|
|
88
|
+
/** 507 Insufficient Storage */
|
|
89
|
+
insufficientStorage(response?: string | object, details?: object): void;
|
|
90
|
+
/** 508 Loop Detected */
|
|
91
|
+
loopDetected(response?: string | object, details?: object): void;
|
|
92
|
+
/** 509 Bandwidth Limit Exceeded */
|
|
93
|
+
bandwidthLimitExceeded(response?: string | object, details?: object): void;
|
|
94
|
+
/** 510 Not Extended */
|
|
95
|
+
notExtended(response?: string | object, details?: object): void;
|
|
96
|
+
/** 511 Network Authentication Required */
|
|
97
|
+
networkAuthenticationRequired(response?: string | object, details?: object): void;
|
|
98
|
+
}
|
|
99
|
+
export interface ContextDelegatedResponseSuccessMethods {
|
|
100
|
+
/** 200 */
|
|
101
|
+
send(response: unknown, status?: number): void;
|
|
102
|
+
/** 201 */
|
|
103
|
+
created(response?: unknown): void;
|
|
104
|
+
/** 204 | 200 */
|
|
105
|
+
deleted(response?: unknown): void;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=koa-methods.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"koa-methods.d.ts","sourceRoot":"","sources":["../../../src/services/server/koa-methods.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fp = require('lodash/fp');
|
|
4
|
+
var node_http = require('node:http');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Single source of truth for the generated error helpers: yields one entry per
|
|
8
|
+
* 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the
|
|
9
|
+
* type/runtime sync test iterate this, so they cannot drift.
|
|
10
|
+
*/ function* errorMethodEntries() {
|
|
11
|
+
for (const [codeStr, statusName] of Object.entries(node_http.STATUS_CODES)){
|
|
12
|
+
const code = Number(codeStr);
|
|
13
|
+
if (statusName && code >= 400 && code < 600) {
|
|
14
|
+
yield {
|
|
15
|
+
code,
|
|
16
|
+
statusName,
|
|
17
|
+
methodName: fp.camelCase(statusName)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.errorMethodEntries = errorMethodEntries;
|
|
24
|
+
//# sourceMappingURL=koa-methods.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"koa-methods.js","sources":["../../../src/services/server/koa-methods.ts"],"sourcesContent":["import { camelCase } from 'lodash/fp';\nimport { STATUS_CODES } from 'node:http';\n\nexport interface ErrorMethodEntry {\n /** HTTP status code (400–599). */\n code: number;\n /** Reason phrase from `node:http` `STATUS_CODES`, e.g. \"Not Found\". */\n statusName: string;\n /** camelCased helper name registered on the context, e.g. \"notFound\". */\n methodName: keyof ContextDelegatedResponseErrorMethods;\n}\n\n/**\n * Single source of truth for the generated error helpers: yields one entry per\n * 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the\n * type/runtime sync test iterate this, so they cannot drift.\n */\nexport function* errorMethodEntries(): Generator<ErrorMethodEntry> {\n for (const [codeStr, statusName] of Object.entries(STATUS_CODES)) {\n const code = Number(codeStr);\n\n if (statusName && code >= 400 && code < 600) {\n yield {\n code,\n statusName,\n methodName: camelCase(statusName) as keyof ContextDelegatedResponseErrorMethods,\n };\n }\n }\n}\n\nexport interface ContextDelegatedResponseErrorMethods {\n /** 400 Bad Request */\n badRequest(response?: string | object, details?: object): void;\n /** 401 Unauthorized */\n unauthorized(response?: string | object, details?: object): void;\n /** 402 Payment Required */\n paymentRequired(response?: string | object, details?: object): void;\n /** 403 Forbidden */\n forbidden(response?: string | object, details?: object): void;\n /** 404 Not Found */\n notFound(response?: string | object, details?: object): void;\n /** 405 Method Not Allowed */\n methodNotAllowed(response?: string | object, details?: object): void;\n /** 406 Not Acceptable */\n notAcceptable(response?: string | object, details?: object): void;\n /** 407 Proxy Authentication Required */\n proxyAuthenticationRequired(response?: string | object, details?: object): void;\n /** 408 Request Timeout */\n requestTimeout(response?: string | object, details?: object): void;\n /** 409 Conflict */\n conflict(response?: string | object, details?: object): void;\n /** 410 Gone */\n gone(response?: string | object, details?: object): void;\n /** 411 Length Required */\n lengthRequired(response?: string | object, details?: object): void;\n /** 412 Precondition Failed */\n preconditionFailed(response?: string | object, details?: object): void;\n /** 413 Payload Too Large */\n payloadTooLarge(response?: string | object, details?: object): void;\n /** 414 Uri Too Long */\n uriTooLong(response?: string | object, details?: object): void;\n /** 415 Unsupported Media Type */\n unsupportedMediaType(response?: string | object, details?: object): void;\n /** 416 Range Not Satisfiable */\n rangeNotSatisfiable(response?: string | object, details?: object): void;\n /** 417 Expectation Failed */\n expectationFailed(response?: string | object, details?: object): void;\n /** 418 Im A Teapot */\n imATeapot(response?: string | object, details?: object): void;\n /** 421 Misdirected Request */\n misdirectedRequest(response?: string | object, details?: object): void;\n /** 422 Unprocessable Entity */\n unprocessableEntity(response?: string | object, details?: object): void;\n /** 423 Locked */\n locked(response?: string | object, details?: object): void;\n /** 424 Failed Dependency */\n failedDependency(response?: string | object, details?: object): void;\n /** 425 Too Early */\n tooEarly(response?: string | object, details?: object): void;\n /** 426 Upgrade Required */\n upgradeRequired(response?: string | object, details?: object): void;\n /** 428 Precondition Required */\n preconditionRequired(response?: string | object, details?: object): void;\n /** 429 Too Many Requests */\n tooManyRequests(response?: string | object, details?: object): void;\n /** 431 Request Header Fields Too Large */\n requestHeaderFieldsTooLarge(response?: string | object, details?: object): void;\n /** 451 Unavailable For Legal Reasons */\n unavailableForLegalReasons(response?: string | object, details?: object): void;\n /** 500 Internal Server Error */\n internalServerError(response?: string | object, details?: object): void;\n /** 501 Not Implemented */\n notImplemented(response?: string | object, details?: object): void;\n /** 502 Bad Gateway */\n badGateway(response?: string | object, details?: object): void;\n /** 503 Service Unavailable */\n serviceUnavailable(response?: string | object, details?: object): void;\n /** 504 Gateway Timeout */\n gatewayTimeout(response?: string | object, details?: object): void;\n /** 505 Http Version Not Supported */\n httpVersionNotSupported(response?: string | object, details?: object): void;\n /** 506 Variant Also Negotiates */\n variantAlsoNegotiates(response?: string | object, details?: object): void;\n /** 507 Insufficient Storage */\n insufficientStorage(response?: string | object, details?: object): void;\n /** 508 Loop Detected */\n loopDetected(response?: string | object, details?: object): void;\n /** 509 Bandwidth Limit Exceeded */\n bandwidthLimitExceeded(response?: string | object, details?: object): void;\n /** 510 Not Extended */\n notExtended(response?: string | object, details?: object): void;\n /** 511 Network Authentication Required */\n networkAuthenticationRequired(response?: string | object, details?: object): void;\n}\n\nexport interface ContextDelegatedResponseSuccessMethods {\n /** 200 */\n send(response: unknown, status?: number): void;\n /** 201 */\n created(response?: unknown): void;\n /** 204 | 200 */\n deleted(response?: unknown): void;\n}\n"],"names":["errorMethodEntries","codeStr","statusName","Object","entries","STATUS_CODES","code","Number","methodName","camelCase"],"mappings":";;;;;AAYA;;;;AAIC,IACM,UAAUA,kBAAAA,GAAAA;IACf,KAAK,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,IAAIC,MAAAA,CAAOC,OAAO,CAACC,sBAAAA,CAAAA,CAAe;AAChE,QAAA,MAAMC,OAAOC,MAAAA,CAAON,OAAAA,CAAAA;AAEpB,QAAA,IAAIC,UAAAA,IAAcI,IAAAA,IAAQ,GAAA,IAAOA,IAAAA,GAAO,GAAA,EAAK;YAC3C,MAAM;AACJA,gBAAAA,IAAAA;AACAJ,gBAAAA,UAAAA;AACAM,gBAAAA,UAAAA,EAAYC,YAAAA,CAAUP,UAAAA;AACxB,aAAA;AACF,QAAA;AACF,IAAA;AACF;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { camelCase } from 'lodash/fp';
|
|
2
|
+
import { STATUS_CODES } from 'node:http';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Single source of truth for the generated error helpers: yields one entry per
|
|
6
|
+
* 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the
|
|
7
|
+
* type/runtime sync test iterate this, so they cannot drift.
|
|
8
|
+
*/ function* errorMethodEntries() {
|
|
9
|
+
for (const [codeStr, statusName] of Object.entries(STATUS_CODES)){
|
|
10
|
+
const code = Number(codeStr);
|
|
11
|
+
if (statusName && code >= 400 && code < 600) {
|
|
12
|
+
yield {
|
|
13
|
+
code,
|
|
14
|
+
statusName,
|
|
15
|
+
methodName: camelCase(statusName)
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { errorMethodEntries };
|
|
22
|
+
//# sourceMappingURL=koa-methods.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"koa-methods.mjs","sources":["../../../src/services/server/koa-methods.ts"],"sourcesContent":["import { camelCase } from 'lodash/fp';\nimport { STATUS_CODES } from 'node:http';\n\nexport interface ErrorMethodEntry {\n /** HTTP status code (400–599). */\n code: number;\n /** Reason phrase from `node:http` `STATUS_CODES`, e.g. \"Not Found\". */\n statusName: string;\n /** camelCased helper name registered on the context, e.g. \"notFound\". */\n methodName: keyof ContextDelegatedResponseErrorMethods;\n}\n\n/**\n * Single source of truth for the generated error helpers: yields one entry per\n * 4xx/5xx `node:http` status. Both the runtime registration (`koa.ts`) and the\n * type/runtime sync test iterate this, so they cannot drift.\n */\nexport function* errorMethodEntries(): Generator<ErrorMethodEntry> {\n for (const [codeStr, statusName] of Object.entries(STATUS_CODES)) {\n const code = Number(codeStr);\n\n if (statusName && code >= 400 && code < 600) {\n yield {\n code,\n statusName,\n methodName: camelCase(statusName) as keyof ContextDelegatedResponseErrorMethods,\n };\n }\n }\n}\n\nexport interface ContextDelegatedResponseErrorMethods {\n /** 400 Bad Request */\n badRequest(response?: string | object, details?: object): void;\n /** 401 Unauthorized */\n unauthorized(response?: string | object, details?: object): void;\n /** 402 Payment Required */\n paymentRequired(response?: string | object, details?: object): void;\n /** 403 Forbidden */\n forbidden(response?: string | object, details?: object): void;\n /** 404 Not Found */\n notFound(response?: string | object, details?: object): void;\n /** 405 Method Not Allowed */\n methodNotAllowed(response?: string | object, details?: object): void;\n /** 406 Not Acceptable */\n notAcceptable(response?: string | object, details?: object): void;\n /** 407 Proxy Authentication Required */\n proxyAuthenticationRequired(response?: string | object, details?: object): void;\n /** 408 Request Timeout */\n requestTimeout(response?: string | object, details?: object): void;\n /** 409 Conflict */\n conflict(response?: string | object, details?: object): void;\n /** 410 Gone */\n gone(response?: string | object, details?: object): void;\n /** 411 Length Required */\n lengthRequired(response?: string | object, details?: object): void;\n /** 412 Precondition Failed */\n preconditionFailed(response?: string | object, details?: object): void;\n /** 413 Payload Too Large */\n payloadTooLarge(response?: string | object, details?: object): void;\n /** 414 Uri Too Long */\n uriTooLong(response?: string | object, details?: object): void;\n /** 415 Unsupported Media Type */\n unsupportedMediaType(response?: string | object, details?: object): void;\n /** 416 Range Not Satisfiable */\n rangeNotSatisfiable(response?: string | object, details?: object): void;\n /** 417 Expectation Failed */\n expectationFailed(response?: string | object, details?: object): void;\n /** 418 Im A Teapot */\n imATeapot(response?: string | object, details?: object): void;\n /** 421 Misdirected Request */\n misdirectedRequest(response?: string | object, details?: object): void;\n /** 422 Unprocessable Entity */\n unprocessableEntity(response?: string | object, details?: object): void;\n /** 423 Locked */\n locked(response?: string | object, details?: object): void;\n /** 424 Failed Dependency */\n failedDependency(response?: string | object, details?: object): void;\n /** 425 Too Early */\n tooEarly(response?: string | object, details?: object): void;\n /** 426 Upgrade Required */\n upgradeRequired(response?: string | object, details?: object): void;\n /** 428 Precondition Required */\n preconditionRequired(response?: string | object, details?: object): void;\n /** 429 Too Many Requests */\n tooManyRequests(response?: string | object, details?: object): void;\n /** 431 Request Header Fields Too Large */\n requestHeaderFieldsTooLarge(response?: string | object, details?: object): void;\n /** 451 Unavailable For Legal Reasons */\n unavailableForLegalReasons(response?: string | object, details?: object): void;\n /** 500 Internal Server Error */\n internalServerError(response?: string | object, details?: object): void;\n /** 501 Not Implemented */\n notImplemented(response?: string | object, details?: object): void;\n /** 502 Bad Gateway */\n badGateway(response?: string | object, details?: object): void;\n /** 503 Service Unavailable */\n serviceUnavailable(response?: string | object, details?: object): void;\n /** 504 Gateway Timeout */\n gatewayTimeout(response?: string | object, details?: object): void;\n /** 505 Http Version Not Supported */\n httpVersionNotSupported(response?: string | object, details?: object): void;\n /** 506 Variant Also Negotiates */\n variantAlsoNegotiates(response?: string | object, details?: object): void;\n /** 507 Insufficient Storage */\n insufficientStorage(response?: string | object, details?: object): void;\n /** 508 Loop Detected */\n loopDetected(response?: string | object, details?: object): void;\n /** 509 Bandwidth Limit Exceeded */\n bandwidthLimitExceeded(response?: string | object, details?: object): void;\n /** 510 Not Extended */\n notExtended(response?: string | object, details?: object): void;\n /** 511 Network Authentication Required */\n networkAuthenticationRequired(response?: string | object, details?: object): void;\n}\n\nexport interface ContextDelegatedResponseSuccessMethods {\n /** 200 */\n send(response: unknown, status?: number): void;\n /** 201 */\n created(response?: unknown): void;\n /** 204 | 200 */\n deleted(response?: unknown): void;\n}\n"],"names":["errorMethodEntries","codeStr","statusName","Object","entries","STATUS_CODES","code","Number","methodName","camelCase"],"mappings":";;;AAYA;;;;AAIC,IACM,UAAUA,kBAAAA,GAAAA;IACf,KAAK,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,IAAIC,MAAAA,CAAOC,OAAO,CAACC,YAAAA,CAAAA,CAAe;AAChE,QAAA,MAAMC,OAAOC,MAAAA,CAAON,OAAAA,CAAAA;AAEpB,QAAA,IAAIC,UAAAA,IAAcI,IAAAA,IAAQ,GAAA,IAAOA,IAAAA,GAAO,GAAA,EAAK;YAC3C,MAAM;AACJA,gBAAAA,IAAAA;AACAJ,gBAAAA,UAAAA;AACAM,gBAAAA,UAAAA,EAAYC,SAAAA,CAAUP,UAAAA;AACxB,aAAA;AACF,QAAA;AACF,IAAA;AACF;;;;"}
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
import Koa from 'koa';
|
|
2
|
-
declare module 'koa' {
|
|
3
|
-
interface BaseResponse {
|
|
4
|
-
send: (data: any, status?: number) => void;
|
|
5
|
-
created: (data: any) => void;
|
|
6
|
-
deleted: (data: any) => void;
|
|
7
|
-
_explicitStatus: boolean;
|
|
8
|
-
[key: string]: (message: string, details?: unknown) => void;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
2
|
declare const createKoaApp: ({ proxy, keys }: {
|
|
12
3
|
proxy: boolean;
|
|
13
4
|
keys: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../../src/services/server/koa.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"koa.d.ts","sourceRoot":"","sources":["../../../src/services/server/koa.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;AA8CtB,QAAA,MAAM,YAAY,GAAI,iBAAiB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,8CAOxE,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -4,31 +4,28 @@ var fp = require('lodash/fp');
|
|
|
4
4
|
var Koa = require('koa');
|
|
5
5
|
var createError = require('http-errors');
|
|
6
6
|
var delegate = require('delegates');
|
|
7
|
-
var statuses = require('statuses');
|
|
8
7
|
var errors = require('../errors.js');
|
|
8
|
+
var koaMethods = require('./koa-methods.js');
|
|
9
9
|
|
|
10
10
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
|
|
12
12
|
var Koa__default = /*#__PURE__*/_interopDefault(Koa);
|
|
13
13
|
var createError__default = /*#__PURE__*/_interopDefault(createError);
|
|
14
14
|
var delegate__default = /*#__PURE__*/_interopDefault(delegate);
|
|
15
|
-
var statuses__default = /*#__PURE__*/_interopDefault(statuses);
|
|
16
15
|
|
|
17
16
|
const addCustomMethods = (app)=>{
|
|
18
17
|
const delegator = delegate__default.default(app.context, 'response');
|
|
19
|
-
/* errors */
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
app.response[camelCasedName] = function responseCode(message = name, details = {}) {
|
|
23
|
-
const httpError = createError__default.default(code, message, {
|
|
18
|
+
/* errors */ for (const { code, statusName, methodName } of koaMethods.errorMethodEntries()){
|
|
19
|
+
app.response[methodName] = function responseCode(response = statusName, details = {}) {
|
|
20
|
+
const httpError = createError__default.default(code, response, {
|
|
24
21
|
details
|
|
25
22
|
});
|
|
26
23
|
const { status, body } = errors.formatHttpError(httpError);
|
|
27
24
|
this.status = status;
|
|
28
25
|
this.body = body;
|
|
29
26
|
};
|
|
30
|
-
delegator.method(
|
|
31
|
-
}
|
|
27
|
+
delegator.method(methodName);
|
|
28
|
+
}
|
|
32
29
|
/* send, created, deleted */ app.response.send = function send(data, status = 200) {
|
|
33
30
|
this.status = status;
|
|
34
31
|
this.body = data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koa.js","sources":["../../../src/services/server/koa.ts"],"sourcesContent":["import { isNil
|
|
1
|
+
{"version":3,"file":"koa.js","sources":["../../../src/services/server/koa.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport Koa from 'koa';\nimport createError from 'http-errors';\nimport delegate from 'delegates';\nimport { formatHttpError } from '../errors';\nimport { errorMethodEntries } from './koa-methods';\n\nconst addCustomMethods = (app: Koa) => {\n const delegator = delegate(app.context, 'response');\n\n /* errors */\n for (const { code, statusName, methodName } of errorMethodEntries()) {\n app.response[methodName] = function responseCode(response = statusName, details = {}) {\n const httpError = createError(code, response, { details });\n const { status, body } = formatHttpError(httpError);\n this.status = status;\n this.body = body;\n };\n\n delegator.method(methodName);\n }\n\n /* send, created, deleted */\n app.response.send = function send(data, status = 200) {\n this.status = status;\n this.body = data;\n };\n\n app.response.created = function created(data) {\n this.status = 201;\n this.body = data;\n };\n\n app.response.deleted = function deleted(data) {\n if (isNil(data)) {\n this.status = 204;\n } else {\n this.status = 200;\n this.body = data;\n }\n };\n\n delegator.method('send').method('created').method('deleted');\n\n return app;\n};\n\nconst createKoaApp = ({ proxy, keys }: { proxy: boolean; keys: string[] }) => {\n const app = new Koa({ proxy });\n app.keys = keys;\n\n addCustomMethods(app);\n\n return app;\n};\n\nexport default createKoaApp;\n"],"names":["addCustomMethods","app","delegator","delegate","context","code","statusName","methodName","errorMethodEntries","response","responseCode","details","httpError","createError","status","body","formatHttpError","method","send","data","created","deleted","isNil","createKoaApp","proxy","keys","Koa"],"mappings":";;;;;;;;;;;;;;;AAOA,MAAMA,mBAAmB,CAACC,GAAAA,GAAAA;AACxB,IAAA,MAAMC,SAAAA,GAAYC,yBAAAA,CAASF,GAAAA,CAAIG,OAAO,EAAE,UAAA,CAAA;iBAGxC,KAAK,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,UAAU,EAAE,IAAIC,6BAAAA,EAAAA,CAAsB;QACnEP,GAAAA,CAAIQ,QAAQ,CAACF,UAAAA,CAAW,GAAG,SAASG,YAAAA,CAAaD,QAAAA,GAAWH,UAAU,EAAEK,OAAAA,GAAU,EAAE,EAAA;YAClF,MAAMC,SAAAA,GAAYC,4BAAAA,CAAYR,IAAAA,EAAMI,QAAAA,EAAU;AAAEE,gBAAAA;AAAQ,aAAA,CAAA;AACxD,YAAA,MAAM,EAAEG,MAAM,EAAEC,IAAI,EAAE,GAAGC,sBAAAA,CAAgBJ,SAAAA,CAAAA;YACzC,IAAI,CAACE,MAAM,GAAGA,MAAAA;YACd,IAAI,CAACC,IAAI,GAAGA,IAAAA;AACd,QAAA,CAAA;AAEAb,QAAAA,SAAAA,CAAUe,MAAM,CAACV,UAAAA,CAAAA;AACnB,IAAA;iCAGAN,GAAAA,CAAIQ,QAAQ,CAACS,IAAI,GAAG,SAASA,IAAAA,CAAKC,IAAI,EAAEL,MAAAA,GAAS,GAAG,EAAA;QAClD,IAAI,CAACA,MAAM,GAAGA,MAAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAlB,IAAAA,GAAAA,CAAIQ,QAAQ,CAACW,OAAO,GAAG,SAASA,QAAQD,IAAI,EAAA;QAC1C,IAAI,CAACL,MAAM,GAAG,GAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAlB,IAAAA,GAAAA,CAAIQ,QAAQ,CAACY,OAAO,GAAG,SAASA,QAAQF,IAAI,EAAA;AAC1C,QAAA,IAAIG,SAAMH,IAAAA,CAAAA,EAAO;YACf,IAAI,CAACL,MAAM,GAAG,GAAA;QAChB,CAAA,MAAO;YACL,IAAI,CAACA,MAAM,GAAG,GAAA;YACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,QAAA;AACF,IAAA,CAAA;AAEAjB,IAAAA,SAAAA,CAAUe,MAAM,CAAC,MAAA,CAAA,CAAQA,MAAM,CAAC,SAAA,CAAA,CAAWA,MAAM,CAAC,SAAA,CAAA;IAElD,OAAOhB,GAAAA;AACT,CAAA;AAEA,MAAMsB,eAAe,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAsC,GAAA;IACvE,MAAMxB,GAAAA,GAAM,IAAIyB,oBAAAA,CAAI;AAAEF,QAAAA;AAAM,KAAA,CAAA;AAC5BvB,IAAAA,GAAAA,CAAIwB,IAAI,GAAGA,IAAAA;IAEXzB,gBAAAA,CAAiBC,GAAAA,CAAAA;IAEjB,OAAOA,GAAAA;AACT;;;;"}
|
|
@@ -1,25 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isNil } from 'lodash/fp';
|
|
2
2
|
import Koa from 'koa';
|
|
3
3
|
import createError from 'http-errors';
|
|
4
4
|
import delegate from 'delegates';
|
|
5
|
-
import statuses from 'statuses';
|
|
6
5
|
import { formatHttpError } from '../errors.mjs';
|
|
6
|
+
import { errorMethodEntries } from './koa-methods.mjs';
|
|
7
7
|
|
|
8
8
|
const addCustomMethods = (app)=>{
|
|
9
9
|
const delegator = delegate(app.context, 'response');
|
|
10
|
-
/* errors */
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
app.response[camelCasedName] = function responseCode(message = name, details = {}) {
|
|
14
|
-
const httpError = createError(code, message, {
|
|
10
|
+
/* errors */ for (const { code, statusName, methodName } of errorMethodEntries()){
|
|
11
|
+
app.response[methodName] = function responseCode(response = statusName, details = {}) {
|
|
12
|
+
const httpError = createError(code, response, {
|
|
15
13
|
details
|
|
16
14
|
});
|
|
17
15
|
const { status, body } = formatHttpError(httpError);
|
|
18
16
|
this.status = status;
|
|
19
17
|
this.body = body;
|
|
20
18
|
};
|
|
21
|
-
delegator.method(
|
|
22
|
-
}
|
|
19
|
+
delegator.method(methodName);
|
|
20
|
+
}
|
|
23
21
|
/* send, created, deleted */ app.response.send = function send(data, status = 200) {
|
|
24
22
|
this.status = status;
|
|
25
23
|
this.body = data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koa.mjs","sources":["../../../src/services/server/koa.ts"],"sourcesContent":["import { isNil
|
|
1
|
+
{"version":3,"file":"koa.mjs","sources":["../../../src/services/server/koa.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport Koa from 'koa';\nimport createError from 'http-errors';\nimport delegate from 'delegates';\nimport { formatHttpError } from '../errors';\nimport { errorMethodEntries } from './koa-methods';\n\nconst addCustomMethods = (app: Koa) => {\n const delegator = delegate(app.context, 'response');\n\n /* errors */\n for (const { code, statusName, methodName } of errorMethodEntries()) {\n app.response[methodName] = function responseCode(response = statusName, details = {}) {\n const httpError = createError(code, response, { details });\n const { status, body } = formatHttpError(httpError);\n this.status = status;\n this.body = body;\n };\n\n delegator.method(methodName);\n }\n\n /* send, created, deleted */\n app.response.send = function send(data, status = 200) {\n this.status = status;\n this.body = data;\n };\n\n app.response.created = function created(data) {\n this.status = 201;\n this.body = data;\n };\n\n app.response.deleted = function deleted(data) {\n if (isNil(data)) {\n this.status = 204;\n } else {\n this.status = 200;\n this.body = data;\n }\n };\n\n delegator.method('send').method('created').method('deleted');\n\n return app;\n};\n\nconst createKoaApp = ({ proxy, keys }: { proxy: boolean; keys: string[] }) => {\n const app = new Koa({ proxy });\n app.keys = keys;\n\n addCustomMethods(app);\n\n return app;\n};\n\nexport default createKoaApp;\n"],"names":["addCustomMethods","app","delegator","delegate","context","code","statusName","methodName","errorMethodEntries","response","responseCode","details","httpError","createError","status","body","formatHttpError","method","send","data","created","deleted","isNil","createKoaApp","proxy","keys","Koa"],"mappings":";;;;;;;AAOA,MAAMA,mBAAmB,CAACC,GAAAA,GAAAA;AACxB,IAAA,MAAMC,SAAAA,GAAYC,QAAAA,CAASF,GAAAA,CAAIG,OAAO,EAAE,UAAA,CAAA;iBAGxC,KAAK,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,UAAU,EAAE,IAAIC,kBAAAA,EAAAA,CAAsB;QACnEP,GAAAA,CAAIQ,QAAQ,CAACF,UAAAA,CAAW,GAAG,SAASG,YAAAA,CAAaD,QAAAA,GAAWH,UAAU,EAAEK,OAAAA,GAAU,EAAE,EAAA;YAClF,MAAMC,SAAAA,GAAYC,WAAAA,CAAYR,IAAAA,EAAMI,QAAAA,EAAU;AAAEE,gBAAAA;AAAQ,aAAA,CAAA;AACxD,YAAA,MAAM,EAAEG,MAAM,EAAEC,IAAI,EAAE,GAAGC,eAAAA,CAAgBJ,SAAAA,CAAAA;YACzC,IAAI,CAACE,MAAM,GAAGA,MAAAA;YACd,IAAI,CAACC,IAAI,GAAGA,IAAAA;AACd,QAAA,CAAA;AAEAb,QAAAA,SAAAA,CAAUe,MAAM,CAACV,UAAAA,CAAAA;AACnB,IAAA;iCAGAN,GAAAA,CAAIQ,QAAQ,CAACS,IAAI,GAAG,SAASA,IAAAA,CAAKC,IAAI,EAAEL,MAAAA,GAAS,GAAG,EAAA;QAClD,IAAI,CAACA,MAAM,GAAGA,MAAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAlB,IAAAA,GAAAA,CAAIQ,QAAQ,CAACW,OAAO,GAAG,SAASA,QAAQD,IAAI,EAAA;QAC1C,IAAI,CAACL,MAAM,GAAG,GAAA;QACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,IAAA,CAAA;AAEAlB,IAAAA,GAAAA,CAAIQ,QAAQ,CAACY,OAAO,GAAG,SAASA,QAAQF,IAAI,EAAA;AAC1C,QAAA,IAAIG,MAAMH,IAAAA,CAAAA,EAAO;YACf,IAAI,CAACL,MAAM,GAAG,GAAA;QAChB,CAAA,MAAO;YACL,IAAI,CAACA,MAAM,GAAG,GAAA;YACd,IAAI,CAACC,IAAI,GAAGI,IAAAA;AACd,QAAA;AACF,IAAA,CAAA;AAEAjB,IAAAA,SAAAA,CAAUe,MAAM,CAAC,MAAA,CAAA,CAAQA,MAAM,CAAC,SAAA,CAAA,CAAWA,MAAM,CAAC,SAAA,CAAA;IAElD,OAAOhB,GAAAA;AACT,CAAA;AAEA,MAAMsB,eAAe,CAAC,EAAEC,KAAK,EAAEC,IAAI,EAAsC,GAAA;IACvE,MAAMxB,GAAAA,GAAM,IAAIyB,GAAAA,CAAI;AAAEF,QAAAA;AAAM,KAAA,CAAA;AAC5BvB,IAAAA,GAAAA,CAAIwB,IAAI,GAAGA,IAAAA;IAEXzB,gBAAAA,CAAiBC,GAAAA,CAAAA;IAEjB,OAAOA,GAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/services/server/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiB1C,QAAA,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/services/server/middleware.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiB1C,QAAA,MAAM,uBAAuB,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,6BAUtE,CAAC;AAIF;;GAEG;AACH,QAAA,MAAM,kBAAkB,GACtB,QAAQ,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,EACnF,QAAQ,IAAI,CAAC,MAAM;UAGX,MAAM,GAAG,IAAI;aACV,IAAI,CAAC,iBAAiB;GA+DlC,CAAC;AAyBF,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/services/server/openapi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA0K1C,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/services/server/openapi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AA0K1C,eAAO,MAAM,oBAAoB,GAAI,QAAQ,IAAI,CAAC,MAAM,SA8DvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/services/server/policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAA,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../src/services/server/policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,QAAA,MAAM,yBAAyB,GAAI,OAAO,IAAI,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,2BAmBxE,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-middlewares.d.ts","sourceRoot":"","sources":["../../../src/services/server/register-middlewares.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiD1C;;GAEG;AACH,QAAA,MAAM,8BAA8B,
|
|
1
|
+
{"version":3,"file":"register-middlewares.d.ts","sourceRoot":"","sources":["../../../src/services/server/register-middlewares.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiD1C;;GAEG;AACH,QAAA,MAAM,8BAA8B,GAAU,QAAQ,IAAI,CAAC,MAAM,kBAchE,CAAC;AAkCF,eAAe,8BAA8B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-routes.d.ts","sourceRoot":"","sources":["../../../src/services/server/register-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiB1C;;GAEG;
|
|
1
|
+
{"version":3,"file":"register-routes.d.ts","sourceRoot":"","sources":["../../../src/services/server/register-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAiB1C;;GAEG;yBACa,QAAQ,IAAI,CAAC,MAAM;AAAnC,wBAKE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/services/server/routing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../src/services/server/routing.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAkE1C,QAAA,MAAM,mBAAmB,GAAI,aAAa,IAAI,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYxD,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAM;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO;wBAmBhD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,MAAM;CAkB3E,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -3,6 +3,11 @@ import type { Database } from '@strapi/database';
|
|
|
3
3
|
export interface SessionProvider {
|
|
4
4
|
create(session: SessionData): Promise<SessionData>;
|
|
5
5
|
findBySessionId(sessionId: string): Promise<SessionData | null>;
|
|
6
|
+
findByUser(criteria: {
|
|
7
|
+
userId: string;
|
|
8
|
+
origin: string;
|
|
9
|
+
status?: SessionData['status'];
|
|
10
|
+
}): Promise<SessionData[]>;
|
|
6
11
|
updateBySessionId(sessionId: string, data: Partial<SessionData>): Promise<void>;
|
|
7
12
|
deleteBySessionId(sessionId: string): Promise<void>;
|
|
8
13
|
deleteExpired(): Promise<void>;
|
|
@@ -21,6 +26,7 @@ export interface SessionData {
|
|
|
21
26
|
childId?: string | null;
|
|
22
27
|
type?: 'refresh' | 'session';
|
|
23
28
|
status?: 'active' | 'rotated' | 'revoked';
|
|
29
|
+
metadata?: Record<string, unknown> | null;
|
|
24
30
|
expiresAt: Date;
|
|
25
31
|
absoluteExpiresAt?: Date | null;
|
|
26
32
|
createdAt?: Date;
|
|
@@ -63,6 +69,7 @@ declare class OriginSessionManager {
|
|
|
63
69
|
constructor(sessionManager: SessionManager, origin: string);
|
|
64
70
|
generateRefreshToken(userId: string, deviceId: string | undefined, options?: {
|
|
65
71
|
type?: 'refresh' | 'session';
|
|
72
|
+
metadata?: Record<string, unknown>;
|
|
66
73
|
}): Promise<{
|
|
67
74
|
token: string;
|
|
68
75
|
sessionId: string;
|
|
@@ -90,6 +97,16 @@ declare class OriginSessionManager {
|
|
|
90
97
|
};
|
|
91
98
|
validateRefreshToken(token: string): Promise<ValidateRefreshTokenResult>;
|
|
92
99
|
invalidateRefreshToken(userId: string, deviceId?: string): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Lists the active sessions of a user for this origin. Rotated/expired records
|
|
102
|
+
* are excluded so each live login family yields a single entry.
|
|
103
|
+
*/
|
|
104
|
+
listSessions(userId: string): Promise<SessionData[]>;
|
|
105
|
+
/**
|
|
106
|
+
* Revokes a single session by id, but only if it belongs to the given user and origin.
|
|
107
|
+
* Returns true when a matching session was found and deleted.
|
|
108
|
+
*/
|
|
109
|
+
revokeSessionById(userId: string, sessionId: string): Promise<boolean>;
|
|
93
110
|
/**
|
|
94
111
|
* Returns true when a session exists and is not expired for this origin.
|
|
95
112
|
* If the session exists but is expired, it will be deleted as part of this check.
|
|
@@ -126,6 +143,7 @@ declare class SessionManager {
|
|
|
126
143
|
get cleanupThreshold(): number;
|
|
127
144
|
generateRefreshToken(userId: string, deviceId: string | undefined, origin: string, options?: {
|
|
128
145
|
type?: 'refresh' | 'session';
|
|
146
|
+
metadata?: Record<string, unknown>;
|
|
129
147
|
}): Promise<{
|
|
130
148
|
token: string;
|
|
131
149
|
sessionId: string;
|
|
@@ -140,6 +158,8 @@ declare class SessionManager {
|
|
|
140
158
|
};
|
|
141
159
|
validateRefreshToken(token: string, origin: string): Promise<ValidateRefreshTokenResult>;
|
|
142
160
|
invalidateRefreshToken(origin: string, userId: string, deviceId?: string): Promise<void>;
|
|
161
|
+
listSessions(origin: string, userId: string): Promise<SessionData[]>;
|
|
162
|
+
revokeSessionById(origin: string, userId: string, sessionId: string): Promise<boolean>;
|
|
143
163
|
generateAccessToken(refreshToken: string, origin: string): Promise<{
|
|
144
164
|
token: string;
|
|
145
165
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/services/session-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACnD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,SAAS,EAAE,IAAI,CAAC;IAChB,iBAAiB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAEpE,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EACF,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,CAAC;CACxB;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/services/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,21 @@ class DatabaseSessionProvider {
|
|
|
24
24
|
});
|
|
25
25
|
return result;
|
|
26
26
|
}
|
|
27
|
+
async findByUser(criteria) {
|
|
28
|
+
const results = await this.db.query(this.contentType).findMany({
|
|
29
|
+
where: {
|
|
30
|
+
userId: criteria.userId,
|
|
31
|
+
origin: criteria.origin,
|
|
32
|
+
...criteria.status ? {
|
|
33
|
+
status: criteria.status
|
|
34
|
+
} : {}
|
|
35
|
+
},
|
|
36
|
+
orderBy: {
|
|
37
|
+
createdAt: 'DESC'
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return results;
|
|
41
|
+
}
|
|
27
42
|
async updateBySessionId(sessionId, data) {
|
|
28
43
|
await this.db.query(this.contentType).update({
|
|
29
44
|
where: {
|
|
@@ -88,6 +103,18 @@ class OriginSessionManager {
|
|
|
88
103
|
return this.sessionManager.invalidateRefreshToken(this.origin, userId, deviceId);
|
|
89
104
|
}
|
|
90
105
|
/**
|
|
106
|
+
* Lists the active sessions of a user for this origin. Rotated/expired records
|
|
107
|
+
* are excluded so each live login family yields a single entry.
|
|
108
|
+
*/ async listSessions(userId) {
|
|
109
|
+
return this.sessionManager.listSessions(this.origin, userId);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Revokes a single session by id, but only if it belongs to the given user and origin.
|
|
113
|
+
* Returns true when a matching session was found and deleted.
|
|
114
|
+
*/ async revokeSessionById(userId, sessionId) {
|
|
115
|
+
return this.sessionManager.revokeSessionById(this.origin, userId, sessionId);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
91
118
|
* Returns true when a session exists and is not expired for this origin.
|
|
92
119
|
* If the session exists but is expired, it will be deleted as part of this check.
|
|
93
120
|
*/ async isSessionActive(sessionId) {
|
|
@@ -186,6 +213,9 @@ class SessionManager {
|
|
|
186
213
|
childId: null,
|
|
187
214
|
type: tokenType,
|
|
188
215
|
status: 'active',
|
|
216
|
+
...options?.metadata ? {
|
|
217
|
+
metadata: options.metadata
|
|
218
|
+
} : {},
|
|
189
219
|
expiresAt,
|
|
190
220
|
absoluteExpiresAt
|
|
191
221
|
});
|
|
@@ -314,6 +344,28 @@ class SessionManager {
|
|
|
314
344
|
deviceId
|
|
315
345
|
});
|
|
316
346
|
}
|
|
347
|
+
async listSessions(origin, userId) {
|
|
348
|
+
if (!origin || typeof origin !== 'string') {
|
|
349
|
+
throw new Error('SessionManager: Origin parameter is required and must be a non-empty string');
|
|
350
|
+
}
|
|
351
|
+
return this.provider.findByUser({
|
|
352
|
+
userId,
|
|
353
|
+
origin,
|
|
354
|
+
status: 'active'
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
async revokeSessionById(origin, userId, sessionId) {
|
|
358
|
+
if (!origin || typeof origin !== 'string') {
|
|
359
|
+
throw new Error('SessionManager: Origin parameter is required and must be a non-empty string');
|
|
360
|
+
}
|
|
361
|
+
const session = await this.provider.findBySessionId(sessionId);
|
|
362
|
+
// Only allow revoking a session that belongs to the requesting user and origin.
|
|
363
|
+
if (session?.userId !== userId || session?.origin !== origin) {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
await this.provider.deleteBySessionId(sessionId);
|
|
367
|
+
return true;
|
|
368
|
+
}
|
|
317
369
|
async generateAccessToken(refreshToken, origin) {
|
|
318
370
|
if (!origin || typeof origin !== 'string') {
|
|
319
371
|
throw new Error('SessionManager: Origin parameter is required and must be a non-empty string');
|
|
@@ -432,6 +484,11 @@ class SessionManager {
|
|
|
432
484
|
childId: null,
|
|
433
485
|
type: tokenType,
|
|
434
486
|
status: 'active',
|
|
487
|
+
// Preserve origin-defined metadata (e.g. deviceName, loginAt) across rotation so the
|
|
488
|
+
// active record always reflects the original session details.
|
|
489
|
+
...current.metadata ? {
|
|
490
|
+
metadata: current.metadata
|
|
491
|
+
} : {},
|
|
435
492
|
expiresAt: childExpiresAt,
|
|
436
493
|
absoluteExpiresAt: current.absoluteExpiresAt ?? new Date(absolute)
|
|
437
494
|
});
|