nodecommons-esm-rest-adamantine 0.0.2

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 (37) hide show
  1. package/dist/apis/commons-rest-adamantine-managed-first-class-user-model-session.api.d.mts +23 -0
  2. package/dist/apis/commons-rest-adamantine-managed-first-class-user-model-session.api.mjs +24 -0
  3. package/dist/apis/commons-rest-adamantine-managed-first-class-user-model-session.api.mjs.map +1 -0
  4. package/dist/apis/commons-rest-adamantine-managed-second-class-user-model-session.api.d.mts +23 -0
  5. package/dist/apis/commons-rest-adamantine-managed-second-class-user-model-session.api.mjs +45 -0
  6. package/dist/apis/commons-rest-adamantine-managed-second-class-user-model-session.api.mjs.map +1 -0
  7. package/dist/apis/commons-rest-adamantine-required-access.api.d.mts +22 -0
  8. package/dist/apis/commons-rest-adamantine-required-access.api.mjs +58 -0
  9. package/dist/apis/commons-rest-adamantine-required-access.api.mjs.map +1 -0
  10. package/dist/helpers/adamantine-model.api.d.mts +25 -0
  11. package/dist/helpers/adamantine-model.api.mjs +152 -0
  12. package/dist/helpers/adamantine-model.api.mjs.map +1 -0
  13. package/dist/helpers/id-only.d.mts +5 -0
  14. package/dist/helpers/id-only.mjs +12 -0
  15. package/dist/helpers/id-only.mjs.map +1 -0
  16. package/dist/helpers/managed-first-class.api.d.mts +32 -0
  17. package/dist/helpers/managed-first-class.api.mjs +267 -0
  18. package/dist/helpers/managed-first-class.api.mjs.map +1 -0
  19. package/dist/helpers/managed-m2m-link-table.api.d.mts +28 -0
  20. package/dist/helpers/managed-m2m-link-table.api.mjs +207 -0
  21. package/dist/helpers/managed-m2m-link-table.api.mjs.map +1 -0
  22. package/dist/helpers/managed-model.api.d.mts +10 -0
  23. package/dist/helpers/managed-model.api.mjs +25 -0
  24. package/dist/helpers/managed-model.api.mjs.map +1 -0
  25. package/dist/helpers/managed-ordered-class.api.d.mts +27 -0
  26. package/dist/helpers/managed-ordered-class.api.mjs +394 -0
  27. package/dist/helpers/managed-ordered-class.api.mjs.map +1 -0
  28. package/dist/helpers/managed-orientated-ordered.api.d.mts +30 -0
  29. package/dist/helpers/managed-orientated-ordered.api.mjs +457 -0
  30. package/dist/helpers/managed-orientated-ordered.api.mjs.map +1 -0
  31. package/dist/helpers/managed-second-class.api.d.mts +27 -0
  32. package/dist/helpers/managed-second-class.api.mjs +319 -0
  33. package/dist/helpers/managed-second-class.api.mjs.map +1 -0
  34. package/dist/index.d.mts +12 -0
  35. package/dist/index.mjs +13 -0
  36. package/dist/index.mjs.map +1 -0
  37. package/package.json +39 -0
