@lilaquadrat/studio 2.2.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 (238) hide show
  1. package/lib/helpers.d.ts +3 -0
  2. package/lib/helpers.js +11 -0
  3. package/lib/helpers.js.map +1 -0
  4. package/lib/interfaces.d.ts +33 -0
  5. package/lib/interfaces.js +13 -0
  6. package/lib/interfaces.js.map +1 -0
  7. package/lib/main.d.ts +15 -0
  8. package/lib/main.js +56 -0
  9. package/lib/main.js.map +1 -0
  10. package/lib/models.d.ts +13 -0
  11. package/lib/models.js +31 -0
  12. package/lib/models.js.map +1 -0
  13. package/lib/services.d.ts +9 -0
  14. package/lib/services.js +23 -0
  15. package/lib/services.js.map +1 -0
  16. package/lib/src/AzureBlobStorage.share.d.ts +17 -0
  17. package/lib/src/AzureBlobStorage.share.js +157 -0
  18. package/lib/src/AzureBlobStorage.share.js.map +1 -0
  19. package/lib/src/AzureFileStorage.share.d.ts +16 -0
  20. package/lib/src/AzureFileStorage.share.js +131 -0
  21. package/lib/src/AzureFileStorage.share.js.map +1 -0
  22. package/lib/src/Filesystem.share.d.ts +16 -0
  23. package/lib/src/Filesystem.share.js +87 -0
  24. package/lib/src/Filesystem.share.js.map +1 -0
  25. package/lib/src/Immutable.class.d.ts +45 -0
  26. package/lib/src/Immutable.class.js +164 -0
  27. package/lib/src/Immutable.class.js.map +1 -0
  28. package/lib/src/Mock.share.d.ts +15 -0
  29. package/lib/src/Mock.share.js +36 -0
  30. package/lib/src/Mock.share.js.map +1 -0
  31. package/lib/src/ShareClientFactory.class.d.ts +14 -0
  32. package/lib/src/ShareClientFactory.class.js +37 -0
  33. package/lib/src/ShareClientFactory.class.js.map +1 -0
  34. package/lib/src/aggegations/childData.aggregation.d.ts +194 -0
  35. package/lib/src/aggegations/childData.aggregation.js +102 -0
  36. package/lib/src/aggegations/childData.aggregation.js.map +1 -0
  37. package/lib/src/aggegations/partial.aggregation.d.ts +88 -0
  38. package/lib/src/aggegations/partial.aggregation.js +68 -0
  39. package/lib/src/aggegations/partial.aggregation.js.map +1 -0
  40. package/lib/src/aggegations/publishData.aggregation.d.ts +89 -0
  41. package/lib/src/aggegations/publishData.aggregation.js +79 -0
  42. package/lib/src/aggegations/publishData.aggregation.js.map +1 -0
  43. package/lib/src/aggegations/resultData.aggregation.d.ts +151 -0
  44. package/lib/src/aggegations/resultData.aggregation.js +124 -0
  45. package/lib/src/aggegations/resultData.aggregation.js.map +1 -0
  46. package/lib/src/classes/ControllerBase.class.d.ts +108 -0
  47. package/lib/src/classes/ControllerBase.class.js +280 -0
  48. package/lib/src/classes/ControllerBase.class.js.map +1 -0
  49. package/lib/src/classes/errors/History.error.d.ts +5 -0
  50. package/lib/src/classes/errors/History.error.js +11 -0
  51. package/lib/src/classes/errors/History.error.js.map +1 -0
  52. package/lib/src/classes/errors/Immutable.error.d.ts +5 -0
  53. package/lib/src/classes/errors/Immutable.error.js +11 -0
  54. package/lib/src/classes/errors/Immutable.error.js.map +1 -0
  55. package/lib/src/classes/models.class.d.ts +14 -0
  56. package/lib/src/classes/models.class.js +44 -0
  57. package/lib/src/classes/models.class.js.map +1 -0
  58. package/lib/src/classes/modelv2.class.d.ts +62 -0
  59. package/lib/src/classes/modelv2.class.js +136 -0
  60. package/lib/src/classes/modelv2.class.js.map +1 -0
  61. package/lib/src/classes/mongo.class.d.ts +22 -0
  62. package/lib/src/classes/mongo.class.js +80 -0
  63. package/lib/src/classes/mongo.class.js.map +1 -0
  64. package/lib/src/conf.class.d.ts +36 -0
  65. package/lib/src/conf.class.js +122 -0
  66. package/lib/src/conf.class.js.map +1 -0
  67. package/lib/src/docker-compose.class.d.ts +14 -0
  68. package/lib/src/docker-compose.class.js +87 -0
  69. package/lib/src/docker-compose.class.js.map +1 -0
  70. package/lib/src/domain.class.d.ts +25 -0
  71. package/lib/src/domain.class.js +98 -0
  72. package/lib/src/domain.class.js.map +1 -0
  73. package/lib/src/filterMergeModules.d.ts +3 -0
  74. package/lib/src/filterMergeModules.js +30 -0
  75. package/lib/src/filterMergeModules.js.map +1 -0
  76. package/lib/src/frontend/main.d.ts +2 -0
  77. package/lib/src/frontend/main.js +9 -0
  78. package/lib/src/frontend/main.js.map +1 -0
  79. package/lib/src/functions/respondCode.d.ts +3 -0
  80. package/lib/src/functions/respondCode.js +5 -0
  81. package/lib/src/functions/respondCode.js.map +1 -0
  82. package/lib/src/helpers/cleanObject.d.ts +5 -0
  83. package/lib/src/helpers/cleanObject.js +9 -0
  84. package/lib/src/helpers/cleanObject.js.map +1 -0
  85. package/lib/src/helpers/companyRights.d.ts +2 -0
  86. package/lib/src/helpers/companyRights.js +20 -0
  87. package/lib/src/helpers/companyRights.js.map +1 -0
  88. package/lib/src/helpers/hardCopy.d.ts +2 -0
  89. package/lib/src/helpers/hardCopy.js +5 -0
  90. package/lib/src/helpers/hardCopy.js.map +1 -0
  91. package/lib/src/helpers/helpers.export.d.ts +0 -0
  92. package/lib/src/helpers/helpers.export.js +1 -0
  93. package/lib/src/helpers/helpers.export.js.map +1 -0
  94. package/lib/src/interfaces/Action.interface.d.ts +1 -0
  95. package/lib/src/interfaces/Action.interface.js +3 -0
  96. package/lib/src/interfaces/Action.interface.js.map +1 -0
  97. package/lib/src/interfaces/AppPermissions.d.ts +7 -0
  98. package/lib/src/interfaces/AppPermissions.js +3 -0
  99. package/lib/src/interfaces/AppPermissions.js.map +1 -0
  100. package/lib/src/interfaces/BasicData.interface.d.ts +16 -0
  101. package/lib/src/interfaces/BasicData.interface.js +3 -0
  102. package/lib/src/interfaces/BasicData.interface.js.map +1 -0
  103. package/lib/src/interfaces/CallResponse.interface.d.ts +5 -0
  104. package/lib/src/interfaces/CallResponse.interface.js +3 -0
  105. package/lib/src/interfaces/CallResponse.interface.js.map +1 -0
  106. package/lib/src/interfaces/Contract.interface.d.ts +7 -0
  107. package/lib/src/interfaces/Contract.interface.js +3 -0
  108. package/lib/src/interfaces/Contract.interface.js.map +1 -0
  109. package/lib/src/interfaces/CreateResult.interface.d.ts +5 -0
  110. package/lib/src/interfaces/CreateResult.interface.js +3 -0
  111. package/lib/src/interfaces/CreateResult.interface.js.map +1 -0
  112. package/lib/src/interfaces/DataObject.interface.d.ts +11 -0
  113. package/lib/src/interfaces/DataObject.interface.js +3 -0
  114. package/lib/src/interfaces/DataObject.interface.js.map +1 -0
  115. package/lib/src/interfaces/DatabaseQuery.interface.d.ts +3 -0
  116. package/lib/src/interfaces/DatabaseQuery.interface.js +3 -0
  117. package/lib/src/interfaces/DatabaseQuery.interface.js.map +1 -0
  118. package/lib/src/interfaces/DatabaseQueryOptions.interface.d.ts +31 -0
  119. package/lib/src/interfaces/DatabaseQueryOptions.interface.js +3 -0
  120. package/lib/src/interfaces/DatabaseQueryOptions.interface.js.map +1 -0
  121. package/lib/src/interfaces/DatabaseQuerySites.interface.d.ts +11 -0
  122. package/lib/src/interfaces/DatabaseQuerySites.interface.js +3 -0
  123. package/lib/src/interfaces/DatabaseQuerySites.interface.js.map +1 -0
  124. package/lib/src/interfaces/DomainConf.interface.d.ts +10 -0
  125. package/lib/src/interfaces/DomainConf.interface.js +3 -0
  126. package/lib/src/interfaces/DomainConf.interface.js.map +1 -0
  127. package/lib/src/interfaces/EditorLegacy.interface.d.ts +5 -0
  128. package/lib/src/interfaces/EditorLegacy.interface.js +3 -0
  129. package/lib/src/interfaces/EditorLegacy.interface.js.map +1 -0
  130. package/lib/src/interfaces/HistoryReason.interface copy.d.ts +1 -0
  131. package/lib/src/interfaces/HistoryReason.interface copy.js +3 -0
  132. package/lib/src/interfaces/HistoryReason.interface copy.js.map +1 -0
  133. package/lib/src/interfaces/HistoryReason.interface.d.ts +1 -0
  134. package/lib/src/interfaces/HistoryReason.interface.js +3 -0
  135. package/lib/src/interfaces/HistoryReason.interface.js.map +1 -0
  136. package/lib/src/interfaces/HttpStatusCode.enum.d.ts +319 -0
  137. package/lib/src/interfaces/HttpStatusCode.enum.js +324 -0
  138. package/lib/src/interfaces/HttpStatusCode.enum.js.map +1 -0
  139. package/lib/src/interfaces/ListOfModels.interface.d.ts +5 -0
  140. package/lib/src/interfaces/ListOfModels.interface.js +3 -0
  141. package/lib/src/interfaces/ListOfModels.interface.js.map +1 -0
  142. package/lib/src/interfaces/Modelv2.interface.d.ts +3 -0
  143. package/lib/src/interfaces/Modelv2.interface.js +3 -0
  144. package/lib/src/interfaces/Modelv2.interface.js.map +1 -0
  145. package/lib/src/interfaces/ModuleGeneric.interface.d.ts +10 -0
  146. package/lib/src/interfaces/ModuleGeneric.interface.js +3 -0
  147. package/lib/src/interfaces/ModuleGeneric.interface.js.map +1 -0
  148. package/lib/src/interfaces/Partner.interface.d.ts +14 -0
  149. package/lib/src/interfaces/Partner.interface.js +3 -0
  150. package/lib/src/interfaces/Partner.interface.js.map +1 -0
  151. package/lib/src/interfaces/PublishResult.interface.d.ts +9 -0
  152. package/lib/src/interfaces/PublishResult.interface.js +3 -0
  153. package/lib/src/interfaces/PublishResult.interface.js.map +1 -0
  154. package/lib/src/interfaces/PublishResultStatistics.interface.d.ts +6 -0
  155. package/lib/src/interfaces/PublishResultStatistics.interface.js +3 -0
  156. package/lib/src/interfaces/PublishResultStatistics.interface.js.map +1 -0
  157. package/lib/src/interfaces/Scope.interface.d.ts +7 -0
  158. package/lib/src/interfaces/Scope.interface.js +3 -0
  159. package/lib/src/interfaces/Scope.interface.js.map +1 -0
  160. package/lib/src/interfaces/ShareClient.interface.d.ts +30 -0
  161. package/lib/src/interfaces/ShareClient.interface.js +3 -0
  162. package/lib/src/interfaces/ShareClient.interface.js.map +1 -0
  163. package/lib/src/interfaces/ShareClientOptions.interface.d.ts +5 -0
  164. package/lib/src/interfaces/ShareClientOptions.interface.js +3 -0
  165. package/lib/src/interfaces/ShareClientOptions.interface.js.map +1 -0
  166. package/lib/src/logger.d.ts +2 -0
  167. package/lib/src/logger.js +46 -0
  168. package/lib/src/logger.js.map +1 -0
  169. package/lib/src/models/certificate.model.d.ts +18 -0
  170. package/lib/src/models/certificate.model.js +42 -0
  171. package/lib/src/models/certificate.model.js.map +1 -0
  172. package/lib/src/models/company.model.d.ts +22 -0
  173. package/lib/src/models/company.model.js +63 -0
  174. package/lib/src/models/company.model.js.map +1 -0
  175. package/lib/src/models/editor.model.d.ts +27 -0
  176. package/lib/src/models/editor.model.js +122 -0
  177. package/lib/src/models/editor.model.js.map +1 -0
  178. package/lib/src/models/editorBase.model.d.ts +11 -0
  179. package/lib/src/models/editorBase.model.js +42 -0
  180. package/lib/src/models/editorBase.model.js.map +1 -0
  181. package/lib/src/models/history.model.d.ts +19 -0
  182. package/lib/src/models/history.model.js +46 -0
  183. package/lib/src/models/history.model.js.map +1 -0
  184. package/lib/src/models/id.model.d.ts +11 -0
  185. package/lib/src/models/id.model.js +21 -0
  186. package/lib/src/models/id.model.js.map +1 -0
  187. package/lib/src/models/me.model.d.ts +12 -0
  188. package/lib/src/models/me.model.js +35 -0
  189. package/lib/src/models/me.model.js.map +1 -0
  190. package/lib/src/models/media.model.d.ts +49 -0
  191. package/lib/src/models/media.model.js +123 -0
  192. package/lib/src/models/media.model.js.map +1 -0
  193. package/lib/src/models/permissions.model.d.ts +15 -0
  194. package/lib/src/models/permissions.model.js +163 -0
  195. package/lib/src/models/permissions.model.js.map +1 -0
  196. package/lib/src/models/project.model.d.ts +12 -0
  197. package/lib/src/models/project.model.js +46 -0
  198. package/lib/src/models/project.model.js.map +1 -0
  199. package/lib/src/models/publish.model.d.ts +23 -0
  200. package/lib/src/models/publish.model.js +180 -0
  201. package/lib/src/models/publish.model.js.map +1 -0
  202. package/lib/src/models/secrets.model.d.ts +14 -0
  203. package/lib/src/models/secrets.model.js +42 -0
  204. package/lib/src/models/secrets.model.js.map +1 -0
  205. package/lib/src/models/settings.model.d.ts +8 -0
  206. package/lib/src/models/settings.model.js +31 -0
  207. package/lib/src/models/settings.model.js.map +1 -0
  208. package/lib/src/nginx.class.d.ts +11 -0
  209. package/lib/src/nginx.class.js +49 -0
  210. package/lib/src/nginx.class.js.map +1 -0
  211. package/lib/src/services/editor.service.d.ts +23 -0
  212. package/lib/src/services/editor.service.js +175 -0
  213. package/lib/src/services/editor.service.js.map +1 -0
  214. package/lib/src/services/editorBase.service.d.ts +29 -0
  215. package/lib/src/services/editorBase.service.js +96 -0
  216. package/lib/src/services/editorBase.service.js.map +1 -0
  217. package/lib/src/services/handleFile.service.d.ts +10 -0
  218. package/lib/src/services/handleFile.service.js +48 -0
  219. package/lib/src/services/handleFile.service.js.map +1 -0
  220. package/lib/src/services/history.service.d.ts +26 -0
  221. package/lib/src/services/history.service.js +237 -0
  222. package/lib/src/services/history.service.js.map +1 -0
  223. package/lib/src/services/id.service.d.ts +6 -0
  224. package/lib/src/services/id.service.js +20 -0
  225. package/lib/src/services/id.service.js.map +1 -0
  226. package/lib/src/services/publish.service.d.ts +30 -0
  227. package/lib/src/services/publish.service.js +201 -0
  228. package/lib/src/services/publish.service.js.map +1 -0
  229. package/lib/src/services/secret.service.d.ts +24 -0
  230. package/lib/src/services/secret.service.js +50 -0
  231. package/lib/src/services/secret.service.js.map +1 -0
  232. package/lib/src/services/universal.service.d.ts +23 -0
  233. package/lib/src/services/universal.service.js +129 -0
  234. package/lib/src/services/universal.service.js.map +1 -0
  235. package/lib/src/ssl-challenge.class.d.ts +33 -0
  236. package/lib/src/ssl-challenge.class.js +63 -0
  237. package/lib/src/ssl-challenge.class.js.map +1 -0
  238. package/package.json +60 -0
