@pipeline-builder/api-core 3.4.95 → 3.4.97
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/lib/constants/ai-providers.d.ts +0 -7
- package/lib/constants/ai-providers.js +1 -10
- package/lib/helpers/access-helpers.d.ts +2 -1
- package/lib/helpers/access-helpers.js +11 -5
- package/lib/helpers/org-hierarchy-http.d.ts +13 -3
- package/lib/helpers/org-hierarchy-http.js +10 -5
- package/lib/index.d.ts +4 -4
- package/lib/index.js +5 -5
- package/lib/middleware/auth.d.ts +16 -5
- package/lib/middleware/auth.js +17 -7
- package/lib/services/audit-spool.d.ts +4 -5
- package/lib/services/audit-spool.js +10 -27
- package/lib/services/cache-service.js +11 -10
- package/lib/services/env-redis.d.ts +20 -0
- package/lib/services/env-redis.js +47 -0
- package/lib/services/leader-lock.d.ts +10 -0
- package/lib/services/leader-lock.js +19 -1
- package/lib/services/quota.js +14 -5
- package/lib/services/remote-audit-client.d.ts +19 -1
- package/lib/services/remote-audit-client.js +41 -1
- package/lib/services/scheduler.js +15 -1
- package/lib/services/token-revocation.js +8 -30
- package/lib/types/common.d.ts +0 -20
- package/lib/types/common.js +1 -26
- package/lib/types/feature-flags.d.ts +1 -14
- package/lib/types/feature-flags.js +6 -16
- package/lib/utils/identity.d.ts +0 -21
- package/lib/utils/identity.js +1 -30
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/index.js +1 -2
- package/lib/utils/params.d.ts +0 -19
- package/lib/utils/params.js +1 -35
- package/lib/utils/response.d.ts +0 -38
- package/lib/utils/response.js +1 -41
- package/lib/validation/middleware.d.ts +2 -6
- package/lib/validation/middleware.js +3 -9
- package/package.json +1 -1
- package/lib/utils/org-aws-credentials.d.ts +0 -154
- package/lib/utils/org-aws-credentials.js +0 -139
|
@@ -32,10 +32,3 @@ export declare const AI_PROVIDER_ENV_VARS: Record<string, string>;
|
|
|
32
32
|
* @returns Array of models, or empty array if the provider is unknown
|
|
33
33
|
*/
|
|
34
34
|
export declare function getAIProviderModels(providerId: string): AIModelInfo[];
|
|
35
|
-
/**
|
|
36
|
-
* Get the display name for a provider ID.
|
|
37
|
-
*
|
|
38
|
-
* @param providerId - Provider identifier (e.g. "anthropic")
|
|
39
|
-
* @returns Display name, or the raw ID if the provider is unknown
|
|
40
|
-
*/
|
|
41
|
-
export declare function getAIProviderName(providerId: string): string;
|
|
@@ -71,13 +71,4 @@ export const AI_PROVIDER_ENV_VARS = {
|
|
|
71
71
|
export function getAIProviderModels(providerId) {
|
|
72
72
|
return AI_PROVIDER_CATALOG[providerId]?.models ?? [];
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
* Get the display name for a provider ID.
|
|
76
|
-
*
|
|
77
|
-
* @param providerId - Provider identifier (e.g. "anthropic")
|
|
78
|
-
* @returns Display name, or the raw ID if the provider is unknown
|
|
79
|
-
*/
|
|
80
|
-
export function getAIProviderName(providerId) {
|
|
81
|
-
return AI_PROVIDER_CATALOG[providerId]?.name ?? providerId;
|
|
82
|
-
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktcHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy9haS1wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQXNCdEMsVUFBVTtBQUVWOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBbUM7SUFDakUsV0FBVyxFQUFFO1FBQ1gsRUFBRSxFQUFFLFdBQVc7UUFDZixJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0QsRUFBRSxFQUFFLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1NBQzlEO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsUUFBUTtRQUNaLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDM0M7S0FDRjtJQUNELFFBQVEsRUFBRTtRQUNSLEVBQUUsRUFBRSxRQUFRO1FBQ1osSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDcEQsRUFBRSxFQUFFLEVBQUUsOEJBQThCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1NBQy9EO0tBQ0Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSxZQUFZO1FBQ2xCLE1BQU0sRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQzFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1NBQzNDO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixFQUFFLEVBQUUsZ0JBQWdCO1FBQ3BCLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsTUFBTSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUUsMkNBQTJDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ2pGLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUMxRCxFQUFFLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7U0FDN0Q7S0FDRjtDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBMkI7SUFDMUQsV0FBVyxFQUFFLG1CQUFtQjtJQUNoQyxRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsS0FBSyxFQUFFLGFBQWE7SUFDcEIsZ0JBQWdCLEVBQUUsbUJBQW1CO0NBQ3RDLENBQUM7QUFFRixVQUFVO0FBRVY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBa0I7SUFDcEQsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3ZELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxVQUFrQjtJQUNsRCxPQUFPLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksSUFBSSxVQUFVLENBQUM7QUFDN0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vLyBUeXBlc1xuXG4vKiogTWV0YWRhdGEgZm9yIGEgc2luZ2xlIEFJIG1vZGVsLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBSU1vZGVsSW5mbyB7XG4gIC8qKiBNb2RlbCBpZGVudGlmaWVyIHVzZWQgaW4gQVBJIGNhbGxzIChlLmcuIFwiY2xhdWRlLXNvbm5ldC00LTIwMjUwNTE0XCIpLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZGlzcGxheSBuYW1lIChlLmcuIFwiQ2xhdWRlIFNvbm5ldCA0XCIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBNZXRhZGF0YSBmb3IgYW4gQUkgcHJvdmlkZXIgd2l0aCBpdHMgYXZhaWxhYmxlIG1vZGVscy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlQcm92aWRlckluZm8ge1xuICAvKiogUHJvdmlkZXIgaWRlbnRpZmllciAoZS5nLiBcImFudGhyb3BpY1wiLCBcIm9wZW5haVwiLCBcImdvb2dsZVwiKS4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGRpc3BsYXkgbmFtZSAoZS5nLiBcIkFudGhyb3BpY1wiKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogTW9kZWxzIGF2YWlsYWJsZSBmb3IgdGhpcyBwcm92aWRlci4gKi9cbiAgbW9kZWxzOiBBSU1vZGVsSW5mb1tdO1xufVxuXG4vLyBDYXRhbG9nXG5cbi8qKlxuICogU3RhbmRhcmQgQUkgcHJvdmlkZXIgY2F0YWxvZyDigJQgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgYWxsIHN1cHBvcnRlZFxuICogcHJvdmlkZXJzIGFuZCB0aGVpciBtb2RlbHMuIFVzZWQgYnkgYm90aCBiYWNrZW5kIHNlcnZpY2VzIGFuZCBmcm9udGVuZFxuICogY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFJX1BST1ZJREVSX0NBVEFMT0c6IFJlY29yZDxzdHJpbmcsIEFJUHJvdmlkZXJJbmZvPiA9IHtcbiAgJ2FudGhyb3BpYyc6IHtcbiAgICBpZDogJ2FudGhyb3BpYycsXG4gICAgbmFtZTogJ0FudGhyb3BpYycsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnY2xhdWRlLXNvbm5ldC00LTIwMjUwNTE0JywgbmFtZTogJ0NsYXVkZSBTb25uZXQgNCcgfSxcbiAgICAgIHsgaWQ6ICdjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxJywgbmFtZTogJ0NsYXVkZSBIYWlrdSA0LjUnIH0sXG4gICAgXSxcbiAgfSxcbiAgJ29wZW5haSc6IHtcbiAgICBpZDogJ29wZW5haScsXG4gICAgbmFtZTogJ09wZW5BSScsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnZ3B0LTRvJywgbmFtZTogJ0dQVC00bycgfSxcbiAgICAgIHsgaWQ6ICdncHQtNG8tbWluaScsIG5hbWU6ICdHUFQtNG8gTWluaScgfSxcbiAgICBdLFxuICB9LFxuICAnZ29vZ2xlJzoge1xuICAgIGlkOiAnZ29vZ2xlJyxcbiAgICBuYW1lOiAnR29vZ2xlJyxcbiAgICBtb2RlbHM6IFtcbiAgICAgIHsgaWQ6ICdnZW1pbmktMi4wLWZsYXNoJywgbmFtZTogJ0dlbWluaSAyLjAgRmxhc2gnIH0sXG4gICAgICB7IGlkOiAnZ2VtaW5pLTIuNS1wcm8tcHJldmlldy0wNi0wNScsIG5hbWU6ICdHZW1pbmkgMi41IFBybycgfSxcbiAgICBdLFxuICB9LFxuICAneGFpJzoge1xuICAgIGlkOiAneGFpJyxcbiAgICBuYW1lOiAneEFJIChHcm9rKScsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnZ3Jvay0zJywgbmFtZTogJ0dyb2sgMycgfSxcbiAgICAgIHsgaWQ6ICdncm9rLTMtZmFzdCcsIG5hbWU6ICdHcm9rIDMgRmFzdCcgfSxcbiAgICAgIHsgaWQ6ICdncm9rLTMtbWluaScsIG5hbWU6ICdHcm9rIDMgTWluaScgfSxcbiAgICBdLFxuICB9LFxuICAnYW1hem9uLWJlZHJvY2snOiB7XG4gICAgaWQ6ICdhbWF6b24tYmVkcm9jaycsXG4gICAgbmFtZTogJ0FtYXpvbiBCZWRyb2NrJyxcbiAgICBtb2RlbHM6IFtcbiAgICAgIHsgaWQ6ICdhbnRocm9waWMuY2xhdWRlLTMtNS1zb25uZXQtMjAyNDEwMjItdjI6MCcsIG5hbWU6ICdDbGF1ZGUgMy41IFNvbm5ldCB2MicgfSxcbiAgICAgIHsgaWQ6ICd1cy5hbWF6b24ubm92YS1wcm8tdjE6MCcsIG5hbWU6ICdBbWF6b24gTm92YSBQcm8nIH0sXG4gICAgICB7IGlkOiAndXMuYW1hem9uLm5vdmEtbGl0ZS12MTowJywgbmFtZTogJ0FtYXpvbiBOb3ZhIExpdGUnIH0sXG4gICAgXSxcbiAgfSxcbn07XG5cbi8qKlxuICogRW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMgZm9yIGVhY2ggQUkgcHJvdmlkZXIncyBBUEkga2V5LlxuICogVXNlZCBieSBiYWNrZW5kIHNlcnZpY2VzIHRvIGluaXRpYWxpemUgdGhlIHByb3ZpZGVyIHJlZ2lzdHJ5LlxuICovXG5leHBvcnQgY29uc3QgQUlfUFJPVklERVJfRU5WX1ZBUlM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdhbnRocm9waWMnOiAnQU5USFJPUElDX0FQSV9LRVknLFxuICAnb3BlbmFpJzogJ09QRU5BSV9BUElfS0VZJyxcbiAgJ2dvb2dsZSc6ICdHT09HTEVfR0VORVJBVElWRV9BSV9BUElfS0VZJyxcbiAgJ3hhaSc6ICdYQUlfQVBJX0tFWScsXG4gICdhbWF6b24tYmVkcm9jayc6ICdBV1NfQUNDRVNTX0tFWV9JRCcsXG59O1xuXG4vLyBIZWxwZXJzXG5cbi8qKlxuICogR2V0IHRoZSBtb2RlbCBsaXN0IGZvciBhIGdpdmVuIHByb3ZpZGVyIElELlxuICpcbiAqIEBwYXJhbSBwcm92aWRlcklkIC0gUHJvdmlkZXIgaWRlbnRpZmllciAoZS5nLiBcImFudGhyb3BpY1wiKVxuICogQHJldHVybnMgQXJyYXkgb2YgbW9kZWxzLCBvciBlbXB0eSBhcnJheSBpZiB0aGUgcHJvdmlkZXIgaXMgdW5rbm93blxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QUlQcm92aWRlck1vZGVscyhwcm92aWRlcklkOiBzdHJpbmcpOiBBSU1vZGVsSW5mb1tdIHtcbiAgcmV0dXJuIEFJX1BST1ZJREVSX0NBVEFMT0dbcHJvdmlkZXJJZF0/Lm1vZGVscyA/PyBbXTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYSBwcm92aWRlciBJRC5cbiAqXG4gKiBAcGFyYW0gcHJvdmlkZXJJZCAtIFByb3ZpZGVyIGlkZW50aWZpZXIgKGUuZy4gXCJhbnRocm9waWNcIilcbiAqIEByZXR1cm5zIERpc3BsYXkgbmFtZSwgb3IgdGhlIHJhdyBJRCBpZiB0aGUgcHJvdmlkZXIgaXMgdW5rbm93blxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QUlQcm92aWRlck5hbWUocHJvdmlkZXJJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIEFJX1BST1ZJREVSX0NBVEFMT0dbcHJvdmlkZXJJZF0/Lm5hbWUgPz8gcHJvdmlkZXJJZDtcbn1cbiJdfQ==
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktcHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy9haS1wcm92aWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQXNCdEMsVUFBVTtBQUVWOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBbUM7SUFDakUsV0FBVyxFQUFFO1FBQ1gsRUFBRSxFQUFFLFdBQVc7UUFDZixJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0QsRUFBRSxFQUFFLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1NBQzlEO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsUUFBUTtRQUNaLElBQUksRUFBRSxRQUFRO1FBQ2QsTUFBTSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEMsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7U0FDM0M7S0FDRjtJQUNELFFBQVEsRUFBRTtRQUNSLEVBQUUsRUFBRSxRQUFRO1FBQ1osSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDcEQsRUFBRSxFQUFFLEVBQUUsOEJBQThCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1NBQy9EO0tBQ0Y7SUFDRCxLQUFLLEVBQUU7UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSxZQUFZO1FBQ2xCLE1BQU0sRUFBRTtZQUNOLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQzFDLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO1NBQzNDO0tBQ0Y7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixFQUFFLEVBQUUsZ0JBQWdCO1FBQ3BCLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsTUFBTSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUUsMkNBQTJDLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFO1lBQ2pGLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUMxRCxFQUFFLEVBQUUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7U0FDN0Q7S0FDRjtDQUNGLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBMkI7SUFDMUQsV0FBVyxFQUFFLG1CQUFtQjtJQUNoQyxRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLFFBQVEsRUFBRSw4QkFBOEI7SUFDeEMsS0FBSyxFQUFFLGFBQWE7SUFDcEIsZ0JBQWdCLEVBQUUsbUJBQW1CO0NBQ3RDLENBQUM7QUFFRixVQUFVO0FBRVY7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBa0I7SUFDcEQsT0FBTyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLy8gVHlwZXNcblxuLyoqIE1ldGFkYXRhIGZvciBhIHNpbmdsZSBBSSBtb2RlbC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlNb2RlbEluZm8ge1xuICAvKiogTW9kZWwgaWRlbnRpZmllciB1c2VkIGluIEFQSSBjYWxscyAoZS5nLiBcImNsYXVkZS1zb25uZXQtNC0yMDI1MDUxNFwiKS4gKi9cbiAgaWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGRpc3BsYXkgbmFtZSAoZS5nLiBcIkNsYXVkZSBTb25uZXQgNFwiKS4gKi9cbiAgbmFtZTogc3RyaW5nO1xufVxuXG4vKiogTWV0YWRhdGEgZm9yIGFuIEFJIHByb3ZpZGVyIHdpdGggaXRzIGF2YWlsYWJsZSBtb2RlbHMuICovXG5leHBvcnQgaW50ZXJmYWNlIEFJUHJvdmlkZXJJbmZvIHtcbiAgLyoqIFByb3ZpZGVyIGlkZW50aWZpZXIgKGUuZy4gXCJhbnRocm9waWNcIiwgXCJvcGVuYWlcIiwgXCJnb29nbGVcIikuICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkaXNwbGF5IG5hbWUgKGUuZy4gXCJBbnRocm9waWNcIikuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIE1vZGVscyBhdmFpbGFibGUgZm9yIHRoaXMgcHJvdmlkZXIuICovXG4gIG1vZGVsczogQUlNb2RlbEluZm9bXTtcbn1cblxuLy8gQ2F0YWxvZ1xuXG4vKipcbiAqIFN0YW5kYXJkIEFJIHByb3ZpZGVyIGNhdGFsb2cg4oCUIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGFsbCBzdXBwb3J0ZWRcbiAqIHByb3ZpZGVycyBhbmQgdGhlaXIgbW9kZWxzLiBVc2VkIGJ5IGJvdGggYmFja2VuZCBzZXJ2aWNlcyBhbmQgZnJvbnRlbmRcbiAqIGNvbXBvbmVudHMuXG4gKi9cbmV4cG9ydCBjb25zdCBBSV9QUk9WSURFUl9DQVRBTE9HOiBSZWNvcmQ8c3RyaW5nLCBBSVByb3ZpZGVySW5mbz4gPSB7XG4gICdhbnRocm9waWMnOiB7XG4gICAgaWQ6ICdhbnRocm9waWMnLFxuICAgIG5hbWU6ICdBbnRocm9waWMnLFxuICAgIG1vZGVsczogW1xuICAgICAgeyBpZDogJ2NsYXVkZS1zb25uZXQtNC0yMDI1MDUxNCcsIG5hbWU6ICdDbGF1ZGUgU29ubmV0IDQnIH0sXG4gICAgICB7IGlkOiAnY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMScsIG5hbWU6ICdDbGF1ZGUgSGFpa3UgNC41JyB9LFxuICAgIF0sXG4gIH0sXG4gICdvcGVuYWknOiB7XG4gICAgaWQ6ICdvcGVuYWknLFxuICAgIG5hbWU6ICdPcGVuQUknLFxuICAgIG1vZGVsczogW1xuICAgICAgeyBpZDogJ2dwdC00bycsIG5hbWU6ICdHUFQtNG8nIH0sXG4gICAgICB7IGlkOiAnZ3B0LTRvLW1pbmknLCBuYW1lOiAnR1BULTRvIE1pbmknIH0sXG4gICAgXSxcbiAgfSxcbiAgJ2dvb2dsZSc6IHtcbiAgICBpZDogJ2dvb2dsZScsXG4gICAgbmFtZTogJ0dvb2dsZScsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnZ2VtaW5pLTIuMC1mbGFzaCcsIG5hbWU6ICdHZW1pbmkgMi4wIEZsYXNoJyB9LFxuICAgICAgeyBpZDogJ2dlbWluaS0yLjUtcHJvLXByZXZpZXctMDYtMDUnLCBuYW1lOiAnR2VtaW5pIDIuNSBQcm8nIH0sXG4gICAgXSxcbiAgfSxcbiAgJ3hhaSc6IHtcbiAgICBpZDogJ3hhaScsXG4gICAgbmFtZTogJ3hBSSAoR3JvayknLFxuICAgIG1vZGVsczogW1xuICAgICAgeyBpZDogJ2dyb2stMycsIG5hbWU6ICdHcm9rIDMnIH0sXG4gICAgICB7IGlkOiAnZ3Jvay0zLWZhc3QnLCBuYW1lOiAnR3JvayAzIEZhc3QnIH0sXG4gICAgICB7IGlkOiAnZ3Jvay0zLW1pbmknLCBuYW1lOiAnR3JvayAzIE1pbmknIH0sXG4gICAgXSxcbiAgfSxcbiAgJ2FtYXpvbi1iZWRyb2NrJzoge1xuICAgIGlkOiAnYW1hem9uLWJlZHJvY2snLFxuICAgIG5hbWU6ICdBbWF6b24gQmVkcm9jaycsXG4gICAgbW9kZWxzOiBbXG4gICAgICB7IGlkOiAnYW50aHJvcGljLmNsYXVkZS0zLTUtc29ubmV0LTIwMjQxMDIyLXYyOjAnLCBuYW1lOiAnQ2xhdWRlIDMuNSBTb25uZXQgdjInIH0sXG4gICAgICB7IGlkOiAndXMuYW1hem9uLm5vdmEtcHJvLXYxOjAnLCBuYW1lOiAnQW1hem9uIE5vdmEgUHJvJyB9LFxuICAgICAgeyBpZDogJ3VzLmFtYXpvbi5ub3ZhLWxpdGUtdjE6MCcsIG5hbWU6ICdBbWF6b24gTm92YSBMaXRlJyB9LFxuICAgIF0sXG4gIH0sXG59O1xuXG4vKipcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzIGZvciBlYWNoIEFJIHByb3ZpZGVyJ3MgQVBJIGtleS5cbiAqIFVzZWQgYnkgYmFja2VuZCBzZXJ2aWNlcyB0byBpbml0aWFsaXplIHRoZSBwcm92aWRlciByZWdpc3RyeS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFJX1BST1ZJREVSX0VOVl9WQVJTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYW50aHJvcGljJzogJ0FOVEhST1BJQ19BUElfS0VZJyxcbiAgJ29wZW5haSc6ICdPUEVOQUlfQVBJX0tFWScsXG4gICdnb29nbGUnOiAnR09PR0xFX0dFTkVSQVRJVkVfQUlfQVBJX0tFWScsXG4gICd4YWknOiAnWEFJX0FQSV9LRVknLFxuICAnYW1hem9uLWJlZHJvY2snOiAnQVdTX0FDQ0VTU19LRVlfSUQnLFxufTtcblxuLy8gSGVscGVyc1xuXG4vKipcbiAqIEdldCB0aGUgbW9kZWwgbGlzdCBmb3IgYSBnaXZlbiBwcm92aWRlciBJRC5cbiAqXG4gKiBAcGFyYW0gcHJvdmlkZXJJZCAtIFByb3ZpZGVyIGlkZW50aWZpZXIgKGUuZy4gXCJhbnRocm9waWNcIilcbiAqIEByZXR1cm5zIEFycmF5IG9mIG1vZGVscywgb3IgZW1wdHkgYXJyYXkgaWYgdGhlIHByb3ZpZGVyIGlzIHVua25vd25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFJUHJvdmlkZXJNb2RlbHMocHJvdmlkZXJJZDogc3RyaW5nKTogQUlNb2RlbEluZm9bXSB7XG4gIHJldHVybiBBSV9QUk9WSURFUl9DQVRBTE9HW3Byb3ZpZGVySWRdPy5tb2RlbHMgPz8gW107XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Request, Response } from 'express';
|
|
2
|
+
import type { Permission } from '../types/permissions.js';
|
|
2
3
|
/**
|
|
3
4
|
* Check whether a non-admin user may modify a public resource.
|
|
4
5
|
*
|
|
@@ -18,4 +19,4 @@ import type { Request, Response } from 'express';
|
|
|
18
19
|
*/
|
|
19
20
|
export declare function requirePublicAccess(req: Request, res: Response, resource: {
|
|
20
21
|
accessModifier?: string;
|
|
21
|
-
}): boolean;
|
|
22
|
+
}, publishPermission?: Permission): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { isSystemAdmin } from '../middleware/auth.js';
|
|
3
|
+
import { isSystemAdmin, userHasPermission } from '../middleware/auth.js';
|
|
4
4
|
import { ErrorCode } from '../types/error-codes.js';
|
|
5
5
|
import { AccessModifier } from '../types/pipeline.js';
|
|
6
6
|
import { sendError } from '../utils/response.js';
|
|
@@ -21,11 +21,17 @@ import { sendError } from '../utils/response.js';
|
|
|
21
21
|
* await pipelineService.delete(id, orgId, userId);
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
export function requirePublicAccess(req, res, resource) {
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
export function requirePublicAccess(req, res, resource, publishPermission) {
|
|
25
|
+
// Private resources: no extra gate (org-scoping already applies). Public/non-private:
|
|
26
|
+
// a system admin OR the holder of the matching publish permission may modify it — so
|
|
27
|
+
// the same permission that let a non-superadmin PUBLISH it (create path) also lets
|
|
28
|
+
// them manage it. The write itself stays pinned to the caller's org, so this never
|
|
29
|
+
// grants cross-org reach. Without a publishPermission, it stays superadmin-only.
|
|
30
|
+
const mayModify = isSystemAdmin(req) || (!!publishPermission && userHasPermission(req, publishPermission));
|
|
31
|
+
if (!mayModify && resource.accessModifier !== AccessModifier.PRIVATE) {
|
|
32
|
+
sendError(res, 403, 'You lack permission to modify this public resource.', ErrorCode.INSUFFICIENT_PERMISSIONS);
|
|
27
33
|
return false;
|
|
28
34
|
}
|
|
29
35
|
return true;
|
|
30
36
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9hY2Nlc3MtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBWSxFQUNaLEdBQWEsRUFDYixRQUFxQyxFQUNyQyxpQkFBOEI7SUFFOUIsc0ZBQXNGO0lBQ3RGLHFGQUFxRjtJQUNyRixtRkFBbUY7SUFDbkYsbUZBQW1GO0lBQ25GLGlGQUFpRjtJQUNqRixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLElBQUksaUJBQWlCLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUMzRyxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JFLFNBQVMsQ0FDUCxHQUFHLEVBQ0gsR0FBRyxFQUNILHFEQUFxRCxFQUNyRCxTQUFTLENBQUMsd0JBQXdCLENBQ25DLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgaXNTeXN0ZW1BZG1pbiwgdXNlckhhc1Blcm1pc3Npb24gfSBmcm9tICcuLi9taWRkbGV3YXJlL2F1dGguanMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3ItY29kZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBQZXJtaXNzaW9uIH0gZnJvbSAnLi4vdHlwZXMvcGVybWlzc2lvbnMuanMnO1xuaW1wb3J0IHsgQWNjZXNzTW9kaWZpZXIgfSBmcm9tICcuLi90eXBlcy9waXBlbGluZS5qcyc7XG5pbXBvcnQgeyBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIG5vbi1hZG1pbiB1c2VyIG1heSBtb2RpZnkgYSBwdWJsaWMgcmVzb3VyY2UuXG4gKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJlcXVlc3QgbWF5IHByb2NlZWQuIFJldHVybnMgYGZhbHNlYCBhbmQgc2VuZHNcbiAqIGEgNDAzIHJlc3BvbnNlIGlmIHRoZSB1c2VyIGxhY2tzIHBlcm1pc3Npb24uXG4gKlxuICogQHBhcmFtIHJlcSAtIEV4cHJlc3MgcmVxdWVzdFxuICogQHBhcmFtIHJlcyAtIEV4cHJlc3MgcmVzcG9uc2VcbiAqIEBwYXJhbSByZXNvdXJjZSAtIFJlc291cmNlIHdpdGggYW4gYWNjZXNzTW9kaWZpZXIgZmllbGRcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhY2Nlc3MgaXMgYWxsb3dlZCwgYGZhbHNlYCBpZiBibG9ja2VkIChyZXNwb25zZSBhbHJlYWR5IHNlbnQpXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGlmICghcmVxdWlyZVB1YmxpY0FjY2VzcyhyZXEsIHJlcywgcGlwZWxpbmUpKSByZXR1cm47XG4gKiBhd2FpdCBwaXBlbGluZVNlcnZpY2UuZGVsZXRlKGlkLCBvcmdJZCwgdXNlcklkKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZVB1YmxpY0FjY2VzcyhcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlLFxuICByZXNvdXJjZTogeyBhY2Nlc3NNb2RpZmllcj86IHN0cmluZyB9LFxuICBwdWJsaXNoUGVybWlzc2lvbj86IFBlcm1pc3Npb24sXG4pOiBib29sZWFuIHtcbiAgLy8gUHJpdmF0ZSByZXNvdXJjZXM6IG5vIGV4dHJhIGdhdGUgKG9yZy1zY29waW5nIGFscmVhZHkgYXBwbGllcykuIFB1YmxpYy9ub24tcHJpdmF0ZTpcbiAgLy8gYSBzeXN0ZW0gYWRtaW4gT1IgdGhlIGhvbGRlciBvZiB0aGUgbWF0Y2hpbmcgcHVibGlzaCBwZXJtaXNzaW9uIG1heSBtb2RpZnkgaXQg4oCUIHNvXG4gIC8vIHRoZSBzYW1lIHBlcm1pc3Npb24gdGhhdCBsZXQgYSBub24tc3VwZXJhZG1pbiBQVUJMSVNIIGl0IChjcmVhdGUgcGF0aCkgYWxzbyBsZXRzXG4gIC8vIHRoZW0gbWFuYWdlIGl0LiBUaGUgd3JpdGUgaXRzZWxmIHN0YXlzIHBpbm5lZCB0byB0aGUgY2FsbGVyJ3Mgb3JnLCBzbyB0aGlzIG5ldmVyXG4gIC8vIGdyYW50cyBjcm9zcy1vcmcgcmVhY2guIFdpdGhvdXQgYSBwdWJsaXNoUGVybWlzc2lvbiwgaXQgc3RheXMgc3VwZXJhZG1pbi1vbmx5LlxuICBjb25zdCBtYXlNb2RpZnkgPSBpc1N5c3RlbUFkbWluKHJlcSkgfHwgKCEhcHVibGlzaFBlcm1pc3Npb24gJiYgdXNlckhhc1Blcm1pc3Npb24ocmVxLCBwdWJsaXNoUGVybWlzc2lvbikpO1xuICBpZiAoIW1heU1vZGlmeSAmJiByZXNvdXJjZS5hY2Nlc3NNb2RpZmllciAhPT0gQWNjZXNzTW9kaWZpZXIuUFJJVkFURSkge1xuICAgIHNlbmRFcnJvcihcbiAgICAgIHJlcyxcbiAgICAgIDQwMyxcbiAgICAgICdZb3UgbGFjayBwZXJtaXNzaW9uIHRvIG1vZGlmeSB0aGlzIHB1YmxpYyByZXNvdXJjZS4nLFxuICAgICAgRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyxcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==
|
|
@@ -16,12 +16,22 @@ export interface OrgHierarchyHttpOptions {
|
|
|
16
16
|
headers?: Record<string, string>;
|
|
17
17
|
/** Per-request timeout override in ms (falls back to the client default). */
|
|
18
18
|
timeout?: number;
|
|
19
|
+
/**
|
|
20
|
+
* When true, a non-2xx response THROWS instead of resolving to `undefined`.
|
|
21
|
+
* Default false (a 4xx/5xx maps to `undefined`, the fail-soft policy the
|
|
22
|
+
* message/reporting root-resolution callers rely on). A caller for whom a
|
|
23
|
+
* failed lookup must fail-CLOSED — e.g. a compliance scan, where treating a
|
|
24
|
+
* team org as parent-less would silently skip inherited blocking rules — sets
|
|
25
|
+
* this so it can distinguish "root org" (`undefined`) from "lookup failed".
|
|
26
|
+
*/
|
|
27
|
+
throwOnHttpError?: boolean;
|
|
19
28
|
}
|
|
20
29
|
/**
|
|
21
30
|
* Resolve an org's direct parent id via platform's
|
|
22
|
-
* `GET /organization/:id/parent`. Returns `undefined` for a root org
|
|
23
|
-
*
|
|
24
|
-
*
|
|
31
|
+
* `GET /organization/:id/parent`. Returns `undefined` for a root org. A non-2xx
|
|
32
|
+
* response resolves to `undefined` by default, or THROWS when
|
|
33
|
+
* `throwOnHttpError` is set. Always throws on a transport failure
|
|
34
|
+
* (connection/timeout) so the caller can apply its own fallback.
|
|
25
35
|
*/
|
|
26
36
|
export declare function fetchParentOrgId(orgId: string, opts: OrgHierarchyHttpOptions): Promise<string | undefined>;
|
|
27
37
|
/**
|
|
@@ -34,15 +34,20 @@ function buildRequest(orgId, suffix, opts) {
|
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Resolve an org's direct parent id via platform's
|
|
37
|
-
* `GET /organization/:id/parent`. Returns `undefined` for a root org
|
|
38
|
-
*
|
|
39
|
-
*
|
|
37
|
+
* `GET /organization/:id/parent`. Returns `undefined` for a root org. A non-2xx
|
|
38
|
+
* response resolves to `undefined` by default, or THROWS when
|
|
39
|
+
* `throwOnHttpError` is set. Always throws on a transport failure
|
|
40
|
+
* (connection/timeout) so the caller can apply its own fallback.
|
|
40
41
|
*/
|
|
41
42
|
export async function fetchParentOrgId(orgId, opts) {
|
|
42
43
|
const { client, path, headers } = buildRequest(orgId, 'parent', opts);
|
|
43
44
|
const res = await client.get(path, { headers, timeout: opts.timeout });
|
|
44
|
-
if (res.statusCode >= 400)
|
|
45
|
+
if (res.statusCode >= 400) {
|
|
46
|
+
if (opts.throwOnHttpError) {
|
|
47
|
+
throw new Error(`parent-org lookup failed for ${orgId}: HTTP ${res.statusCode}`);
|
|
48
|
+
}
|
|
45
49
|
return undefined;
|
|
50
|
+
}
|
|
46
51
|
return res.body?.data?.parentOrgId ?? undefined;
|
|
47
52
|
}
|
|
48
53
|
/**
|
|
@@ -69,4 +74,4 @@ export async function fetchOrgDescendants(orgId, opts) {
|
|
|
69
74
|
// Only meaningful when the (validated) subtree is larger than the org itself.
|
|
70
75
|
return orgIds.length > 1 ? orgIds : undefined;
|
|
71
76
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWhpZXJhcmNoeS1odHRwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvb3JnLWhpZXJhcmNoeS1odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQStCaEUsU0FBUyxZQUFZLENBQ25CLEtBQWEsRUFDYixNQUFnQyxFQUNoQyxJQUE2QjtJQUU3QixNQUFNLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxNQUFNLElBQUksR0FBRyxpQkFBaUIsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7SUFDcEUsTUFBTSxPQUFPLEdBQTJCO1FBQ3RDLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQztZQUNsQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSztZQUM5QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRO1NBQzVCLENBQUM7UUFDRixHQUFHLElBQUksQ0FBQyxPQUFPO0tBQ2hCLENBQUM7SUFDRixPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsSUFBNkI7SUFDakYsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEUsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUE2QyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ25ILElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLEtBQUssVUFBVSxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxJQUFJLFNBQVMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG1CQUFtQixDQUFDLEtBQWEsRUFBRSxJQUE2QjtJQUNwRixNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRSxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQWtDLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEcsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUc7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM1QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUM7SUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDMUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBZ0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ3hFLDhFQUE4RTtJQUM5RSxPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogT3JnIOKGkiB0ZWFtIGhpZXJhcmNoeSBsb29rdXBzIG92ZXIgSFRUUCBhZ2FpbnN0IHRoZSBwbGF0Zm9ybSBzZXJ2aWNlLlxuICpcbiAqIFRoZSBNb25nb29zZS1iYXNlZCB0cmF2ZXJzYWwgaW4ge0BsaW5rIC4vb3JnLWhpZXJhcmNoeX0gaXMgZm9yIHNlcnZpY2VzIHRoYXRcbiAqIG93biB0aGUgb3JnIHRhYmxlIChwbGF0Zm9ybSwgcXVvdGEpLiBFdmVyeW9uZSBlbHNlIHJlYWRzIHRoZSBoaWVyYXJjaHkgb3ZlclxuICogdGhlIHdpcmUgZnJvbSBwbGF0Zm9ybSdzIGF1dGhvcml0YXRpdmUgYC9vcmdhbml6YXRpb24vOmlkLypgIGVuZHBvaW50cy4gVGhpc1xuICogbW9kdWxlIGNlbnRyYWxpemVzIHRoZSB0cmFuc3BvcnQgZm9yIHRob3NlIHJlYWRzIOKAlCBVUkwgY29uc3RydWN0aW9uLCB0aGVcbiAqIHNpZ25lZCBzZXJ2aWNlLXRva2VuIGF1dGggaGVhZGVyLCBhbmQgdGltZW91dCtyZXRyeSB2aWEgdGhlIHNoYXJlZFxuICoge0BsaW5rIEludGVybmFsSHR0cENsaWVudH0g4oCUIHNvIGNvbXBsaWFuY2UsIHJlcG9ydGluZywgYW5kIGFueSBmdXR1cmUgY2FsbGVyXG4gKiBzaGFyZSBPTkUgbWVjaGFuaXNtIGluc3RlYWQgb2YgZWFjaCBoYW5kLXJvbGxpbmcgYSBgZmV0Y2hgL2NsaWVudCB3aXRoIGl0c1xuICogb3duIGF1dGggYW5kIGZhaWx1cmUgc2VtYW50aWNzLlxuICpcbiAqIFRoZXNlIGZ1bmN0aW9ucyBkZWxpYmVyYXRlbHkgZG8gTk9UIHN3YWxsb3cgdHJhbnNwb3J0IGVycm9yczogYSBjb25uZWN0aW9uXG4gKiBmYWlsdXJlL3RpbWVvdXQgcHJvcGFnYXRlcyBzbyBlYWNoIGNhbGxlciBrZWVwcyBpdHMgb3duIGZhbGxiYWNrIHBvbGljeSAobG9nXG4gKiBsZXZlbCwgZGVncmFkZS10by1zZWxmIHZzLiByZXR1cm4tdW5kZWZpbmVkKS4gQSBub24tMnh4IHJlc3BvbnNlIGlzIHRyZWF0ZWRcbiAqIGFzIFwibm8gZGF0YVwiIChyZXR1cm5zIHVuZGVmaW5lZCksIG1hdGNoaW5nIHdoYXQgdGhlIGNhbGxlcnMgcHJldmlvdXNseSBkaWQuXG4gKi9cblxuaW1wb3J0IHsgZ2V0U2VydmljZUF1dGhIZWFkZXIgfSBmcm9tICcuLi9taWRkbGV3YXJlL2F1dGguanMnO1xuaW1wb3J0IHsgSW50ZXJuYWxIdHRwQ2xpZW50IH0gZnJvbSAnLi4vc2VydmljZXMvaHR0cC1jbGllbnQuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcblxuLyoqIE9wdGlvbnMgc2hhcmVkIGJ5IHRoZSBwbGF0Zm9ybSBvcmctaGllcmFyY2h5IEhUVFAgbG9va3Vwcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnSGllcmFyY2h5SHR0cE9wdGlvbnMge1xuICAvKiogUGxhdGZvcm0gc2VydmljZSBob3N0L3BvcnQgKCsgb3B0aW9uYWwgZGVmYXVsdCB0aW1lb3V0KSBmb3IgdGhlIGNsaWVudC4gKi9cbiAgc2VydmljZTogU2VydmljZUNvbmZpZztcbiAgLyoqIFNlcnZpY2UgbmFtZSBtaW50ZWQgaW50byB0aGUgc2VydmljZS1hdXRoIEpXVCBgc3ViYCAoZS5nLiAnY29tcGxpYW5jZScpLiAqL1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogT3JnIGlkIGVtYmVkZGVkIGluIHRoZSBzaWduZWQgc2VydmljZSB0b2tlbidzIG9yZyBjb250ZXh0LiBEZWZhdWx0cyB0byB0aGVcbiAgICogcXVlcmllZCBgb3JnSWRgOyBwYXNzIGEgc3lzdGVtIG9yZyBpZCBmb3IgYSBzeXN0ZW0tc2NvcGVkIGxvb2t1cC5cbiAgICovXG4gIGF1dGhPcmdJZD86IHN0cmluZztcbiAgLyoqIFJvbGUgY2FycmllZCBieSB0aGUgc2VydmljZSB0b2tlbiAoZGVmYXVsdCAnbWVtYmVyJyDigJQgbGVhc3QgcHJpdmlsZWdlKS4gKi9cbiAgcm9sZT86ICdvd25lcicgfCAnYWRtaW4nIHwgJ21lbWJlcic7XG4gIC8qKiBFeHRyYSByZXF1ZXN0IGhlYWRlcnMgbWVyZ2VkIGFmdGVyIGBBdXRob3JpemF0aW9uYCAoZS5nLiBgeC1vcmctaWRgKS4gKi9cbiAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBQZXItcmVxdWVzdCB0aW1lb3V0IG92ZXJyaWRlIGluIG1zIChmYWxscyBiYWNrIHRvIHRoZSBjbGllbnQgZGVmYXVsdCkuICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIGEgbm9uLTJ4eCByZXNwb25zZSBUSFJPV1MgaW5zdGVhZCBvZiByZXNvbHZpbmcgdG8gYHVuZGVmaW5lZGAuXG4gICAqIERlZmF1bHQgZmFsc2UgKGEgNHh4LzV4eCBtYXBzIHRvIGB1bmRlZmluZWRgLCB0aGUgZmFpbC1zb2Z0IHBvbGljeSB0aGVcbiAgICogbWVzc2FnZS9yZXBvcnRpbmcgcm9vdC1yZXNvbHV0aW9uIGNhbGxlcnMgcmVseSBvbikuIEEgY2FsbGVyIGZvciB3aG9tIGFcbiAgICogZmFpbGVkIGxvb2t1cCBtdXN0IGZhaWwtQ0xPU0VEIOKAlCBlLmcuIGEgY29tcGxpYW5jZSBzY2FuLCB3aGVyZSB0cmVhdGluZyBhXG4gICAqIHRlYW0gb3JnIGFzIHBhcmVudC1sZXNzIHdvdWxkIHNpbGVudGx5IHNraXAgaW5oZXJpdGVkIGJsb2NraW5nIHJ1bGVzIOKAlCBzZXRzXG4gICAqIHRoaXMgc28gaXQgY2FuIGRpc3Rpbmd1aXNoIFwicm9vdCBvcmdcIiAoYHVuZGVmaW5lZGApIGZyb20gXCJsb29rdXAgZmFpbGVkXCIuXG4gICAqL1xuICB0aHJvd09uSHR0cEVycm9yPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gYnVpbGRSZXF1ZXN0KFxuICBvcmdJZDogc3RyaW5nLFxuICBzdWZmaXg6ICdwYXJlbnQnIHwgJ2Rlc2NlbmRhbnRzJyxcbiAgb3B0czogT3JnSGllcmFyY2h5SHR0cE9wdGlvbnMsXG4pOiB7IGNsaWVudDogSW50ZXJuYWxIdHRwQ2xpZW50OyBwYXRoOiBzdHJpbmc7IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfSB7XG4gIGNvbnN0IGNsaWVudCA9IG5ldyBJbnRlcm5hbEh0dHBDbGllbnQob3B0cy5zZXJ2aWNlKTtcbiAgY29uc3QgcGF0aCA9IGAvb3JnYW5pemF0aW9uLyR7ZW5jb2RlVVJJQ29tcG9uZW50KG9yZ0lkKX0vJHtzdWZmaXh9YDtcbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBBdXRob3JpemF0aW9uOiBnZXRTZXJ2aWNlQXV0aEhlYWRlcih7XG4gICAgICBzZXJ2aWNlTmFtZTogb3B0cy5zZXJ2aWNlTmFtZSxcbiAgICAgIG9yZ0lkOiBvcHRzLmF1dGhPcmdJZCA/PyBvcmdJZCxcbiAgICAgIHJvbGU6IG9wdHMucm9sZSA/PyAnbWVtYmVyJyxcbiAgICB9KSxcbiAgICAuLi5vcHRzLmhlYWRlcnMsXG4gIH07XG4gIHJldHVybiB7IGNsaWVudCwgcGF0aCwgaGVhZGVycyB9O1xufVxuXG4vKipcbiAqIFJlc29sdmUgYW4gb3JnJ3MgZGlyZWN0IHBhcmVudCBpZCB2aWEgcGxhdGZvcm0nc1xuICogYEdFVCAvb3JnYW5pemF0aW9uLzppZC9wYXJlbnRgLiBSZXR1cm5zIGB1bmRlZmluZWRgIGZvciBhIHJvb3Qgb3JnLiBBIG5vbi0yeHhcbiAqIHJlc3BvbnNlIHJlc29sdmVzIHRvIGB1bmRlZmluZWRgIGJ5IGRlZmF1bHQsIG9yIFRIUk9XUyB3aGVuXG4gKiBgdGhyb3dPbkh0dHBFcnJvcmAgaXMgc2V0LiBBbHdheXMgdGhyb3dzIG9uIGEgdHJhbnNwb3J0IGZhaWx1cmVcbiAqIChjb25uZWN0aW9uL3RpbWVvdXQpIHNvIHRoZSBjYWxsZXIgY2FuIGFwcGx5IGl0cyBvd24gZmFsbGJhY2suXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFBhcmVudE9yZ0lkKG9yZ0lkOiBzdHJpbmcsIG9wdHM6IE9yZ0hpZXJhcmNoeUh0dHBPcHRpb25zKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgeyBjbGllbnQsIHBhdGgsIGhlYWRlcnMgfSA9IGJ1aWxkUmVxdWVzdChvcmdJZCwgJ3BhcmVudCcsIG9wdHMpO1xuICBjb25zdCByZXMgPSBhd2FpdCBjbGllbnQuZ2V0PHsgZGF0YT86IHsgcGFyZW50T3JnSWQ/OiBzdHJpbmcgfCBudWxsIH0gfT4ocGF0aCwgeyBoZWFkZXJzLCB0aW1lb3V0OiBvcHRzLnRpbWVvdXQgfSk7XG4gIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA0MDApIHtcbiAgICBpZiAob3B0cy50aHJvd09uSHR0cEVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHBhcmVudC1vcmcgbG9va3VwIGZhaWxlZCBmb3IgJHtvcmdJZH06IEhUVFAgJHtyZXMuc3RhdHVzQ29kZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4gcmVzLmJvZHk/LmRhdGE/LnBhcmVudE9yZ0lkID8/IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGBbc2VsZiwgLi4uZGVzY2VuZGFudE9yZ0lkc11gIGZvciBhbiBvcmcgdmlhIHBsYXRmb3JtJ3NcbiAqIGBHRVQgL29yZ2FuaXphdGlvbi86aWQvZGVzY2VuZGFudHNgLiBSZXR1cm5zIHRoZSBpZCBsaXN0IG9ubHkgd2hlbiBpdCBpc1xuICogbGFyZ2VyIHRoYW4gdGhlIG9yZyBpdHNlbGYgKGEgcmVhbCBzdWJ0cmVlKSwgZWxzZSBgdW5kZWZpbmVkYDsgYWxzb1xuICogYHVuZGVmaW5lZGAgb24gYSBub24tMnh4IHJlc3BvbnNlLiBUaHJvd3Mgb24gYSB0cmFuc3BvcnQgZmFpbHVyZSBzbyB0aGVcbiAqIGNhbGxlciBjYW4gYXBwbHkgaXRzIG93biBmYWxsYmFjay5cbiAqXG4gKiBUaGlzIGlzIGEgdHJ1c3QgYm91bmRhcnk6IHRoZSByZXNwb25zZSBpcyB2YWxpZGF0ZWQgZWxlbWVudC1ieS1lbGVtZW50IHJhdGhlclxuICogdGhhbiBjYXN0IOKAlCBldmVyeSBlbnRyeSBtdXN0IGJlIGEgc3RyaW5nLCBhbmQgYW55IG5vbi1zdHJpbmcgaXMgZHJvcHBlZCDigJQgc29cbiAqIGEgbWFsZm9ybWVkIHBheWxvYWQgY2FuIG5ldmVyIHNtdWdnbGUgYSBub24tc3RyaW5nIGludG8gdGhlIHJldHVybmVkXG4gKiBgc3RyaW5nW11gLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hPcmdEZXNjZW5kYW50cyhvcmdJZDogc3RyaW5nLCBvcHRzOiBPcmdIaWVyYXJjaHlIdHRwT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nW10gfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgeyBjbGllbnQsIHBhdGgsIGhlYWRlcnMgfSA9IGJ1aWxkUmVxdWVzdChvcmdJZCwgJ2Rlc2NlbmRhbnRzJywgb3B0cyk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5nZXQ8eyBkYXRhPzogeyBvcmdJZHM/OiB1bmtub3duIH0gfT4ocGF0aCwgeyBoZWFkZXJzLCB0aW1lb3V0OiBvcHRzLnRpbWVvdXQgfSk7XG4gIGlmIChyZXMuc3RhdHVzQ29kZSA+PSA0MDApIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGlkcyA9IHJlcy5ib2R5Py5kYXRhPy5vcmdJZHM7XG4gIGlmICghQXJyYXkuaXNBcnJheShpZHMpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBvcmdJZHMgPSBpZHMuZmlsdGVyKChpZCk6IGlkIGlzIHN0cmluZyA9PiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnKTtcbiAgLy8gT25seSBtZWFuaW5nZnVsIHdoZW4gdGhlICh2YWxpZGF0ZWQpIHN1YnRyZWUgaXMgbGFyZ2VyIHRoYW4gdGhlIG9yZyBpdHNlbGYuXG4gIHJldHVybiBvcmdJZHMubGVuZ3RoID4gMSA/IG9yZ0lkcyA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
package/lib/index.d.ts
CHANGED
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
*
|
|
19
19
|
* **Utilities**
|
|
20
20
|
* - createLogger — Winston-based structured logger factory
|
|
21
|
-
* - sendSuccess, sendError,
|
|
22
|
-
* - getParam, getOrgId
|
|
23
|
-
* -
|
|
24
|
-
* - getIdentity
|
|
21
|
+
* - sendSuccess, sendError, sendPaginatedNested, sendBadRequest, sendInternalError — HTTP response helpers
|
|
22
|
+
* - getParam, getOrgId — request parameter extraction
|
|
23
|
+
* - parseQueryInt, parseQueryString — query string parsing
|
|
24
|
+
* - getIdentity — identity extraction from requests
|
|
25
25
|
* - errorMessage — safe error-to-string conversion
|
|
26
26
|
*
|
|
27
27
|
* **Constants**
|
package/lib/index.js
CHANGED
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
*
|
|
21
21
|
* **Utilities**
|
|
22
22
|
* - createLogger — Winston-based structured logger factory
|
|
23
|
-
* - sendSuccess, sendError,
|
|
24
|
-
* - getParam, getOrgId
|
|
25
|
-
* -
|
|
26
|
-
* - getIdentity
|
|
23
|
+
* - sendSuccess, sendError, sendPaginatedNested, sendBadRequest, sendInternalError — HTTP response helpers
|
|
24
|
+
* - getParam, getOrgId — request parameter extraction
|
|
25
|
+
* - parseQueryInt, parseQueryString — query string parsing
|
|
26
|
+
* - getIdentity — identity extraction from requests
|
|
27
27
|
* - errorMessage — safe error-to-string conversion
|
|
28
28
|
*
|
|
29
29
|
* **Constants**
|
|
@@ -68,4 +68,4 @@ export * from './errors/index.js';
|
|
|
68
68
|
export * from './validation/index.js';
|
|
69
69
|
// OpenAPI
|
|
70
70
|
export * from './openapi/index.js';
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQ0c7QUFFSCxRQUFRO0FBQ1IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxZQUFZO0FBQ1osY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxRQUFRO0FBQ1IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQztBQUVuQyxXQUFXO0FBQ1gsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxhQUFhO0FBQ2IsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxTQUFTO0FBQ1QsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxTQUFTO0FBQ1QsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxhQUFhO0FBQ2IsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEBtb2R1bGUgQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmVcbiAqXG4gKiBDb3JlIEFQSSB1dGlsaXRpZXMgc2hhcmVkIGFjcm9zcyBhbGwgc2VydmljZXMuXG4gKlxuICogKipNaWRkbGV3YXJlKipcbiAqIC0gcmVxdWlyZUF1dGgsIHJlcXVpcmVTeXN0ZW1BZG1pbiwgcmVxdWlyZUZlYXR1cmUg4oCUIEpXVCBhdXRoZW50aWNhdGlvblxuICogLSBpc1N5c3RlbUFkbWluLCBpc1NlcnZpY2VQcmluY2lwYWwg4oCUIGF1dGhvcml6YXRpb24gaGVscGVycyAoaXNTeXN0ZW1PcmdJZCByZW1haW5zIGFzIGEgY29udGVudC1vd25lciBjaGVjaywgbm90IGEgcHJpdmlsZWdlIGdhdGUpXG4gKiAtIHNpZ25TZXJ2aWNlVG9rZW4sIGdldFNlcnZpY2VBdXRoSGVhZGVyIOKAlCBpbnRlci1zZXJ2aWNlIEpXVCBtaW50aW5nXG4gKlxuICogKipUeXBlcyoqXG4gKiAtIEVycm9yQ29kZSwgRXJyb3JDb2RlU3RhdHVzIOKAlCBzdGFuZGFyZGl6ZWQgZXJyb3IgY29kZSBlbnVtIGFuZCBzdGF0dXMgbWFwcGluZ1xuICogLSBSZXF1ZXN0SWRlbnRpdHkg4oCUIHBhcnNlZCBKV1QgaWRlbnRpdHlcbiAqIC0gU2VydmljZUNvbmZpZywgUmVxdWVzdE9wdGlvbnMg4oCUIEhUVFAgY2xpZW50IHR5cGVzXG4gKiAtIFF1b3RhVHlwZSwgUXVvdGFDaGVja1Jlc3VsdCDigJQgcXVvdGEgc2VydmljZSB0eXBlc1xuICogLSBQaXBlbGluZVR5cGUsIENvbXB1dGVUeXBlLCBBY2Nlc3NNb2RpZmllciDigJQgcGlwZWxpbmUgZG9tYWluIHR5cGVzXG4gKiAtIEZlYXR1cmVGbGFncyDigJQgZmVhdHVyZSBmbGFnIHR5cGVzXG4gKlxuICogKipVdGlsaXRpZXMqKlxuICogLSBjcmVhdGVMb2dnZXIg4oCUIFdpbnN0b24tYmFzZWQgc3RydWN0dXJlZCBsb2dnZXIgZmFjdG9yeVxuICogLSBzZW5kU3VjY2Vzcywgc2VuZEVycm9yLCBzZW5kUGFnaW5hdGVkTmVzdGVkLCBzZW5kQmFkUmVxdWVzdCwgc2VuZEludGVybmFsRXJyb3Ig4oCUIEhUVFAgcmVzcG9uc2UgaGVscGVyc1xuICogLSBnZXRQYXJhbSwgZ2V0T3JnSWQg4oCUIHJlcXVlc3QgcGFyYW1ldGVyIGV4dHJhY3Rpb25cbiAqIC0gcGFyc2VRdWVyeUludCwgcGFyc2VRdWVyeVN0cmluZyDigJQgcXVlcnkgc3RyaW5nIHBhcnNpbmdcbiAqIC0gZ2V0SWRlbnRpdHkg4oCUIGlkZW50aXR5IGV4dHJhY3Rpb24gZnJvbSByZXF1ZXN0c1xuICogLSBlcnJvck1lc3NhZ2Ug4oCUIHNhZmUgZXJyb3ItdG8tc3RyaW5nIGNvbnZlcnNpb25cbiAqXG4gKiAqKkNvbnN0YW50cyoqXG4gKiAtIEhUVFAgc3RhdHVzIGNvZGVzLCBBSSBwcm92aWRlciBpZGVudGlmaWVycywgdGltZSBjb25zdGFudHNcbiAqXG4gKiAqKlNlcnZpY2VzKipcbiAqIC0gSW50ZXJuYWxIdHRwQ2xpZW50LCBjcmVhdGVTYWZlQ2xpZW50IOKAlCBpbnRlcm5hbCBzZXJ2aWNlLXRvLXNlcnZpY2UgSFRUUCBjbGllbnRcbiAqIC0gY3JlYXRlUXVvdGFTZXJ2aWNlIOKAlCBxdW90YSBlbmZvcmNlbWVudCBjbGllbnQgZmFjdG9yeVxuICogLSBDYWNoZVNlcnZpY2Ug4oCUIGluLW1lbW9yeSBUVEwgY2FjaGVcbiAqIC0gQ29tcGxpYW5jZUNsaWVudCDigJQgY29tcGxpYW5jZSBzZXJ2aWNlIGNsaWVudFxuICogLSBFbnRpdHlFdmVudEVtaXR0ZXIg4oCUIGRvbWFpbiBldmVudCBwdWIvc3ViXG4gKlxuICogKipFcnJvcnMqKlxuICogLSBBcHBFcnJvciwgTm90Rm91bmRFcnJvciwgRm9yYmlkZGVuRXJyb3Ig4oCUIHR5cGVkIEhUVFAgZXJyb3IgY2xhc3Nlc1xuICpcbiAqICoqVmFsaWRhdGlvbioqXG4gKiAtIFpvZC1iYXNlZCByZXF1ZXN0IHZhbGlkYXRpb24gc2NoZW1hcyBhbmQgbWlkZGxld2FyZVxuICpcbiAqICoqUm91dGVzKipcbiAqIC0gSGVhbHRoIGNoZWNrIHJvdXRlIGZhY3RvcnlcbiAqXG4gKiAqKk9wZW5BUEkqKlxuICogLSBTY2hlbWEgcmVnaXN0cnkgYW5kIHNwZWMgZ2VuZXJhdGlvblxuICovXG5cbi8vIFR5cGVzXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2luZGV4LmpzJztcblxuLy8gQ29uc3RhbnRzXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9pbmRleC5qcyc7XG5cbi8vIFV0aWxzXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2luZGV4LmpzJztcblxuLy8gSGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL2luZGV4LmpzJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvaW5kZXguanMnO1xuXG4vLyBNaWRkbGV3YXJlXG5leHBvcnQgKiBmcm9tICcuL21pZGRsZXdhcmUvaW5kZXguanMnO1xuXG4vLyBSb3V0ZXNcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVzL2luZGV4LmpzJztcblxuLy8gRXJyb3JzXG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycy9pbmRleC5qcyc7XG5cbi8vIFZhbGlkYXRpb25cbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdGlvbi9pbmRleC5qcyc7XG5cbi8vIE9wZW5BUElcbmV4cG9ydCAqIGZyb20gJy4vb3BlbmFwaS9pbmRleC5qcyc7XG4iXX0=
|
package/lib/middleware/auth.d.ts
CHANGED
|
@@ -38,9 +38,17 @@ export interface TokenRevocationStore {
|
|
|
38
38
|
*/
|
|
39
39
|
export declare function setTokenRevocationStore(store: TokenRevocationStore | undefined): void;
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
|
|
41
|
+
* Public revocation check for routes that verify a platform JWT OUTSIDE
|
|
42
|
+
* `requireAuth` (e.g. the image-registry `/token` mint path, which resolves
|
|
43
|
+
* identity itself). Returns true when the token's `tokenVersion` is strictly
|
|
44
|
+
* behind the store's current version. Fail-open (never throws) — a store outage
|
|
45
|
+
* or a token/store without a usable version yields false (allow), matching
|
|
46
|
+
* `requireAuth`. Pass the verified JWT claims (`sub`, `tokenVersion`).
|
|
47
|
+
*/
|
|
48
|
+
export declare function isAccessTokenRevoked(claims: {
|
|
49
|
+
sub?: string;
|
|
50
|
+
tokenVersion?: number;
|
|
51
|
+
}): Promise<boolean>;
|
|
44
52
|
/**
|
|
45
53
|
* Whether the request's user holds `permission`. Superadmins implicitly hold
|
|
46
54
|
* every permission. Reads the resolved `permissions` claim (set at token issue,
|
|
@@ -140,7 +148,8 @@ export declare function isSystemAdmin(req: Request): boolean;
|
|
|
140
148
|
* identity — a normal interactive user token has no `scope` and returns false.
|
|
141
149
|
*/
|
|
142
150
|
export declare function hasScope(req: Request, scope: string): boolean;
|
|
143
|
-
/** Requires system admin
|
|
151
|
+
/** Requires a system admin — granted solely by the `isSuperAdmin` token claim
|
|
152
|
+
* (the org-membership path was removed). Use after requireAuth. */
|
|
144
153
|
export declare function requireSystemAdmin(req: Request, res: Response, next: NextFunction): void;
|
|
145
154
|
/**
|
|
146
155
|
* Require a specific feature flag. Use after requireAuth.
|
|
@@ -164,7 +173,9 @@ export declare function resolveAccessModifier(req: Request, requested: string |
|
|
|
164
173
|
export interface ServiceTokenOptions {
|
|
165
174
|
/** Calling service identifier (e.g. 'billing', 'platform'). Embedded as `sub: service:<name>`. */
|
|
166
175
|
serviceName: string;
|
|
167
|
-
/** Active org context for the call. Use the target tenant's org
|
|
176
|
+
/** Active org context for the call. Use the target tenant's org id, or the
|
|
177
|
+
* well-known `SYSTEM_ORG_ID` (an ObjectId) for system-wide ops — NOT the string
|
|
178
|
+
* 'system', which id-based system-org checks won't recognize. */
|
|
168
179
|
orgId?: string;
|
|
169
180
|
/** Active org name. Defaults to orgId. */
|
|
170
181
|
orgName?: string;
|