@spinajs/authz-queue 0.0.0-stage → 3.0.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.
Files changed (102) hide show
  1. package/README.md +22 -2
  2. package/lib/cjs/api.d.ts +9 -0
  3. package/lib/cjs/api.d.ts.map +1 -0
  4. package/lib/cjs/api.js +6 -0
  5. package/lib/cjs/api.js.map +1 -0
  6. package/lib/cjs/bus/change-bus.d.ts +44 -0
  7. package/lib/cjs/bus/change-bus.d.ts.map +1 -0
  8. package/lib/cjs/bus/change-bus.js +159 -0
  9. package/lib/cjs/bus/change-bus.js.map +1 -0
  10. package/lib/cjs/bus/index.d.ts +3 -0
  11. package/lib/cjs/bus/index.d.ts.map +1 -0
  12. package/lib/cjs/bus/index.js +19 -0
  13. package/lib/cjs/bus/index.js.map +1 -0
  14. package/lib/cjs/bus/route-source.d.ts +11 -0
  15. package/lib/cjs/bus/route-source.d.ts.map +1 -0
  16. package/lib/cjs/bus/route-source.js +32 -0
  17. package/lib/cjs/bus/route-source.js.map +1 -0
  18. package/lib/cjs/hook/hook.d.ts +21 -0
  19. package/lib/cjs/hook/hook.d.ts.map +1 -0
  20. package/lib/cjs/hook/hook.js +81 -0
  21. package/lib/cjs/hook/hook.js.map +1 -0
  22. package/lib/cjs/hook/index.d.ts +3 -0
  23. package/lib/cjs/hook/index.d.ts.map +1 -0
  24. package/lib/cjs/hook/index.js +19 -0
  25. package/lib/cjs/hook/index.js.map +1 -0
  26. package/lib/cjs/hook/initiator.d.ts +28 -0
  27. package/lib/cjs/hook/initiator.d.ts.map +1 -0
  28. package/lib/cjs/hook/initiator.js +128 -0
  29. package/lib/cjs/hook/initiator.js.map +1 -0
  30. package/lib/cjs/index.d.ts +5 -0
  31. package/lib/cjs/index.d.ts.map +1 -0
  32. package/lib/cjs/index.js +21 -0
  33. package/lib/cjs/index.js.map +1 -0
  34. package/lib/cjs/job/index.d.ts +2 -0
  35. package/lib/cjs/job/index.d.ts.map +1 -0
  36. package/lib/cjs/job/index.js +18 -0
  37. package/lib/cjs/job/index.js.map +1 -0
  38. package/lib/cjs/job/job-grant.d.ts +12 -0
  39. package/lib/cjs/job/job-grant.d.ts.map +1 -0
  40. package/lib/cjs/job/job-grant.js +29 -0
  41. package/lib/cjs/job/job-grant.js.map +1 -0
  42. package/lib/cjs/job/job-resource.d.ts +10 -0
  43. package/lib/cjs/job/job-resource.d.ts.map +1 -0
  44. package/lib/cjs/job/job-resource.js +39 -0
  45. package/lib/cjs/job/job-resource.js.map +1 -0
  46. package/lib/cjs/package.json +1 -0
  47. package/lib/cjs/schema.d.ts +34 -0
  48. package/lib/cjs/schema.d.ts.map +1 -0
  49. package/lib/cjs/schema.js +45 -0
  50. package/lib/cjs/schema.js.map +1 -0
  51. package/lib/mjs/api.d.ts +9 -0
  52. package/lib/mjs/api.d.ts.map +1 -0
  53. package/lib/mjs/api.js +2 -0
  54. package/lib/mjs/api.js.map +1 -0
  55. package/lib/mjs/bus/change-bus.d.ts +44 -0
  56. package/lib/mjs/bus/change-bus.d.ts.map +1 -0
  57. package/lib/mjs/bus/change-bus.js +155 -0
  58. package/lib/mjs/bus/change-bus.js.map +1 -0
  59. package/lib/mjs/bus/index.d.ts +3 -0
  60. package/lib/mjs/bus/index.d.ts.map +1 -0
  61. package/lib/mjs/bus/index.js +3 -0
  62. package/lib/mjs/bus/index.js.map +1 -0
  63. package/lib/mjs/bus/route-source.d.ts +11 -0
  64. package/lib/mjs/bus/route-source.d.ts.map +1 -0
  65. package/lib/mjs/bus/route-source.js +29 -0
  66. package/lib/mjs/bus/route-source.js.map +1 -0
  67. package/lib/mjs/hook/hook.d.ts +21 -0
  68. package/lib/mjs/hook/hook.d.ts.map +1 -0
  69. package/lib/mjs/hook/hook.js +78 -0
  70. package/lib/mjs/hook/hook.js.map +1 -0
  71. package/lib/mjs/hook/index.d.ts +3 -0
  72. package/lib/mjs/hook/index.d.ts.map +1 -0
  73. package/lib/mjs/hook/index.js +3 -0
  74. package/lib/mjs/hook/index.js.map +1 -0
  75. package/lib/mjs/hook/initiator.d.ts +28 -0
  76. package/lib/mjs/hook/initiator.d.ts.map +1 -0
  77. package/lib/mjs/hook/initiator.js +123 -0
  78. package/lib/mjs/hook/initiator.js.map +1 -0
  79. package/lib/mjs/index.d.ts +5 -0
  80. package/lib/mjs/index.d.ts.map +1 -0
  81. package/lib/mjs/index.js +5 -0
  82. package/lib/mjs/index.js.map +1 -0
  83. package/lib/mjs/job/index.d.ts +2 -0
  84. package/lib/mjs/job/index.d.ts.map +1 -0
  85. package/lib/mjs/job/index.js +2 -0
  86. package/lib/mjs/job/index.js.map +1 -0
  87. package/lib/mjs/job/job-grant.d.ts +12 -0
  88. package/lib/mjs/job/job-grant.d.ts.map +1 -0
  89. package/lib/mjs/job/job-grant.js +26 -0
  90. package/lib/mjs/job/job-grant.js.map +1 -0
  91. package/lib/mjs/job/job-resource.d.ts +10 -0
  92. package/lib/mjs/job/job-resource.d.ts.map +1 -0
  93. package/lib/mjs/job/job-resource.js +36 -0
  94. package/lib/mjs/job/job-resource.js.map +1 -0
  95. package/lib/mjs/package.json +1 -0
  96. package/lib/mjs/schema.d.ts +34 -0
  97. package/lib/mjs/schema.d.ts.map +1 -0
  98. package/lib/mjs/schema.js +42 -0
  99. package/lib/mjs/schema.js.map +1 -0
  100. package/lib/tsconfig.cjs.tsbuildinfo +1 -0
  101. package/lib/tsconfig.mjs.tsbuildinfo +1 -0
  102. package/package.json +87 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-bus.js","sourceRoot":"","sources":["../../../src/bus/change-bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './change-bus.js';