@@ -0,0 +1,62 @@
1
+ import Ajv, { Schema, ValidateFunction } from 'ajv';
2
+ import mongo, { CreateIndexesOptions, IndexDescription, MongoClient } from 'mongodb';
3
+ import { IModelv2 } from '../../interfaces';
4
+ import { Models } from './models.class';
5
+ import { MongoClass } from './mongo.class';
6
+ export default class Modelv2<T> {
7
+ ajv: Ajv;
8
+ compiled: ValidateFunction<T>;
9
+ compiledTypes: Record<IModelv2['SchemaType'], ValidateFunction<T>>;
10
+ mongo: mongo.Db;
11
+ collection: string;
12
+ indexes: IndexDescription[];
13
+ data: T;
14
+ name: string;
15
+ /**
16
+ * array of keys that will be used to find before insert if data with the same values was deleted before
17
+ * if true then the immutable_history of the deleted data will be used and immutable_parent will be also reinstated
18
+ *
19
+ * @type {string[]}
20
+ * @memberof ModelClass
21
+ */
22
+ historyMatch: (keyof T)[];
23
+ /** removes theses keys if no data is given */
24
+ removeWhenEmpty: (keyof T)[];
25
+ /** these keys will be removed from the update object if immutableUpsert is used to enable validation */
26
+ immutable: (keyof T)[];
27
+ /** these keys will be projected when this model is used in a list */
28
+ projectWhenListed: (keyof T)[];
29
+ /**
30
+ will overwrite on create, after validation, the id field with a unique progressing numeric value based upon company, project, app, model.
31
+ e.g. `1, 2, 3` and so on.
32
+ */
33
+ uniqueId: Boolean;
34
+ /**
35
+ * is called when the model gets the connected mongodb injected
36
+ */
37
+ connected?: (...any: any[]) => void;
38
+ constructor(name: string, collection: string, modelsInjected?: Models, dynamic?: boolean);
39
+ setAjv(ajv: Ajv): void;
40
+ /**
41
+ *
42
+ * @param mongoClient
43
+ * @param mongoClass
44
+ * @param noIndexes disables the creation of indexes
45
+ */
46
+ setMongoConnection(mongoClient: MongoClient, mongoClass?: MongoClass, noIndexes?: boolean): Promise<unknown>;
47
+ /**
48
+ * allowAtomic removes the required array to make atomic updates possible with validation single properties
49
+ */
50
+ setSchema(schema: Schema, type?: IModelv2['SchemaType']): void;
51
+ addIndex(index: IndexDescription & CreateIndexesOptions, version: number): void;
52
+ handleIndexes(indexes: (IndexDescription & CreateIndexesOptions)[]): Promise<true | string[]>;
53
+ validate(data: T | Partial<T>, type?: IModelv2['SchemaType']): boolean;
54
+ /**
55
+ * * validates against json schema
56
+ * * doest **NOT** check the database for uniques etc.
57
+ */
58
+ pre(data: T, type?: IModelv2['SchemaType']): mongo.Collection<T>;
59
+ getUnsetObject(data: T): Record<string, "">;
60
+ get errors(): import("ajv").ErrorObject<string, Record<string, any>, unknown>[] | null | undefined;
61
+ get db(): mongo.Collection<T>;
62
+ }
@@ -0,0 +1,136 @@
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
+ const logger_1 = __importDefault(require("../logger"));
7
+ const models_class_1 = __importDefault(require("./models.class"));
8
+ class Modelv2 {
9
+ constructor(name, collection, modelsInjected, dynamic) {
10
+ this.compiledTypes = {};
11
+ this.indexes = [];
12
+ this.collection = collection;
13
+ this.name = name;
14
+ if (!dynamic) {
15
+ if (modelsInjected) {
16
+ modelsInjected.register(name, this);
17
+ }
18
+ else {
19
+ models_class_1.default.register(name, this);
20
+ }
21
+ }
22
+ }
23
+ setAjv(ajv) {
24
+ this.ajv = ajv;
25
+ }
26
+ /**
27
+ *
28
+ * @param mongoClient
29
+ * @param mongoClass
30
+ * @param noIndexes disables the creation of indexes
31
+ */
32
+ setMongoConnection(mongoClient, mongoClass, noIndexes) {
33
+ this.mongo = mongoClient === null || mongoClient === void 0 ? void 0 : mongoClient.db(mongoClass === null || mongoClass === void 0 ? void 0 : mongoClass.connectionUriObject.database);
34
+ if (typeof this.connected === 'function') {
35
+ this.connected();
36
+ }
37
+ return !noIndexes ? this.handleIndexes(this.indexes) : new Promise((resolve) => resolve(true));
38
+ }
39
+ /**
40
+ * allowAtomic removes the required array to make atomic updates possible with validation single properties
41
+ */
42
+ setSchema(schema, type) {
43
+ this.compiled = this.ajv.compile(schema);
44
+ if (type) {
45
+ this.compiledTypes[type] = this.compiled;
46
+ }
47
+ if (type === 'collection') {
48
+ const validationSchema = JSON.parse(JSON.stringify(schema));
49
+ validationSchema.bsonType = validationSchema.type;
50
+ delete validationSchema.type;
51
+ this.mongo.command({
52
+ collMod: this.collection,
53
+ validator: {
54
+ $jsonSchema: validationSchema,
55
+ },
56
+ });
57
+ }
58
+ }
59
+ addIndex(index, version) {
60
+ if (this.indexes.find((single) => single.name === index.name))
61
+ return;
62
+ this.indexes.push(Object.assign(Object.assign({}, index), { name: `${index.name}-v${version}` }));
63
+ }
64
+ async handleIndexes(indexes) {
65
+ const collection = await this.mongo.listCollections({ name: this.db.collectionName }).toArray();
66
+ if (!collection.length) {
67
+ await this.mongo.createCollection(this.db.collectionName);
68
+ }
69
+ const collectionIndexes = await this.db.listIndexes().toArray();
70
+ // //* * drop all indexed that are not created programatically */
71
+ collectionIndexes.forEach(async (single) => {
72
+ if (single.name === '_id_')
73
+ return;
74
+ if (this.indexes.find((singleIndex) => single.name === singleIndex.name)) {
75
+ return;
76
+ }
77
+ logger_1.default.info(`model.index.drop.${this.name}`);
78
+ await this.db.dropIndex(single.name);
79
+ });
80
+ const createdIndexes = indexes.filter((single) => {
81
+ if (collectionIndexes.find((singleIndex) => single.name === singleIndex.name))
82
+ return false;
83
+ return true;
84
+ });
85
+ if (createdIndexes.length) {
86
+ logger_1.default.info(`model.index.create.${this.name}`, createdIndexes);
87
+ return this.db.createIndexes(createdIndexes);
88
+ }
89
+ return true;
90
+ }
91
+ validate(data, type) {
92
+ if (this.compiledTypes && type) {
93
+ return this.compiledTypes[type](data);
94
+ }
95
+ const validationResult = this.compiled(data);
96
+ return validationResult;
97
+ }
98
+ /**
99
+ * * validates against json schema
100
+ * * doest **NOT** check the database for uniques etc.
101
+ */
102
+ pre(data, type) {
103
+ if (!this.validate(data, type))
104
+ throw new Error('MODEL_VALIDATION_FAILED');
105
+ return this.db;
106
+ }
107
+ getUnsetObject(data) {
108
+ var _a;
109
+ const unsetObject = {};
110
+ (_a = this.removeWhenEmpty) === null || _a === void 0 ? void 0 : _a.forEach((single) => {
111
+ const singleData = data[single];
112
+ if (Array.isArray(singleData)) {
113
+ if (!singleData.length) {
114
+ unsetObject[single] = '';
115
+ }
116
+ }
117
+ if (typeof singleData === 'object') {
118
+ if (!Object.keys(singleData).length) {
119
+ unsetObject[single] = '';
120
+ }
121
+ }
122
+ if (!singleData) {
123
+ unsetObject[single] = '';
124
+ }
125
+ });
126
+ return unsetObject;
127
+ }
128
+ get errors() {
129
+ return this.compiled.errors;
130
+ }
131
+ get db() {
132
+ return this.mongo.collection(this.collection);
133
+ }
134
+ }
135
+ exports.default = Modelv2;
136
+ //# sourceMappingURL=modelv2.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelv2.class.js","sourceRoot":"","sources":["../../../src/classes/modelv2.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import mongo, { Db } from 'mongodb';
2
+ import { ConnectionInfoObject } from 'mongo-connection-string';
3
+ /**
4
+ * Wrapper for the native MongoDB module
5
+ */
6
+ export declare class MongoClass {
7
+ client: mongo.MongoClient;
8
+ db: Db;
9
+ connectionUri: string;
10
+ connectionUriObject: ConnectionInfoObject;
11
+ constructor(connectionUri: any);
12
+ /**
13
+ * Disconnect from MongoDB
14
+ */
15
+ disconnect(): Promise<void>;
16
+ /**
17
+ * Connects to MongoDB
18
+ */
19
+ connect(): Promise<void>;
20
+ }
21
+ declare const _default: MongoClass;
22
+ export default _default;
@@ -0,0 +1,80 @@
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.MongoClass = void 0;
7
+ const mongodb_1 = require("mongodb");
8
+ const mongo_connection_string_1 = require("mongo-connection-string");
9
+ const logger_1 = __importDefault(require("../logger"));
10
+ /**
11
+ * Wrapper for the native MongoDB module
12
+ */
13
+ class MongoClass {
14
+ constructor(connectionUri) {
15
+ this.connectionUri = connectionUri;
16
+ this.connectionUriObject = new mongo_connection_string_1.ConnectionString(connectionUri);
17
+ }
18
+ /**
19
+ * Disconnect from MongoDB
20
+ */
21
+ disconnect() {
22
+ var _a;
23
+ return (_a = this.client) === null || _a === void 0 ? void 0 : _a.close();
24
+ }
25
+ /**
26
+ * Connects to MongoDB
27
+ */
28
+ async connect() {
29
+ const { connectionUri } = this;
30
+ let heartbeatFailed = 0;
31
+ let connectionError = false;
32
+ const mongoOptions = {};
33
+ /**
34
+ * Connect to mongo
35
+ */
36
+ try {
37
+ logger_1.default.info('mongodb.connection.try');
38
+ const client = new mongodb_1.MongoClient(connectionUri, mongoOptions);
39
+ await client.connect();
40
+ logger_1.default.info('mongodb.connection.successful');
41
+ this.client = client;
42
+ this.db = this.client.db(this.connectionUriObject.database);
43
+ }
44
+ catch (error) {
45
+ logger_1.default.error(`Cannot connect to Mongo: ${error.message}`);
46
+ logger_1.default.error('mongodb.connection.failed');
47
+ throw error;
48
+ }
49
+ /** is fired if a server connection is lost */
50
+ this.client.on('serverDescriptionChanged', (d) => {
51
+ var _a, _b;
52
+ if (((_a = d.newDescription.error) === null || _a === void 0 ? void 0 : _a.name) === 'MongoNetworkError') {
53
+ connectionError = true;
54
+ }
55
+ if (((_b = d.newDescription.error) === null || _b === void 0 ? void 0 : _b.name) !== 'MongoNetworkError') {
56
+ connectionError = false;
57
+ }
58
+ });
59
+ this.client.on('serverHeartbeatSucceeded', () => {
60
+ heartbeatFailed = 0;
61
+ });
62
+ /**
63
+ * if the heartbeat fails x times in a row and the last serverchange event indicates an error, shutdown the process
64
+ */
65
+ this.client.on('serverHeartbeatFailed', () => {
66
+ heartbeatFailed += 1;
67
+ logger_1.default.error({ heartbeatFailed, connectionError, message: 'serverHeartbeatFailed' });
68
+ if (heartbeatFailed >= 10 && connectionError) {
69
+ logger_1.default.error(`${10} heartbeats failed in a row, shutdown the server`);
70
+ process.exit(99);
71
+ }
72
+ if (heartbeatFailed >= 10 && !connectionError) {
73
+ heartbeatFailed = 0;
74
+ }
75
+ });
76
+ }
77
+ }
78
+ exports.MongoClass = MongoClass;
79
+ exports.default = new MongoClass(process.env.DATABASE);
80
+ //# sourceMappingURL=mongo.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo.class.js","sourceRoot":"","sources":["../../../src/classes/mongo.class.ts"],"names":[],"mappings":";;;;;;AAAA,qCAIiB;AACjB,qEAAiF;AACjF,uDAA+B;AAE/B;;GAEG;AACH,MAAa,UAAU;IAUrB,YAAY,aAAkB;QAE5B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,IAAI,0CAAgB,CAAC,aAAa,CAAC,CAAC;IAEjE,CAAC;IAED;;OAEG;IACH,UAAU;;QAER,OAAO,MAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,EAAE,CAAC;IAE9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QAEX,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QAE/B,IAAI,eAAe,GAAW,CAAC,CAAC;QAChC,IAAI,eAAe,GAAY,KAAK,CAAC;QAErC,MAAM,YAAY,GAAuB,EACxC,CAAC;QAEF;;WAEG;QACH,IAAI;YAEF,gBAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAEtC,MAAM,MAAM,GAAG,IAAI,qBAAW,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAC5D,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YAEvB,gBAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAE7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;SAE7D;QAAC,OAAO,KAAK,EAAE;YAEd,gBAAM,CAAC,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,gBAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAE1C,MAAM,KAAK,CAAC;SAEb;QAED,8CAA8C;QAC9C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAAE,EAAE;;YAE/C,IAAI,CAAA,MAAA,CAAC,CAAC,cAAc,CAAC,KAAK,0CAAE,IAAI,MAAK,mBAAmB,EAAE;gBAExD,eAAe,GAAG,IAAI,CAAC;aAExB;YAED,IAAI,CAAA,MAAA,CAAC,CAAC,cAAc,CAAC,KAAK,0CAAE,IAAI,MAAK,mBAAmB,EAAE;gBAExD,eAAe,GAAG,KAAK,CAAC;aAEzB;QAEH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAE9C,eAAe,GAAG,CAAC,CAAC;QAEtB,CAAC,CAAC,CAAC;QAEH;;UAEE;QACF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAE3C,eAAe,IAAI,CAAC,CAAC;YAErB,gBAAM,CAAC,KAAK,CAAC,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAErF,IAAI,eAAe,IAAI,EAAE,IAAI,eAAe,EAAE;gBAE5C,gBAAM,CAAC,KAAK,CAAC,GAAG,EAAE,kDAAkD,CAAC,CAAC;gBACtE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAElB;YAED,IAAI,eAAe,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE;gBAE7C,eAAe,GAAG,CAAC,CAAC;aAErB;QAEH,CAAC,CAAC,CAAC;IAEL,CAAC;CAEF;AAhHD,gCAgHC;AAED,kBAAe,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /// <reference types="node" />
2
+ import DomainConf from './interfaces/DomainConf.interface';
3
+ import ShareClientInterface from './interfaces/ShareClient.interface';
4
+ export default class ConfClass {
5
+ shareClient: ShareClientInterface;
6
+ /**
7
+ *
8
+ * load the base nginx conf file for further rendering
9
+ */
10
+ getBase(folder: string, name: string): Promise<Buffer>;
11
+ constructor(shareClient: ShareClientInterface);
12
+ /**
13
+ * generates nginx config
14
+ *
15
+ * @param {string[]} domains
16
+ * @param {string} defaultDomain e.g. $project-$customer.lila2.de
17
+ * @param {string} project
18
+ * @param {string} company
19
+ * @param {string} baseConf
20
+ * @returns
21
+ * @memberof ProjectClass
22
+ */
23
+ render(domains: string[], defaultDomain: string, company: string, project: string, baseConf: string, variables: {
24
+ [key: string]: any;
25
+ }): string;
26
+ renderStreamConf(domains: DomainConf[], confString: string): string;
27
+ getComposeObject(domains: DomainConf[], baseFolder: string, image?: string): {
28
+ [key: string]: any;
29
+ };
30
+ getKey(company: string, project: string): string;
31
+ validateDomains(domains: string[]): string[];
32
+ /**
33
+ * validate domains and remove double entries
34
+ */
35
+ validateStreamDomains(domains: DomainConf[]): DomainConf[];
36
+ }
@@ -0,0 +1,122 @@
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
+ const handlebars_1 = __importDefault(require("handlebars"));
7
+ class ConfClass {
8
+ constructor(shareClient) {
9
+ this.shareClient = shareClient;
10
+ }
11
+ /**
12
+ *
13
+ * load the base nginx conf file for further rendering
14
+ */
15
+ getBase(folder, name) {
16
+ return this.shareClient.get(folder, name);
17
+ }
18
+ /**
19
+ * generates nginx config
20
+ *
21
+ * @param {string[]} domains
22
+ * @param {string} defaultDomain e.g. $project-$customer.lila2.de
23
+ * @param {string} project
24
+ * @param {string} company
25
+ * @param {string} baseConf
26
+ * @returns
27
+ * @memberof ProjectClass
28
+ */
29
+ render(domains, defaultDomain, company, project, baseConf, variables) {
30
+ const template = handlebars_1.default.compile(baseConf);
31
+ const conf = template({
32
+ domains, defaultDomain, company, project, variables,
33
+ });
34
+ return conf.trim();
35
+ }
36
+ renderStreamConf(domains, confString) {
37
+ const template = handlebars_1.default.compile(confString);
38
+ const conf = template({
39
+ domains,
40
+ });
41
+ return conf.trim();
42
+ }
43
+ getComposeObject(domains, baseFolder, image = 'nginx:alpine') {
44
+ const composeObject = {
45
+ version: '3',
46
+ services: {},
47
+ };
48
+ domains.map((domain) => {
49
+ const domainObject = {
50
+ image,
51
+ container_name: this.getKey(domain.company, domain.project),
52
+ ports: [
53
+ `${domain.port.http}:80`,
54
+ `${domain.port.https}:443`,
55
+ ],
56
+ volumes: [
57
+ `${baseFolder}/${domain.company}/${domain.project}/hosting:/var/www/hosting:ro`,
58
+ `${baseFolder}/${domain.company}/${domain.project}/conf:/etc/nginx/conf.d/`,
59
+ `${baseFolder}/${domain.company}/${domain.project}/certs:/var/www/certs`,
60
+ '/base/data/certs:/var/www/base/certs',
61
+ ],
62
+ };
63
+ composeObject.services[this.getKey(domain.company, domain.project)] = domainObject;
64
+ return domainObject;
65
+ });
66
+ return composeObject;
67
+ }
68
+ getKey(company, project) {
69
+ return `${company}-${project}`;
70
+ }
71
+ validateDomains(domains) {
72
+ const fileredDomains = [...new Set(domains)];
73
+ return fileredDomains.filter((domain) => {
74
+ if (!domain)
75
+ return false;
76
+ if (!domain.length)
77
+ return false;
78
+ return true;
79
+ });
80
+ }
81
+ /**
82
+ * validate domains and remove double entries
83
+ */
84
+ validateStreamDomains(domains) {
85
+ const filteredDomains = [];
86
+ domains.map((domain) => {
87
+ var _a, _b, _c;
88
+ /**
89
+ * skip all with missing values
90
+ */
91
+ if (!domain)
92
+ return false;
93
+ if (!((_a = domain === null || domain === void 0 ? void 0 : domain.domains) === null || _a === void 0 ? void 0 : _a.length))
94
+ return false;
95
+ if (!domain.company.length)
96
+ return false;
97
+ if (!domain.project.length)
98
+ return false;
99
+ if (((_b = domain.port) === null || _b === void 0 ? void 0 : _b.http) < 1)
100
+ return false;
101
+ if (((_c = domain.port) === null || _c === void 0 ? void 0 : _c.https) < 1)
102
+ return false;
103
+ /**
104
+ * skip double entries
105
+ */
106
+ const unique = filteredDomains.filter((searchDomain) => {
107
+ // if (domain.domains.includes(searchDomain.domain)) return true;
108
+ if (searchDomain.company === domain.company && searchDomain.project === domain.project)
109
+ return true;
110
+ if (searchDomain.port === domain.port)
111
+ return true;
112
+ return false;
113
+ });
114
+ if (unique.length)
115
+ return false;
116
+ return filteredDomains.push(domain);
117
+ });
118
+ return filteredDomains;
119
+ }
120
+ }
121
+ exports.default = ConfClass;
122
+ //# sourceMappingURL=conf.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conf.class.js","sourceRoot":"","sources":["../../src/conf.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export default class DockerCompose {
2
+ debug: boolean;
3
+ dockerfile: string;
4
+ constructor(dockerfile: string, debug?: boolean);
5
+ up(): Promise<unknown>;
6
+ down(): Promise<unknown>;
7
+ kill(company?: string, project?: string): Promise<unknown>;
8
+ restart(company?: string, project?: string): Promise<unknown>;
9
+ stop(company?: string, project?: string): Promise<unknown>;
10
+ check(company: string, project: string): Promise<boolean>;
11
+ containerName(company?: string, project?: string): string;
12
+ status(): Promise<unknown>;
13
+ command(command: string, output?: boolean): Promise<unknown>;
14
+ }
@@ -0,0 +1,87 @@
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
+ const child_process_1 = require("child_process");
7
+ const logger_1 = __importDefault(require("./logger"));
8
+ class DockerCompose {
9
+ constructor(dockerfile, debug = false) {
10
+ this.debug = false;
11
+ this.debug = debug;
12
+ this.dockerfile = dockerfile;
13
+ }
14
+ up() {
15
+ return this.command(`docker-compose -f ${this.dockerfile} up -d --remove-orphans --no-recreate`);
16
+ }
17
+ down() {
18
+ return this.command(`docker-compose -f ${this.dockerfile} down --remove-orphans`);
19
+ }
20
+ kill(company, project) {
21
+ return this.command(`docker-compose -f ${this.dockerfile} rm -f -s -v ${this.containerName(company, project)}`);
22
+ }
23
+ restart(company, project) {
24
+ if (company || project) {
25
+ return this.check(company, project)
26
+ .then(() => this.command(`docker-compose -f ${this.dockerfile} restart ${this.containerName(company, project)}`))
27
+ .catch(() => this.up());
28
+ }
29
+ return this.command(`docker-compose -f ${this.dockerfile} restart`);
30
+ }
31
+ stop(company, project) {
32
+ return this.command(`docker-compose -f ${this.dockerfile} stop ${this.containerName(company, project)}`);
33
+ }
34
+ check(company, project) {
35
+ return this.command(`docker-compose -f ${this.dockerfile} ps -q ${this.containerName(company, project)}`)
36
+ .then((id) => {
37
+ if (id.length <= 0)
38
+ throw new Error('container not running');
39
+ return true;
40
+ });
41
+ }
42
+ containerName(company, project) {
43
+ return company ? `${company}-${project}` : '';
44
+ }
45
+ status() {
46
+ return new Promise((resolve, reject) => {
47
+ (0, child_process_1.exec)('docker ps', (e, stdout, stderr) => {
48
+ if (e instanceof Error) {
49
+ logger_1.default.error(e);
50
+ reject(e);
51
+ }
52
+ let logs = stdout.toString().trim().split('\n');
53
+ let head = logs.slice(0, 1);
54
+ head = head[0].replace(/\s\s+/g, '#').split('#');
55
+ logger_1.default.debug(logs);
56
+ logs = logs.slice(1).map((log) => {
57
+ const newLog = {};
58
+ const splitted = log.replace(/\s\s+/g, '#').split('#');
59
+ head.forEach((single, index) => {
60
+ newLog[single.toLowerCase()] = splitted[index];
61
+ });
62
+ return newLog;
63
+ });
64
+ logger_1.default.debug(logs);
65
+ resolve(logs);
66
+ });
67
+ });
68
+ }
69
+ command(command, output = false) {
70
+ return new Promise((resolve, reject) => {
71
+ (0, child_process_1.exec)(command, (e, stdout, stderr) => {
72
+ if (this.debug) {
73
+ if (stdout)
74
+ logger_1.default.debug('stdout ', stdout);
75
+ if (stderr)
76
+ logger_1.default.debug('stderr ', stderr);
77
+ }
78
+ if (e instanceof Error) {
79
+ return reject(e);
80
+ }
81
+ return resolve(stdout);
82
+ });
83
+ });
84
+ }
85
+ }
86
+ exports.default = DockerCompose;
87
+ //# sourceMappingURL=docker-compose.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-compose.class.js","sourceRoot":"","sources":["../../src/docker-compose.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /// <reference types="node" />
2
+ import tls, { PeerCertificate } from 'tls';
3
+ import { ShareClientInterface } from '../interfaces';
4
+ export default class Domain {
5
+ shareClient: ShareClientInterface;
6
+ acme_email: string;
7
+ acme_directory: string;
8
+ constructor(acme_email: string, acme_directory: string, shareClient: ShareClientInterface);
9
+ /**
10
+ * creates a letsencrypt certificate for all given domain
11
+ * http challenge will be used
12
+ */
13
+ createSSl(domains: string[], company: string, project: string): Promise<tls.PeerCertificate>;
14
+ getCertificateDetails(cert: string): PeerCertificate;
15
+ checkDns(domain: string, company: string, project: string): Promise<boolean>;
16
+ /**
17
+ *
18
+ *
19
+ * @param {string} domain the default domain e.g. lila2.de
20
+ * @param {string} project
21
+ * @param {string} company
22
+ * @memberof ProjectClass
23
+ */
24
+ static getDefaultDomain(domain: string, project: string, company: string): string;
25
+ }