@@ -0,0 +1,23 @@
1
+ import { TEncodedObject } from 'tscommons-esm-core';
2
+ import { CommonsManagedFirstClass } from 'nodecommons-esm-models-adamantine';
3
+ import { CommonsManagedFirstClassUserModel } from 'nodecommons-esm-models-adamantine';
4
+ import { CommonsRestServer } from 'nodecommons-esm-rest';
5
+ import { CommonsRestUserPwHashSessionApi } from 'nodecommons-esm-rest';
6
+ import { CommonsAdamantineManagedFirstClassUserSessionService } from 'nodecommons-esm-security-adamantine';
7
+ import { ICommonsAdamantineManagedFirstClassUserWithPwHash } from 'nodecommons-esm-security-adamantine';
8
+ import { ICommonsStrictParamsRequest, TCommonsHttpResponse } from 'nodecommons-esm-http';
9
+ import { TCommonsDatabaseDbValues, TCommonsDatabaseParams, TCommonsDatabaseTypes } from 'nodecommons-esm-database/dist/index.mjs';
10
+ export declare abstract class CommonsRestAdamantineManagedFirstClassUserModelSessionApi<RequestT extends ICommonsStrictParamsRequest, ResponseT extends TCommonsHttpResponse, UserI extends ICommonsAdamantineManagedFirstClassUserWithPwHash, UserClassT extends CommonsManagedFirstClass<UserI, TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues> & CommonsManagedFirstClassUserModel<UserI>, SessionServiceT extends CommonsAdamantineManagedFirstClassUserSessionService<UserI, UserClassT>> extends CommonsRestUserPwHashSessionApi<RequestT, ResponseT, UserI, SessionServiceT> {
11
+ private model;
12
+ constructor(restServer: CommonsRestServer<RequestT, ResponseT>, model: UserClassT, sessionService: SessionServiceT);
13
+ private autoRegister;
14
+ installUserModelAuthentication(authenticateQuery: string, encodeUser: (user: UserI) => TEncodedObject, buildAutoRegisterUser?: (username: string, data: Partial<UserI> & {
15
+ id?: never;
16
+ ordered?: never;
17
+ parent?: never;
18
+ }) => Partial<UserI> & {
19
+ id?: never;
20
+ ordered?: never;
21
+ parent?: never;
22
+ } | undefined): void;
23
+ }
@@ -0,0 +1,24 @@
1
+ import { CommonsRestUserPwHashSessionApi } from 'nodecommons-esm-rest';
2
+ export class CommonsRestAdamantineManagedFirstClassUserModelSessionApi extends CommonsRestUserPwHashSessionApi {
3
+ model;
4
+ constructor(restServer, model, sessionService) {
5
+ super(restServer, sessionService);
6
+ this.model = model;
7
+ }
8
+ async autoRegister(username, req, buildAutoRegisterUser) {
9
+ const bodyRequestTypecast = req;
10
+ const user = buildAutoRegisterUser(username, bodyRequestTypecast.body);
11
+ if (!user)
12
+ return undefined;
13
+ return this.model.insertFirstClass(user);
14
+ }
15
+ installUserModelAuthentication(authenticateQuery, encodeUser, buildAutoRegisterUser) {
16
+ super.installAuthentication(authenticateQuery, async (// getUserByUsername
17
+ username, _req) => await this.model.getUserByUsername(username), buildAutoRegisterUser ? ((// autoregister
18
+ username, req) => this.autoRegister(username, req, buildAutoRegisterUser))
19
+ : undefined);
20
+ super.getSessionHandler(authenticateQuery, async (req, _res) => encodeUser(req.session.data) // eslint-disable-line @typescript-eslint/require-await
21
+ );
22
+ }
23
+ }
24
+ //# sourceMappingURL=commons-rest-adamantine-managed-first-class-user-model-session.api.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commons-rest-adamantine-managed-first-class-user-model-session.api.mjs","sourceRoot":"","sources":["../../src/apis/commons-rest-adamantine-managed-first-class-user-model-session.api.mts"],"names":[],"mappings":"AAKA,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAOvE,MAAM,OAAgB,yDAWpB,SAAQ,+BAKT;IAGU;IAFV,YACE,UAAkD,EAC1C,KAAiB,EACzB,cAA+B;QAEhC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAHzB,UAAK,GAAL,KAAK,CAAY;IAI3B,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,QAAgB,EAChB,GAAa,EACb,qBAG+E;QAEhF,MAAM,mBAAmB,GAAoC,GAAiD,CAAC;QAE/G,MAAM,IAAI,GAA8C,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,IAAwE,CAAC,CAAC;QACtL,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEM,8BAA8B,CACnC,iBAAyB,EACzB,UAA2C,EAC3C,qBAG+E;QAEhF,KAAK,CAAC,qBAAqB,CACzB,iBAAiB,EACjB,KAAK,EAAG,oBAAoB;QAC1B,QAAgB,EAChB,IAAc,EACY,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAC3E,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAE,eAAe;QACxC,QAAgB,EAChB,GAAa,EACa,EAAE,CAAC,IAAI,CAAC,YAAY,CAC9C,QAAQ,EACR,GAAG,EACH,qBAAqB,CACtB,CAAC;YACD,CAAC,CAAC,SAAS,CACb,CAAC;QAEF,KAAK,CAAC,iBAAiB,CACrB,iBAAiB,EACjB,KAAK,EAAE,GAAsC,EAAE,IAAa,EAA2B,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,uDAAuD;SAC/K,CAAC;IACH,CAAC;CACD"}
@@ -0,0 +1,23 @@
1
+ import { TEncodedObject } from 'tscommons-esm-core';
2
+ import { ICommonsFirstClass } from 'tscommons-esm-models';
3
+ import { TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues } from 'nodecommons-esm-database';
4
+ import { ICommonsStrictParamsRequest, TCommonsHttpResponse } from 'nodecommons-esm-http';
5
+ import { CommonsManagedSecondClass, CommonsManagedSecondClassUserModel } from 'nodecommons-esm-models-adamantine';
6
+ import { CommonsFirstClass } from 'nodecommons-esm-models';
7
+ import { CommonsRestUserPwHashSessionApi, CommonsRestServer } from 'nodecommons-esm-rest';
8
+ import { ICommonsAdamantineManagedSecondClassUserWithPwHash, CommonsAdamantineManagedSecondClassUserSessionService } from 'nodecommons-esm-security-adamantine';
9
+ export declare abstract class CommonsRestAdamantineManagedSecondClassUserModelSessionApi<RequestT extends ICommonsStrictParamsRequest, ResponseT extends TCommonsHttpResponse, UserI extends ICommonsAdamantineManagedSecondClassUserWithPwHash<FirstClassI>, UserClassT extends CommonsManagedSecondClass<UserI, TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues, FirstClassI, FirstClassClassT> & CommonsManagedSecondClassUserModel<UserI, FirstClassI>, FirstClassI extends ICommonsFirstClass, FirstClassClassT extends CommonsFirstClass<FirstClassI, TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues>, SessionServiceT extends CommonsAdamantineManagedSecondClassUserSessionService<UserI, UserClassT, FirstClassI, FirstClassClassT>> extends CommonsRestUserPwHashSessionApi<RequestT, ResponseT, UserI, SessionServiceT> {
10
+ private model;
11
+ constructor(restServer: CommonsRestServer<RequestT, ResponseT>, model: UserClassT, sessionService: SessionServiceT);
12
+ private getFirstClass;
13
+ private autoRegister;
14
+ installUserModelAuthentication(authenticateQuery: string, encodeUser: (user: UserI) => TEncodedObject, buildAutoRegisterUser?: (username: string, firstClass: FirstClassI, data: Partial<UserI> & {
15
+ id?: never;
16
+ ordered?: never;
17
+ parent?: never;
18
+ }) => Partial<UserI> & {
19
+ id?: never;
20
+ ordered?: never;
21
+ parent?: never;
22
+ } | undefined): void;
23
+ }
@@ -0,0 +1,45 @@
1
+ import { commonsTypeHasProperty, commonsTypeAttemptNumber } from 'tscommons-esm-core';
2
+ import { CommonsRestUserPwHashSessionApi } from 'nodecommons-esm-rest';
3
+ export class CommonsRestAdamantineManagedSecondClassUserModelSessionApi extends CommonsRestUserPwHashSessionApi {
4
+ model;
5
+ constructor(restServer, model, sessionService) {
6
+ super(restServer, sessionService);
7
+ this.model = model;
8
+ }
9
+ async getFirstClass(req) {
10
+ const bodyRequestTypecast = req;
11
+ if (!commonsTypeHasProperty(bodyRequestTypecast.body, this.model.firstClassField))
12
+ return undefined;
13
+ const id = commonsTypeAttemptNumber(bodyRequestTypecast.body[this.model.firstClassField]);
14
+ if (!id)
15
+ return undefined;
16
+ const firstClass = this.model.firstClass;
17
+ return await firstClass.getById(id);
18
+ }
19
+ async autoRegister(username, firstClass, req, buildAutoRegisterUser) {
20
+ const bodyRequestTypecast = req;
21
+ const user = buildAutoRegisterUser(username, firstClass, bodyRequestTypecast.body);
22
+ if (!user)
23
+ return undefined;
24
+ return this.model.insertForFirstClass(firstClass, user);
25
+ }
26
+ installUserModelAuthentication(authenticateQuery, encodeUser, buildAutoRegisterUser) {
27
+ super.installAuthentication(authenticateQuery, async (// getUserByUsername
28
+ username, req) => {
29
+ const firstClass = await this.getFirstClass(req);
30
+ if (!firstClass)
31
+ return undefined;
32
+ return await this.model.getUserByUsername(firstClass, username);
33
+ }, buildAutoRegisterUser ? (async (// autoregister
34
+ username, req) => {
35
+ const firstClass = await this.getFirstClass(req);
36
+ if (!firstClass)
37
+ return undefined;
38
+ return this.autoRegister(username, firstClass, req, buildAutoRegisterUser);
39
+ })
40
+ : undefined);
41
+ super.getSessionHandler(authenticateQuery, async (req, _res) => encodeUser(req.session.data) // eslint-disable-line @typescript-eslint/require-await
42
+ );
43
+ }
44
+ }
45
+ //# sourceMappingURL=commons-rest-adamantine-managed-second-class-user-model-session.api.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commons-rest-adamantine-managed-second-class-user-model-session.api.mjs","sourceRoot":"","sources":["../../src/apis/commons-rest-adamantine-managed-second-class-user-model-session.api.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAkB,MAAM,oBAAoB,CAAC;AAOtG,OAAO,EAAE,+BAA+B,EAAiD,MAAM,sBAAsB,CAAC;AAGtH,MAAM,OAAgB,0DA4BpB,SAAQ,+BAKT;IAGU;IAFV,YACE,UAAkD,EAC1C,KAAiB,EACzB,cAA+B;QAEhC,KAAK,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAHzB,UAAK,GAAL,KAAK,CAAY;IAI3B,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,GAAa;QACxC,MAAM,mBAAmB,GAAoC,GAAiD,CAAC;QAE/G,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YAAE,OAAO,SAAS,CAAC;QACpG,MAAM,EAAE,GAAqB,wBAAwB,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QAE1B,MAAM,UAAU,GAAqB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAC3D,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,QAAgB,EAChB,UAAuB,EACvB,GAAa,EACb,qBAI+E;QAEhF,MAAM,mBAAmB,GAAoC,GAAiD,CAAC;QAE/G,MAAM,IAAI,GAA+E,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC,IAAwE,CAAC,CAAC;QACnO,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAEM,8BAA8B,CACnC,iBAAyB,EACzB,UAA2C,EAC3C,qBAI+E;QAEhF,KAAK,CAAC,qBAAqB,CACzB,iBAAiB,EACjB,KAAK,EAAG,oBAAoB;QAC1B,QAAgB,EAChB,GAAa,EACa,EAAE;YAC7B,MAAM,UAAU,GAA0B,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU;gBAAE,OAAO,SAAS,CAAC;YAElC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC,EACD,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAG,eAAe;QAC9C,QAAgB,EAChB,GAAa,EACa,EAAE;YAC7B,MAAM,UAAU,GAA0B,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU;gBAAE,OAAO,SAAS,CAAC;YAElC,OAAO,IAAI,CAAC,YAAY,CACtB,QAAQ,EACR,UAAU,EACV,GAAG,EACH,qBAAqB,CACtB,CAAC;QACH,CAAC,CAAC;YACD,CAAC,CAAC,SAAS,CACb,CAAC;QAEF,KAAK,CAAC,iBAAiB,CACrB,iBAAiB,EACjB,KAAK,EAAE,GAAsC,EAAE,IAAa,EAA2B,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,uDAAuD;SAC/K,CAAC;IACH,CAAC;CACD"}
@@ -0,0 +1,22 @@
1
+ import { ICommonsFirstClass } from 'tscommons-esm-models';
2
+ import { ECommonsAdamantineAccess } from 'tscommons-esm-models-adamantine';
3
+ import { TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues } from 'nodecommons-esm-database';
4
+ import { ICommonsStrictParamsRequest, TCommonsHttpResponse } from 'nodecommons-esm-http';
5
+ import { CommonsManagedSecondClass, CommonsManagedSecondClassUserModel } from 'nodecommons-esm-models-adamantine';
6
+ import { CommonsFirstClass } from 'nodecommons-esm-models';
7
+ import { CommonsRestUserPwHashSessionApi, CommonsRestServer, TCommonsSessionNoContentHandler, TCommonsSessionContentHandler } from 'nodecommons-esm-rest';
8
+ import { ICommonsAdamantineManagedSecondClassUserWithPwHash, CommonsAdamantineManagedSecondClassUserSessionService } from 'nodecommons-esm-security-adamantine';
9
+ export declare class CommonsRestAdamantineRequiredAccessApi<RequestT extends ICommonsStrictParamsRequest, ResponseT extends TCommonsHttpResponse, UserI extends ICommonsAdamantineManagedSecondClassUserWithPwHash<FirstClassI>, UserClassT extends CommonsManagedSecondClass<UserI, TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues, FirstClassI, FirstClassClassT> & CommonsManagedSecondClassUserModel<UserI, FirstClassI>, FirstClassI extends ICommonsFirstClass, FirstClassClassT extends CommonsFirstClass<FirstClassI, TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues>, SessionServiceT extends CommonsAdamantineManagedSecondClassUserSessionService<UserI, UserClassT, FirstClassI, FirstClassClassT>> extends CommonsRestUserPwHashSessionApi<RequestT, ResponseT, UserI, SessionServiceT> {
10
+ private parentModel;
11
+ private parentField;
12
+ constructor(restServer: CommonsRestServer<RequestT, ResponseT>, sessionService: SessionServiceT, parentModel: FirstClassClassT, parentField: string);
13
+ private getSessionParent;
14
+ private wrapAccessNoContentHandler;
15
+ private wrapAccessContentHandler;
16
+ protected getAccessHandler(query: string, required: ECommonsAdamantineAccess, handler: TCommonsSessionContentHandler<RequestT, ResponseT, UserI>): void;
17
+ protected postAccessHandler(query: string, required: ECommonsAdamantineAccess, handler: TCommonsSessionContentHandler<RequestT, ResponseT, UserI>): void;
18
+ protected patchAccessHandler(query: string, required: ECommonsAdamantineAccess, handler: TCommonsSessionContentHandler<RequestT, ResponseT, UserI>): void;
19
+ protected putAccessHandler(query: string, required: ECommonsAdamantineAccess, handler: TCommonsSessionContentHandler<RequestT, ResponseT, UserI>): void;
20
+ protected deleteAccessHandler(query: string, required: ECommonsAdamantineAccess, handler: TCommonsSessionContentHandler<RequestT, ResponseT, UserI>): void;
21
+ protected headAccessHandler(query: string, required: ECommonsAdamantineAccess, handler: TCommonsSessionNoContentHandler<RequestT, ResponseT, UserI>): void;
22
+ }
@@ -0,0 +1,58 @@
1
+ import { commonsTypeHasPropertyNumber } from 'tscommons-esm-core';
2
+ import { computeECommonsAdamantineAccess } from 'tscommons-esm-models-adamantine';
3
+ import { CommonsRestUserPwHashSessionApi, commonsRestApiError, commonsRestApiForbidden } from 'nodecommons-esm-rest';
4
+ export class CommonsRestAdamantineRequiredAccessApi extends CommonsRestUserPwHashSessionApi {
5
+ parentModel;
6
+ parentField;
7
+ constructor(restServer, sessionService, parentModel, parentField) {
8
+ super(restServer, sessionService);
9
+ this.parentModel = parentModel;
10
+ this.parentField = parentField;
11
+ }
12
+ async getSessionParent(req) {
13
+ if (!req.session || !req.session.data || !commonsTypeHasPropertyNumber(req.session.data, this.parentField))
14
+ return commonsRestApiError('Unable to derive namespace for session');
15
+ const parent = await this.parentModel.getById(req.session.data[this.parentField]);
16
+ if (!parent)
17
+ return commonsRestApiError('Unable to find parent for session');
18
+ return parent;
19
+ }
20
+ wrapAccessNoContentHandler(required, handler) {
21
+ return async (req, response) => {
22
+ if (!computeECommonsAdamantineAccess(req.session.data.access, required))
23
+ return commonsRestApiForbidden('Access denied to this method.');
24
+ req.session[this.parentField] = await this.getSessionParent(req);
25
+ return await handler(req, response);
26
+ };
27
+ }
28
+ wrapAccessContentHandler(required, handler) {
29
+ return async (req, response) => {
30
+ if (!computeECommonsAdamantineAccess(req.session.data.access, required))
31
+ return commonsRestApiForbidden('Access denied to this method.');
32
+ req.session[this.parentField] = await this.getSessionParent(req);
33
+ return await handler(req, response);
34
+ };
35
+ }
36
+ getAccessHandler(query, required, handler) {
37
+ super.getSessionHandler(query, this.wrapAccessContentHandler(required, handler));
38
+ }
39
+ // insert
40
+ postAccessHandler(query, required, handler) {
41
+ super.postSessionHandler(query, this.wrapAccessContentHandler(required, handler));
42
+ }
43
+ // update
44
+ patchAccessHandler(query, required, handler) {
45
+ super.patchSessionHandler(query, this.wrapAccessContentHandler(required, handler));
46
+ }
47
+ // upsert
48
+ putAccessHandler(query, required, handler) {
49
+ super.putSessionHandler(query, this.wrapAccessContentHandler(required, handler));
50
+ }
51
+ deleteAccessHandler(query, required, handler) {
52
+ super.deleteSessionHandler(query, this.wrapAccessContentHandler(required, handler));
53
+ }
54
+ headAccessHandler(query, required, handler) {
55
+ super.headSessionHandler(query, this.wrapAccessNoContentHandler(required, handler));
56
+ }
57
+ }
58
+ //# sourceMappingURL=commons-rest-adamantine-required-access.api.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commons-rest-adamantine-required-access.api.mjs","sourceRoot":"","sources":["../../src/apis/commons-rest-adamantine-required-access.api.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { ICommonsModel } from 'tscommons-esm-models';
2
+ import { ICommonsManagedModelField } from 'tscommons-esm-models-adamantine';
3
+ import { TCommonsDatabaseTypes } from 'nodecommons-esm-database';
4
+ import { TCommonsContentHandler } from 'nodecommons-esm-rest';
5
+ import { CommonsModelable } from 'nodecommons-esm-models';
6
+ import { ICommonsStrictParamsRequest, TCommonsHttpResponse } from 'nodecommons-esm-http';
7
+ export declare abstract class AdamantineModelApi<RequestT extends ICommonsStrictParamsRequest, ResponseT extends TCommonsHttpResponse, ModelI extends ICommonsModel, ModelClassT extends CommonsModelable<ModelI, TCommonsDatabaseTypes>> {
8
+ protected path: string;
9
+ protected model: ModelClassT;
10
+ constructor(path: string, model: ModelClassT);
11
+ protected getMetadataFields(fields: string[]): ICommonsManagedModelField[];
12
+ applyMetadata(_getHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void): void;
13
+ applyReadData(_getHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void): void;
14
+ protected attemptBuildData(fields: string[], data: Partial<ModelI> & {
15
+ id?: never;
16
+ ordered?: never;
17
+ parent?: never;
18
+ }, skipOmitted: boolean): Partial<ModelI> & {
19
+ id?: never;
20
+ ordered?: never;
21
+ parent?: never;
22
+ };
23
+ applyWriteData(_postHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, _putHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, _patchHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, _deleteHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void): void;
24
+ apply(getHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, postHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, putHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, patchHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, deleteHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void): void;
25
+ }
@@ -0,0 +1,152 @@
1
+ import { commonsTypeHasProperty, commonsTypeIsPrimative, commonsTypeIsStringArray, commonsTypeAttemptBoolean, commonsDateYmdHisToDate, commonsDateYmdToDate, commonsDateHisToDate, commonsTypeAttemptNumber, CommonsFixedDate } from 'tscommons-esm-core';
2
+ import { ECommonsAdamantineManagedModelFieldType } from 'tscommons-esm-models-adamantine';
3
+ import { CommonsDatabaseTypeDate, CommonsDatabaseTypeTime, CommonsDatabaseTypeDateTime, CommonsDatabaseTypeBoolean, CommonsDatabaseTypeEmail, CommonsDatabaseTypeEnum, CommonsDatabaseTypeFloat, CommonsDatabaseTypeHexRgb, CommonsDatabaseTypeInt, CommonsDatabaseTypeSmallInt, CommonsDatabaseTypeString, CommonsDatabaseTypeText, CommonsDatabaseTypeTinyInt, CommonsDatabaseTypeUrl, CommonsDatabaseTypeStringArray, ECommonsDatabaseTypeNull, CommonsDatabaseTypeFixedDate, CommonsDatabaseTypeFixedDateTime, CommonsDatabaseTypeFixedTime, InternalCommonsDatabaseTypeNumber } from 'nodecommons-esm-database';
4
+ import { commonsRestApiNotImplemented } from 'nodecommons-esm-rest';
5
+ function deriveType(s) {
6
+ if (s instanceof CommonsDatabaseTypeBoolean)
7
+ return ECommonsAdamantineManagedModelFieldType.BOOLEAN;
8
+ if (s instanceof CommonsDatabaseTypeDateTime)
9
+ return ECommonsAdamantineManagedModelFieldType.DATETIME;
10
+ if (s instanceof CommonsDatabaseTypeDate)
11
+ return ECommonsAdamantineManagedModelFieldType.DATE;
12
+ if (s instanceof CommonsDatabaseTypeFixedDate)
13
+ return ECommonsAdamantineManagedModelFieldType.FIXEDDATE;
14
+ if (s instanceof CommonsDatabaseTypeFixedDateTime)
15
+ return ECommonsAdamantineManagedModelFieldType.FIXEDDATETIME;
16
+ if (s instanceof CommonsDatabaseTypeFixedTime)
17
+ return ECommonsAdamantineManagedModelFieldType.FIXEDTIME;
18
+ if (s instanceof CommonsDatabaseTypeEmail)
19
+ return ECommonsAdamantineManagedModelFieldType.EMAIL;
20
+ if (s instanceof CommonsDatabaseTypeEnum)
21
+ return ECommonsAdamantineManagedModelFieldType.ENUM;
22
+ if (s instanceof CommonsDatabaseTypeFloat)
23
+ return ECommonsAdamantineManagedModelFieldType.FLOAT;
24
+ if (s instanceof CommonsDatabaseTypeHexRgb)
25
+ return ECommonsAdamantineManagedModelFieldType.HEXRGB;
26
+ if (s instanceof CommonsDatabaseTypeInt)
27
+ return ECommonsAdamantineManagedModelFieldType.INT;
28
+ if (s instanceof CommonsDatabaseTypeSmallInt)
29
+ return ECommonsAdamantineManagedModelFieldType.SMALLINT;
30
+ if (s instanceof CommonsDatabaseTypeText)
31
+ return ECommonsAdamantineManagedModelFieldType.TEXT;
32
+ if (s instanceof CommonsDatabaseTypeTime)
33
+ return ECommonsAdamantineManagedModelFieldType.TIME;
34
+ if (s instanceof CommonsDatabaseTypeTinyInt)
35
+ return ECommonsAdamantineManagedModelFieldType.TINYINT;
36
+ if (s instanceof CommonsDatabaseTypeUrl)
37
+ return ECommonsAdamantineManagedModelFieldType.URL;
38
+ if (s instanceof CommonsDatabaseTypeStringArray)
39
+ return ECommonsAdamantineManagedModelFieldType.STRINGARRAY;
40
+ // NB duration isn't currently supported
41
+ // this needs to go at the end, as custom ones like Email/URL/HexRgb are subclasses of string, so will be matched if it is checked first
42
+ if (s instanceof CommonsDatabaseTypeString)
43
+ return ECommonsAdamantineManagedModelFieldType.STRING;
44
+ return undefined;
45
+ }
46
+ export class AdamantineModelApi {
47
+ path;
48
+ model;
49
+ constructor(path, model) {
50
+ this.path = path;
51
+ this.model = model;
52
+ }
53
+ getMetadataFields(fields) {
54
+ const structure = this.model.structure;
55
+ const dataFields = [];
56
+ for (const field of fields) {
57
+ const dbType = structure[field];
58
+ if (!dbType)
59
+ throw new Error('Field does not exist in the database structure. This is likely an error');
60
+ const type = deriveType(dbType);
61
+ if (!type)
62
+ return commonsRestApiNotImplemented(`The field type of ${field} is not implemented as manageable`);
63
+ const dataField = {
64
+ name: field,
65
+ type: type,
66
+ optional: dbType.notNull !== ECommonsDatabaseTypeNull.NOT_NULL
67
+ };
68
+ // we don't support default values for things like Date/FixedDate
69
+ const defaultValue = dbType.defaultValue;
70
+ if (defaultValue !== undefined)
71
+ dataField.defaultValue = defaultValue;
72
+ if (type === ECommonsAdamantineManagedModelFieldType.ENUM) {
73
+ const typecast = dbType;
74
+ dataField.options = typecast.options;
75
+ }
76
+ if (type === ECommonsAdamantineManagedModelFieldType.HEXRGB) {
77
+ const typecast = dbType;
78
+ dataField.alpha = typecast.hasAlpha;
79
+ }
80
+ dataFields.push(dataField);
81
+ }
82
+ return dataFields;
83
+ }
84
+ applyMetadata(_getHandler) {
85
+ // to be overridden
86
+ }
87
+ applyReadData(_getHandler) {
88
+ // to be overridden
89
+ }
90
+ attemptBuildData(fields, data, skipOmitted) {
91
+ // No need to check if fields contains id, ordered etc. as it is supplied .managableFields
92
+ const rebuild = {};
93
+ const structure = this.model.structure;
94
+ for (const field of fields) {
95
+ if (skipOmitted && !commonsTypeHasProperty(data, field))
96
+ continue;
97
+ let value = data[field];
98
+ try {
99
+ if (value === undefined || value === null || value === '') {
100
+ value = undefined;
101
+ }
102
+ else {
103
+ if (!commonsTypeIsPrimative(value) && !commonsTypeIsStringArray(value))
104
+ throw new Error('Value is not a primative or string array.');
105
+ }
106
+ const type = structure[field];
107
+ if (value !== undefined) {
108
+ if (type instanceof CommonsDatabaseTypeBoolean) {
109
+ value = commonsTypeAttemptBoolean(value);
110
+ }
111
+ if (type instanceof CommonsDatabaseTypeFixedDateTime) {
112
+ value = CommonsFixedDate.fromYmdHis(value);
113
+ }
114
+ if (type instanceof CommonsDatabaseTypeFixedDate) {
115
+ value = CommonsFixedDate.fromYmd(value);
116
+ }
117
+ if (type instanceof CommonsDatabaseTypeFixedTime) {
118
+ value = CommonsFixedDate.fromHis(value);
119
+ }
120
+ if (type instanceof CommonsDatabaseTypeDateTime) {
121
+ value = commonsDateYmdHisToDate(value);
122
+ }
123
+ if (type instanceof CommonsDatabaseTypeDate) {
124
+ value = commonsDateYmdToDate(value);
125
+ }
126
+ if (type instanceof CommonsDatabaseTypeTime) {
127
+ value = commonsDateHisToDate(value);
128
+ }
129
+ if (type instanceof InternalCommonsDatabaseTypeNumber) {
130
+ value = commonsTypeAttemptNumber(value);
131
+ }
132
+ // FixedDuration is not supported at the moment
133
+ }
134
+ type.assertValue(value);
135
+ rebuild[field] = value;
136
+ }
137
+ catch (_e) {
138
+ throw new Error(`Invalid data for field ${field}`);
139
+ }
140
+ }
141
+ return rebuild;
142
+ }
143
+ applyWriteData(_postHandler, _putHandler, _patchHandler, _deleteHandler) {
144
+ // to be overridden
145
+ }
146
+ apply(getHandler, postHandler, putHandler, patchHandler, deleteHandler) {
147
+ this.applyMetadata(getHandler);
148
+ this.applyReadData(getHandler);
149
+ this.applyWriteData(postHandler, putHandler, patchHandler, deleteHandler);
150
+ }
151
+ }
152
+ //# sourceMappingURL=adamantine-model.api.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adamantine-model.api.mjs","sourceRoot":"","sources":["../../src/helpers/adamantine-model.api.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ICommonsFirstClass } from 'tscommons-esm-models';
2
+ import { ICommonsManaged } from 'tscommons-esm-models-adamantine';
3
+ import { TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues } from 'nodecommons-esm-database';
4
+ import { CommonsFirstClass } from 'nodecommons-esm-models';
5
+ export declare function internalGetModelItemByIdOnly<AorBI extends ICommonsFirstClass & ICommonsManaged, AorBClassT extends CommonsFirstClass<AorBI, TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues>>(id: number, model: AorBClassT): Promise<AorBI | undefined>;
@@ -0,0 +1,12 @@
1
+ import { CommonsSecondClass } from 'nodecommons-esm-models';
2
+ export async function internalGetModelItemByIdOnly(id, model) {
3
+ if (model instanceof CommonsSecondClass) {
4
+ // have to use getByIdOnly
5
+ const typecast = model;
6
+ return await typecast.getByIdOnly(id);
7
+ }
8
+ else {
9
+ return await model.getById(id);
10
+ }
11
+ }
12
+ //# sourceMappingURL=id-only.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-only.mjs","sourceRoot":"","sources":["../../src/helpers/id-only.mts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAShD,EAAU,EACV,KAAiB;IAElB,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACzC,0BAA0B;QAC1B,MAAM,QAAQ,GAYV,KAAK,CAAC;QAEV,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACP,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;AACF,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { TEncodedObject } from 'tscommons-esm-core';
2
+ import { ICommonsUniquelyIdentified } from 'tscommons-esm-models';
3
+ import { ICommonsManaged } from 'tscommons-esm-models-adamantine';
4
+ import { ICommonsStrictParamsRequest, TCommonsHttpResponse } from 'nodecommons-esm-http';
5
+ import { TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues } from 'nodecommons-esm-database';
6
+ import { CommonsManagedFirstClass } from 'nodecommons-esm-models-adamantine';
7
+ import { TCommonsContentHandler } from 'nodecommons-esm-rest';
8
+ import { ManagedModelApi } from './managed-model.api.mjs';
9
+ export declare class ManagedFirstClassApi<RequestT extends ICommonsStrictParamsRequest, ResponseT extends TCommonsHttpResponse, ModelI extends (ICommonsManaged | (ICommonsManaged & ICommonsUniquelyIdentified)), ModelClassT extends CommonsManagedFirstClass<ModelI, TCommonsDatabaseParams, TCommonsDatabaseTypes, TCommonsDatabaseDbValues>, EncodedT extends TEncodedObject> extends ManagedModelApi<RequestT, ResponseT, ModelI, ModelClassT> {
10
+ private encodeData;
11
+ private postCreateCallback?;
12
+ private postUpdateCallback?;
13
+ private postDeleteCallback?;
14
+ private preCreateCallback?;
15
+ private preUpdateCallback?;
16
+ private preDeleteCallback?;
17
+ private altCreateCallback?;
18
+ private altUpdateCallback?;
19
+ private altDeleteCallback?;
20
+ constructor(path: string, model: ModelClassT, encodeData: (m: ModelI) => EncodedT, postCreateCallback?: ((inserted: ModelI) => Promise<void>) | undefined, postUpdateCallback?: ((updated: ModelI) => Promise<void>) | undefined, postDeleteCallback?: ((existing: ModelI) => Promise<void>) | undefined, preCreateCallback?: ((inserting: Partial<ModelI> & {
21
+ id?: never;
22
+ ordered?: never;
23
+ parent?: never;
24
+ }) => Promise<void>) | undefined, preUpdateCallback?: ((updating: Partial<ModelI>) => Promise<void>) | undefined, preDeleteCallback?: ((existing: ModelI) => Promise<void>) | undefined, altCreateCallback?: ((insert: Partial<ModelI> & {
25
+ id?: never;
26
+ ordered?: never;
27
+ parent?: never;
28
+ }) => Promise<ModelI>) | undefined, altUpdateCallback?: ((update: ModelI) => Promise<void>) | undefined, altDeleteCallback?: ((existing: ModelI) => Promise<void>) | undefined);
29
+ applyReadData(getHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void): void;
30
+ private doUpdate;
31
+ applyWriteData(postHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, putHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, patchHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void, deleteHandler: (query: string, handler: TCommonsContentHandler<RequestT, ResponseT>) => void): void;
32
+ }