2
+ export * from './route-source.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bus/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './change-bus.js';
2
+ export * from './route-source.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bus/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ConfigurationSource } from '@spinajs/configuration';
2
+ import type { Configuration, IConfigLike } from '@spinajs/configuration';
3
+ /**
4
+ * `authz.bus.topic` becomes the channel of `AuthzChangeEvent` unless `queue.routing` already routes it.
5
+ * Order 2 loads after the file sources (1), so it sees the application's topic and routing.
6
+ */
7
+ export declare class AuthzBusRouteSource extends ConfigurationSource {
8
+ get Order(): number;
9
+ Load(configuration: Configuration): Promise<IConfigLike>;
10
+ }
11
+ //# sourceMappingURL=route-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-source.d.ts","sourceRoot":"","sources":["../../../src/bus/route-source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIzE;;;GAGG;AACH,qBACa,mBAAoB,SAAQ,mBAAmB;IAC1D,IAAW,KAAK,IAAI,MAAM,CAEzB;IAEM,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAK9D;CACF"}
@@ -0,0 +1,29 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Injectable } from '@spinajs/di';
8
+ import { ConfigurationSource } from '@spinajs/configuration';
9
+ import { AuthzChangeEvent } from './change-bus.js';
10
+ /**
11
+ * `authz.bus.topic` becomes the channel of `AuthzChangeEvent` unless `queue.routing` already routes it.
12
+ * Order 2 loads after the file sources (1), so it sees the application's topic and routing.
13
+ */
14
+ let AuthzBusRouteSource = class AuthzBusRouteSource extends ConfigurationSource {
15
+ get Order() {
16
+ return 2;
17
+ }
18
+ Load(configuration) {
19
+ const route = ['queue', 'routing', AuthzChangeEvent.name];
20
+ const topic = configuration.get(['authz', 'bus', 'topic']);
21
+ const skip = configuration.get(route) !== undefined || typeof topic !== 'string' || topic === '';
22
+ return Promise.resolve((skip ? {} : { queue: { routing: { [AuthzChangeEvent.name]: { channel: topic } } } }));
23
+ }
24
+ };
25
+ AuthzBusRouteSource = __decorate([
26
+ Injectable(ConfigurationSource)
27
+ ], AuthzBusRouteSource);
28
+ export { AuthzBusRouteSource };
29
+ //# sourceMappingURL=route-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-source.js","sourceRoot":"","sources":["../../../src/bus/route-source.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,mBAAmB;IAC1D,IAAW,KAAK;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,IAAI,CAAC,aAA4B;QACtC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAU,KAAK,CAAC,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1G,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAA2B,CAAC,CAAC;IAC1I,CAAC;CACF,CAAA;AAXY,mBAAmB;IAD/B,UAAU,CAAC,mBAAmB,CAAC;GACnB,mBAAmB,CAW/B"}
@@ -0,0 +1,21 @@
1
+ import { AuthzDomains } from '@spinajs/authz';
2
+ import type { AuthzService, Principal } from '@spinajs/authz';
3
+ import { QueueMessageHook } from '@spinajs/queue';
4
+ import type { IQueueMessage } from '@spinajs/queue';
5
+ import type { Initiator } from '../api.js';
6
+ import { InitiatorPrincipalFactory } from './initiator.js';
7
+ /**
8
+ * Stamps who emitted a message and decides whose authority its handler has (design §14.2, B30).
9
+ * A handler runs unattended unless its `@Job` says `runAs: 'initiator'` or `'system'`.
10
+ */
11
+ export declare class AuthzQueueHook extends QueueMessageHook {
12
+ /** The authz domain whose principal is stamped and whose `runAs` the handler uses. */
13
+ protected Domain: string;
14
+ protected Initiators: InitiatorPrincipalFactory;
15
+ protected Domains: AuthzDomains;
16
+ beforeEmit(message: IQueueMessage): Promise<void>;
17
+ aroundHandle<T>(message: IQueueMessage, next: () => Promise<T>): Promise<T>;
18
+ protected initiator(initiator: Initiator): Promise<Principal>;
19
+ protected service(): Promise<AuthzService>;
20
+ }
21
+ //# sourceMappingURL=hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/hook/hook.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAc,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAiB,MAAM,gBAAgB,CAAC;AAO1E;;;GAGG;AACH,qBACa,cAAe,SAAQ,gBAAgB;IAClD,sFAAsF;IAEtF,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAGzB,SAAS,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAGhD,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;IAE1B,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBtD;IAEK,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUhF;IAED,UAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAElE;IAED,UAAgB,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAE/C;CACF"}
@@ -0,0 +1,78 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Autoinject, Injectable } from '@spinajs/di';
11
+ import { Config } from '@spinajs/configuration';
12
+ import { AuthzDomains, SYSTEM, UNATTENDED } from '@spinajs/authz';
13
+ import { QueueMessageHook, jobOptions } from '@spinajs/queue';
14
+ import { InitiatorPrincipalFactory, reviveCeiling } from './initiator.js';
15
+ // The engine reads a ceiling whose expiresAt is not a Date, or whose reason is empty, as deny-all; revival must not repair it.
16
+ const isStrictCeiling = (c) => (c.expiresAt === undefined || c.expiresAt instanceof Date) && (c.reason === undefined || (typeof c.reason === 'string' && c.reason !== ''));
17
+ const isPlain = (v) => v !== null && typeof v === 'object' && Object.getPrototypeOf(v) === Object.prototype;
18
+ /**
19
+ * Stamps who emitted a message and decides whose authority its handler has (design §14.2, B30).
20
+ * A handler runs unattended unless its `@Job` says `runAs: 'initiator'` or `'system'`.
21
+ */
22
+ let AuthzQueueHook = class AuthzQueueHook extends QueueMessageHook {
23
+ async beforeEmit(message) {
24
+ // Whatever the caller put there is dropped: only the ambient principal may be named.
25
+ delete message.Initiator;
26
+ const principal = (await this.service()).current();
27
+ if (principal === UNATTENDED || principal.type === 'unattended')
28
+ return;
29
+ // A system-typed principal that is not the singleton is forged; stamping it would later become SYSTEM.
30
+ if (principal.type === 'system' && principal !== SYSTEM)
31
+ return;
32
+ // The stamp cannot carry these; rebuilding without them would widen the job's authority.
33
+ if (principal.onBehalfOf !== undefined || principal.delegation !== undefined || principal.authn?.impersonator !== undefined)
34
+ return;
35
+ const stamp = { type: principal.type, id: String(principal.id) };
36
+ if (principal.ceiling === undefined) {
37
+ message.Initiator = stamp;
38
+ return;
39
+ }
40
+ // A ceiling that is not a plain, well-formed one is stamped as deny-all, never as no restriction.
41
+ const ceiling = isPlain(principal.ceiling) && isStrictCeiling(principal.ceiling) ? reviveCeiling(principal.ceiling) : undefined;
42
+ message.Initiator = { ...stamp, ceiling: ceiling ?? { permissions: [] } };
43
+ }
44
+ async aroundHandle(message, next) {
45
+ const service = await this.service();
46
+ const { runAs } = jobOptions(message);
47
+ let principal = UNATTENDED;
48
+ if (runAs === 'system')
49
+ principal = SYSTEM;
50
+ else if (runAs === 'initiator' && message.Initiator)
51
+ principal = await this.initiator(message.Initiator);
52
+ // Also for unattended: a consumer running inside the emitter's async context must not inherit its principal.
53
+ return service.runAs(principal, `job:${message.Name}`, next);
54
+ }
55
+ async initiator(initiator) {
56
+ return this.Initiators.principalOf(initiator);
57
+ }
58
+ async service() {
59
+ return this.Domains.service(this.Domain);
60
+ }
61
+ };
62
+ __decorate([
63
+ Config('authz.queue.domain'),
64
+ __metadata("design:type", String)
65
+ ], AuthzQueueHook.prototype, "Domain", void 0);
66
+ __decorate([
67
+ Autoinject(InitiatorPrincipalFactory),
68
+ __metadata("design:type", InitiatorPrincipalFactory)
69
+ ], AuthzQueueHook.prototype, "Initiators", void 0);
70
+ __decorate([
71
+ Autoinject(AuthzDomains),
72
+ __metadata("design:type", AuthzDomains)
73
+ ], AuthzQueueHook.prototype, "Domains", void 0);
74
+ AuthzQueueHook = __decorate([
75
+ Injectable(QueueMessageHook)
76
+ ], AuthzQueueHook);
77
+ export { AuthzQueueHook };
78
+ //# sourceMappingURL=hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/hook/hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './hook.js';
2
+ export * from './initiator.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hook/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './hook.js';
2
+ export * from './initiator.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hook/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { Ceiling, HostLog, Principal } from '@spinajs/authz';
2
+ import type { Initiator } from '../api.js';
3
+ /**
4
+ * Builds the principal a job runs as from the `Initiator` on its message. An app that must reload
5
+ * the user (attributes, deactivation) registers its own with `DI.register(X).as(InitiatorPrincipalFactory)`.
6
+ * Return `UNATTENDED` for an initiator that can no longer act; throw only for a failure worth a retry.
7
+ */
8
+ export declare abstract class InitiatorPrincipalFactory {
9
+ abstract principalOf(initiator: Initiator): Promise<Principal>;
10
+ }
11
+ /** Rebuilds a Ceiling that went through a JSON broker (`expiresAt` is a string there); undefined when the shape is wrong. */
12
+ export declare function reviveCeiling(raw: unknown): Ceiling | undefined;
13
+ /** Trusts the stamp: type, id and ceiling are all the principal has. A malformed stamp yields `UNATTENDED`. */
14
+ export declare class StampedInitiatorPrincipalFactory extends InitiatorPrincipalFactory {
15
+ private warned;
16
+ private readonly warn;
17
+ protected Log: HostLog;
18
+ protected WarningSwitch: boolean;
19
+ /**
20
+ * `warn` decides the one-time warning without reading the config, for a wrapper built with `new` that does reload the user.
21
+ * Without it, `authz.queue.stampedInitiatorWarning` decides, so a `new` instance needs a resolved Configuration.
22
+ */
23
+ constructor(options?: {
24
+ readonly warn?: boolean;
25
+ });
26
+ principalOf(initiator: Initiator): Promise<Principal>;
27
+ }
28
+ //# sourceMappingURL=initiator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiator.d.ts","sourceRoot":"","sources":["../../../src/hook/initiator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;GAIG;AACH,8BAAsB,yBAAyB;IAC7C,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAChE;AAQD,6HAA6H;AAC7H,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAiC/D;AAED,+GAA+G;AAC/G,qBACa,gCAAiC,SAAQ,yBAAyB;IAC7E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAE3C,SAAS,CAAC,GAAG,EAAE,OAAO,CAA4B;IAGlD,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC;IAEjC;;;OAGG;IACH,YAAY,OAAO,GAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO,EAGpD;IAEK,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CA2B1D;CACF"}
@@ -0,0 +1,123 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Injectable } from '@spinajs/di';
11
+ import { Config } from '@spinajs/configuration';
12
+ import { SYSTEM, UNATTENDED, engineLog } from '@spinajs/authz';
13
+ import { isStringArray } from '@spinajs/util';
14
+ /**
15
+ * Builds the principal a job runs as from the `Initiator` on its message. An app that must reload
16
+ * the user (attributes, deactivation) registers its own with `DI.register(X).as(InitiatorPrincipalFactory)`.
17
+ * Return `UNATTENDED` for an initiator that can no longer act; throw only for a failure worth a retry.
18
+ */
19
+ export class InitiatorPrincipalFactory {
20
+ }
21
+ // null counts as absent, as in the engine's ceiling reader.
22
+ function reviveDate(v) {
23
+ const d = v instanceof Date ? v : typeof v === 'string' || typeof v === 'number' ? new Date(v) : undefined;
24
+ return d !== undefined && !Number.isNaN(d.getTime()) ? d : undefined;
25
+ }
26
+ /** Rebuilds a Ceiling that went through a JSON broker (`expiresAt` is a string there); undefined when the shape is wrong. */
27
+ export function reviveCeiling(raw) {
28
+ if (raw === null || typeof raw !== 'object' || Array.isArray(raw))
29
+ return undefined;
30
+ const c = Object.fromEntries(Object.entries(raw).filter(([, v]) => v !== null));
31
+ const out = {};
32
+ if (c.roles !== undefined) {
33
+ if (!isStringArray(c.roles))
34
+ return undefined;
35
+ out.roles = [...c.roles];
36
+ }
37
+ if (c.permissions !== undefined) {
38
+ if (!isStringArray(c.permissions))
39
+ return undefined;
40
+ out.permissions = [...c.permissions];
41
+ }
42
+ if (c.resources !== undefined) {
43
+ if (!Array.isArray(c.resources))
44
+ return undefined;
45
+ const resources = [];
46
+ for (const r of c.resources) {
47
+ if (r === null || typeof r !== 'object')
48
+ return undefined;
49
+ const { type, id } = r;
50
+ if (typeof type !== 'string' || (id !== undefined && typeof id !== 'string'))
51
+ return undefined;
52
+ resources.push(id === undefined ? { type } : { type, id });
53
+ }
54
+ out.resources = resources;
55
+ }
56
+ if (c.expiresAt !== undefined) {
57
+ const expiresAt = reviveDate(c.expiresAt);
58
+ if (expiresAt === undefined)
59
+ return undefined;
60
+ out.expiresAt = expiresAt;
61
+ }
62
+ if (c.reason !== undefined) {
63
+ if (typeof c.reason !== 'string')
64
+ return undefined;
65
+ out.reason = c.reason;
66
+ }
67
+ return out;
68
+ }
69
+ /** Trusts the stamp: type, id and ceiling are all the principal has. A malformed stamp yields `UNATTENDED`. */
70
+ let StampedInitiatorPrincipalFactory = class StampedInitiatorPrincipalFactory extends InitiatorPrincipalFactory {
71
+ /**
72
+ * `warn` decides the one-time warning without reading the config, for a wrapper built with `new` that does reload the user.
73
+ * Without it, `authz.queue.stampedInitiatorWarning` decides, so a `new` instance needs a resolved Configuration.
74
+ */
75
+ constructor(options = {}) {
76
+ super();
77
+ this.warned = false;
78
+ this.Log = engineLog('authz-queue');
79
+ this.warn = options.warn;
80
+ }
81
+ async principalOf(initiator) {
82
+ if (!this.warned) {
83
+ // The schema default keeps the warning; so does a value the schema never saw.
84
+ const warn = this.warn ?? this.WarningSwitch !== false;
85
+ this.warned = true;
86
+ if (warn)
87
+ this.Log.warn('authz-queue: jobs run as their initiator from the stamp alone; register an InitiatorPrincipalFactory that reloads the user so deactivated users stop acting');
88
+ }
89
+ if (initiator === null || typeof initiator !== 'object')
90
+ return UNATTENDED;
91
+ const { type, id, ceiling } = initiator;
92
+ if (typeof type !== 'string' || type === '' || typeof id !== 'string' || id === '')
93
+ return UNATTENDED;
94
+ if (type === 'system')
95
+ return SYSTEM;
96
+ if (type === 'unattended')
97
+ return UNATTENDED;
98
+ let revived;
99
+ if (ceiling !== undefined && ceiling !== null) {
100
+ revived = reviveCeiling(ceiling);
101
+ if (revived === undefined)
102
+ return UNATTENDED;
103
+ }
104
+ return Object.freeze({
105
+ type,
106
+ id,
107
+ authenticated: type !== 'anonymous',
108
+ source: 'queue',
109
+ attributes: Object.freeze({}),
110
+ ...(revived ? { ceiling: revived } : {}),
111
+ });
112
+ }
113
+ };
114
+ __decorate([
115
+ Config('authz.queue.stampedInitiatorWarning'),
116
+ __metadata("design:type", Boolean)
117
+ ], StampedInitiatorPrincipalFactory.prototype, "WarningSwitch", void 0);
118
+ StampedInitiatorPrincipalFactory = __decorate([
119
+ Injectable(InitiatorPrincipalFactory),
120
+ __metadata("design:paramtypes", [Object])
121
+ ], StampedInitiatorPrincipalFactory);
122
+ export { StampedInitiatorPrincipalFactory };
123
+ //# sourceMappingURL=initiator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initiator.js","sourceRoot":"","sources":["../../../src/hook/initiator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './api.js';
2
+ export * from './hook/index.js';
3
+ export * from './bus/index.js';
4
+ export * from './schema.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './api.js';
2
+ export * from './hook/index.js';
3
+ export * from './bus/index.js';
4
+ export * from './schema.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './job-resource.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/job/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './job-resource.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/job/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ConfigurationSource } from '@spinajs/configuration';
2
+ import type { IConfigLike } from '@spinajs/configuration';
3
+ /**
4
+ * Every user holds job:read on the jobs they emitted (the `owner` relation is the job's initiator). It is a source and not a
5
+ * config file because every installed package's config dir is read whether or not the package is imported, and a
6
+ * grant of a permission nothing registered fails the boot. Order 0 loads before the file sources.
7
+ */
8
+ export declare class JobGrantSource extends ConfigurationSource {
9
+ get Order(): number;
10
+ Load(): Promise<IConfigLike>;
11
+ }
12
+ //# sourceMappingURL=job-grant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-grant.d.ts","sourceRoot":"","sources":["../../../src/job/job-grant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;;GAIG;AACH,qBACa,cAAe,SAAQ,mBAAmB;IACrD,IAAW,KAAK,IAAI,MAAM,CAEzB;IAEM,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC,CAElC;CACF"}
@@ -0,0 +1,26 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Injectable } from '@spinajs/di';
8
+ import { ConfigurationSource } from '@spinajs/configuration';
9
+ /**
10
+ * Every user holds job:read on the jobs they emitted (the `owner` relation is the job's initiator). It is a source and not a
11
+ * config file because every installed package's config dir is read whether or not the package is imported, and a
12
+ * grant of a permission nothing registered fails the boot. Order 0 loads before the file sources.
13
+ */
14
+ let JobGrantSource = class JobGrantSource extends ConfigurationSource {
15
+ get Order() {
16
+ return 0;
17
+ }
18
+ Load() {
19
+ return Promise.resolve({ authz: { rbac: { roles: { user: { grants: [{ permission: 'job:read', relation: 'owner' }] } } } } });
20
+ }
21
+ };
22
+ JobGrantSource = __decorate([
23
+ Injectable(ConfigurationSource)
24
+ ], JobGrantSource);
25
+ export { JobGrantSource };
26
+ //# sourceMappingURL=job-grant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-grant.js","sourceRoot":"","sources":["../../../src/job/job-grant.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D;;;;GAIG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,mBAAmB;IACrD,IAAW,KAAK;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,IAAI;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAA4B,CAAC,CAAC;IAC1J,CAAC;CACF,CAAA;AARY,cAAc;IAD1B,UAAU,CAAC,mBAAmB,CAAC;GACnB,cAAc,CAQ1B"}
@@ -0,0 +1,10 @@
1
+ import { AuthzDomains } from '@spinajs/authz';
2
+ import { QueueTrackingHook } from '@spinajs/queue';
3
+ import './job-grant.js';
4
+ /** The queue's own job-row queries run as SYSTEM: the job's principal may not touch the table. */
5
+ export declare class AuthzQueueTrackingHook extends QueueTrackingHook {
6
+ protected Domain: string;
7
+ protected Domains: AuthzDomains;
8
+ aroundTracking<T>(next: () => Promise<T>): Promise<T>;
9
+ }
10
+ //# sourceMappingURL=job-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-resource.d.ts","sourceRoot":"","sources":["../../../src/job/job-resource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAU,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAY,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,gBAAgB,CAAC;AAKxB,kGAAkG;AAClG,qBACa,sBAAuB,SAAQ,iBAAiB;IAE3D,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAGzB,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC;IAE1B,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE1D;CACF"}
@@ -0,0 +1,36 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Autoinject, Injectable } from '@spinajs/di';
11
+ import { Config } from '@spinajs/configuration';
12
+ import { registerAccessResource } from '@spinajs/authz-orm';
13
+ import { AuthzDomains, SYSTEM } from '@spinajs/authz';
14
+ import { JobModel, QueueTrackingHook } from '@spinajs/queue';
15
+ import './job-grant.js';
16
+ // The initiator may be any principal type, so the owner relation compares the type column too.
17
+ registerAccessResource(JobModel, 'job', { owner: { column: 'InitiatorId', typeColumn: 'InitiatorType' } });
18
+ /** The queue's own job-row queries run as SYSTEM: the job's principal may not touch the table. */
19
+ let AuthzQueueTrackingHook = class AuthzQueueTrackingHook extends QueueTrackingHook {
20
+ async aroundTracking(next) {
21
+ return (await this.Domains.service(this.Domain)).runAs(SYSTEM, 'queue:tracking', next);
22
+ }
23
+ };
24
+ __decorate([
25
+ Config('authz.queue.domain'),
26
+ __metadata("design:type", String)
27
+ ], AuthzQueueTrackingHook.prototype, "Domain", void 0);
28
+ __decorate([
29
+ Autoinject(AuthzDomains),
30
+ __metadata("design:type", AuthzDomains)
31
+ ], AuthzQueueTrackingHook.prototype, "Domains", void 0);
32
+ AuthzQueueTrackingHook = __decorate([
33
+ Injectable(QueueTrackingHook)
34
+ ], AuthzQueueTrackingHook);
35
+ export { AuthzQueueTrackingHook };
36
+ //# sourceMappingURL=job-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-resource.js","sourceRoot":"","sources":["../../../src/job/job-resource.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,gBAAgB,CAAC;AAExB,+FAA+F;AAC/F,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;AAE3G,kGAAkG;AAE3F,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,iBAAiB;IAO3D,KAAK,CAAC,cAAc,CAAI,IAAsB;QAC5C,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACzF,CAAC;CACF,CAAA;AARW;IADT,MAAM,CAAC,oBAAoB,CAAC;;sDACJ;AAGf;IADT,UAAU,CAAC,YAAY,CAAC;8BACN,YAAY;uDAAC;AALrB,sBAAsB;IADlC,UAAU,CAAC,iBAAiB,CAAC;GACjB,sBAAsB,CAUlC"}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,34 @@
1
+ import { Bootstrapper } from '@spinajs/di';
2
+ export declare const AUTHZ_QUEUE_CONFIGURATION_SCHEMA: {
3
+ $id: string;
4
+ $configurationModule: string;
5
+ description: string;
6
+ type: string;
7
+ properties: {
8
+ domain: {
9
+ type: string;
10
+ minLength: number;
11
+ default: string;
12
+ };
13
+ stampedInitiatorWarning: {
14
+ type: string;
15
+ default: boolean;
16
+ };
17
+ };
18
+ };
19
+ export declare const AUTHZ_BUS_TOPIC_CONFIGURATION_SCHEMA: {
20
+ $id: string;
21
+ $configurationModule: string;
22
+ description: string;
23
+ type: string;
24
+ properties: {
25
+ topic: {
26
+ type: string;
27
+ minLength: number;
28
+ };
29
+ };
30
+ };
31
+ export declare class AuthzQueueConfigBootstrapper extends Bootstrapper {
32
+ bootstrap(): void;
33
+ }
34
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AAIvD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;YASd,IAAI;YAAa,OAAO;;;CAEtD,CAAC;AAGF,eAAO,MAAM,oCAAoC;IAC/C,GAAG;IACH,oBAAoB;IACpB,WAAW;IACX,IAAI;IACJ,UAAU;QAAI,KAAK;;;;;CACpB,CAAC;AAKF,qBACa,4BAA6B,SAAQ,YAAY;IACrD,SAAS,IAAI,IAAI,CAGvB;CACF"}
@@ -0,0 +1,42 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { registerConfigurationSchema, registerConfigurationSchemaAtImport } from '@spinajs/configuration';
8
+ import { Bootstrapper, Injectable } from '@spinajs/di';
9
+ const name = { type: 'string', minLength: 1 };
10
+ export const AUTHZ_QUEUE_CONFIGURATION_SCHEMA = {
11
+ $id: 'spinajs/authz-queue.configuration.schema.json',
12
+ $configurationModule: 'authz.queue',
13
+ description: 'Queue authorization configuration (authz.queue.*)',
14
+ type: 'object',
15
+ properties: {
16
+ // The authz domain whose principal a message carries and whose runAs its handler uses.
17
+ domain: { ...name, default: 'root' },
18
+ // Whether StampedInitiatorPrincipalFactory warns, once, that jobs run from the stamp alone; false for an app that accepts that.
19
+ stampedInitiatorWarning: { type: 'boolean', default: true },
20
+ },
21
+ };
22
+ // authz.bus belongs to the core schema, which leaves it open; the topic is the queue bus's own key.
23
+ export const AUTHZ_BUS_TOPIC_CONFIGURATION_SCHEMA = {
24
+ $id: 'spinajs/authz-queue-bus.configuration.schema.json',
25
+ $configurationModule: 'authz.bus',
26
+ description: 'Queue change bus configuration (authz.bus.topic)',
27
+ type: 'object',
28
+ properties: { topic: name },
29
+ };
30
+ registerConfigurationSchemaAtImport(AUTHZ_QUEUE_CONFIGURATION_SCHEMA);
31
+ registerConfigurationSchemaAtImport(AUTHZ_BUS_TOPIC_CONFIGURATION_SCHEMA);
32
+ let AuthzQueueConfigBootstrapper = class AuthzQueueConfigBootstrapper extends Bootstrapper {
33
+ bootstrap() {
34
+ registerConfigurationSchema(AUTHZ_QUEUE_CONFIGURATION_SCHEMA);
35
+ registerConfigurationSchema(AUTHZ_BUS_TOPIC_CONFIGURATION_SCHEMA);
36
+ }
37
+ };
38
+ AuthzQueueConfigBootstrapper = __decorate([
39
+ Injectable(Bootstrapper)
40
+ ], AuthzQueueConfigBootstrapper);
41
+ export { AuthzQueueConfigBootstrapper };
42
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,2BAA2B,EAAE,mCAAmC,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,GAAG,EAAE,+CAA+C;IACpD,oBAAoB,EAAE,aAAa;IACnC,WAAW,EAAE,mDAAmD;IAChE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,uFAAuF;QACvF,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;QACpC,gIAAgI;QAChI,uBAAuB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;KAC5D;CACF,CAAC;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,oCAAoC,GAAG;IAClD,GAAG,EAAE,mDAAmD;IACxD,oBAAoB,EAAE,WAAW;IACjC,WAAW,EAAE,kDAAkD;IAC/D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;CAC5B,CAAC;AAEF,mCAAmC,CAAC,gCAAgC,CAAC,CAAC;AACtE,mCAAmC,CAAC,oCAAoC,CAAC,CAAC;AAGnE,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,YAAY;IACrD,SAAS;QACd,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;QAC9D,2BAA2B,CAAC,oCAAoC,CAAC,CAAC;IACpE,CAAC;CACF,CAAA;AALY,4BAA4B;IADxC,UAAU,CAAC,YAAY,CAAC;GACZ,4BAA4B,CAKxC"}