contable 0.0.1

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 (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/client/client.js +259 -0
  4. package/dist/client/img/bannersuperior.png +0 -0
  5. package/dist/client/menu.js +3 -0
  6. package/dist/client/redux-formulario.js +379 -0
  7. package/dist/client/render-components.js +750 -0
  8. package/dist/client/render-components.tsx +1117 -0
  9. package/dist/client/render-formulario.js +56 -0
  10. package/dist/client/render-formulario.tsx +72 -0
  11. package/dist/client/render-general.js +197 -0
  12. package/dist/client/render-general.tsx +212 -0
  13. package/dist/client/render-handlers.js +69 -0
  14. package/dist/client/tipos.js +13 -0
  15. package/dist/client/tsconfig.json +12 -0
  16. package/dist/server/app-contable.js +174 -0
  17. package/dist/server/def-config.js +100 -0
  18. package/dist/server/procedures-contable.js +508 -0
  19. package/dist/server/server-contable.js +17 -0
  20. package/dist/server/table-categorias_producto.js +29 -0
  21. package/dist/server/table-clientes.js +56 -0
  22. package/dist/server/table-condicion_iva.js +29 -0
  23. package/dist/server/table-estados_pedido.js +33 -0
  24. package/dist/server/table-estados_presupuesto.js +34 -0
  25. package/dist/server/table-insumos.js +44 -0
  26. package/dist/server/table-items_pedido.js +48 -0
  27. package/dist/server/table-items_presupuesto.js +48 -0
  28. package/dist/server/table-iva_productos.js +29 -0
  29. package/dist/server/table-parametros.js +38 -0
  30. package/dist/server/table-pedidos.js +48 -0
  31. package/dist/server/table-pedidos_pendientes.js +28 -0
  32. package/dist/server/table-pedidos_vencidos.js +28 -0
  33. package/dist/server/table-presupuestos.js +56 -0
  34. package/dist/server/table-productos.js +70 -0
  35. package/dist/server/table-productos_clientes.js +22 -0
  36. package/dist/server/table-productos_generales.js +22 -0
  37. package/dist/server/table-productos_insumos.js +47 -0
  38. package/dist/server/table-usuarios.js +44 -0
  39. package/dist/server/tsconfig.json +10 -0
  40. package/dist/server/types-contable.js +28 -0
  41. package/dist/unlogged/adapt.js +8 -0
  42. package/dist/unlogged/css/styles.styl +88 -0
  43. package/dist/unlogged/img/login-logo-icon.png.png +0 -0
  44. package/dist/unlogged/img/logo.png +0 -0
  45. package/dist/unlogged/tsconfig.json +15 -0
  46. package/dist/unlogged/unlogged.js +205 -0
  47. package/install/categorias_producto.tab +2 -0
  48. package/install/condicion_iva.tab +3 -0
  49. package/install/estados_pedido.tab +5 -0
  50. package/install/estados_presupuesto.tab +5 -0
  51. package/install/iva_productos.tab +3 -0
  52. package/install/productos.tab +2 -0
  53. package/install/usuarios.tab +2 -0
  54. package/package.json +58 -0
  55. package/unlogged/img/main-loading.gif +0 -0
  56. package/unlogged/main-loading.gif +0 -0
  57. package/unlogged/my-skin.js +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2017 Codenautas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ #contable
@@ -0,0 +1,259 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ (function (factory) {
38
+ if (typeof module === "object" && typeof module.exports === "object") {
39
+ var v = factory(require, exports);
40
+ if (v !== undefined) module.exports = v;
41
+ }
42
+ else if (typeof define === "function" && define.amd) {
43
+ define(["require", "exports", "js-to-html", "myOwn", "typed-controls", "./redux-formulario"], factory);
44
+ }
45
+ })(function (require, exports) {
46
+ "use strict";
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ var js_to_html_1 = require("js-to-html");
49
+ var myOwn = require("myOwn");
50
+ var TypedControls = require("typed-controls");
51
+ var redux_formulario_1 = require("./redux-formulario");
52
+ var my = myOwn;
53
+ myOwn.wScreens.tablero = function (_addrParams) {
54
+ var mainLayout = document.getElementById('main_layout');
55
+ mainLayout.appendChild(js_to_html_1.html.h1("Tablero de control").create());
56
+ ['vencidos', 'pendientes'].forEach(function (element) {
57
+ mainLayout.appendChild(js_to_html_1.html.h2("Pedidos ".concat(element)).create());
58
+ var myDiv = js_to_html_1.html.div().create();
59
+ mainLayout.appendChild(myDiv);
60
+ my.tableGrid("pedidos_".concat(element), myDiv, {});
61
+ });
62
+ };
63
+ my.clientSides.verCliente = {
64
+ update: false,
65
+ prepare: function (depot, fieldName) {
66
+ var td = depot.rowControls[fieldName];
67
+ var boton = js_to_html_1.html.button({}, 'ver').create();
68
+ td.appendChild(boton);
69
+ td.onclick = function () {
70
+ return __awaiter(this, void 0, void 0, function () {
71
+ return __generator(this, function (_a) {
72
+ desplegarCliente(depot);
73
+ return [2 /*return*/];
74
+ });
75
+ });
76
+ };
77
+ },
78
+ };
79
+ function colorearEstado(depot, pedidoOpresupuestoString) {
80
+ depot.rowControls['estado'].style.backgroundColor = depot.rowControls["estados_".concat(pedidoOpresupuestoString, "__color")].getTypedValue();
81
+ }
82
+ my.clientSides.accionesPresupuesto = {
83
+ prepare: function () { return null; },
84
+ update: function (depot, fieldName) {
85
+ var _this = this;
86
+ var td = depot.rowControls[fieldName];
87
+ td.innerHTML = '';
88
+ colorearEstado(depot, 'presupuesto');
89
+ var td = depot.rowControls[fieldName];
90
+ var boton = my.createForkeableButton({ menuType: 'presupuesto', name: "gestionar,presupuesto", label: "abrir" }, {});
91
+ boton.href = boton.href + '&' + 'presupuesto' + '=' + depot.row.presupuesto.toString();
92
+ td.appendChild(boton);
93
+ var puedeEditarPresupuesto = depot.rowControls['estados_presupuesto__permite_editar'].getTypedValue();
94
+ if (puedeEditarPresupuesto) {
95
+ var boton_1 = my.createForkeableButton({ menuType: 'pedido', name: 'gestionar,pedido', label: "aceptar" }, {});
96
+ boton_1.href = boton_1.href + '&presupuesto=' + depot.row['presupuesto'].toString();
97
+ td.appendChild(boton_1);
98
+ }
99
+ var presupuesto = depot.rowControls['presupuesto'].getTypedValue();
100
+ ['anular', 'rechazar'].forEach(function (accion) {
101
+ if (puedeEditarPresupuesto) {
102
+ var boton_2 = js_to_html_1.html.button({}, accion).create();
103
+ boton_2.onclick = function () { return __awaiter(_this, void 0, void 0, function () {
104
+ var err_1, grid;
105
+ return __generator(this, function (_a) {
106
+ switch (_a.label) {
107
+ case 0: return [4 /*yield*/, confirmPromise("\u00BFest\u00E1 por ".concat(accion, " el presupuesto? Esta acci\u00F3n no se podr\u00E1 deshacer"))];
108
+ case 1:
109
+ _a.sent();
110
+ _a.label = 2;
111
+ case 2:
112
+ _a.trys.push([2, 4, 5, 7]);
113
+ return [4 /*yield*/, my.ajax["presupuesto_".concat(accion)]({
114
+ presupuesto: presupuesto
115
+ })];
116
+ case 3:
117
+ _a.sent();
118
+ return [3 /*break*/, 7];
119
+ case 4:
120
+ err_1 = _a.sent();
121
+ alertPromise(err_1.message);
122
+ return [3 /*break*/, 7];
123
+ case 5:
124
+ grid = depot.manager;
125
+ return [4 /*yield*/, grid.retrieveRowAndRefresh(depot)];
126
+ case 6:
127
+ _a.sent();
128
+ return [7 /*endfinally*/];
129
+ case 7: return [2 /*return*/];
130
+ }
131
+ });
132
+ }); };
133
+ td.appendChild(boton_2);
134
+ }
135
+ });
136
+ },
137
+ };
138
+ my.clientSides.accionesPedido = {
139
+ prepare: function () { return null; },
140
+ update: function (depot, fieldName) {
141
+ var td = depot.rowControls[fieldName];
142
+ td.innerHTML = '';
143
+ colorearEstado(depot, 'pedido');
144
+ var td = depot.rowControls[fieldName];
145
+ var boton = my.createForkeableButton({ menuType: 'pedido', name: "gestionar,pedido", label: "abrir" }, {});
146
+ boton.href = boton.href + '&' + 'pedido' + '=' + depot.row.pedido.toString();
147
+ td.appendChild(boton);
148
+ }
149
+ };
150
+ myOwn.wScreens.presupuestos = function (_addrParams) {
151
+ var mainLayout = document.getElementById('main_layout');
152
+ var myDiv = js_to_html_1.html.div().create();
153
+ var boton = my.createForkeableButton({ menuType: 'presupuesto', name: 'gestionar,presupuesto', label: 'nuevo' }, {});
154
+ mainLayout.appendChild(boton);
155
+ mainLayout.appendChild(myDiv);
156
+ boton.onclick = function () {
157
+ return __awaiter(this, void 0, void 0, function () {
158
+ return __generator(this, function (_a) {
159
+ my.removeSessionVar(redux_formulario_1.STORAGE_STATE_NAME);
160
+ return [2 /*return*/];
161
+ });
162
+ });
163
+ };
164
+ my.tableGrid('presupuestos', myDiv, {});
165
+ };
166
+ myOwn.wScreens.pedidos = function (_addrParams) {
167
+ var mainLayout = document.getElementById('main_layout');
168
+ var myDiv = js_to_html_1.html.div().create();
169
+ var boton = my.createForkeableButton({ menuType: 'pedido', name: 'gestionar,pedido', label: 'nuevo' }, {});
170
+ //var boton = html.button({},'nuevo').create();
171
+ mainLayout.appendChild(boton);
172
+ mainLayout.appendChild(myDiv);
173
+ boton.onclick = function () {
174
+ return __awaiter(this, void 0, void 0, function () {
175
+ return __generator(this, function (_a) {
176
+ my.removeSessionVar(redux_formulario_1.STORAGE_STATE_NAME);
177
+ return [2 /*return*/];
178
+ });
179
+ });
180
+ };
181
+ my.tableGrid('pedidos', myDiv, {});
182
+ };
183
+ var validateHexaColor = function (string) { return /^#[0-9A-F]{6}$/i.test(string); };
184
+ myOwn.clientSides.parsearColor = {
185
+ update: function (depot, fieldName) {
186
+ var myColor = depot.rowControls['color'].getTypedValue();
187
+ var isValidColor = validateHexaColor(myColor);
188
+ if (myColor && !isValidColor) {
189
+ alertPromise("color inválido!");
190
+ depot.rowControls['color'].setTypedValue(null, true);
191
+ }
192
+ var colorInput = js_to_html_1.html.input({ type: "color", value: isValidColor ? myColor : '#ffffff' }).create();
193
+ colorInput.onchange = function () {
194
+ depot.rowControls['color'].setTypedValue(colorInput.value, true);
195
+ };
196
+ depot.rowControls[fieldName].innerHTML = '';
197
+ depot.rowControls[fieldName].appendChild(colorInput);
198
+ },
199
+ prepare: function (depot, fieldName) { }
200
+ };
201
+ my.clientSides.clonarProducto = {
202
+ update: false,
203
+ prepare: function (depot, fieldName) {
204
+ var _a = depot.row, producto = _a.producto, nombre = _a.nombre;
205
+ var td = depot.rowControls[fieldName];
206
+ var boton = js_to_html_1.html.button({}, 'clonar').create();
207
+ td.appendChild(boton);
208
+ td.onclick = function () {
209
+ return __awaiter(this, void 0, void 0, function () {
210
+ var result, newDepot;
211
+ return __generator(this, function (_a) {
212
+ switch (_a.label) {
213
+ case 0: return [4 /*yield*/, confirmPromise("confirma clonado de producto (".concat(producto, ") \"").concat(nombre, "\"?"))];
214
+ case 1:
215
+ _a.sent();
216
+ return [4 /*yield*/, my.ajax.producto_clonar({
217
+ producto: producto,
218
+ })];
219
+ case 2:
220
+ result = _a.sent();
221
+ newDepot = depot.manager.createRowInsertElements(depot);
222
+ newDepot.manager.depotRefresh(newDepot, { updatedRow: result.productoNuevo, sendedForUpdate: {} });
223
+ newDepot.manager.retrieveRowAndRefresh(newDepot);
224
+ return [2 /*return*/];
225
+ }
226
+ });
227
+ });
228
+ };
229
+ },
230
+ };
231
+ myOwn.autoSetupFunctions.push(function autoSetupMyTables() {
232
+ TypedControls.showLupa = false;
233
+ });
234
+ });
235
+ //EJEMPLO GUARDAR
236
+ //my.clientSides.guardar = {
237
+ // update: false,
238
+ // prepare: function (depot, fieldName) {
239
+ // var td = depot.rowControls[fieldName];
240
+ // var boton = html.button({},'guardar').create();
241
+ // td.appendChild(boton);
242
+ // td.onclick=async function(){
243
+ // var pkValues = {};
244
+ // pkValues['codigo']=depot.rowControls['codigo'].getTypedValue();
245
+ // var result = await my.ajax.object_get({
246
+ // tablename: 'clientes',
247
+ // pk_values: pkValues,
248
+ // });
249
+ // result.cuit_dni = '12345678';
250
+ // result.mail = 'manuel@123.com';
251
+ // var result2 = await my.ajax.object_save({
252
+ // tablename: 'clientes',
253
+ // datos: result,
254
+ // });
255
+ // console.log(result2);
256
+ // }
257
+ // },
258
+ //}
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSx5Q0FBeUM7SUFDekMsNkJBQStCO0lBQy9CLDhDQUFnRDtJQUVoRCx1REFBd0Q7SUFHeEQsSUFBSSxFQUFFLEdBQUMsS0FBSyxDQUFDO0lBRWIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUMsVUFBUyxXQUFXO1FBQ3ZDLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFFLENBQUM7UUFDekQsVUFBVSxDQUFDLFdBQVcsQ0FBQyxpQkFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUMsT0FBYztZQUM5QyxVQUFVLENBQUMsV0FBVyxDQUFDLGlCQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFXLE9BQU8sQ0FBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLEtBQUssR0FBRyxpQkFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxrQkFBVyxPQUFPLENBQUUsRUFBQyxLQUFLLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUM7SUFFRixFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRztRQUN4QixNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxVQUFVLEtBQUssRUFBRSxTQUFTO1lBQy9CLElBQUksRUFBRSxHQUFHLEtB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LFFBQVEsRUFBQyxFQUFDLFVBQVUsRUFBQyxNQUFNLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDO2dDQUM5RixRQUFRLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFBOzs7OzthQUNuRCxDQUFDO1FBQ04sQ0FBQztLQUNKLENBQUE7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsaUJBQWlCO1FBQ3BELGFBQWEsQ0FBQyxRQUFRLEdBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDOztBQUVILGlCQUFpQjtBQUNqQiw0QkFBNEI7QUFDNUIsb0JBQW9CO0FBQ3BCLDRDQUE0QztBQUM1QyxnREFBZ0Q7QUFDaEQseURBQXlEO0FBQ3pELGdDQUFnQztBQUNoQyxzQ0FBc0M7QUFDdEMsZ0NBQWdDO0FBQ2hDLDZFQUE2RTtBQUM3RSxxREFBcUQ7QUFDckQsd0NBQXdDO0FBQ3hDLHNDQUFzQztBQUN0QyxpQkFBaUI7QUFDakIsMkNBQTJDO0FBQzNDLDZDQUE2QztBQUM3Qyx1REFBdUQ7QUFDdkQsd0NBQXdDO0FBQ3hDLGdDQUFnQztBQUNoQyxpQkFBaUI7QUFDakIsbUNBQW1DO0FBQ25DLFdBQVc7QUFDWCxRQUFRO0FBQ1IsR0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aHRtbCwgSHRtbFRhZ30gZnJvbSBcImpzLXRvLWh0bWxcIjtcclxuaW1wb3J0ICogYXMgbXlPd24gZnJvbSBcIm15T3duXCI7XHJcbmltcG9ydCAqIGFzIFR5cGVkQ29udHJvbHMgZnJvbSBcInR5cGVkLWNvbnRyb2xzXCI7XHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQgeyBTVE9SQUdFX1NUQVRFX05BTUUgfSBmcm9tIFwiLi9yZWR1eC1mb3JtdWxhcmlvXCI7XHJcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbWF0ZXJpYWwtdWkvY29yZVwiO1xyXG5cclxudmFyIG15PW15T3duO1xyXG5cclxubXlPd24ud1NjcmVlbnMudGFibGVybz1mdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoaHRtbC5oMShgVGFibGVybyBkZSBjb250cm9sYCkuY3JlYXRlKCkpO1xyXG4gICAgWyd2ZW5jaWRvcycsICdwZW5kaWVudGVzJ10uZm9yRWFjaCgoZWxlbWVudDpzdHJpbmcpPT57XHJcbiAgICAgICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChodG1sLmgyKGBQZWRpZG9zICR7ZWxlbWVudH1gKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgdmFyIG15RGl2ID0gaHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgICAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKG15RGl2KTtcclxuICAgICAgICBteS50YWJsZUdyaWQoYHBlZGlkb3NfJHtlbGVtZW50fWAsbXlEaXYse30pO1xyXG4gICAgfSlcclxufTtcclxuXHJcbm15LmNsaWVudFNpZGVzLnZlckNsaWVudGUgPSB7XHJcbiAgICB1cGRhdGU6IGZhbHNlLFxyXG4gICAgcHJlcGFyZTogZnVuY3Rpb24gKGRlcG90LCBmaWVsZE5hbWUpIHtcclxuICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHZhciBib3RvbiA9IGh0bWwuYnV0dG9uKHt9LCd2ZXInKS5jcmVhdGUoKTtcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgdGQub25jbGljaz1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBkZXNwbGVnYXJDbGllbnRlKGRlcG90KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59XHJcblxyXG5mdW5jdGlvbiBjb2xvcmVhckVzdGFkbyhkZXBvdCxwZWRpZG9PcHJlc3VwdWVzdG9TdHJpbmc6J3BlZGlkbyd8J3ByZXN1cHVlc3RvJyApe1xyXG4gICAgZGVwb3Qucm93Q29udHJvbHNbJ2VzdGFkbyddLnN0eWxlLmJhY2tncm91bmRDb2xvcj1kZXBvdC5yb3dDb250cm9sc1tgZXN0YWRvc18ke3BlZGlkb09wcmVzdXB1ZXN0b1N0cmluZ31fX2NvbG9yYF0uZ2V0VHlwZWRWYWx1ZSgpO1xyXG59XHJcblxyXG5teS5jbGllbnRTaWRlcy5hY2Npb25lc1ByZXN1cHVlc3RvID0ge1xyXG4gICAgcHJlcGFyZTogKCk9Pm51bGwsXHJcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIChkZXBvdCwgZmllbGROYW1lKSB7XHJcbiAgICAgICAgbGV0IHRkID0gZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXTtcclxuICAgICAgICB0ZC5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgY29sb3JlYXJFc3RhZG8oZGVwb3QsICdwcmVzdXB1ZXN0bycpO1xyXG4gICAgICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgbGV0IGJvdG9uID0gbXkuY3JlYXRlRm9ya2VhYmxlQnV0dG9uKHttZW51VHlwZToncHJlc3VwdWVzdG8nLCBuYW1lOmBnZXN0aW9uYXIscHJlc3VwdWVzdG9gICwgbGFiZWw6XCJhYnJpclwifSwge30pO1xyXG4gICAgICAgIGJvdG9uLmhyZWYgPSBib3Rvbi5ocmVmICsgJyYnKyAncHJlc3VwdWVzdG8nKyc9JytkZXBvdC5yb3cucHJlc3VwdWVzdG8udG9TdHJpbmcoKVxyXG4gICAgICAgIHRkLmFwcGVuZENoaWxkKGJvdG9uKTtcclxuICAgICAgICBsZXQgcHVlZGVFZGl0YXJQcmVzdXB1ZXN0byA9IGRlcG90LnJvd0NvbnRyb2xzWydlc3RhZG9zX3ByZXN1cHVlc3RvX19wZXJtaXRlX2VkaXRhciddLmdldFR5cGVkVmFsdWUoKTtcclxuICAgICAgICBpZihwdWVkZUVkaXRhclByZXN1cHVlc3RvKXtcclxuICAgICAgICAgICAgbGV0IGJvdG9uID0gbXkuY3JlYXRlRm9ya2VhYmxlQnV0dG9uKHttZW51VHlwZToncGVkaWRvJywgbmFtZTonZ2VzdGlvbmFyLHBlZGlkbycsIGxhYmVsOlwiYWNlcHRhclwifSwge30pO1xyXG4gICAgICAgICAgICBib3Rvbi5ocmVmID0gYm90b24uaHJlZiArICcmcHJlc3VwdWVzdG89JytkZXBvdC5yb3dbJ3ByZXN1cHVlc3RvJ10udG9TdHJpbmcoKVxyXG4gICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwcmVzdXB1ZXN0byA9IGRlcG90LnJvd0NvbnRyb2xzWydwcmVzdXB1ZXN0byddLmdldFR5cGVkVmFsdWUoKTtcclxuICAgICAgICBbJ2FudWxhcicsICdyZWNoYXphciddLmZvckVhY2goKGFjY2lvbik9PntcclxuICAgICAgICAgICAgaWYocHVlZGVFZGl0YXJQcmVzdXB1ZXN0byl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYm90b24gPSBodG1sLmJ1dHRvbih7fSxhY2Npb24pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgYm90b24ub25jbGljayA9IGFzeW5jICgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29uZmlybVByb21pc2UoYMK/ZXN0w6EgcG9yICR7YWNjaW9ufSBlbCBwcmVzdXB1ZXN0bz8gRXN0YSBhY2Npw7NuIG5vIHNlIHBvZHLDoSBkZXNoYWNlcmApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbXkuYWpheFtgcHJlc3VwdWVzdG9fJHthY2Npb259YF0oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc3VwdWVzdG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyaWQ9ZGVwb3QubWFuYWdlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZ3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSxcclxufVxyXG5cclxubXkuY2xpZW50U2lkZXMuYWNjaW9uZXNQZWRpZG8gPSB7XHJcbiAgICBwcmVwYXJlOiAoKT0+bnVsbCxcclxuICAgIHVwZGF0ZTogZnVuY3Rpb24gKGRlcG90LCBmaWVsZE5hbWUpIHtcclxuICAgICAgICBsZXQgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHRkLmlubmVySFRNTD0nJztcclxuICAgICAgICBjb2xvcmVhckVzdGFkbyhkZXBvdCwgJ3BlZGlkbycpO1xyXG4gICAgICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgbGV0IGJvdG9uID0gbXkuY3JlYXRlRm9ya2VhYmxlQnV0dG9uKHttZW51VHlwZToncGVkaWRvJywgbmFtZTpgZ2VzdGlvbmFyLHBlZGlkb2AgLCBsYWJlbDpcImFicmlyXCJ9LCB7fSk7XHJcbiAgICAgICAgYm90b24uaHJlZiA9IGJvdG9uLmhyZWYgKyAnJicrICdwZWRpZG8nKyc9JytkZXBvdC5yb3cucGVkaWRvLnRvU3RyaW5nKClcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICB9XHJcbn1cclxuXHJcbm15T3duLndTY3JlZW5zLnByZXN1cHVlc3Rvcz1mdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIHZhciBteURpdiA9IGh0bWwuZGl2KCkuY3JlYXRlKCk7XHJcbiAgICBsZXQgYm90b24gPSBteS5jcmVhdGVGb3JrZWFibGVCdXR0b24oe21lbnVUeXBlOidwcmVzdXB1ZXN0bycsIG5hbWU6J2dlc3Rpb25hcixwcmVzdXB1ZXN0bycsIGxhYmVsOidudWV2byd9LHt9KTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoYm90b24pO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChteURpdik7XHJcbiAgICBib3Rvbi5vbmNsaWNrPWFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgbXkucmVtb3ZlU2Vzc2lvblZhcihTVE9SQUdFX1NUQVRFX05BTUUpO1xyXG4gICAgfVxyXG4gICAgbXkudGFibGVHcmlkKCdwcmVzdXB1ZXN0b3MnLG15RGl2LHt9KTtcclxufTtcclxuXHJcbm15T3duLndTY3JlZW5zLnBlZGlkb3M9ZnVuY3Rpb24oX2FkZHJQYXJhbXMpe1xyXG4gICAgdmFyIG1haW5MYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICB2YXIgbXlEaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpO1xyXG4gICAgbGV0IGJvdG9uID0gbXkuY3JlYXRlRm9ya2VhYmxlQnV0dG9uKHttZW51VHlwZToncGVkaWRvJywgbmFtZTonZ2VzdGlvbmFyLHBlZGlkbycsIGxhYmVsOidudWV2byd9LHt9KTtcclxuICAgIC8vdmFyIGJvdG9uID0gaHRtbC5idXR0b24oe30sJ251ZXZvJykuY3JlYXRlKCk7XHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKGJvdG9uKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQobXlEaXYpO1xyXG4gICAgYm90b24ub25jbGljaz1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgIG15LnJlbW92ZVNlc3Npb25WYXIoU1RPUkFHRV9TVEFURV9OQU1FKTtcclxuICAgICAgICAvL2hpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIG51bGwsIGxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZStteS5tZW51U2VwYXJhdG9yKydpPWdlc3Rpb25hcixwZWRpZG8nKTtcclxuICAgICAgICAvL215LnNob3dQYWdlKCk7XHJcbiAgICB9XHJcbiAgICBteS50YWJsZUdyaWQoJ3BlZGlkb3MnLG15RGl2LHt9KTtcclxufTtcclxuXHJcbnZhciB2YWxpZGF0ZUhleGFDb2xvcj0oc3RyaW5nOnN0cmluZyk9PiAvXiNbMC05QS1GXXs2fSQvaS50ZXN0KHN0cmluZyk7XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5wYXJzZWFyQ29sb3I9e1xyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgbXlDb2xvciA9IGRlcG90LnJvd0NvbnRyb2xzWydjb2xvciddLmdldFR5cGVkVmFsdWUoKTtcclxuICAgICAgICB2YXIgaXNWYWxpZENvbG9yPXZhbGlkYXRlSGV4YUNvbG9yKG15Q29sb3IpO1xyXG4gICAgICAgIGlmKG15Q29sb3IgJiYgIWlzVmFsaWRDb2xvcil7XHJcbiAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShcImNvbG9yIGludsOhbGlkbyFcIik7XHJcbiAgICAgICAgICAgIGRlcG90LnJvd0NvbnRyb2xzWydjb2xvciddLnNldFR5cGVkVmFsdWUobnVsbCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBjb2xvcklucHV0ID0gaHRtbC5pbnB1dCh7dHlwZTpcImNvbG9yXCIsIHZhbHVlOmlzVmFsaWRDb2xvcj9teUNvbG9yOicjZmZmZmZmJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgIGNvbG9ySW5wdXQub25jaGFuZ2U9KCk9PntcclxuICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbJ2NvbG9yJ10uc2V0VHlwZWRWYWx1ZShjb2xvcklucHV0LnZhbHVlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXS5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXS5hcHBlbmRDaGlsZChjb2xvcklucHV0KTtcclxuICAgIH0sXHJcbiAgICBwcmVwYXJlOiAoZGVwb3QsIGZpZWxkTmFtZSk9Pnt9XHJcbn1cclxuXHJcbm15LmNsaWVudFNpZGVzLmNsb25hclByb2R1Y3RvID0ge1xyXG4gICAgdXBkYXRlOiBmYWxzZSxcclxuICAgIHByZXBhcmU6IGZ1bmN0aW9uIChkZXBvdCwgZmllbGROYW1lKSB7XHJcbiAgICAgICAgdmFyIHtwcm9kdWN0bywgbm9tYnJlfSA9IGRlcG90LnJvdztcclxuICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHZhciBib3RvbiA9IGh0bWwuYnV0dG9uKHt9LCdjbG9uYXInKS5jcmVhdGUoKTtcclxuICAgICAgICB0ZC5hcHBlbmRDaGlsZChib3Rvbik7XHJcbiAgICAgICAgdGQub25jbGljaz1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICBhd2FpdCBjb25maXJtUHJvbWlzZShgY29uZmlybWEgY2xvbmFkbyBkZSBwcm9kdWN0byAoJHtwcm9kdWN0b30pIFwiJHtub21icmV9XCI/YCk7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBteS5hamF4LnByb2R1Y3RvX2Nsb25hcih7XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0byxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHZhciBuZXdEZXBvdCA9IGRlcG90Lm1hbmFnZXIuY3JlYXRlUm93SW5zZXJ0RWxlbWVudHMoZGVwb3QpO1xyXG4gICAgICAgICAgICBuZXdEZXBvdC5tYW5hZ2VyLmRlcG90UmVmcmVzaChuZXdEZXBvdCx7dXBkYXRlZFJvdzpyZXN1bHQucHJvZHVjdG9OdWV2bywgc2VuZGVkRm9yVXBkYXRlOnt9fSk7XHJcbiAgICAgICAgICAgIG5ld0RlcG90Lm1hbmFnZXIucmV0cmlldmVSb3dBbmRSZWZyZXNoKG5ld0RlcG90KSAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbn1cclxuXHJcbm15T3duLmF1dG9TZXR1cEZ1bmN0aW9ucy5wdXNoKGZ1bmN0aW9uIGF1dG9TZXR1cE15VGFibGVzKCl7XHJcbiAgICBUeXBlZENvbnRyb2xzLnNob3dMdXBhPWZhbHNlO1xyXG59KTtcclxuXHJcbi8vRUpFTVBMTyBHVUFSREFSXHJcbi8vbXkuY2xpZW50U2lkZXMuZ3VhcmRhciA9IHtcclxuLy8gICAgdXBkYXRlOiBmYWxzZSxcclxuLy8gICAgcHJlcGFyZTogZnVuY3Rpb24gKGRlcG90LCBmaWVsZE5hbWUpIHtcclxuLy8gICAgICAgIHZhciB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbi8vICAgICAgICB2YXIgYm90b24gPSBodG1sLmJ1dHRvbih7fSwnZ3VhcmRhcicpLmNyZWF0ZSgpO1xyXG4vLyAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYm90b24pO1xyXG4vLyAgICAgICAgdGQub25jbGljaz1hc3luYyBmdW5jdGlvbigpe1xyXG4vLyAgICAgICAgICAgIHZhciBwa1ZhbHVlcyA9IHt9O1xyXG4vLyAgICAgICAgICAgIHBrVmFsdWVzWydjb2RpZ28nXT1kZXBvdC5yb3dDb250cm9sc1snY29kaWdvJ10uZ2V0VHlwZWRWYWx1ZSgpO1xyXG4vLyAgICAgICAgICAgIHZhciByZXN1bHQgPSBhd2FpdCBteS5hamF4Lm9iamVjdF9nZXQoe1xyXG4vLyAgICAgICAgICAgICAgICB0YWJsZW5hbWU6ICdjbGllbnRlcycsXHJcbi8vICAgICAgICAgICAgICAgIHBrX3ZhbHVlczogcGtWYWx1ZXMsXHJcbi8vICAgICAgICAgICAgfSk7XHJcbi8vICAgICAgICAgICAgcmVzdWx0LmN1aXRfZG5pID0gJzEyMzQ1Njc4JztcclxuLy8gICAgICAgICAgICByZXN1bHQubWFpbCA9ICdtYW51ZWxAMTIzLmNvbSc7XHJcbi8vICAgICAgICAgICAgdmFyIHJlc3VsdDIgPSBhd2FpdCBteS5hamF4Lm9iamVjdF9zYXZlKHtcclxuLy8gICAgICAgICAgICAgICAgdGFibGVuYW1lOiAnY2xpZW50ZXMnLFxyXG4vLyAgICAgICAgICAgICAgICBkYXRvczogcmVzdWx0LFxyXG4vLyAgICAgICAgICAgIH0pO1xyXG4vLyAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3VsdDIpO1xyXG4vLyAgICAgICAgfVxyXG4vLyAgICB9LFxyXG4vL30iXX0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ // ver client.ts
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdmVyIGNsaWVudC50cyJdfQ==