softkave-node-utils 0.1.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 (203) hide show
  1. package/README.md +3 -0
  2. package/build/src/contexts/SessionContext.d.ts +15 -0
  3. package/build/src/contexts/SessionContext.js +70 -0
  4. package/build/src/contexts/SessionContext.js.map +1 -0
  5. package/build/src/contexts/asyncLocalStorage.d.ts +27 -0
  6. package/build/src/contexts/asyncLocalStorage.js +115 -0
  7. package/build/src/contexts/asyncLocalStorage.js.map +1 -0
  8. package/build/src/contexts/config.d.ts +49 -0
  9. package/build/src/contexts/config.js +25 -0
  10. package/build/src/contexts/config.js.map +1 -0
  11. package/build/src/contexts/data/BaseMongoDataProvider.d.ts +21 -0
  12. package/build/src/contexts/data/BaseMongoDataProvider.js +157 -0
  13. package/build/src/contexts/data/BaseMongoDataProvider.js.map +1 -0
  14. package/build/src/contexts/data/MongoDataProviderUtils.d.ts +6 -0
  15. package/build/src/contexts/data/MongoDataProviderUtils.js +35 -0
  16. package/build/src/contexts/data/MongoDataProviderUtils.js.map +1 -0
  17. package/build/src/contexts/data/dataQueryToMongoQuery.d.ts +3 -0
  18. package/build/src/contexts/data/dataQueryToMongoQuery.js +85 -0
  19. package/build/src/contexts/data/dataQueryToMongoQuery.js.map +1 -0
  20. package/build/src/contexts/data/types.d.ts +114 -0
  21. package/build/src/contexts/data/types.js +15 -0
  22. package/build/src/contexts/data/types.js.map +1 -0
  23. package/build/src/contexts/data/utils.d.ts +2 -0
  24. package/build/src/contexts/data/utils.js +24 -0
  25. package/build/src/contexts/data/utils.js.map +1 -0
  26. package/build/src/contexts/email/SESEmailProviderContext.d.ts +9 -0
  27. package/build/src/contexts/email/SESEmailProviderContext.js +49 -0
  28. package/build/src/contexts/email/SESEmailProviderContext.js.map +1 -0
  29. package/build/src/contexts/email/types.d.ts +13 -0
  30. package/build/src/contexts/email/types.js +3 -0
  31. package/build/src/contexts/email/types.js.map +1 -0
  32. package/build/src/contexts/encryption/AWSSecretsManagerProvider.d.ts +12 -0
  33. package/build/src/contexts/encryption/AWSSecretsManagerProvider.js +51 -0
  34. package/build/src/contexts/encryption/AWSSecretsManagerProvider.js.map +1 -0
  35. package/build/src/contexts/encryption/MemorySecretsManagerProvider.d.ts +12 -0
  36. package/build/src/contexts/encryption/MemorySecretsManagerProvider.js +35 -0
  37. package/build/src/contexts/encryption/MemorySecretsManagerProvider.js.map +1 -0
  38. package/build/src/contexts/encryption/types.d.ts +29 -0
  39. package/build/src/contexts/encryption/types.js +3 -0
  40. package/build/src/contexts/encryption/types.js.map +1 -0
  41. package/build/src/contexts/globalUtils.d.ts +2 -0
  42. package/build/src/contexts/globalUtils.js +17 -0
  43. package/build/src/contexts/globalUtils.js.map +1 -0
  44. package/build/src/contexts/injection/injectables.d.ts +56 -0
  45. package/build/src/contexts/injection/injectables.js +26 -0
  46. package/build/src/contexts/injection/injectables.js.map +1 -0
  47. package/build/src/contexts/injection/keys.d.ts +22 -0
  48. package/build/src/contexts/injection/keys.js +33 -0
  49. package/build/src/contexts/injection/keys.js.map +1 -0
  50. package/build/src/contexts/injection/register.d.ts +33 -0
  51. package/build/src/contexts/injection/register.js +107 -0
  52. package/build/src/contexts/injection/register.js.map +1 -0
  53. package/build/src/contexts/logger/noop.d.ts +5 -0
  54. package/build/src/contexts/logger/noop.js +12 -0
  55. package/build/src/contexts/logger/noop.js.map +1 -0
  56. package/build/src/contexts/logger/types.d.ts +11 -0
  57. package/build/src/contexts/logger/types.js +8 -0
  58. package/build/src/contexts/logger/types.js.map +1 -0
  59. package/build/src/contexts/logger/utils.d.ts +2 -0
  60. package/build/src/contexts/logger/utils.js +15 -0
  61. package/build/src/contexts/logger/utils.js.map +1 -0
  62. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.d.ts +28 -0
  63. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js +115 -0
  64. package/build/src/contexts/semantic/DataSemanticDataAccessBaseProvider.js.map +1 -0
  65. package/build/src/contexts/semantic/types.d.ts +48 -0
  66. package/build/src/contexts/semantic/types.js +3 -0
  67. package/build/src/contexts/semantic/types.js.map +1 -0
  68. package/build/src/contexts/semantic/utils.d.ts +16 -0
  69. package/build/src/contexts/semantic/utils.js +68 -0
  70. package/build/src/contexts/semantic/utils.js.map +1 -0
  71. package/build/src/contexts/types.d.ts +6 -0
  72. package/build/src/contexts/types.js +3 -0
  73. package/build/src/contexts/types.js.map +1 -0
  74. package/build/src/definitions/agent.d.ts +10 -0
  75. package/build/src/definitions/agent.js +3 -0
  76. package/build/src/definitions/agent.js.map +1 -0
  77. package/build/src/definitions/resource.d.ts +17 -0
  78. package/build/src/definitions/resource.js +3 -0
  79. package/build/src/definitions/resource.js.map +1 -0
  80. package/build/src/definitions/resourceTypes.d.ts +10 -0
  81. package/build/src/definitions/resourceTypes.js +19 -0
  82. package/build/src/definitions/resourceTypes.js.map +1 -0
  83. package/build/src/definitions/token.d.ts +17 -0
  84. package/build/src/definitions/token.js +10 -0
  85. package/build/src/definitions/token.js.map +1 -0
  86. package/build/src/endpoints/RequestData.d.ts +20 -0
  87. package/build/src/endpoints/RequestData.js +52 -0
  88. package/build/src/endpoints/RequestData.js.map +1 -0
  89. package/build/src/endpoints/constants.d.ts +20 -0
  90. package/build/src/endpoints/constants.js +24 -0
  91. package/build/src/endpoints/constants.js.map +1 -0
  92. package/build/src/endpoints/endpoints.d.ts +7 -0
  93. package/build/src/endpoints/endpoints.js +33 -0
  94. package/build/src/endpoints/endpoints.js.map +1 -0
  95. package/build/src/endpoints/endpoints.mddoc.d.ts +62 -0
  96. package/build/src/endpoints/endpoints.mddoc.js +437 -0
  97. package/build/src/endpoints/endpoints.mddoc.js.map +1 -0
  98. package/build/src/endpoints/extractors.d.ts +9 -0
  99. package/build/src/endpoints/extractors.js +24 -0
  100. package/build/src/endpoints/extractors.js.map +1 -0
  101. package/build/src/endpoints/jobs/types.d.ts +6 -0
  102. package/build/src/endpoints/jobs/types.js +3 -0
  103. package/build/src/endpoints/jobs/types.js.map +1 -0
  104. package/build/src/endpoints/pagination.d.ts +3 -0
  105. package/build/src/endpoints/pagination.js +27 -0
  106. package/build/src/endpoints/pagination.js.map +1 -0
  107. package/build/src/endpoints/types.d.ts +68 -0
  108. package/build/src/endpoints/types.js +13 -0
  109. package/build/src/endpoints/types.js.map +1 -0
  110. package/build/src/endpoints/utils.d.ts +23 -0
  111. package/build/src/endpoints/utils.js +131 -0
  112. package/build/src/endpoints/utils.js.map +1 -0
  113. package/build/src/endpoints/validation.d.ts +47 -0
  114. package/build/src/endpoints/validation.js +73 -0
  115. package/build/src/endpoints/validation.js.map +1 -0
  116. package/build/src/errors/OperationError.d.ts +20 -0
  117. package/build/src/errors/OperationError.js +38 -0
  118. package/build/src/errors/OperationError.js.map +1 -0
  119. package/build/src/errors/commonErrors.d.ts +24 -0
  120. package/build/src/errors/commonErrors.js +72 -0
  121. package/build/src/errors/commonErrors.js.map +1 -0
  122. package/build/src/errors/endpointErrors.d.ts +31 -0
  123. package/build/src/errors/endpointErrors.js +83 -0
  124. package/build/src/errors/endpointErrors.js.map +1 -0
  125. package/build/src/errors/messages.d.ts +11 -0
  126. package/build/src/errors/messages.js +27 -0
  127. package/build/src/errors/messages.js.map +1 -0
  128. package/build/src/errors/reusableErrors.d.ts +12 -0
  129. package/build/src/errors/reusableErrors.js +25 -0
  130. package/build/src/errors/reusableErrors.js.map +1 -0
  131. package/build/src/errors/sessionErrors.d.ts +18 -0
  132. package/build/src/errors/sessionErrors.js +60 -0
  133. package/build/src/errors/sessionErrors.js.map +1 -0
  134. package/build/src/index.d.ts +0 -0
  135. package/build/src/index.js +2 -0
  136. package/build/src/index.js.map +1 -0
  137. package/build/src/mddoc/jsSdkCodeGen.d.ts +7 -0
  138. package/build/src/mddoc/jsSdkCodeGen.js +546 -0
  139. package/build/src/mddoc/jsSdkCodeGen.js.map +1 -0
  140. package/build/src/mddoc/mddoc.d.ts +206 -0
  141. package/build/src/mddoc/mddoc.js +142 -0
  142. package/build/src/mddoc/mddoc.js.map +1 -0
  143. package/build/src/mddoc/restApiEndpointsInfoGen.d.ts +10 -0
  144. package/build/src/mddoc/restApiEndpointsInfoGen.js +92 -0
  145. package/build/src/mddoc/restApiEndpointsInfoGen.js.map +1 -0
  146. package/build/src/mddoc/restApiTableOfContentGen.d.ts +2 -0
  147. package/build/src/mddoc/restApiTableOfContentGen.js +51 -0
  148. package/build/src/mddoc/restApiTableOfContentGen.js.map +1 -0
  149. package/build/src/mongodb/connection.d.ts +26 -0
  150. package/build/src/mongodb/connection.js +50 -0
  151. package/build/src/mongodb/connection.js.map +1 -0
  152. package/build/src/mongodb/constants.d.ts +4 -0
  153. package/build/src/mongodb/constants.js +7 -0
  154. package/build/src/mongodb/constants.js.map +1 -0
  155. package/build/src/mongodb/utils.d.ts +20 -0
  156. package/build/src/mongodb/utils.js +26 -0
  157. package/build/src/mongodb/utils.js.map +1 -0
  158. package/build/src/testUtils/context/email/MockTestEmailProviderContext.d.ts +6 -0
  159. package/build/src/testUtils/context/email/MockTestEmailProviderContext.js +10 -0
  160. package/build/src/testUtils/context/email/MockTestEmailProviderContext.js.map +1 -0
  161. package/build/src/testUtils/context/email/NoopEmailProviderContext.d.ts +6 -0
  162. package/build/src/testUtils/context/email/NoopEmailProviderContext.js +11 -0
  163. package/build/src/testUtils/context/email/NoopEmailProviderContext.js.map +1 -0
  164. package/build/src/testUtils/context/email/TestSESEmailProviderContext.d.ts +8 -0
  165. package/build/src/testUtils/context/email/TestSESEmailProviderContext.js +14 -0
  166. package/build/src/testUtils/context/email/TestSESEmailProviderContext.js.map +1 -0
  167. package/build/src/testUtils/context/types.d.ts +9 -0
  168. package/build/src/testUtils/context/types.js +3 -0
  169. package/build/src/testUtils/context/types.js.map +1 -0
  170. package/build/src/testUtils/generate/utils.d.ts +37 -0
  171. package/build/src/testUtils/generate/utils.js +79 -0
  172. package/build/src/testUtils/generate/utils.js.map +1 -0
  173. package/build/src/testUtils/helpers/assertion.d.ts +25 -0
  174. package/build/src/testUtils/helpers/assertion.js +63 -0
  175. package/build/src/testUtils/helpers/assertion.js.map +1 -0
  176. package/build/src/testUtils/helpers/binary.d.ts +4 -0
  177. package/build/src/testUtils/helpers/binary.js +19 -0
  178. package/build/src/testUtils/helpers/binary.js.map +1 -0
  179. package/build/src/testUtils/helpers/error.d.ts +3 -0
  180. package/build/src/testUtils/helpers/error.js +43 -0
  181. package/build/src/testUtils/helpers/error.js.map +1 -0
  182. package/build/src/testUtils/helpers/mock.d.ts +2 -0
  183. package/build/src/testUtils/helpers/mock.js +15 -0
  184. package/build/src/testUtils/helpers/mock.js.map +1 -0
  185. package/build/src/testUtils/helpers/mongodb.d.ts +3 -0
  186. package/build/src/testUtils/helpers/mongodb.js +17 -0
  187. package/build/src/testUtils/helpers/mongodb.js.map +1 -0
  188. package/build/src/testUtils/helpers/testFns.d.ts +30 -0
  189. package/build/src/testUtils/helpers/testFns.js +96 -0
  190. package/build/src/testUtils/helpers/testFns.js.map +1 -0
  191. package/build/src/testUtils/testUtils.d.ts +13 -0
  192. package/build/src/testUtils/testUtils.js +50 -0
  193. package/build/src/testUtils/testUtils.js.map +1 -0
  194. package/build/src/utils/assertion.d.ts +2 -0
  195. package/build/src/utils/assertion.js +31 -0
  196. package/build/src/utils/assertion.js.map +1 -0
  197. package/build/src/utils/aws.d.ts +5 -0
  198. package/build/src/utils/aws.js +3 -0
  199. package/build/src/utils/aws.js.map +1 -0
  200. package/build/src/utils/streamToBuffer.d.ts +4 -0
  201. package/build/src/utils/streamToBuffer.js +19 -0
  202. package/build/src/utils/streamToBuffer.js.map +1 -0
  203. package/package.json +72 -0
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerExpressRouteFromEndpoint = exports.endpointDecodeURIComponent = exports.withAssignedAgentList = exports.withAssignedAgent = exports.throwNotFound = exports.wrapEndpointREST = exports.prepareResponseError = exports.getPublicErrors = exports.extractExternalEndpointError = void 0;
7
+ const lodash_1 = require("lodash");
8
+ const softkave_js_utils_1 = require("softkave-js-utils");
9
+ const injectables_1 = require("../contexts/injection/injectables");
10
+ const commonErrors_1 = require("../errors/commonErrors");
11
+ const endpointErrors_1 = require("../errors/endpointErrors");
12
+ const RequestData_1 = __importDefault(require("./RequestData"));
13
+ const constants_1 = require("./constants");
14
+ function extractExternalEndpointError(errorItem) {
15
+ return {
16
+ name: errorItem.name,
17
+ message: errorItem.message,
18
+ action: errorItem.action,
19
+ field: errorItem.field,
20
+ notes: errorItem.notes,
21
+ };
22
+ }
23
+ exports.extractExternalEndpointError = extractExternalEndpointError;
24
+ function getPublicErrors(inputError) {
25
+ const errors = Array.isArray(inputError)
26
+ ? inputError
27
+ : [inputError];
28
+ // We are mapping errors cause some values don't show if we don't
29
+ // or was it errors, not sure anymore, this is old code.
30
+ // TODO: Feel free to look into it, cause it could help performance.
31
+ const preppedErrors = [];
32
+ errors.forEach(errorItem => (errorItem === null || errorItem === void 0 ? void 0 : errorItem.isPublicError) &&
33
+ preppedErrors.push(extractExternalEndpointError(errorItem)));
34
+ if (preppedErrors.length === 0) {
35
+ const serverError = new commonErrors_1.ServerError();
36
+ preppedErrors.push(extractExternalEndpointError(serverError));
37
+ }
38
+ return preppedErrors;
39
+ }
40
+ exports.getPublicErrors = getPublicErrors;
41
+ function prepareResponseError(error) {
42
+ injectables_1.kUtilsInjectables.logger().error(error);
43
+ let statusCode = constants_1.kEndpointConstants.httpStatusCode.serverError;
44
+ const errors = Array.isArray(error) ? error : [error];
45
+ const preppedErrors = getPublicErrors(errors);
46
+ if (errors.length > 0 && errors[0].statusCode) {
47
+ statusCode = errors[0].statusCode;
48
+ }
49
+ return { statusCode, preppedErrors };
50
+ }
51
+ exports.prepareResponseError = prepareResponseError;
52
+ const wrapEndpointREST = (endpoint, handleResponse, handleError, getData, cleanup) => {
53
+ return async (req, res) => {
54
+ await injectables_1.kUtilsInjectables.asyncLocalStorage().run(async () => {
55
+ try {
56
+ const data = await (getData ? getData(req) : req.body);
57
+ const instData = RequestData_1.default.fromExpressRequest(req, data);
58
+ const result = await endpoint(instData);
59
+ if (handleResponse) {
60
+ await handleResponse(res, result);
61
+ }
62
+ else {
63
+ res.status(constants_1.kEndpointConstants.httpStatusCode.ok).json(result !== null && result !== void 0 ? result : {});
64
+ }
65
+ }
66
+ catch (error) {
67
+ const { statusCode, preppedErrors } = prepareResponseError(error);
68
+ if (handleError) {
69
+ const deferHandling = handleError(res, preppedErrors, error);
70
+ if (deferHandling !== true) {
71
+ return;
72
+ }
73
+ }
74
+ const result = { errors: preppedErrors };
75
+ res.status(statusCode).json(result);
76
+ }
77
+ finally {
78
+ (0, softkave_js_utils_1.toCompactArray)(cleanup).forEach(fn => injectables_1.kUtilsInjectables.promises().forget(fn(req, res)));
79
+ }
80
+ });
81
+ };
82
+ };
83
+ exports.wrapEndpointREST = wrapEndpointREST;
84
+ function throwNotFound() {
85
+ throw new endpointErrors_1.NotFoundError();
86
+ }
87
+ exports.throwNotFound = throwNotFound;
88
+ function withAssignedAgent(agent, item) {
89
+ return {
90
+ ...item,
91
+ assignedAt: Date.now(),
92
+ assignedBy: {
93
+ agentId: agent.agentId,
94
+ agentType: agent.agentType,
95
+ agentTokenId: agent.agentTokenId,
96
+ },
97
+ };
98
+ }
99
+ exports.withAssignedAgent = withAssignedAgent;
100
+ function withAssignedAgentList(agent, items = []) {
101
+ return items.map(item => ({
102
+ ...item,
103
+ assignedAt: Date.now(),
104
+ assignedBy: {
105
+ agentId: agent.agentId,
106
+ agentType: agent.agentType,
107
+ agentTokenId: agent.agentTokenId,
108
+ },
109
+ }));
110
+ }
111
+ exports.withAssignedAgentList = withAssignedAgentList;
112
+ function endpointDecodeURIComponent(component) {
113
+ return component && (0, lodash_1.isString)(component)
114
+ ? decodeURIComponent(component)
115
+ : undefined;
116
+ }
117
+ exports.endpointDecodeURIComponent = endpointDecodeURIComponent;
118
+ function registerExpressRouteFromEndpoint(
119
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
120
+ endpoint, app) {
121
+ const p = endpoint.mddocHttpDefinition.assertGetBasePathname();
122
+ const expressPath = endpoint.mddocHttpDefinition.getPathParamaters()
123
+ ? `${p}*`
124
+ : p;
125
+ app[endpoint.mddocHttpDefinition.assertGetMethod()](expressPath, ...(0, lodash_1.compact)([
126
+ endpoint.expressRouteMiddleware,
127
+ (0, exports.wrapEndpointREST)(endpoint.fn, endpoint.handleResponse, endpoint.handleError, endpoint.getDataFromReq, endpoint.cleanup),
128
+ ]));
129
+ }
130
+ exports.registerExpressRouteFromEndpoint = registerExpressRouteFromEndpoint;
131
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/endpoints/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import Joi, { SchemaMap } from 'joi';
2
+ import { PaginationQuery } from './types';
3
+ export type JoiSchemaParts<T> = Required<SchemaMap<T>>;
4
+ export declare const endpointValidationSchemas: {
5
+ page: Joi.NumberSchema<number>;
6
+ pageSize: Joi.NumberSchema<number>;
7
+ paginationParts: Required<Joi.PartialSchemaMap<PaginationQuery>>;
8
+ op: (schema: Joi.Schema) => Joi.AlternativesSchema<any>;
9
+ comparisonOps: (schema: Joi.Schema) => {
10
+ $eq: Joi.Schema<any>;
11
+ $in: Joi.ArraySchema<any[]>;
12
+ $ne: Joi.Schema<any>;
13
+ $nin: Joi.ArraySchema<any[]>;
14
+ $exists: Joi.BooleanSchema<boolean>;
15
+ };
16
+ numberLiteralOps: (schema: Joi.Schema) => {
17
+ $gt: Joi.Schema<any>;
18
+ $gte: Joi.Schema<any>;
19
+ $lt: Joi.Schema<any>;
20
+ $lte: Joi.Schema<any>;
21
+ };
22
+ fullLiteralOps: (schema: Joi.Schema) => {
23
+ $gt: Joi.Schema<any>;
24
+ $gte: Joi.Schema<any>;
25
+ $lt: Joi.Schema<any>;
26
+ $lte: Joi.Schema<any>;
27
+ } & {
28
+ $eq: Joi.Schema<any>;
29
+ $in: Joi.ArraySchema<any[]>;
30
+ $ne: Joi.Schema<any>;
31
+ $nin: Joi.ArraySchema<any[]>;
32
+ $exists: Joi.BooleanSchema<boolean>;
33
+ };
34
+ objectOps: (schema: Joi.Schema) => {
35
+ $objMatch: Joi.Schema<any>;
36
+ };
37
+ arrayOps: (schema: Joi.Schema) => {
38
+ $size: Joi.NumberSchema<number>;
39
+ $all: Joi.ArraySchema<any[]>;
40
+ $elemMatch: Joi.ObjectSchema<any>;
41
+ };
42
+ comparisonOpsSchema: (schema: Joi.Schema) => Joi.ObjectSchema<any>;
43
+ numberLiteralOpsSchema: (schema: Joi.Schema) => Joi.ObjectSchema<any>;
44
+ fullLiteralOpsSchema: (schema: Joi.Schema) => Joi.ObjectSchema<any>;
45
+ objectOpsSchema: (schema: Joi.Schema) => Joi.ObjectSchema<any>;
46
+ arrayOpsSchema: (schema: Joi.Schema) => Joi.ObjectSchema<any>;
47
+ };
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.endpointValidationSchemas = void 0;
7
+ const joi_1 = __importDefault(require("joi"));
8
+ const softkave_js_utils_1 = require("softkave-js-utils");
9
+ const constants_1 = require("./constants");
10
+ const comparisonOps = (schema) => ({
11
+ $eq: schema,
12
+ $in: joi_1.default.array().items(schema).max(constants_1.kEndpointConstants.inputListMax),
13
+ $ne: schema,
14
+ $nin: joi_1.default.array().items(schema).max(constants_1.kEndpointConstants.inputListMax),
15
+ $exists: joi_1.default.boolean(),
16
+ // we do not export $regex op
17
+ });
18
+ const numberLiteralOps = (schema) => ({
19
+ $gt: schema,
20
+ $gte: schema,
21
+ $lt: schema,
22
+ $lte: schema,
23
+ });
24
+ const fullLiteralOps = (schema) => (0, softkave_js_utils_1.mergeObjects)(numberLiteralOps(schema), comparisonOps(schema), {
25
+ arrayUpdateStrategy: 'replace',
26
+ });
27
+ const objectOps = (schema) => ({
28
+ $objMatch: schema,
29
+ });
30
+ const comparisonOpsSchema = (schema) => joi_1.default.object(comparisonOps(schema)).unknown(false);
31
+ const numberLiteralOpsSchema = (schema) => joi_1.default.object(numberLiteralOps(schema)).unknown(false);
32
+ const fullLiteralOpsSchema = (schema) => joi_1.default.object(fullLiteralOps(schema)).unknown(false);
33
+ const objectOpsSchema = (schema) => joi_1.default.object(objectOps(schema)).unknown(false);
34
+ const arrayOps = (schema) => ({
35
+ $size: joi_1.default.number().integer(),
36
+ $all: joi_1.default.array().items(schema).max(constants_1.kEndpointConstants.inputListMax),
37
+ $elemMatch: schema.type === 'object'
38
+ ? objectOpsSchema(schema)
39
+ : schema.type === 'number'
40
+ ? fullLiteralOpsSchema(schema)
41
+ : comparisonOpsSchema(schema),
42
+ });
43
+ const arrayOpsSchema = (schema) => joi_1.default.object(arrayOps(schema)).unknown(false);
44
+ const op = (schema) => joi_1.default.alternatives().try(schema, schema.type === 'array'
45
+ ? arrayOpsSchema(schema)
46
+ : schema.type === 'object'
47
+ ? objectOpsSchema(schema)
48
+ : schema.type === 'number'
49
+ ? fullLiteralOpsSchema(schema)
50
+ : comparisonOpsSchema(schema));
51
+ const page = joi_1.default.number().integer();
52
+ const pageSize = joi_1.default.number().integer();
53
+ const paginationParts = {
54
+ page,
55
+ pageSize,
56
+ };
57
+ exports.endpointValidationSchemas = {
58
+ page,
59
+ pageSize,
60
+ paginationParts,
61
+ op,
62
+ comparisonOps,
63
+ numberLiteralOps,
64
+ fullLiteralOps,
65
+ objectOps,
66
+ arrayOps,
67
+ comparisonOpsSchema,
68
+ numberLiteralOpsSchema,
69
+ fullLiteralOpsSchema,
70
+ objectOpsSchema,
71
+ arrayOpsSchema,
72
+ };
73
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/endpoints/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { EndpointResultNote } from '../endpoints/types';
2
+ export interface OperationErrorParameters {
3
+ message?: string;
4
+ field?: string;
5
+ action?: string;
6
+ value?: unknown;
7
+ }
8
+ export default class OperationError extends Error {
9
+ message: string;
10
+ field?: string;
11
+ action?: string;
12
+ value?: string;
13
+ statusCode?: number;
14
+ isPublicError: boolean;
15
+ notes?: EndpointResultNote[];
16
+ constructor(props?: OperationErrorParameters | string);
17
+ }
18
+ export type FimidaraExternalError = Pick<OperationError, 'name' | 'message' | 'action' | 'field' | 'notes'>;
19
+ export declare function getErrorMessageFromParams(props?: OperationErrorParameters | string, defaultMessage?: string): string;
20
+ export declare function isOperationError(error: unknown): error is OperationError;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isOperationError = exports.getErrorMessageFromParams = void 0;
4
+ const lodash_1 = require("lodash");
5
+ class OperationError extends Error {
6
+ constructor(props) {
7
+ super();
8
+ this.message = 'An error occurred';
9
+ this.isPublicError = true;
10
+ if ((0, lodash_1.isObject)(props)) {
11
+ this.field = props.field;
12
+ this.action = props.action;
13
+ if (props.value)
14
+ this.value = JSON.stringify(props.value);
15
+ if (props.message)
16
+ this.message = props.message;
17
+ }
18
+ else if (props) {
19
+ this.message = props;
20
+ }
21
+ }
22
+ }
23
+ exports.default = OperationError;
24
+ function getErrorMessageFromParams(props, defaultMessage = '') {
25
+ if ((0, lodash_1.isString)(props)) {
26
+ return props;
27
+ }
28
+ else if (props === null || props === void 0 ? void 0 : props.message) {
29
+ return props.message;
30
+ }
31
+ return defaultMessage;
32
+ }
33
+ exports.getErrorMessageFromParams = getErrorMessageFromParams;
34
+ function isOperationError(error) {
35
+ return !!(error === null || error === void 0 ? void 0 : error.message);
36
+ }
37
+ exports.isOperationError = isOperationError;
38
+ //# sourceMappingURL=OperationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OperationError.js","sourceRoot":"","sources":["../../../src/errors/OperationError.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAU1C,MAAqB,cAAe,SAAQ,KAAK;IAU/C,YAAY,KAAyC;QACnD,KAAK,EAAE,CAAC;QAVV,YAAO,GAAG,mBAAmB,CAAC;QAM9B,kBAAa,GAAG,IAAI,CAAC;QAMnB,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAE3B,IAAI,KAAK,CAAC,KAAK;gBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,KAAK,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;SACjD;aAAM,IAAI,KAAK,EAAE;YAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;IACH,CAAC;CACF;AAvBD,iCAuBC;AAOD,SAAgB,yBAAyB,CACvC,KAAyC,EACzC,cAAc,GAAG,EAAE;IAEnB,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;QACnB,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE;QACzB,OAAO,KAAK,CAAC,OAAO,CAAC;KACtB;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAXD,8DAWC;AAED,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,OAAO,CAAC,CAAC,CAAC,KAA2B,aAA3B,KAAK,uBAAL,KAAK,CAAwB,OAAO,CAAA,CAAC;AACjD,CAAC;AAFD,4CAEC"}
@@ -0,0 +1,24 @@
1
+ import OperationError, { OperationErrorParameters } from './OperationError';
2
+ export declare class ServerError extends OperationError {
3
+ name: string;
4
+ statusCode: 500;
5
+ constructor(props?: OperationErrorParameters | string);
6
+ }
7
+ export declare class TimeoutError extends OperationError {
8
+ name: string;
9
+ statusCode: 500;
10
+ constructor(props?: OperationErrorParameters | string);
11
+ }
12
+ export declare class ValidationError extends OperationError {
13
+ name: string;
14
+ statusCode: 400;
15
+ }
16
+ export declare class ServerStateConflictError extends OperationError {
17
+ name: string;
18
+ statusCode: 409;
19
+ }
20
+ export declare class InternalError extends OperationError {
21
+ name: string;
22
+ isPublicError: boolean;
23
+ statusCode: 500;
24
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.InternalError = exports.ServerStateConflictError = exports.ValidationError = exports.TimeoutError = exports.ServerError = void 0;
27
+ const constants_1 = require("../endpoints/constants");
28
+ const OperationError_1 = __importStar(require("./OperationError"));
29
+ class ServerError extends OperationError_1.default {
30
+ constructor(props) {
31
+ super(props);
32
+ this.name = 'ServerError';
33
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.serverError;
34
+ this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Server error');
35
+ }
36
+ }
37
+ exports.ServerError = ServerError;
38
+ class TimeoutError extends OperationError_1.default {
39
+ constructor(props) {
40
+ super(props);
41
+ this.name = 'TimeoutError';
42
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.serverError;
43
+ this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Request timed out');
44
+ }
45
+ }
46
+ exports.TimeoutError = TimeoutError;
47
+ class ValidationError extends OperationError_1.default {
48
+ constructor() {
49
+ super(...arguments);
50
+ this.name = 'ValidationError';
51
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.badRequest;
52
+ }
53
+ }
54
+ exports.ValidationError = ValidationError;
55
+ class ServerStateConflictError extends OperationError_1.default {
56
+ constructor() {
57
+ super(...arguments);
58
+ this.name = 'ServerStateConflictError';
59
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.conflict;
60
+ }
61
+ }
62
+ exports.ServerStateConflictError = ServerStateConflictError;
63
+ class InternalError extends OperationError_1.default {
64
+ constructor() {
65
+ super(...arguments);
66
+ this.name = 'InternalError';
67
+ this.isPublicError = false;
68
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.serverError;
69
+ }
70
+ }
71
+ exports.InternalError = InternalError;
72
+ //# sourceMappingURL=commonErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commonErrors.js","sourceRoot":"","sources":["../../../src/errors/commonErrors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA0D;AAC1D,mEAG0B;AAE1B,MAAa,WAAY,SAAQ,wBAAc;IAI7C,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,aAAa,CAAC;QACrB,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,WAAW,CAAC;QAIzD,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAClE,CAAC;CACF;AARD,kCAQC;AAED,MAAa,YAAa,SAAQ,wBAAc;IAI9C,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,cAAc,CAAC;QACtB,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,WAAW,CAAC;QAIzD,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACvE,CAAC;CACF;AARD,oCAQC;AAED,MAAa,eAAgB,SAAQ,wBAAc;IAAnD;;QACE,SAAI,GAAG,iBAAiB,CAAC;QACzB,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,UAAU,CAAC;IAC5D,CAAC;CAAA;AAHD,0CAGC;AAED,MAAa,wBAAyB,SAAQ,wBAAc;IAA5D;;QACE,SAAI,GAAG,0BAA0B,CAAC;QAClC,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC;IAC1D,CAAC;CAAA;AAHD,4DAGC;AAED,MAAa,aAAc,SAAQ,wBAAc;IAAjD;;QACE,SAAI,GAAG,eAAe,CAAC;QACvB,kBAAa,GAAG,KAAK,CAAC;QACtB,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,WAAW,CAAC;IAC7D,CAAC;CAAA;AAJD,sCAIC"}
@@ -0,0 +1,31 @@
1
+ import OperationError, { OperationErrorParameters } from './OperationError';
2
+ export declare class InvalidRequestError extends OperationError {
3
+ name: string;
4
+ statusCode: 400;
5
+ constructor(props?: OperationErrorParameters | string);
6
+ }
7
+ export declare class InvalidStateError extends OperationError {
8
+ name: string;
9
+ statusCode: 409;
10
+ constructor(props?: OperationErrorParameters | string);
11
+ }
12
+ export declare class RateLimitError extends OperationError {
13
+ name: string;
14
+ statusCode: 429;
15
+ constructor(props?: OperationErrorParameters | string);
16
+ }
17
+ export declare class ExpiredError extends OperationError {
18
+ name: string;
19
+ statusCode: 403;
20
+ constructor(props?: OperationErrorParameters | string);
21
+ }
22
+ export declare class NotFoundError extends OperationError {
23
+ name: string;
24
+ statusCode: 404;
25
+ constructor(props?: OperationErrorParameters | string);
26
+ }
27
+ export declare class ResourceExistsError extends OperationError {
28
+ name: string;
29
+ statusCode: 409;
30
+ constructor(props?: OperationErrorParameters | string);
31
+ }
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ResourceExistsError = exports.NotFoundError = exports.ExpiredError = exports.RateLimitError = exports.InvalidStateError = exports.InvalidRequestError = void 0;
27
+ const constants_1 = require("../endpoints/constants");
28
+ const OperationError_1 = __importStar(require("./OperationError"));
29
+ class InvalidRequestError extends OperationError_1.default {
30
+ constructor(props) {
31
+ super(props);
32
+ this.name = 'InvalidRequestError';
33
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.badRequest;
34
+ this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Request is invalid');
35
+ }
36
+ }
37
+ exports.InvalidRequestError = InvalidRequestError;
38
+ class InvalidStateError extends OperationError_1.default {
39
+ constructor(props) {
40
+ super(props);
41
+ this.name = 'InvalidStateError';
42
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.conflict;
43
+ this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'A resource involved in processing the request is in an invalid state');
44
+ }
45
+ }
46
+ exports.InvalidStateError = InvalidStateError;
47
+ class RateLimitError extends OperationError_1.default {
48
+ constructor(props) {
49
+ super(props);
50
+ this.name = 'RateLimitError';
51
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.tooManyRequests;
52
+ this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Rate limit in progress, please try again later');
53
+ }
54
+ }
55
+ exports.RateLimitError = RateLimitError;
56
+ class ExpiredError extends OperationError_1.default {
57
+ constructor(props) {
58
+ super(props);
59
+ this.name = 'ExpiredError';
60
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.forbidden;
61
+ this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Resource has expired');
62
+ }
63
+ }
64
+ exports.ExpiredError = ExpiredError;
65
+ class NotFoundError extends OperationError_1.default {
66
+ constructor(props) {
67
+ super(props);
68
+ this.name = 'NotFoundError';
69
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.notFound;
70
+ this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Resource not found');
71
+ }
72
+ }
73
+ exports.NotFoundError = NotFoundError;
74
+ class ResourceExistsError extends OperationError_1.default {
75
+ constructor(props) {
76
+ super(props);
77
+ this.name = 'ResourceExistsError';
78
+ this.statusCode = constants_1.kEndpointConstants.httpStatusCode.conflict;
79
+ this.message = (0, OperationError_1.getErrorMessageFromParams)(props, 'Resource exist');
80
+ }
81
+ }
82
+ exports.ResourceExistsError = ResourceExistsError;
83
+ //# sourceMappingURL=endpointErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpointErrors.js","sourceRoot":"","sources":["../../../src/errors/endpointErrors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAA0D;AAC1D,mEAG0B;AAE1B,MAAa,mBAAoB,SAAQ,wBAAc;IAIrD,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,qBAAqB,CAAC;QAC7B,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,UAAU,CAAC;QAIxD,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACxE,CAAC;CACF;AARD,kDAQC;AAED,MAAa,iBAAkB,SAAQ,wBAAc;IAInD,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,mBAAmB,CAAC;QAC3B,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC;QAItD,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EACtC,KAAK,EACL,sEAAsE,CACvE,CAAC;IACJ,CAAC;CACF;AAXD,8CAWC;AAED,MAAa,cAAe,SAAQ,wBAAc;IAIhD,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,gBAAgB,CAAC;QACxB,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,eAAe,CAAC;QAI7D,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EACtC,KAAK,EACL,gDAAgD,CACjD,CAAC;IACJ,CAAC;CACF;AAXD,wCAWC;AAED,MAAa,YAAa,SAAQ,wBAAc;IAI9C,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,cAAc,CAAC;QACtB,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,SAAS,CAAC;QAIvD,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IAC1E,CAAC;CACF;AARD,oCAQC;AAED,MAAa,aAAc,SAAQ,wBAAc;IAI/C,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,eAAe,CAAC;QACvB,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC;QAItD,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACxE,CAAC;CACF;AARD,sCAQC;AAED,MAAa,mBAAoB,SAAQ,wBAAc;IAIrD,YAAY,KAAyC;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAJf,SAAI,GAAG,qBAAqB,CAAC;QAC7B,eAAU,GAAG,8BAAkB,CAAC,cAAc,CAAC,QAAQ,CAAC;QAItD,IAAI,CAAC,OAAO,GAAG,IAAA,0CAAyB,EAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACpE,CAAC;CACF;AARD,kDAQC"}
@@ -0,0 +1,11 @@
1
+ export declare const kAppMessages: {
2
+ token: {
3
+ invalidCredentials: string;
4
+ };
5
+ common: {
6
+ notFound(id?: string): string;
7
+ permissionDenied(id?: string): string;
8
+ notImplementedYet(fnName?: string): string;
9
+ invalidState(state?: string): string;
10
+ };
11
+ };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kAppMessages = void 0;
4
+ exports.kAppMessages = {
5
+ token: {
6
+ invalidCredentials: 'Invalid credentials',
7
+ },
8
+ common: {
9
+ notFound(id) {
10
+ return id ? `Resource with ID ${id} not found` : 'Resource not found';
11
+ },
12
+ permissionDenied(id) {
13
+ return id
14
+ ? `Permission denied for resource with ID ${id}`
15
+ : 'Permission denied';
16
+ },
17
+ notImplementedYet(fnName) {
18
+ return fnName ? `${fnName} not implemented yet` : 'Not implemented yet';
19
+ },
20
+ invalidState(state) {
21
+ return state
22
+ ? `Program is in an invalid state:\n ${state}`
23
+ : 'Program is in an invalid state';
24
+ },
25
+ },
26
+ };
27
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/errors/messages.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC1B,KAAK,EAAE;QACL,kBAAkB,EAAE,qBAAqB;KAC1C;IACD,MAAM,EAAE;QACN,QAAQ,CAAC,EAAW;YAClB,OAAO,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACxE,CAAC;QACD,gBAAgB,CAAC,EAAW;YAC1B,OAAO,EAAE;gBACP,CAAC,CAAC,0CAA0C,EAAE,EAAE;gBAChD,CAAC,CAAC,mBAAmB,CAAC;QAC1B,CAAC;QACD,iBAAiB,CAAC,MAAe;YAC/B,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC1E,CAAC;QACD,YAAY,CAAC,KAAc;YACzB,OAAO,KAAK;gBACV,CAAC,CAAC,qCAAqC,KAAK,EAAE;gBAC9C,CAAC,CAAC,gCAAgC,CAAC;QACvC,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { NotFoundError } from './endpointErrors';
2
+ import { InvalidCredentialsError } from './sessionErrors';
3
+ export declare const kReuseableErrors: {
4
+ credentials: {
5
+ invalidCredentials(): InvalidCredentialsError;
6
+ };
7
+ common: {
8
+ notImplemented(): Error;
9
+ notFound(id?: string): NotFoundError;
10
+ invalidState(state?: string): Error;
11
+ };
12
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kReuseableErrors = void 0;
4
+ const endpointErrors_1 = require("./endpointErrors");
5
+ const messages_1 = require("./messages");
6
+ const sessionErrors_1 = require("./sessionErrors");
7
+ exports.kReuseableErrors = {
8
+ credentials: {
9
+ invalidCredentials() {
10
+ return new sessionErrors_1.InvalidCredentialsError();
11
+ },
12
+ },
13
+ common: {
14
+ notImplemented() {
15
+ return new Error(messages_1.kAppMessages.common.notImplementedYet());
16
+ },
17
+ notFound(id) {
18
+ return new endpointErrors_1.NotFoundError(messages_1.kAppMessages.common.notFound(id));
19
+ },
20
+ invalidState(state) {
21
+ return new Error(messages_1.kAppMessages.common.invalidState(state));
22
+ },
23
+ },
24
+ };
25
+ //# sourceMappingURL=reusableErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reusableErrors.js","sourceRoot":"","sources":["../../../src/errors/reusableErrors.ts"],"names":[],"mappings":";;;AAAA,qDAA+C;AAC/C,yCAAwC;AACxC,mDAAwD;AAE3C,QAAA,gBAAgB,GAAG;IAC9B,WAAW,EAAE;QACX,kBAAkB;YAChB,OAAO,IAAI,uCAAuB,EAAE,CAAC;QACvC,CAAC;KACF;IACD,MAAM,EAAE;QACN,cAAc;YACZ,OAAO,IAAI,KAAK,CAAC,uBAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,QAAQ,CAAC,EAAW;YAClB,OAAO,IAAI,8BAAa,CAAC,uBAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,YAAY,CAAC,KAAc;YACzB,OAAO,IAAI,KAAK,CAAC,uBAAY,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,CAAC;KACF;CACF,CAAC"}