couchset 0.0.0 → 0.0.5

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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +231 -0
  3. package/dist/automate/index.d.ts +4 -0
  4. package/dist/automate/index.js +17 -0
  5. package/dist/automate/index.js.map +1 -0
  6. package/dist/automate/middlewares/index.d.ts +1 -0
  7. package/dist/automate/middlewares/index.js +14 -0
  8. package/dist/automate/middlewares/index.js.map +1 -0
  9. package/dist/automate/middlewares/isAuth.d.ts +7 -0
  10. package/dist/automate/middlewares/isAuth.js +28 -0
  11. package/dist/automate/middlewares/isAuth.js.map +1 -0
  12. package/dist/automate/model/client.d.ts +12 -0
  13. package/dist/automate/model/client.js +33 -0
  14. package/dist/automate/model/client.js.map +1 -0
  15. package/dist/automate/model/index.d.ts +44 -0
  16. package/dist/automate/model/index.js +304 -0
  17. package/dist/automate/model/index.js.map +1 -0
  18. package/dist/automate/morpheus/index.d.ts +14 -0
  19. package/dist/automate/morpheus/index.js +171 -0
  20. package/dist/automate/morpheus/index.js.map +1 -0
  21. package/dist/automate/writer/index.d.ts +10 -0
  22. package/dist/automate/writer/index.js +72 -0
  23. package/dist/automate/writer/index.js.map +1 -0
  24. package/dist/config/index.d.ts +3 -0
  25. package/dist/config/index.js +8 -0
  26. package/dist/config/index.js.map +1 -0
  27. package/dist/connection.d.ts +36 -0
  28. package/dist/connection.js +129 -0
  29. package/dist/connection.js.map +1 -0
  30. package/dist/index.d.ts +14 -0
  31. package/dist/index.js +80 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/model/index.d.ts +107 -0
  34. package/dist/model/index.js +329 -0
  35. package/dist/model/index.js.map +1 -0
  36. package/dist/pagination/index.d.ts +1 -0
  37. package/dist/pagination/index.js +14 -0
  38. package/dist/pagination/index.js.map +1 -0
  39. package/dist/pagination/pagination.d.ts +19 -0
  40. package/dist/pagination/pagination.js +97 -0
  41. package/dist/pagination/pagination.js.map +1 -0
  42. package/dist/query/base-query.d.ts +17 -0
  43. package/dist/query/base-query.js +15 -0
  44. package/dist/query/base-query.js.map +1 -0
  45. package/dist/query/exceptions.d.ts +24 -0
  46. package/dist/query/exceptions.js +90 -0
  47. package/dist/query/exceptions.js.map +1 -0
  48. package/dist/query/helpers/builders.d.ts +64 -0
  49. package/dist/query/helpers/builders.js +415 -0
  50. package/dist/query/helpers/builders.js.map +1 -0
  51. package/dist/query/helpers/dictionary.d.ts +45 -0
  52. package/dist/query/helpers/dictionary.js +105 -0
  53. package/dist/query/helpers/dictionary.js.map +1 -0
  54. package/dist/query/helpers/index.d.ts +3 -0
  55. package/dist/query/helpers/index.js +16 -0
  56. package/dist/query/helpers/index.js.map +1 -0
  57. package/dist/query/helpers/reservedWords.d.ts +1 -0
  58. package/dist/query/helpers/reservedWords.js +200 -0
  59. package/dist/query/helpers/reservedWords.js.map +1 -0
  60. package/dist/query/index.d.ts +5 -0
  61. package/dist/query/index.js +27 -0
  62. package/dist/query/index.js.map +1 -0
  63. package/dist/query/interface/query.types.d.ts +236 -0
  64. package/dist/query/interface/query.types.js +3 -0
  65. package/dist/query/interface/query.types.js.map +1 -0
  66. package/dist/query/query.cluster.d.ts +14 -0
  67. package/dist/query/query.cluster.js +80 -0
  68. package/dist/query/query.cluster.js.map +1 -0
  69. package/dist/query/query.d.ts +321 -0
  70. package/dist/query/query.js +457 -0
  71. package/dist/query/query.js.map +1 -0
  72. package/dist/query/utils.d.ts +8 -0
  73. package/dist/query/utils.js +56 -0
  74. package/dist/query/utils.js.map +1 -0
  75. package/dist/search/customQuery.d.ts +17 -0
  76. package/dist/search/customQuery.js +83 -0
  77. package/dist/search/customQuery.js.map +1 -0
  78. package/dist/search/index.d.ts +1 -0
  79. package/dist/search/index.js +14 -0
  80. package/dist/search/index.js.map +1 -0
  81. package/dist/shared/ContextType.d.ts +27 -0
  82. package/dist/shared/ContextType.js +55 -0
  83. package/dist/shared/ContextType.js.map +1 -0
  84. package/dist/shared/common.model.d.ts +37 -0
  85. package/dist/shared/common.model.js +148 -0
  86. package/dist/shared/common.model.js.map +1 -0
  87. package/dist/shared/index.d.ts +2 -0
  88. package/dist/shared/index.js +15 -0
  89. package/dist/shared/index.js.map +1 -0
  90. package/dist/utils/awaitTo.d.ts +17 -0
  91. package/dist/utils/awaitTo.js +31 -0
  92. package/dist/utils/awaitTo.js.map +1 -0
  93. package/dist/utils/date.d.ts +11 -0
  94. package/dist/utils/date.js +21 -0
  95. package/dist/utils/date.js.map +1 -0
  96. package/dist/utils/index.d.ts +5 -0
  97. package/dist/utils/index.js +18 -0
  98. package/dist/utils/index.js.map +1 -0
  99. package/dist/utils/log.d.ts +9 -0
  100. package/dist/utils/log.js +19 -0
  101. package/dist/utils/log.js.map +1 -0
  102. package/dist/utils/text.utils.d.ts +14 -0
  103. package/dist/utils/text.utils.js +45 -0
  104. package/dist/utils/text.utils.js.map +1 -0
  105. package/dist/utils/utils.schema.d.ts +6 -0
  106. package/dist/utils/utils.schema.js +33 -0
  107. package/dist/utils/utils.schema.js.map +1 -0
  108. package/dist/uuid.d.ts +1 -0
  109. package/dist/uuid.js +9 -0
  110. package/dist/uuid.js.map +1 -0
  111. package/docs/couch.png +0 -0
  112. package/docs/couchset.png +0 -0
  113. package/docs/couchset_logo.png +0 -0
  114. package/package.json +108 -30
  115. package/register/index.js +1 -0
  116. package/register/transpile-only.js +3 -0
  117. package/register/type-check.js +3 -0
