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.
- package/LICENSE +21 -0
- package/README.md +231 -0
- package/dist/automate/index.d.ts +4 -0
- package/dist/automate/index.js +17 -0
- package/dist/automate/index.js.map +1 -0
- package/dist/automate/middlewares/index.d.ts +1 -0
- package/dist/automate/middlewares/index.js +14 -0
- package/dist/automate/middlewares/index.js.map +1 -0
- package/dist/automate/middlewares/isAuth.d.ts +7 -0
- package/dist/automate/middlewares/isAuth.js +28 -0
- package/dist/automate/middlewares/isAuth.js.map +1 -0
- package/dist/automate/model/client.d.ts +12 -0
- package/dist/automate/model/client.js +33 -0
- package/dist/automate/model/client.js.map +1 -0
- package/dist/automate/model/index.d.ts +44 -0
- package/dist/automate/model/index.js +304 -0
- package/dist/automate/model/index.js.map +1 -0
- package/dist/automate/morpheus/index.d.ts +14 -0
- package/dist/automate/morpheus/index.js +171 -0
- package/dist/automate/morpheus/index.js.map +1 -0
- package/dist/automate/writer/index.d.ts +10 -0
- package/dist/automate/writer/index.js +72 -0
- package/dist/automate/writer/index.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -0
- package/dist/connection.d.ts +36 -0
- package/dist/connection.js +129 -0
- package/dist/connection.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/model/index.d.ts +107 -0
- package/dist/model/index.js +329 -0
- package/dist/model/index.js.map +1 -0
- package/dist/pagination/index.d.ts +1 -0
- package/dist/pagination/index.js +14 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/pagination/pagination.d.ts +19 -0
- package/dist/pagination/pagination.js +97 -0
- package/dist/pagination/pagination.js.map +1 -0
- package/dist/query/base-query.d.ts +17 -0
- package/dist/query/base-query.js +15 -0
- package/dist/query/base-query.js.map +1 -0
- package/dist/query/exceptions.d.ts +24 -0
- package/dist/query/exceptions.js +90 -0
- package/dist/query/exceptions.js.map +1 -0
- package/dist/query/helpers/builders.d.ts +64 -0
- package/dist/query/helpers/builders.js +415 -0
- package/dist/query/helpers/builders.js.map +1 -0
- package/dist/query/helpers/dictionary.d.ts +45 -0
- package/dist/query/helpers/dictionary.js +105 -0
- package/dist/query/helpers/dictionary.js.map +1 -0
- package/dist/query/helpers/index.d.ts +3 -0
- package/dist/query/helpers/index.js +16 -0
- package/dist/query/helpers/index.js.map +1 -0
- package/dist/query/helpers/reservedWords.d.ts +1 -0
- package/dist/query/helpers/reservedWords.js +200 -0
- package/dist/query/helpers/reservedWords.js.map +1 -0
- package/dist/query/index.d.ts +5 -0
- package/dist/query/index.js +27 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/interface/query.types.d.ts +236 -0
- package/dist/query/interface/query.types.js +3 -0
- package/dist/query/interface/query.types.js.map +1 -0
- package/dist/query/query.cluster.d.ts +14 -0
- package/dist/query/query.cluster.js +80 -0
- package/dist/query/query.cluster.js.map +1 -0
- package/dist/query/query.d.ts +321 -0
- package/dist/query/query.js +457 -0
- package/dist/query/query.js.map +1 -0
- package/dist/query/utils.d.ts +8 -0
- package/dist/query/utils.js +56 -0
- package/dist/query/utils.js.map +1 -0
- package/dist/search/customQuery.d.ts +17 -0
- package/dist/search/customQuery.js +83 -0
- package/dist/search/customQuery.js.map +1 -0
- package/dist/search/index.d.ts +1 -0
- package/dist/search/index.js +14 -0
- package/dist/search/index.js.map +1 -0
- package/dist/shared/ContextType.d.ts +27 -0
- package/dist/shared/ContextType.js +55 -0
- package/dist/shared/ContextType.js.map +1 -0
- package/dist/shared/common.model.d.ts +37 -0
- package/dist/shared/common.model.js +148 -0
- package/dist/shared/common.model.js.map +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.js +15 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/utils/awaitTo.d.ts +17 -0
- package/dist/utils/awaitTo.js +31 -0
- package/dist/utils/awaitTo.js.map +1 -0
- package/dist/utils/date.d.ts +11 -0
- package/dist/utils/date.js +21 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/log.d.ts +9 -0
- package/dist/utils/log.js +19 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/text.utils.d.ts +14 -0
- package/dist/utils/text.utils.js +45 -0
- package/dist/utils/text.utils.js.map +1 -0
- package/dist/utils/utils.schema.d.ts +6 -0
- package/dist/utils/utils.schema.js +33 -0
- package/dist/utils/utils.schema.js.map +1 -0
- package/dist/uuid.d.ts +1 -0
- package/dist/uuid.js +9 -0
- package/dist/uuid.js.map +1 -0
- package/docs/couch.png +0 -0
- package/docs/couchset.png +0 -0
- package/docs/couchset_logo.png +0 -0
- package/package.json +108 -30
- package/register/index.js +1 -0
- package/register/transpile-only.js +3 -0
- 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,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
|