@spinajs/authz-http-admin 3.0.3 → 3.0.4
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/cjs/controllers/AuthzAdminController.d.ts +9 -6
- package/lib/cjs/controllers/AuthzAdminController.d.ts.map +1 -1
- package/lib/cjs/controllers/AuthzAdminController.js +28 -15
- package/lib/cjs/controllers/AuthzAdminController.js.map +1 -1
- package/lib/cjs/routes/query.d.ts +12 -4
- package/lib/cjs/routes/query.d.ts.map +1 -1
- package/lib/cjs/routes/query.js +18 -6
- package/lib/cjs/routes/query.js.map +1 -1
- package/lib/cjs/schemas/bodies.d.ts +1 -0
- package/lib/cjs/schemas/bodies.d.ts.map +1 -1
- package/lib/cjs/schemas/bodies.js +3 -7
- package/lib/cjs/schemas/bodies.js.map +1 -1
- package/lib/cjs/schemas/commands.d.ts +15 -1
- package/lib/cjs/schemas/commands.d.ts.map +1 -1
- package/lib/cjs/schemas/commands.js +48 -3
- package/lib/cjs/schemas/commands.js.map +1 -1
- package/lib/cjs/schemas/document.d.ts +5 -2
- package/lib/cjs/schemas/document.d.ts.map +1 -1
- package/lib/cjs/schemas/document.js +12 -8
- package/lib/cjs/schemas/document.js.map +1 -1
- package/lib/cjs/schemas/index.d.ts +1 -0
- package/lib/cjs/schemas/index.d.ts.map +1 -1
- package/lib/cjs/schemas/index.js +1 -0
- package/lib/cjs/schemas/index.js.map +1 -1
- package/lib/cjs/schemas/primitives.d.ts +2 -0
- package/lib/cjs/schemas/primitives.d.ts.map +1 -1
- package/lib/cjs/schemas/primitives.js +10 -0
- package/lib/cjs/schemas/primitives.js.map +1 -1
- package/lib/cjs/schemas/provider.d.ts +5 -1
- package/lib/cjs/schemas/provider.d.ts.map +1 -1
- package/lib/cjs/schemas/provider.js +15 -1
- package/lib/cjs/schemas/provider.js.map +1 -1
- package/lib/cjs/schemas/registry.d.ts +21 -0
- package/lib/cjs/schemas/registry.d.ts.map +1 -0
- package/lib/cjs/schemas/registry.js +71 -0
- package/lib/cjs/schemas/registry.js.map +1 -0
- package/lib/mjs/controllers/AuthzAdminController.d.ts +9 -6
- package/lib/mjs/controllers/AuthzAdminController.d.ts.map +1 -1
- package/lib/mjs/controllers/AuthzAdminController.js +29 -16
- package/lib/mjs/controllers/AuthzAdminController.js.map +1 -1
- package/lib/mjs/routes/query.d.ts +12 -4
- package/lib/mjs/routes/query.d.ts.map +1 -1
- package/lib/mjs/routes/query.js +18 -6
- package/lib/mjs/routes/query.js.map +1 -1
- package/lib/mjs/schemas/bodies.d.ts +1 -0
- package/lib/mjs/schemas/bodies.d.ts.map +1 -1
- package/lib/mjs/schemas/bodies.js +4 -8
- package/lib/mjs/schemas/bodies.js.map +1 -1
- package/lib/mjs/schemas/commands.d.ts +15 -1
- package/lib/mjs/schemas/commands.d.ts.map +1 -1
- package/lib/mjs/schemas/commands.js +47 -2
- package/lib/mjs/schemas/commands.js.map +1 -1
- package/lib/mjs/schemas/document.d.ts +5 -2
- package/lib/mjs/schemas/document.d.ts.map +1 -1
- package/lib/mjs/schemas/document.js +12 -8
- package/lib/mjs/schemas/document.js.map +1 -1
- package/lib/mjs/schemas/index.d.ts +1 -0
- package/lib/mjs/schemas/index.d.ts.map +1 -1
- package/lib/mjs/schemas/index.js +1 -0
- package/lib/mjs/schemas/index.js.map +1 -1
- package/lib/mjs/schemas/primitives.d.ts +2 -0
- package/lib/mjs/schemas/primitives.d.ts.map +1 -1
- package/lib/mjs/schemas/primitives.js +9 -0
- package/lib/mjs/schemas/primitives.js.map +1 -1
- package/lib/mjs/schemas/provider.d.ts +5 -1
- package/lib/mjs/schemas/provider.d.ts.map +1 -1
- package/lib/mjs/schemas/provider.js +16 -2
- package/lib/mjs/schemas/provider.js.map +1 -1
- package/lib/mjs/schemas/registry.d.ts +21 -0
- package/lib/mjs/schemas/registry.d.ts.map +1 -0
- package/lib/mjs/schemas/registry.js +67 -0
- package/lib/mjs/schemas/registry.js.map +1 -0
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +12 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/schemas/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;GAGG;AACH,8BAAsB,wBAAwB;IAC5C,wEAAwE;IACxE,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD;AASD,yHAAyH;AACzH,qBAEa,0BAA0B;IACzB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU;IAApD,YAA+B,SAAS,EAAE,UAAU,EAAI;IAExD,gGAAgG;IACzF,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CActD;IAED,mGAAmG;IAC5F,KAAK,IAAI,UAAU,CAEzB;IAED,OAAO,CAAC,OAAO;CAShB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
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 { AuthzConfigError } from '@spinajs/authz';
|
|
11
|
+
import { Container, Inject, Singleton } from '@spinajs/di';
|
|
12
|
+
import { commandBatch } from './primitives.js';
|
|
13
|
+
/**
|
|
14
|
+
* The JSON schemas of one model's admin commands, by command kind. Each model contributes one with
|
|
15
|
+
* `@Injectable(AuthzCommandSchemaSource)`; the batch body of POST /authz/commands lists every registered kind.
|
|
16
|
+
*/
|
|
17
|
+
export class AuthzCommandSchemaSource {
|
|
18
|
+
}
|
|
19
|
+
const q = (v) => JSON.stringify(v);
|
|
20
|
+
function namesKind(schema, kind) {
|
|
21
|
+
const property = schema.properties?.kind;
|
|
22
|
+
return Array.isArray(property?.enum) && property.enum.length === 1 && property.enum[0] === kind;
|
|
23
|
+
}
|
|
24
|
+
/** The command schemas of every registered AuthzCommandSchemaSource, read on each call so a late registration counts. */
|
|
25
|
+
let AuthzCommandSchemaRegistry = class AuthzCommandSchemaRegistry {
|
|
26
|
+
constructor(container) {
|
|
27
|
+
this.container = container;
|
|
28
|
+
}
|
|
29
|
+
/** Command kind -> JSON schema, merged from the sources of this container and its ancestors. */
|
|
30
|
+
commands() {
|
|
31
|
+
const out = {};
|
|
32
|
+
const owners = new Map();
|
|
33
|
+
for (const source of this.sources()) {
|
|
34
|
+
const name = source.constructor.name;
|
|
35
|
+
for (const [kind, schema] of Object.entries(source.schemas())) {
|
|
36
|
+
const other = owners.get(kind);
|
|
37
|
+
if (other !== undefined)
|
|
38
|
+
throw new AuthzConfigError(`Two AuthzCommandSchemaSources describe command kind ${q(kind)}: ${other} and ${name}`);
|
|
39
|
+
if (!namesKind(schema, kind))
|
|
40
|
+
throw new AuthzConfigError(`${name}: the schema of command kind ${q(kind)} must have properties.kind.enum [${q(kind)}]`);
|
|
41
|
+
owners.set(kind, name);
|
|
42
|
+
out[kind] = schema;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
/** The body of POST /authz/commands over the registered command kinds (schema AuthzAdminBatch). */
|
|
48
|
+
batch() {
|
|
49
|
+
return commandBatch(Object.values(this.commands()));
|
|
50
|
+
}
|
|
51
|
+
sources() {
|
|
52
|
+
const sources = this.container.resolve(Array.chainOf(AuthzCommandSchemaSource));
|
|
53
|
+
// SchemaProvider.getSchema is synchronous, so the sources must be too.
|
|
54
|
+
if (sources instanceof Promise) {
|
|
55
|
+
sources.catch(() => undefined);
|
|
56
|
+
throw new AuthzConfigError('An AuthzCommandSchemaSource must not be an AsyncService');
|
|
57
|
+
}
|
|
58
|
+
return [...sources];
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
AuthzCommandSchemaRegistry = __decorate([
|
|
62
|
+
Singleton(),
|
|
63
|
+
Inject(Container),
|
|
64
|
+
__metadata("design:paramtypes", [Object])
|
|
65
|
+
], AuthzCommandSchemaRegistry);
|
|
66
|
+
export { AuthzCommandSchemaRegistry };
|
|
67
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/schemas/registry.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C;;;GAGG;AACH,MAAM,OAAgB,wBAAwB;CAG7C;AAED,MAAM,CAAC,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAEpD,SAAS,SAAS,CAAC,MAAc,EAAE,IAAY;IAC7C,MAAM,QAAQ,GAAI,MAAyD,CAAC,UAAU,EAAE,IAAI,CAAC;IAC7F,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAClG,CAAC;AAED,yHAAyH;AAGlH,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrC,YAA+B,SAAqB;yBAArB,SAAS;IAAe,CAAC;IAExD,gGAAgG;IACzF,QAAQ;QACb,MAAM,GAAG,GAA+B,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;YACrC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,IAAI,gBAAgB,CAAC,uDAAuD,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,EAAE,CAAC,CAAC;gBAC5I,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC;oBAAE,MAAM,IAAI,gBAAgB,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACvJ,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC,GAAG,MAAoB,CAAC;YACnC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,mGAAmG;IAC5F,KAAK;QACV,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAEO,OAAO;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAChF,uEAAuE;QACvE,IAAI,OAAO,YAAY,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,IAAI,gBAAgB,CAAC,yDAAyD,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IACtB,CAAC;CACF,CAAA;AAlCY,0BAA0B;IAFtC,SAAS,EAAE;IACX,MAAM,CAAC,SAAS,CAAC;;GACL,0BAA0B,CAkCtC"}
|