@@ -0,0 +1,304 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
14
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
18
+ };
19
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
20
+ return function (target, key) { decorator(target, key, paramIndex); }
21
+ };
22
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
23
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
24
+ return new (P || (P = Promise))(function (resolve, reject) {
25
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
26
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
27
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
28
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
29
+ });
30
+ };
31
+ var __generator = (this && this.__generator) || function (thisArg, body) {
32
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
33
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
34
+ function verb(n) { return function (v) { return step([n, v]); }; }
35
+ function step(op) {
36
+ if (f) throw new TypeError("Generator is already executing.");
37
+ while (_) try {
38
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
39
+ if (y = 0, t) op = [op[0] & 2, t.value];
40
+ switch (op[0]) {
41
+ case 0: case 1: t = op; break;
42
+ case 4: _.label++; return { value: op[1], done: false };
43
+ case 5: _.label++; y = op[1]; op = [0]; continue;
44
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
45
+ default:
46
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
47
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
48
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
49
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
50
+ if (t[2]) _.ops.pop();
51
+ _.trys.pop(); continue;
52
+ }
53
+ op = body.call(thisArg, _);
54
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
55
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
56
+ }
57
+ };
58
+ var __read = (this && this.__read) || function (o, n) {
59
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
60
+ if (!m) return o;
61
+ var i = m.call(o), r, ar = [], e;
62
+ try {
63
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
64
+ }
65
+ catch (error) { e = { error: error }; }
66
+ finally {
67
+ try {
68
+ if (r && !r.done && (m = i["return"])) m.call(i);
69
+ }
70
+ finally { if (e) throw e.error; }
71
+ }
72
+ return ar;
73
+ };
74
+ var __importDefault = (this && this.__importDefault) || function (mod) {
75
+ return (mod && mod.__esModule) ? mod : { "default": mod };
76
+ };
77
+ Object.defineProperty(exports, "__esModule", { value: true });
78
+ exports.automateImplementation = void 0;
79
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
80
+ var camelCase_1 = __importDefault(require("lodash/camelCase"));
81
+ var pickBy_1 = __importDefault(require("lodash/pickBy"));
82
+ var graphql_type_json_1 = __importDefault(require("graphql-type-json"));
83
+ var lodash_1 = require("lodash");
84
+ var type_graphql_1 = require("type-graphql");
85
+ var utils_1 = require("../../utils");
86
+ var middlewares_1 = require("../middlewares");
87
+ var shared_1 = require("../../shared");
88
+ var client_1 = require("./client");
89
+ /**
90
+ *
91
+ * @param c
92
+ * @returns
93
+ */
94
+ var automateImplementation = function (ClassModelType, options) {
95
+ var createUpdateOptions = options === null || options === void 0 ? void 0 : options.createUpdate;
96
+ var deleteByIdOptions = options === null || options === void 0 ? void 0 : options.deleteById;
97
+ var getByIdOptions = options === null || options === void 0 ? void 0 : options.getById;
98
+ var paginationOptions = options === null || options === void 0 ? void 0 : options.pagination;
99
+ var ClassModel = options.model;
100
+ var name = ClassModelType.name;
101
+ var _type = ClassModel.collectionName;
102
+ var nameCamel = (0, camelCase_1.default)(name);
103
+ // const nameSNAKE_CASE = toUpper(snakeCase(name));
104
+ var modelKeys = Object.getOwnPropertyNames(new ClassModelType());
105
+ var authMiddleware = options.authMiddleware || middlewares_1.isAuth;
106
+ var PaginationClass = /** @class */ (function () {
107
+ function PaginationClass() {
108
+ }
109
+ __decorate([
110
+ (0, type_graphql_1.Field)(function () { return [ClassModelType]; }, { nullable: true })
111
+ ], PaginationClass.prototype, "items", void 0);
112
+ __decorate([
113
+ (0, type_graphql_1.Field)(function () { return Boolean; }, { nullable: true })
114
+ ], PaginationClass.prototype, "hasNext", void 0);
115
+ __decorate([
116
+ (0, type_graphql_1.Field)(function () { return graphql_type_json_1.default; }, { nullable: true })
117
+ ], PaginationClass.prototype, "params", void 0);
118
+ PaginationClass = __decorate([
119
+ (0, type_graphql_1.ObjectType)(nameCamel + "Pagination")
120
+ ], PaginationClass);
121
+ return PaginationClass;
122
+ }());
123
+ // return Pagination;
124
+ var ResolverClass = /** @class */ (function () {
125
+ function ResolverClass() {
126
+ }
127
+ ResolverClass.prototype[_a = nameCamel + "Pagination"] = function (filter, sort, before, after, limit) {
128
+ return __awaiter(this, void 0, void 0, function () {
129
+ var copyParams, bucket, query, _e, errorFetching, _f, data, _g, _h, rows, _j, options_1, dataToSend, error_1;
130
+ return __generator(this, function (_k) {
131
+ switch (_k.label) {
132
+ case 0:
133
+ copyParams = (0, pickBy_1.default)({
134
+ filter: filter,
135
+ sort: sort,
136
+ before: before,
137
+ after: after,
138
+ limit: limit || 10,
139
+ }, lodash_1.identity);
140
+ _k.label = 1;
141
+ case 1:
142
+ _k.trys.push([1, 5, , 6]);
143
+ if (!(paginationOptions && paginationOptions.method)) return [3 /*break*/, 3];
144
+ return [4 /*yield*/, paginationOptions.method(copyParams)];
145
+ case 2: return [2 /*return*/, _k.sent()];
146
+ case 3:
147
+ bucket = ClassModel.getBucketName();
148
+ query = "\n SELECT " + modelKeys.join(',') + "\n FROM `" + bucket + "` " + nameCamel + "\n WHERE " + nameCamel + "._type = \"" + _type + "\"\n LIMIT " + limit + ";\n ";
149
+ return [4 /*yield*/, (0, utils_1.awaitTo)(ClassModel.customQuery({
150
+ limit: limit,
151
+ query: query,
152
+ params: copyParams,
153
+ }))];
154
+ case 4:
155
+ _e = __read.apply(void 0, [_k.sent(), 2]), errorFetching = _e[0], _f = _e[1], data = _f === void 0 ? [] : _f;
156
+ if (errorFetching) {
157
+ throw errorFetching;
158
+ }
159
+ _g = __read(data, 2), _h = _g[0], rows = _h === void 0 ? [] : _h, _j = _g[1], options_1 = _j === void 0 ? { hasNext: false, params: copyParams } : _j;
160
+ dataToSend = rows.map(function (d) {
161
+ var chat = d.chat, attachments = d.attachments, owner = d.owner;
162
+ return ClassModel.parse(__assign(__assign({}, chat), { attachments: attachments, owner: owner[0] || null }));
163
+ });
164
+ return [2 /*return*/, __assign({ items: dataToSend }, options_1)];
165
+ case 5:
166
+ error_1 = _k.sent();
167
+ (0, utils_1.log)("error paginating " + nameCamel, error_1);
168
+ return [2 /*return*/, { items: [], hasNext: false, params: copyParams }];
169
+ case 6: return [2 /*return*/];
170
+ }
171
+ });
172
+ });
173
+ };
174
+ ResolverClass.prototype[_b = nameCamel + "Get"] = function (id, owner) {
175
+ return __awaiter(this, void 0, void 0, function () {
176
+ var foundDocument, error_2;
177
+ return __generator(this, function (_e) {
178
+ switch (_e.label) {
179
+ case 0:
180
+ _e.trys.push([0, 4, , 5]);
181
+ if (!(getByIdOptions && getByIdOptions.method)) return [3 /*break*/, 2];
182
+ return [4 /*yield*/, getByIdOptions.method({ id: id, owner: owner })];
183
+ case 1: return [2 /*return*/, _e.sent()];
184
+ case 2: return [4 /*yield*/, ClassModel.findById(id)];
185
+ case 3:
186
+ foundDocument = _e.sent();
187
+ if (!foundDocument) {
188
+ throw new Error(nameCamel + " not found");
189
+ }
190
+ return [2 /*return*/, {
191
+ success: true,
192
+ }];
193
+ case 4:
194
+ error_2 = _e.sent();
195
+ (0, utils_1.log)("error finding " + nameCamel, error_2);
196
+ return [2 /*return*/, { success: false, message: error_2 && error_2.message }];
197
+ case 5: return [2 /*return*/];
198
+ }
199
+ });
200
+ });
201
+ };
202
+ ResolverClass.prototype[_c = nameCamel + "Delete"] = function (id, owner) {
203
+ return __awaiter(this, void 0, void 0, function () {
204
+ var deleted, error_3;
205
+ return __generator(this, function (_e) {
206
+ switch (_e.label) {
207
+ case 0:
208
+ _e.trys.push([0, 4, , 5]);
209
+ if (!(deleteByIdOptions && deleteByIdOptions.method)) return [3 /*break*/, 2];
210
+ return [4 /*yield*/, deleteByIdOptions.method({ id: id, owner: owner })];
211
+ case 1: return [2 /*return*/, _e.sent()];
212
+ case 2: return [4 /*yield*/, ClassModel.delete(id)];
213
+ case 3:
214
+ deleted = _e.sent();
215
+ if (!deleted) {
216
+ throw new Error(nameCamel + " not deleted");
217
+ }
218
+ return [2 /*return*/, {
219
+ success: true,
220
+ }];
221
+ case 4:
222
+ error_3 = _e.sent();
223
+ (0, utils_1.log)("error deleting " + nameCamel, error_3);
224
+ return [2 /*return*/, { success: false, message: error_3 && error_3.message }];
225
+ case 5: return [2 /*return*/];
226
+ }
227
+ });
228
+ });
229
+ };
230
+ ResolverClass.prototype[_d = nameCamel + "Create"] = function (
231
+ // @ts-ignore
232
+ args) {
233
+ return __awaiter(this, void 0, void 0, function () {
234
+ var createdOrUpdate, err_1;
235
+ return __generator(this, function (_e) {
236
+ switch (_e.label) {
237
+ case 0:
238
+ _e.trys.push([0, 4, , 5]);
239
+ if (!(createUpdateOptions && createUpdateOptions.method)) return [3 /*break*/, 2];
240
+ return [4 /*yield*/, createUpdateOptions.method(args)];
241
+ case 1: return [2 /*return*/, _e.sent()];
242
+ case 2: return [4 /*yield*/, (0, shared_1.createUpdate)(__assign({ model: ClassModel, data: __assign({}, args) }, args))];
243
+ case 3:
244
+ createdOrUpdate = _e.sent();
245
+ if (createdOrUpdate) {
246
+ return [2 /*return*/, { success: true, data: createdOrUpdate }];
247
+ }
248
+ throw new Error("error creating " + nameCamel + " method ");
249
+ case 4:
250
+ err_1 = _e.sent();
251
+ console.error(err_1 && err_1.message, err_1);
252
+ return [2 /*return*/, { success: false, message: err_1 && err_1.message }];
253
+ case 5: return [2 /*return*/];
254
+ }
255
+ });
256
+ });
257
+ };
258
+ var _a, _b, _c, _d;
259
+ __decorate([
260
+ (0, type_graphql_1.Query)(function () { return PaginationClass; }),
261
+ (0, type_graphql_1.UseMiddleware)(authMiddleware),
262
+ __param(0, (0, type_graphql_1.Arg)('filter', function () { return String; }, { nullable: true })),
263
+ __param(1, (0, type_graphql_1.Arg)('sort', function () { return String; }, { nullable: true })),
264
+ __param(2, (0, type_graphql_1.Arg)('before', function () { return Date; }, { nullable: true })),
265
+ __param(3, (0, type_graphql_1.Arg)('after', function () { return Date; }, { nullable: true })),
266
+ __param(4, (0, type_graphql_1.Arg)('limit', function () { return Number; }, { nullable: true }))
267
+ ], ResolverClass.prototype, _a, null);
268
+ __decorate([
269
+ (0, type_graphql_1.Query)(function () { return shared_1.ResType; }),
270
+ (0, type_graphql_1.UseMiddleware)(authMiddleware),
271
+ __param(0, (0, type_graphql_1.Arg)('id', function () { return String; }, { nullable: false })),
272
+ __param(1, (0, type_graphql_1.Arg)('owner', function () { return String; }, { nullable: true }))
273
+ ], ResolverClass.prototype, _b, null);
274
+ __decorate([
275
+ (0, type_graphql_1.Mutation)(function () { return shared_1.ResType; }),
276
+ (0, type_graphql_1.UseMiddleware)(authMiddleware),
277
+ __param(0, (0, type_graphql_1.Arg)('id', function () { return String; }, { nullable: false })),
278
+ __param(1, (0, type_graphql_1.Arg)('owner', function () { return String; }, { nullable: true }))
279
+ ], ResolverClass.prototype, _c, null);
280
+ __decorate([
281
+ (0, type_graphql_1.Mutation)(function () { return shared_1.ResType; }),
282
+ (0, type_graphql_1.UseMiddleware)(authMiddleware),
283
+ __param(0, (0, type_graphql_1.Arg)('args', function () { return ClassModelType; }))
284
+ ], ResolverClass.prototype, _d, null);
285
+ ResolverClass = __decorate([
286
+ (0, type_graphql_1.Resolver)()
287
+ ], ResolverClass);
288
+ return ResolverClass;
289
+ }());
290
+ // GQL
291
+ // { FRAGMENT, GET, DELETE, CREATE, PAGE }
292
+ var client = (0, client_1.generateClient)({
293
+ name: name,
294
+ fields: modelKeys,
295
+ });
296
+ return {
297
+ pagination: PaginationClass,
298
+ resolver: ResolverClass,
299
+ modelKeys: modelKeys,
300
+ client: client,
301
+ };
302
+ };
303
+ exports.automateImplementation = automateImplementation;
304
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/model/index.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport camelCase from 'lodash/camelCase';\nimport pickBy from 'lodash/pickBy';\nimport GraphQLJSON from 'graphql-type-json';\nimport {identity} from 'lodash';\nimport {\n Field,\n Mutation,\n ObjectType,\n UseMiddleware,\n Arg,\n ClassType,\n Resolver,\n Query,\n} from 'type-graphql';\nimport {DocumentNode} from 'graphql';\n\nimport {awaitTo, log} from '../../utils';\nimport {Model} from '../../model';\nimport {isAuth} from '../middlewares';\nimport {createUpdate, ResType} from '../../shared';\n\nimport {generateClient} from './client';\n\ninterface PaginationResults {\n items: any[];\n hasNext: boolean;\n params: any;\n}\n\nexport interface AutomaticModelOptions extends AutomaticMethodOptions {\n model: Model;\n}\n\nexport interface AutomaticMethodOptions {\n authMiddleware?: any; // authentication middleware\n\n // Query\n pagination?: {\n public?: boolean;\n method?: (params: any) => Promise<PaginationResults>;\n };\n\n getById?: {\n public?: boolean;\n matchOwner?: boolean;\n method?: <T>(params: any) => Promise<T & any>;\n };\n\n // Mutations\n deleteById?: {\n method?: (args: any) => Promise<ResType>;\n matchOwner?: boolean;\n };\n\n createUpdate?: {\n method?: <T>(args: T) => Promise<ResType>;\n };\n\n // TODO in the future\n // fragmentMapping\n}\n\nexport interface AutomaticOutput {\n pagination: ClassType;\n resolver: ClassType;\n modelKeys: string[];\n client: Record<string, DocumentNode>;\n}\n\n/**\n *\n * @param c\n * @returns\n */\nexport const automateImplementation = <T>(\n ClassModelType: T & ClassType,\n options: AutomaticModelOptions\n): AutomaticOutput => {\n const createUpdateOptions = options?.createUpdate;\n const deleteByIdOptions = options?.deleteById;\n const getByIdOptions = options?.getById;\n const paginationOptions = options?.pagination;\n\n type ClassModelTYPE = typeof ClassModelType;\n\n const ClassModel = options.model;\n const name = (ClassModelType as any).name;\n const _type = ClassModel.collectionName;\n const nameCamel = camelCase(name);\n // const nameSNAKE_CASE = toUpper(snakeCase(name));\n const modelKeys: string[] = Object.getOwnPropertyNames(new ClassModelType());\n\n const authMiddleware = options.authMiddleware || isAuth;\n\n @ObjectType(`${nameCamel}Pagination`)\n class PaginationClass {\n @Field(() => [ClassModelType], {nullable: true})\n items: [typeof ClassModelType];\n\n @Field(() => Boolean, {nullable: true})\n hasNext?: boolean;\n\n @Field(() => GraphQLJSON, {nullable: true})\n params?: any;\n }\n // return Pagination;\n\n @Resolver()\n class ResolverClass {\n @Query(() => PaginationClass)\n @UseMiddleware(authMiddleware)\n async [`${nameCamel}Pagination`](\n @Arg('filter', () => String, {nullable: true}) filter?: string,\n @Arg('sort', () => String, {nullable: true}) sort?: string,\n @Arg('before', () => Date, {nullable: true}) before?: Date,\n @Arg('after', () => Date, {nullable: true}) after?: Date,\n @Arg('limit', () => Number, {nullable: true}) limit?: number\n ): Promise<{\n items: ClassModelTYPE[];\n hasNext: boolean;\n params: any;\n }> {\n const copyParams = pickBy(\n {\n filter,\n sort,\n before,\n after,\n limit: limit || 10,\n },\n identity\n );\n\n try {\n // Apply it from the methods\n if (paginationOptions && paginationOptions.method) {\n return await paginationOptions.method(copyParams);\n }\n\n const bucket = ClassModel.getBucketName();\n\n const query = `\n SELECT ${modelKeys.join(',')}\n FROM \\`${bucket}\\` ${nameCamel}\n WHERE ${nameCamel}._type = \"${_type}\"\n LIMIT ${limit};\n `;\n\n const [errorFetching, data = []] = await awaitTo(\n ClassModel.customQuery<any>({\n limit,\n query,\n params: copyParams,\n })\n );\n\n if (errorFetching) {\n throw errorFetching;\n }\n\n const [rows = [], options = {hasNext: false, params: copyParams}] = data;\n\n const dataToSend = rows.map((d) => {\n const {chat, attachments, owner} = d;\n return ClassModel.parse({\n ...chat,\n attachments,\n owner: owner[0] || null,\n });\n });\n\n return {items: dataToSend, ...options};\n } catch (error) {\n log(`error paginating ${nameCamel}`, error);\n return {items: [], hasNext: false, params: copyParams};\n }\n }\n\n @Query(() => ResType)\n @UseMiddleware(authMiddleware)\n async [`${nameCamel}Get`](\n @Arg('id', () => String, {nullable: false}) id: string,\n @Arg('owner', () => String, {nullable: true}) owner: string\n ): Promise<ResType> {\n try {\n // Apply it from the methods\n if (getByIdOptions && getByIdOptions.method) {\n return await getByIdOptions.method({id, owner});\n }\n\n // TODO check if we own this payment method\n const foundDocument = await ClassModel.findById(id);\n if (!foundDocument) {\n throw new Error(`${nameCamel} not found`);\n }\n\n return {\n success: true,\n };\n } catch (error) {\n log(`error finding ${nameCamel}`, error);\n return {success: false, message: error && error.message};\n }\n }\n\n @Mutation(() => ResType)\n @UseMiddleware(authMiddleware)\n async [`${nameCamel}Delete`](\n @Arg('id', () => String, {nullable: false}) id: string,\n @Arg('owner', () => String, {nullable: true}) owner: string\n ): Promise<ResType> {\n try {\n // Apply it from the methods\n if (deleteByIdOptions && deleteByIdOptions.method) {\n return await deleteByIdOptions.method({id, owner});\n }\n\n // TODO check if we own this payment method\n const deleted = await ClassModel.delete(id);\n if (!deleted) {\n throw new Error(`${nameCamel} not deleted`);\n }\n\n return {\n success: true,\n };\n } catch (error) {\n log(`error deleting ${nameCamel}`, error);\n return {success: false, message: error && error.message};\n }\n }\n\n @Mutation(() => ResType)\n @UseMiddleware(authMiddleware)\n async [`${nameCamel}Create`](\n // @ts-ignore\n @Arg('args', () => ClassModelType) args: ClassModelType\n ): Promise<ResType> {\n try {\n // Apply it from the methods\n if (createUpdateOptions && createUpdateOptions.method) {\n return await createUpdateOptions.method(args);\n }\n\n // If updating\n const createdOrUpdate = await createUpdate({\n model: ClassModel,\n data: {\n ...args,\n },\n ...args, // id and owner if it exists\n });\n\n if (createdOrUpdate) {\n return {success: true, data: createdOrUpdate};\n }\n\n throw new Error(`error creating ${nameCamel} method `);\n } catch (err) {\n console.error(err && err.message, err);\n return {success: false, message: err && err.message};\n }\n }\n }\n\n // GQL\n // { FRAGMENT, GET, DELETE, CREATE, PAGE }\n const client = generateClient({\n name,\n fields: modelKeys,\n });\n\n return {\n pagination: PaginationClass,\n resolver: ResolverClass,\n modelKeys,\n client,\n };\n};\n"]}
@@ -0,0 +1,14 @@
1
+ import { DocumentNode } from 'graphql';
2
+ interface ClientModels {
3
+ name: string;
4
+ client: Record<string, DocumentNode>;
5
+ }
6
+ interface IWriteClient {
7
+ path: string;
8
+ clients: ClientModels[];
9
+ }
10
+ /**
11
+ * Morpheus in actions
12
+ */
13
+ export declare const writeAllClientSchemas: ({ clients, path }: IWriteClient) => Promise<void>;
14
+ export {};
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __rest = (this && this.__rest) || function (s, e) {
39
+ var t = {};
40
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
41
+ t[p] = s[p];
42
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
43
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
44
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
45
+ t[p[i]] = s[p[i]];
46
+ }
47
+ return t;
48
+ };
49
+ var __values = (this && this.__values) || function(o) {
50
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
51
+ if (m) return m.call(o);
52
+ if (o && typeof o.length === "number") return {
53
+ next: function () {
54
+ if (o && i >= o.length) o = void 0;
55
+ return { value: o && o[i++], done: !o };
56
+ }
57
+ };
58
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
59
+ };
60
+ var __importDefault = (this && this.__importDefault) || function (mod) {
61
+ return (mod && mod.__esModule) ? mod : { "default": mod };
62
+ };
63
+ Object.defineProperty(exports, "__esModule", { value: true });
64
+ exports.writeAllClientSchemas = void 0;
65
+ /**
66
+ * Define all models that should be morphed
67
+ */
68
+ var ts_morph_1 = require("ts-morph");
69
+ var isEmpty_1 = __importDefault(require("lodash/isEmpty"));
70
+ var utils_1 = require("../../utils");
71
+ var writer_1 = require("../writer");
72
+ var config_1 = require("../../config");
73
+ /**
74
+ * Morpheus in actions
75
+ */
76
+ var writeAllClientSchemas = function (_a) {
77
+ var clients = _a.clients, path = _a.path;
78
+ return __awaiter(void 0, void 0, void 0, function () {
79
+ var writeFilesTasks, allFileExports;
80
+ return __generator(this, function (_b) {
81
+ switch (_b.label) {
82
+ case 0:
83
+ if (!config_1.isDev) {
84
+ return [2 /*return*/];
85
+ }
86
+ writeFilesTasks = clients.map(function (clt) {
87
+ var e_1, _a;
88
+ var modelName = clt.name;
89
+ var nameSNAKE_CASE = (0, utils_1.toSnakeUpper)(modelName);
90
+ // write fragments and all queries
91
+ var _b = clt.client, FRAGMENT = _b.FRAGMENT, GET = _b.GET, PAGE = _b.PAGE, DELETE = _b.DELETE, CREATE = _b.CREATE, otherClient = __rest(_b, ["FRAGMENT", "GET", "PAGE", "DELETE", "CREATE"]);
92
+ var constStatements = [
93
+ {
94
+ name: nameSNAKE_CASE + "_FRAGMENT",
95
+ value: FRAGMENT,
96
+ leadingTrivia: "/** " + nameSNAKE_CASE + " Fragment **/",
97
+ },
98
+ {
99
+ name: nameSNAKE_CASE + "_CREATE",
100
+ value: CREATE,
101
+ leadingTrivia: "/** " + nameSNAKE_CASE + " Create Mutation **/",
102
+ },
103
+ { name: nameSNAKE_CASE + "_DELETE", value: DELETE },
104
+ { name: nameSNAKE_CASE + "_GET", value: GET },
105
+ { name: nameSNAKE_CASE + "_PAGE", value: PAGE },
106
+ ];
107
+ try {
108
+ // Add other defined queries
109
+ for (var _c = __values(Object.keys(otherClient)), _d = _c.next(); !_d.done; _d = _c.next()) {
110
+ var keyQuery = _d.value;
111
+ if (!(0, isEmpty_1.default)(keyQuery)) {
112
+ constStatements.push({
113
+ name: keyQuery,
114
+ value: otherClient["" + keyQuery],
115
+ });
116
+ }
117
+ }
118
+ }
119
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
120
+ finally {
121
+ try {
122
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
123
+ }
124
+ finally { if (e_1) throw e_1.error; }
125
+ }
126
+ return {
127
+ filename: nameSNAKE_CASE,
128
+ task: (0, writer_1.writeTsFile)({
129
+ pathToClient: path,
130
+ filename: nameSNAKE_CASE,
131
+ variables: constStatements.map(function (con) { return ({
132
+ name: con.name,
133
+ initializer: JSON.stringify(con.value),
134
+ leadingTrivia: function (writer) {
135
+ writer.writeLine('\n');
136
+ if (con === null || con === void 0 ? void 0 : con.leadingTrivia) {
137
+ writer.writeLine(con.leadingTrivia);
138
+ }
139
+ },
140
+ trailingTrivia: function (writer) { return writer.writeLine('\n'); },
141
+ }); }),
142
+ }),
143
+ };
144
+ });
145
+ // write all files
146
+ return [4 /*yield*/, Promise.all(writeFilesTasks.map(function (i) { return i.task; }))];
147
+ case 1:
148
+ // write all files
149
+ _b.sent();
150
+ allFileExports = writeFilesTasks
151
+ .map(function (i) { return i.filename; })
152
+ .map(function (c) { return ({
153
+ kind: ts_morph_1.StructureKind.ExportDeclaration,
154
+ // namespaceExport: "*",
155
+ moduleSpecifier: "./" + c,
156
+ }); });
157
+ // write final index file
158
+ return [4 /*yield*/, (0, writer_1.writeTsFile)({
159
+ filename: 'index',
160
+ exports: allFileExports,
161
+ })];
162
+ case 2:
163
+ // write final index file
164
+ _b.sent();
165
+ return [2 /*return*/];
166
+ }
167
+ });
168
+ });
169
+ };
170
+ exports.writeAllClientSchemas = writeAllClientSchemas;
171
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/morpheus/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Define all models that should be morphed\n */\nimport {ExportDeclarationStructure, StructureKind} from 'ts-morph';\nimport isEmpty from 'lodash/isEmpty';\nimport {DocumentNode} from 'graphql';\n\nimport {toSnakeUpper} from '../../utils';\nimport {writeTsFile} from '../writer';\nimport {isDev} from '../../config';\n\ninterface ClientModels {\n name: string;\n client: Record<string, DocumentNode>;\n}\n\ninterface IWriteClient {\n path: string;\n clients: ClientModels[];\n}\n\n/**\n * Morpheus in actions\n */\nexport const writeAllClientSchemas = async ({clients, path}: IWriteClient): Promise<void> => {\n if (!isDev) {\n return;\n }\n // write each file\n const writeFilesTasks = clients.map((clt) => {\n const modelName = clt.name;\n const nameSNAKE_CASE = toSnakeUpper(modelName);\n\n // write fragments and all queries\n const {FRAGMENT, GET, PAGE, DELETE, CREATE, ...otherClient} = clt.client;\n\n const constStatements = [\n {\n name: `${nameSNAKE_CASE}_FRAGMENT`,\n value: FRAGMENT,\n leadingTrivia: `/** ${nameSNAKE_CASE} Fragment **/`,\n },\n {\n name: `${nameSNAKE_CASE}_CREATE`,\n value: CREATE,\n leadingTrivia: `/** ${nameSNAKE_CASE} Create Mutation **/`,\n },\n {name: `${nameSNAKE_CASE}_DELETE`, value: DELETE},\n {name: `${nameSNAKE_CASE}_GET`, value: GET},\n {name: `${nameSNAKE_CASE}_PAGE`, value: PAGE},\n ];\n\n // Add other defined queries\n for (const keyQuery of Object.keys(otherClient)) {\n if (!isEmpty(keyQuery)) {\n constStatements.push({\n name: keyQuery,\n value: (otherClient as any)[`${keyQuery}`],\n });\n }\n }\n\n return {\n filename: nameSNAKE_CASE,\n task: writeTsFile({\n pathToClient: path,\n filename: nameSNAKE_CASE,\n variables: constStatements.map((con) => ({\n name: con.name,\n initializer: JSON.stringify(con.value),\n leadingTrivia: (writer) => {\n writer.writeLine('\\n');\n\n if (con?.leadingTrivia) {\n writer.writeLine(con.leadingTrivia);\n }\n },\n trailingTrivia: (writer) => writer.writeLine('\\n'),\n })),\n }),\n };\n });\n\n // write all files\n await Promise.all(writeFilesTasks.map((i) => i.task));\n\n // write all exports\n const allFileExports: ExportDeclarationStructure[] = writeFilesTasks\n .map((i) => i.filename)\n .map((c) => ({\n kind: StructureKind.ExportDeclaration,\n // namespaceExport: \"*\",\n moduleSpecifier: `./${c}`,\n }));\n\n // write final index file\n await writeTsFile({\n filename: 'index',\n exports: allFileExports,\n });\n};\n"]}
@@ -0,0 +1,10 @@
1
+ import { StatementedNodeStructure, VariableDeclarationStructure, OptionalKind, InterfaceDeclarationStructure, ExportDeclarationStructure } from 'ts-morph';
2
+ interface WriteFileProps extends StatementedNodeStructure {
3
+ filename: string;
4
+ variables?: OptionalKind<VariableDeclarationStructure>[];
5
+ interfaces?: OptionalKind<InterfaceDeclarationStructure>[];
6
+ exports?: OptionalKind<ExportDeclarationStructure>[];
7
+ pathToClient?: string;
8
+ }
9
+ export declare const writeTsFile: (props: WriteFileProps) => Promise<any>;
10
+ export {};
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.writeTsFile = void 0;
40
+ var ts_morph_1 = require("ts-morph");
41
+ var defaultPathToTs = __dirname + '/client/';
42
+ var writeTsFile = function (props) { return __awaiter(void 0, void 0, void 0, function () {
43
+ var filename, variables, interfaces, exports, _a, pathToClient, project, sourceFile;
44
+ return __generator(this, function (_b) {
45
+ switch (_b.label) {
46
+ case 0:
47
+ filename = props.filename, variables = props.variables, interfaces = props.interfaces, exports = props.exports, _a = props.pathToClient, pathToClient = _a === void 0 ? defaultPathToTs : _a;
48
+ project = new ts_morph_1.Project({
49
+ tsConfigFilePath: pathToClient + "/tsconfig.json",
50
+ skipAddingFilesFromTsConfig: true,
51
+ });
52
+ sourceFile = project.createSourceFile(pathToClient + "/" + filename + ".ts", {}, { overwrite: true });
53
+ if (variables) {
54
+ sourceFile.addVariableStatement({
55
+ declarationKind: ts_morph_1.VariableDeclarationKind.Const,
56
+ isExported: true,
57
+ declarations: variables,
58
+ });
59
+ }
60
+ if (interfaces) {
61
+ sourceFile.addInterfaces(interfaces);
62
+ }
63
+ if (exports) {
64
+ sourceFile.addExportDeclarations(exports);
65
+ }
66
+ return [4 /*yield*/, sourceFile.save()];
67
+ case 1: return [2 /*return*/, _b.sent()];
68
+ }
69
+ });
70
+ }); };
71
+ exports.writeTsFile = writeTsFile;
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/automate/writer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAQkB;AAElB,IAAM,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;AAUxC,IAAM,WAAW,GAAG,UAAO,KAAqB;;;;;gBAC5C,QAAQ,GAAoE,KAAK,SAAzE,EAAE,SAAS,GAAyD,KAAK,UAA9D,EAAE,UAAU,GAA6C,KAAK,WAAlD,EAAE,OAAO,GAAoC,KAAK,QAAzC,EAAE,KAAkC,KAAK,aAAT,EAA9B,YAAY,mBAAG,eAAe,KAAA,CAAU;gBACnF,OAAO,GAAG,IAAI,kBAAO,CAAC;oBACxB,gBAAgB,EAAK,YAAY,mBAAgB;oBACjD,2BAA2B,EAAE,IAAI;iBACpC,CAAC,CAAC;gBAEG,UAAU,GAAG,OAAO,CAAC,gBAAgB,CACpC,YAAY,SAAI,QAAQ,QAAK,EAChC,EAAE,EACF,EAAC,SAAS,EAAE,IAAI,EAAC,CACpB,CAAC;gBAEF,IAAI,SAAS,EAAE;oBACX,UAAU,CAAC,oBAAoB,CAAC;wBAC5B,eAAe,EAAE,kCAAuB,CAAC,KAAK;wBAC9C,UAAU,EAAE,IAAI;wBAChB,YAAY,EAAE,SAAS;qBAC1B,CAAC,CAAC;iBACN;gBAED,IAAI,UAAU,EAAE;oBACZ,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;iBACxC;gBAED,IAAI,OAAO,EAAE;oBACT,UAAU,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;iBAC7C;gBAEM,qBAAM,UAAU,CAAC,IAAI,EAAE,EAAA;oBAA9B,sBAAO,SAAuB,EAAC;;;KAClC,CAAC;AA9BW,QAAA,WAAW,eA8BtB","sourcesContent":["import {\n Project,\n StatementedNodeStructure,\n VariableDeclarationKind,\n VariableDeclarationStructure,\n OptionalKind,\n InterfaceDeclarationStructure,\n ExportDeclarationStructure,\n} from 'ts-morph';\n\nconst defaultPathToTs = __dirname + '/client/';\n\ninterface WriteFileProps extends StatementedNodeStructure {\n filename: string;\n variables?: OptionalKind<VariableDeclarationStructure>[];\n interfaces?: OptionalKind<InterfaceDeclarationStructure>[];\n exports?: OptionalKind<ExportDeclarationStructure>[];\n pathToClient?: string;\n}\n\nexport const writeTsFile = async (props: WriteFileProps): Promise<any> => {\n const {filename, variables, interfaces, exports, pathToClient = defaultPathToTs} = props;\n const project = new Project({\n tsConfigFilePath: `${pathToClient}/tsconfig.json`,\n skipAddingFilesFromTsConfig: true,\n });\n\n const sourceFile = project.createSourceFile(\n `${pathToClient}/${filename}.ts`,\n {},\n {overwrite: true}\n );\n\n if (variables) {\n sourceFile.addVariableStatement({\n declarationKind: VariableDeclarationKind.Const, // defaults to \"let\"\n isExported: true,\n declarations: variables,\n });\n }\n\n if (interfaces) {\n sourceFile.addInterfaces(interfaces);\n }\n\n if (exports) {\n sourceFile.addExportDeclarations(exports);\n }\n\n return await sourceFile.save();\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import 'dotenv/config';
2
+ export declare const nodeEnv: string;
3
+ export declare const isDev: boolean;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDev = exports.nodeEnv = void 0;
4
+ require("dotenv/config");
5
+ var lodash_1 = require("lodash");
6
+ exports.nodeEnv = (0, lodash_1.get)(process.env, 'NODE_ENV');
7
+ exports.isDev = exports.nodeEnv !== 'production';
8
+ //# sourceMappingURL=index.js.map