@saltcorn/data 0.6.3-beta.1 → 0.6.4-beta.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.
- package/dist/base-plugin/index.d.ts +121 -104
- package/dist/base-plugin/index.d.ts.map +1 -1
- package/dist/base-plugin/types.d.ts +105 -85
- package/dist/base-plugin/types.d.ts.map +1 -1
- package/dist/base-plugin/types.js +38 -9
- package/dist/base-plugin/types.js.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.d.ts +3 -3
- package/dist/base-plugin/viewtemplates/edit.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/edit.js +28 -5
- package/dist/base-plugin/viewtemplates/edit.js.map +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts +1 -1
- package/dist/base-plugin/viewtemplates/list.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/list.js +8 -1
- package/dist/base-plugin/viewtemplates/list.js.map +1 -1
- package/dist/base-plugin/viewtemplates/show.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/show.js +6 -5
- package/dist/base-plugin/viewtemplates/show.js.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.d.ts.map +1 -1
- package/dist/base-plugin/viewtemplates/viewable_fields.js +12 -12
- package/dist/base-plugin/viewtemplates/viewable_fields.js.map +1 -1
- package/dist/contracts.js +1 -1
- package/dist/contracts.js.map +1 -1
- package/dist/db/connect.d.ts.map +1 -1
- package/dist/db/connect.js +9 -2
- package/dist/db/connect.js.map +1 -1
- package/dist/db/state.d.ts +1 -0
- package/dist/db/state.d.ts.map +1 -1
- package/dist/db/state.js +9 -0
- package/dist/db/state.js.map +1 -1
- package/dist/models/backup.d.ts +1 -1
- package/dist/models/backup.d.ts.map +1 -1
- package/dist/models/backup.js +2 -0
- package/dist/models/backup.js.map +1 -1
- package/dist/models/config.d.ts +39 -179
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +77 -50
- package/dist/models/config.js.map +1 -1
- package/dist/models/crash.d.ts +40 -47
- package/dist/models/crash.d.ts.map +1 -1
- package/dist/models/crash.js +40 -39
- package/dist/models/crash.js.map +1 -1
- package/dist/models/discovery.d.ts +17 -25
- package/dist/models/discovery.d.ts.map +1 -1
- package/dist/models/discovery.js +38 -26
- package/dist/models/discovery.js.map +1 -1
- package/dist/models/email.d.ts +11 -13
- package/dist/models/email.d.ts.map +1 -1
- package/dist/models/email.js +19 -15
- package/dist/models/email.js.map +1 -1
- package/dist/models/eventlog.d.ts +1 -1
- package/dist/models/eventlog.d.ts.map +1 -1
- package/dist/models/eventlog.js.map +1 -1
- package/dist/models/expression.d.ts +39 -31
- package/dist/models/expression.d.ts.map +1 -1
- package/dist/models/expression.js +44 -29
- package/dist/models/expression.js.map +1 -1
- package/dist/models/field.d.ts +12 -47
- package/dist/models/field.d.ts.map +1 -1
- package/dist/models/field.js +3 -3
- package/dist/models/field.js.map +1 -1
- package/dist/models/fieldrepeat.d.ts +3 -0
- package/dist/models/fieldrepeat.d.ts.map +1 -1
- package/dist/models/fieldrepeat.js +2 -0
- package/dist/models/fieldrepeat.js.map +1 -1
- package/dist/models/file.d.ts +56 -58
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/file.js +25 -52
- package/dist/models/file.js.map +1 -1
- package/dist/models/index.d.ts +39 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/layout.d.ts +16 -31
- package/dist/models/layout.d.ts.map +1 -1
- package/dist/models/layout.js +2 -4
- package/dist/models/layout.js.map +1 -1
- package/dist/models/library.d.ts +2 -10
- package/dist/models/library.d.ts.map +1 -1
- package/dist/models/library.js.map +1 -1
- package/dist/models/pack.d.ts +40 -87
- package/dist/models/pack.d.ts.map +1 -1
- package/dist/models/pack.js +118 -89
- package/dist/models/pack.js.map +1 -1
- package/dist/models/page.d.ts +22 -47
- package/dist/models/page.d.ts.map +1 -1
- package/dist/models/page.js +19 -41
- package/dist/models/page.js.map +1 -1
- package/dist/models/plugin.d.ts +41 -65
- package/dist/models/plugin.d.ts.map +1 -1
- package/dist/models/plugin.js +17 -39
- package/dist/models/plugin.js.map +1 -1
- package/dist/models/random.d.ts +18 -21
- package/dist/models/random.d.ts.map +1 -1
- package/dist/models/random.js +31 -29
- package/dist/models/random.js.map +1 -1
- package/dist/models/role.d.ts +3 -9
- package/dist/models/role.d.ts.map +1 -1
- package/dist/models/role.js.map +1 -1
- package/dist/models/scheduler.d.ts +8 -8
- package/dist/models/scheduler.d.ts.map +1 -1
- package/dist/models/scheduler.js +17 -14
- package/dist/models/scheduler.js.map +1 -1
- package/dist/models/table.d.ts +12 -23
- package/dist/models/table.d.ts.map +1 -1
- package/dist/models/table.js +44 -22
- package/dist/models/table.js.map +1 -1
- package/dist/models/table_constraints.d.ts +44 -39
- package/dist/models/table_constraints.d.ts.map +1 -1
- package/dist/models/table_constraints.js +17 -33
- package/dist/models/table_constraints.js.map +1 -1
- package/dist/models/tenant.d.ts +16 -60
- package/dist/models/tenant.d.ts.map +1 -1
- package/dist/models/tenant.js +52 -30
- package/dist/models/tenant.js.map +1 -1
- package/dist/models/trigger.d.ts +2 -17
- package/dist/models/trigger.d.ts.map +1 -1
- package/dist/models/trigger.js +2 -2
- package/dist/models/trigger.js.map +1 -1
- package/dist/models/user.d.ts +110 -142
- package/dist/models/user.d.ts.map +1 -1
- package/dist/models/user.js +51 -71
- package/dist/models/user.js.map +1 -1
- package/dist/models/view.d.ts +7 -21
- package/dist/models/view.d.ts.map +1 -1
- package/dist/models/view.js +1 -3
- package/dist/models/view.js.map +1 -1
- package/dist/models/workflow.d.ts +4 -4
- package/dist/models/workflow.d.ts.map +1 -1
- package/dist/models/workflow.js.map +1 -1
- package/dist/plugin-helper.d.ts.map +1 -1
- package/dist/plugin-helper.js +3 -2
- package/dist/plugin-helper.js.map +1 -1
- package/dist/tests/actions.test.d.ts.map +1 -1
- package/dist/tests/actions.test.js +102 -82
- package/dist/tests/actions.test.js.map +1 -1
- package/dist/tests/assertions.d.ts +13 -0
- package/dist/tests/assertions.d.ts.map +1 -0
- package/dist/tests/assertions.js +35 -0
- package/dist/tests/assertions.js.map +1 -0
- package/dist/tests/auxtest.test.d.ts.map +1 -1
- package/dist/tests/auxtest.test.js +33 -29
- package/dist/tests/auxtest.test.js.map +1 -1
- package/dist/tests/backup.test.d.ts.map +1 -1
- package/dist/tests/backup.test.js +62 -49
- package/dist/tests/backup.test.js.map +1 -1
- package/dist/tests/calc.test.d.ts.map +1 -1
- package/dist/tests/calc.test.js +106 -88
- package/dist/tests/calc.test.js.map +1 -1
- package/dist/tests/config.test.d.ts.map +1 -1
- package/dist/tests/config.test.js +39 -36
- package/dist/tests/config.test.js.map +1 -1
- package/dist/tests/discover.test.d.ts.map +1 -1
- package/dist/tests/discover.test.js +23 -17
- package/dist/tests/discover.test.js.map +1 -1
- package/dist/tests/exact_views.test.d.ts.map +1 -1
- package/dist/tests/exact_views.test.js +66 -25
- package/dist/tests/exact_views.test.js.map +1 -1
- package/dist/tests/field.test.d.ts.map +1 -1
- package/dist/tests/field.test.js +104 -93
- package/dist/tests/field.test.js.map +1 -1
- package/dist/tests/form.test.d.ts.map +1 -1
- package/dist/tests/form.test.js +71 -63
- package/dist/tests/form.test.js.map +1 -1
- package/dist/tests/mocks.d.ts +101 -105
- package/dist/tests/mocks.d.ts.map +1 -1
- package/dist/tests/mocks.js +19 -14
- package/dist/tests/mocks.js.map +1 -1
- package/dist/tests/models.test.d.ts.map +1 -1
- package/dist/tests/models.test.js +95 -80
- package/dist/tests/models.test.js.map +1 -1
- package/dist/tests/pack.test.d.ts.map +1 -1
- package/dist/tests/pack.test.js +54 -47
- package/dist/tests/pack.test.js.map +1 -1
- package/dist/tests/plugin.test.d.ts.map +1 -1
- package/dist/tests/plugin.test.js +31 -24
- package/dist/tests/plugin.test.js.map +1 -1
- package/dist/tests/random.test.d.ts.map +1 -1
- package/dist/tests/random.test.js +61 -50
- package/dist/tests/random.test.js.map +1 -1
- package/dist/tests/table.test.d.ts.map +1 -1
- package/dist/tests/table.test.js +557 -436
- package/dist/tests/table.test.js.map +1 -1
- package/dist/tests/tenant.test.d.ts.map +1 -1
- package/dist/tests/tenant.test.js +30 -23
- package/dist/tests/tenant.test.js.map +1 -1
- package/dist/tests/user.test.d.ts.map +1 -1
- package/dist/tests/user.test.js +128 -100
- package/dist/tests/user.test.js.map +1 -1
- package/dist/tests/view.test.d.ts.map +1 -1
- package/dist/tests/view.test.js +109 -85
- package/dist/tests/view.test.js.map +1 -1
- package/dist/tests/workflow.test.d.ts.map +1 -1
- package/dist/tests/workflow.test.js +40 -29
- package/dist/tests/workflow.test.js.map +1 -1
- package/dist/tsconfig.ref.tsbuildinfo +1 -1
- package/package.json +21 -8
- package/dist/coverage/lcov-report/block-navigation.d.ts +0 -2
- package/dist/coverage/lcov-report/block-navigation.d.ts.map +0 -1
- package/dist/coverage/lcov-report/block-navigation.js +0 -66
- package/dist/coverage/lcov-report/block-navigation.js.map +0 -1
- package/dist/coverage/lcov-report/prettify.d.ts +0 -1
- package/dist/coverage/lcov-report/prettify.d.ts.map +0 -1
- package/dist/coverage/lcov-report/prettify.js +0 -478
- package/dist/coverage/lcov-report/prettify.js.map +0 -1
- package/dist/coverage/lcov-report/sorter.d.ts +0 -2
- package/dist/coverage/lcov-report/sorter.d.ts.map +0 -1
- package/dist/coverage/lcov-report/sorter.js +0 -141
- package/dist/coverage/lcov-report/sorter.js.map +0 -1
package/dist/models/crash.d.ts
CHANGED
|
@@ -1,74 +1,67 @@
|
|
|
1
|
-
|
|
1
|
+
import type { SelectOptions, Where } from "@saltcorn/db-common/internal";
|
|
2
2
|
/**
|
|
3
3
|
* Crash Class
|
|
4
4
|
* @category saltcorn-data
|
|
5
5
|
*/
|
|
6
6
|
declare class Crash {
|
|
7
|
+
id?: number;
|
|
8
|
+
user_id?: number;
|
|
9
|
+
stack: string;
|
|
10
|
+
message: string;
|
|
11
|
+
tenant: string;
|
|
12
|
+
url: string;
|
|
13
|
+
occur_at: Date;
|
|
14
|
+
headers: any;
|
|
15
|
+
body?: any;
|
|
16
|
+
/**
|
|
17
|
+
* Crash constructor
|
|
18
|
+
* @param {object} o
|
|
19
|
+
*/
|
|
20
|
+
constructor(o: CrashCfg);
|
|
7
21
|
/**
|
|
8
22
|
* @param {object} where
|
|
9
23
|
* @param {object} selopts
|
|
10
24
|
* @returns {Promise<Crash[]>}
|
|
11
25
|
*/
|
|
12
|
-
static find(where
|
|
26
|
+
static find(where?: Where, selopts?: SelectOptions): Promise<Array<Crash>>;
|
|
13
27
|
/**
|
|
14
28
|
* @param {object} where
|
|
15
29
|
* @returns {Promise<Crash>}
|
|
16
30
|
*/
|
|
17
|
-
static findOne(where:
|
|
31
|
+
static findOne(where: Where): Promise<Crash>;
|
|
18
32
|
/**
|
|
19
|
-
* @
|
|
20
|
-
* @returns {Promise<number>}
|
|
33
|
+
* @type {string}
|
|
21
34
|
*/
|
|
22
|
-
|
|
35
|
+
get reltime(): string;
|
|
23
36
|
/**
|
|
24
|
-
* @param {object}
|
|
25
|
-
* @
|
|
26
|
-
* @returns {Promise<void>}
|
|
37
|
+
* @param {object} where
|
|
38
|
+
* @returns {Promise<number>}
|
|
27
39
|
*/
|
|
28
|
-
static
|
|
29
|
-
/**
|
|
30
|
-
* Crash constructor
|
|
31
|
-
* @param {object} o
|
|
32
|
-
*/
|
|
33
|
-
constructor(o: object);
|
|
34
|
-
id: any;
|
|
35
|
-
stack: any;
|
|
36
|
-
message: any;
|
|
37
|
-
occur_at: any;
|
|
38
|
-
tenant: any;
|
|
39
|
-
user_id: any;
|
|
40
|
-
body: any;
|
|
41
|
-
url: any;
|
|
42
|
-
headers: any;
|
|
40
|
+
static count(where: Where): Promise<number>;
|
|
43
41
|
/**
|
|
44
42
|
* @type {string}
|
|
45
43
|
*/
|
|
46
|
-
get
|
|
44
|
+
get msg_short(): string;
|
|
47
45
|
/**
|
|
48
|
-
* @
|
|
46
|
+
* @param {object} err
|
|
47
|
+
* @param {object} [req = {}]
|
|
48
|
+
* @returns {Promise<void>}
|
|
49
49
|
*/
|
|
50
|
-
|
|
50
|
+
static create(err: any, req?: any): Promise<void>;
|
|
51
51
|
}
|
|
52
52
|
declare namespace Crash {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
namespace methods {
|
|
65
|
-
const reltime: any;
|
|
66
|
-
}
|
|
67
|
-
namespace static_methods {
|
|
68
|
-
const find: any;
|
|
69
|
-
const findOne: any;
|
|
70
|
-
const create: any;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
53
|
+
type CrashCfg = {
|
|
54
|
+
id?: number;
|
|
55
|
+
user_id?: number;
|
|
56
|
+
stack: string;
|
|
57
|
+
message: string;
|
|
58
|
+
tenant: string;
|
|
59
|
+
url: string;
|
|
60
|
+
occur_at: number | string | Date;
|
|
61
|
+
headers: string | any;
|
|
62
|
+
body?: any;
|
|
63
|
+
};
|
|
73
64
|
}
|
|
65
|
+
declare type CrashCfg = Crash.CrashCfg;
|
|
66
|
+
export = Crash;
|
|
74
67
|
//# sourceMappingURL=crash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crash.d.ts","sourceRoot":"","sources":["../../models/crash.
|
|
1
|
+
{"version":3,"file":"crash.d.ts","sourceRoot":"","sources":["../../models/crash.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAEzE;;;GAGG;AACH,cAAM,KAAK;IACT,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX;;;OAGG;gBACS,CAAC,EAAE,QAAQ;IAgBvB;;;;OAIG;WACU,IAAI,CACf,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAKxB;;;OAGG;WACU,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAKlD;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;OAGG;WACU,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjD;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAItB;IAED;;;;OAIG;WACU,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAE,GAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAmB5D;AAED,kBAAU,KAAK,CAAC;IACd,KAAY,QAAQ,GAAG;QACrB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QACjC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;CACH;AACD,aAAK,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAE/B,SAAS,KAAK,CAAC"}
|
package/dist/models/crash.js
CHANGED
|
@@ -1,44 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
+
};
|
|
2
24
|
/**
|
|
3
25
|
* Crash Database Access Layer
|
|
4
26
|
* @category saltcorn-data
|
|
5
27
|
* @module models/crash
|
|
6
28
|
* @subcategory models
|
|
7
29
|
*/
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const { contract, is } = require("contractis");
|
|
30
|
+
const db_1 = __importDefault(require("../db"));
|
|
31
|
+
const moment_1 = __importDefault(require("moment"));
|
|
11
32
|
/**
|
|
12
33
|
* Crash Class
|
|
13
34
|
* @category saltcorn-data
|
|
14
35
|
*/
|
|
15
36
|
class Crash {
|
|
16
37
|
/**
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
38
|
+
* Crash constructor
|
|
39
|
+
* @param {object} o
|
|
40
|
+
*/
|
|
20
41
|
constructor(o) {
|
|
21
42
|
this.id = o.id;
|
|
22
43
|
this.stack = o.stack;
|
|
23
44
|
this.message = o.message;
|
|
24
|
-
this.occur_at =
|
|
25
|
-
|
|
26
|
-
|
|
45
|
+
this.occur_at =
|
|
46
|
+
typeof o.occur_at === "string" || typeof o.occur_at === "number"
|
|
47
|
+
? new Date(o.occur_at)
|
|
48
|
+
: o.occur_at;
|
|
27
49
|
this.tenant = o.tenant;
|
|
28
50
|
this.user_id = o.user_id;
|
|
29
51
|
this.body = o.body;
|
|
30
52
|
this.url = o.url;
|
|
31
53
|
this.headers =
|
|
32
54
|
typeof o.headers === "string" ? JSON.parse(o.headers) : o.headers;
|
|
33
|
-
contract.class(this);
|
|
34
55
|
}
|
|
35
56
|
/**
|
|
36
57
|
* @param {object} where
|
|
37
58
|
* @param {object} selopts
|
|
38
59
|
* @returns {Promise<Crash[]>}
|
|
39
60
|
*/
|
|
40
|
-
static async find(where, selopts) {
|
|
41
|
-
const us = await
|
|
61
|
+
static async find(where, selopts = {}) {
|
|
62
|
+
const us = await db_1.default.select("_sc_errors", where, selopts);
|
|
42
63
|
return us.map((u) => new Crash(u));
|
|
43
64
|
}
|
|
44
65
|
/**
|
|
@@ -46,21 +67,21 @@ class Crash {
|
|
|
46
67
|
* @returns {Promise<Crash>}
|
|
47
68
|
*/
|
|
48
69
|
static async findOne(where) {
|
|
49
|
-
const u = await
|
|
70
|
+
const u = await db_1.default.selectOne("_sc_errors", where);
|
|
50
71
|
return new Crash(u);
|
|
51
72
|
}
|
|
52
73
|
/**
|
|
53
74
|
* @type {string}
|
|
54
75
|
*/
|
|
55
76
|
get reltime() {
|
|
56
|
-
return
|
|
77
|
+
return (0, moment_1.default)(this.occur_at).fromNow();
|
|
57
78
|
}
|
|
58
79
|
/**
|
|
59
80
|
* @param {object} where
|
|
60
81
|
* @returns {Promise<number>}
|
|
61
82
|
*/
|
|
62
83
|
static async count(where) {
|
|
63
|
-
return await
|
|
84
|
+
return await db_1.default.count("_sc_errors", where || {});
|
|
64
85
|
}
|
|
65
86
|
/**
|
|
66
87
|
* @type {string}
|
|
@@ -76,7 +97,7 @@ class Crash {
|
|
|
76
97
|
* @returns {Promise<void>}
|
|
77
98
|
*/
|
|
78
99
|
static async create(err, req = {}) {
|
|
79
|
-
const schema =
|
|
100
|
+
const schema = db_1.default.getTenantSchema();
|
|
80
101
|
const payload = {
|
|
81
102
|
stack: err.stack,
|
|
82
103
|
message: err.message,
|
|
@@ -87,32 +108,12 @@ class Crash {
|
|
|
87
108
|
url: req.url,
|
|
88
109
|
headers: req.headers,
|
|
89
110
|
};
|
|
90
|
-
await
|
|
91
|
-
await
|
|
111
|
+
await db_1.default.runWithTenant(db_1.default.connectObj.default_schema, async () => {
|
|
112
|
+
await db_1.default.insert("_sc_errors", payload);
|
|
92
113
|
});
|
|
93
|
-
const Trigger = require("./trigger");
|
|
114
|
+
const Trigger = (await Promise.resolve().then(() => __importStar(require("./trigger")))).default;
|
|
94
115
|
Trigger.emitEvent("Error", null, req.user, payload);
|
|
95
116
|
}
|
|
96
117
|
}
|
|
97
|
-
Crash.contract = {
|
|
98
|
-
variables: {
|
|
99
|
-
id: is.maybe(is.posint),
|
|
100
|
-
user_id: is.maybe(is.posint),
|
|
101
|
-
stack: is.str,
|
|
102
|
-
message: is.str,
|
|
103
|
-
tenant: is.str,
|
|
104
|
-
url: is.str,
|
|
105
|
-
occur_at: is.class("Date"),
|
|
106
|
-
headers: is.obj(),
|
|
107
|
-
},
|
|
108
|
-
methods: {
|
|
109
|
-
reltime: is.getter(is.str),
|
|
110
|
-
},
|
|
111
|
-
static_methods: {
|
|
112
|
-
find: is.fun(is.obj(), is.promise(is.array(is.class("Crash")))),
|
|
113
|
-
findOne: is.fun(is.obj(), is.promise(is.class("Crash"))),
|
|
114
|
-
create: is.fun([is.obj(), is.obj()], is.promise(is.any)),
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
118
|
module.exports = Crash;
|
|
118
119
|
//# sourceMappingURL=crash.js.map
|
package/dist/models/crash.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crash.js","sourceRoot":"","sources":["../../models/crash.
|
|
1
|
+
{"version":3,"file":"crash.js","sourceRoot":"","sources":["../../models/crash.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,+CAAuB;AACvB,oDAA4B;AAG5B;;;GAGG;AACH,MAAM,KAAK;IAWT;;;OAGG;IACH,YAAY,CAAW;QACrB,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QACzB,IAAI,CAAC,QAAQ;YACX,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBAC9D,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACtB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;QACjB,IAAI,CAAC,OAAO;YACV,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CACf,KAAa,EACb,UAAyB,EAAE;QAE3B,MAAM,EAAE,GAAG,MAAM,YAAE,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAY;QAC/B,MAAM,CAAC,GAAG,MAAM,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAA,gBAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAY;QAC7B,OAAO,MAAM,YAAE,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;YAC7B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,MAAW,EAAE;QACzC,MAAM,MAAM,GAAG,YAAE,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;YACtC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;YAC1C,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;QACF,MAAM,YAAE,CAAC,aAAa,CAAC,YAAE,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,YAAE,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,wDAAa,WAAW,GAAC,CAAC,CAAC,OAAO,CAAC;QAEpD,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF;AAiBD,iBAAS,KAAK,CAAC"}
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* @
|
|
6
|
-
* @returns {Promise<object[]>} all tables that can be imported to Saltcorn from current tenant database schema
|
|
2
|
+
* DB Tables discovery to Saltcorn tables.
|
|
3
|
+
* @category saltcorn-data
|
|
4
|
+
* @module models/discovery
|
|
5
|
+
* @subcategory models
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export function implement_discovery(pack: object): Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* List all views in current tenant db schema
|
|
24
|
-
* @param {string} schema0 - current tenant db schema
|
|
25
|
-
* @returns {Promise<object[]>} Return list of views
|
|
26
|
-
*/
|
|
27
|
-
export function get_existing_views(schema0: string): Promise<object[]>;
|
|
7
|
+
import { Row } from "@saltcorn/db-common/internal";
|
|
8
|
+
import { TablePack } from "@saltcorn/types/model-abstracts/abstract_table";
|
|
9
|
+
declare const _default: {
|
|
10
|
+
discoverable_tables: (schema0?: string | undefined) => Promise<Row[]>;
|
|
11
|
+
discover_tables: (tableNames: string[], schema0?: string | undefined) => Promise<{
|
|
12
|
+
tables: TablePack[];
|
|
13
|
+
}>;
|
|
14
|
+
implement_discovery: (pack: {
|
|
15
|
+
tables: TablePack[];
|
|
16
|
+
}) => Promise<void>;
|
|
17
|
+
get_existing_views: (schema0?: string | undefined) => Promise<Row[]>;
|
|
18
|
+
};
|
|
19
|
+
export = _default;
|
|
28
20
|
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../models/discovery.
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../models/discovery.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;;;;;;;;;;;AA8M3E,kBAKE"}
|
package/dist/models/discovery.js
CHANGED
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
* @module models/discovery
|
|
6
6
|
* @subcategory models
|
|
7
7
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
const db_1 = __importDefault(require("../db"));
|
|
12
|
+
const state_1 = __importDefault(require("../db/state"));
|
|
13
|
+
const { getState } = state_1.default;
|
|
14
|
+
const table_1 = __importDefault(require("./table"));
|
|
12
15
|
// create table discmetable(id serial primary key, name text, age integer not null); ALTER TABLE discmetable OWNER TO tomn;
|
|
13
16
|
/**
|
|
14
17
|
* List of discoverable tables.
|
|
@@ -18,9 +21,9 @@ const Table = require("./table");
|
|
|
18
21
|
* @returns {Promise<object[]>} all tables that can be imported to Saltcorn from current tenant database schema
|
|
19
22
|
*/
|
|
20
23
|
const discoverable_tables = async (schema0) => {
|
|
21
|
-
const schema = schema0 ||
|
|
22
|
-
const { rows
|
|
23
|
-
const myTables = await
|
|
24
|
+
const schema = schema0 || db_1.default.getTenantSchema();
|
|
25
|
+
const { rows } = await db_1.default.query("select * from information_schema.tables where table_schema=$1 order by table_name", [schema]);
|
|
26
|
+
const myTables = await table_1.default.find({});
|
|
24
27
|
const myTableNames = myTables.map((t) => t.name);
|
|
25
28
|
const discoverable = rows.filter((t) => !(myTableNames.includes(t.table_name) || t.table_name.startsWith("_sc_")));
|
|
26
29
|
return discoverable;
|
|
@@ -31,8 +34,8 @@ const discoverable_tables = async (schema0) => {
|
|
|
31
34
|
* @returns {Promise<object[]>} Return list of views
|
|
32
35
|
*/
|
|
33
36
|
const get_existing_views = async (schema0) => {
|
|
34
|
-
const schema = schema0 ||
|
|
35
|
-
const { rows
|
|
37
|
+
const schema = schema0 || db_1.default.getTenantSchema();
|
|
38
|
+
const { rows } = await db_1.default.query("select * from information_schema.views where table_schema=$1", [schema]);
|
|
36
39
|
return rows;
|
|
37
40
|
};
|
|
38
41
|
/**
|
|
@@ -49,7 +52,7 @@ const findType = (sql_name) => {
|
|
|
49
52
|
character: "String",
|
|
50
53
|
"character varying": "String",
|
|
51
54
|
//varchar: "String",
|
|
52
|
-
date: "Date"
|
|
55
|
+
date: "Date",
|
|
53
56
|
// TBD Implement time type in Saltcorn
|
|
54
57
|
// "time without time zone": "Date",
|
|
55
58
|
// TBD Implement timestamp type in Saltcorn
|
|
@@ -71,10 +74,10 @@ const findType = (sql_name) => {
|
|
|
71
74
|
* @returns {Promise<object>}
|
|
72
75
|
*/
|
|
73
76
|
const discover_tables = async (tableNames, schema0) => {
|
|
74
|
-
const schema = schema0 ||
|
|
75
|
-
const packTables =
|
|
77
|
+
const schema = schema0 || db_1.default.getTenantSchema();
|
|
78
|
+
const packTables = new Array();
|
|
76
79
|
for (const tnm of tableNames) {
|
|
77
|
-
const { rows
|
|
80
|
+
const { rows } = await db_1.default.query("select * from information_schema.columns where table_schema=$1 and table_name=$2", [schema, tnm]);
|
|
78
81
|
// TBD add logic about column length, scale, etc
|
|
79
82
|
const fields = rows
|
|
80
83
|
.map((c) => ({
|
|
@@ -85,7 +88,7 @@ const discover_tables = async (tableNames, schema0) => {
|
|
|
85
88
|
}))
|
|
86
89
|
.filter((f) => f.type);
|
|
87
90
|
// try to find column name for primary key of table
|
|
88
|
-
const pkq = await
|
|
91
|
+
const pkq = await db_1.default.query(`SELECT c.column_name
|
|
89
92
|
FROM information_schema.table_constraints tc
|
|
90
93
|
JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_name)
|
|
91
94
|
JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema
|
|
@@ -98,7 +101,7 @@ const discover_tables = async (tableNames, schema0) => {
|
|
|
98
101
|
field.is_unique = true;
|
|
99
102
|
});
|
|
100
103
|
// try to find foreign keys
|
|
101
|
-
const fkq = await
|
|
104
|
+
const fkq = await db_1.default.query(`SELECT
|
|
102
105
|
tc.table_schema,
|
|
103
106
|
tc.constraint_name,
|
|
104
107
|
tc.table_name,
|
|
@@ -116,7 +119,7 @@ const discover_tables = async (tableNames, schema0) => {
|
|
|
116
119
|
AND ccu.table_schema = tc.table_schema
|
|
117
120
|
WHERE tc.constraint_type = 'FOREIGN KEY' and tc.table_schema=$1 AND tc.table_name=$2;`, [schema, tnm]);
|
|
118
121
|
// construct foreign key relations
|
|
119
|
-
fkq.rows.forEach(({ column_name, foreign_table_name, foreign_column_name }) => {
|
|
122
|
+
fkq.rows.forEach(({ column_name, foreign_table_name, foreign_column_name, }) => {
|
|
120
123
|
const field = fields.find((f) => f.name === column_name);
|
|
121
124
|
field.type = "Key";
|
|
122
125
|
field.reftable_name = foreign_table_name;
|
|
@@ -125,13 +128,20 @@ const discover_tables = async (tableNames, schema0) => {
|
|
|
125
128
|
packTables.push({ name: tnm, fields, min_role_read: 1, min_role_write: 1 });
|
|
126
129
|
}
|
|
127
130
|
packTables.forEach((t) => {
|
|
128
|
-
t.fields
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
t.fields &&
|
|
132
|
+
t.fields.forEach((f) => {
|
|
133
|
+
if (f.type === "Key") {
|
|
134
|
+
const reftable = packTables.find((reft) => reft.name === f.reftable_name);
|
|
135
|
+
if (!reftable)
|
|
136
|
+
throw new Error(`Unable to find table '${f.reftable_name}'`);
|
|
137
|
+
if (!reftable.fields)
|
|
138
|
+
throw new Error(`The table '${f.reftable_name}' has no fields`);
|
|
139
|
+
const refpk = reftable.fields.find((rtf) => rtf.primary_key);
|
|
140
|
+
if (!refpk)
|
|
141
|
+
throw new Error(`The table '${f.reftable_name}' has no primary key`);
|
|
142
|
+
f.reftype = refpk.type;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
135
145
|
});
|
|
136
146
|
return { tables: packTables };
|
|
137
147
|
};
|
|
@@ -143,12 +153,14 @@ const discover_tables = async (tableNames, schema0) => {
|
|
|
143
153
|
const implement_discovery = async (pack) => {
|
|
144
154
|
for (const table of pack.tables) {
|
|
145
155
|
const { fields, ...tblRow } = table;
|
|
146
|
-
const id = await
|
|
156
|
+
const id = await db_1.default.insert("_sc_tables", tblRow);
|
|
147
157
|
table.id = id;
|
|
148
158
|
}
|
|
149
159
|
for (const table of pack.tables) {
|
|
150
|
-
|
|
151
|
-
|
|
160
|
+
if (table.fields) {
|
|
161
|
+
for (const field of table.fields) {
|
|
162
|
+
await db_1.default.insert("_sc_fields", { ...field, table_id: table.id });
|
|
163
|
+
}
|
|
152
164
|
}
|
|
153
165
|
}
|
|
154
166
|
// refresh Saltcorn table list (in memory)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../models/discovery.
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../models/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/models/email.d.ts
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
2
|
+
* @category saltcorn-data
|
|
3
|
+
* @module models/email
|
|
4
|
+
* @subcategory models
|
|
3
5
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* @param {object} [req]
|
|
13
|
-
* @returns {Promise<object>}
|
|
14
|
-
*/
|
|
15
|
-
export function send_verification_email(user: object, req?: object | undefined): Promise<object>;
|
|
6
|
+
import { Transporter } from "nodemailer";
|
|
7
|
+
import User from "./user";
|
|
8
|
+
declare const _default: {
|
|
9
|
+
getMailTransport: () => Transporter<any>;
|
|
10
|
+
transformBootstrapEmail: (bsHtml: string) => Promise<any>;
|
|
11
|
+
send_verification_email: (user: User, req: any) => Promise<any>;
|
|
12
|
+
};
|
|
13
|
+
export = _default;
|
|
16
14
|
//# sourceMappingURL=email.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../models/email.
|
|
1
|
+
{"version":3,"file":"email.d.ts","sourceRoot":"","sources":["../../models/email.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAmB,WAAW,EAAE,MAAM,YAAY,CAAC;AAU1D,OAAO,IAAI,MAAM,QAAQ,CAAC;;;;;;AAgF1B,kBAIE"}
|
package/dist/models/email.js
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
/**
|
|
3
6
|
* @category saltcorn-data
|
|
4
7
|
* @module models/email
|
|
5
8
|
* @subcategory models
|
|
6
9
|
*/
|
|
7
|
-
const
|
|
10
|
+
const nodemailer_1 = require("nodemailer");
|
|
8
11
|
const { getState } = require("../db/state");
|
|
9
|
-
const BootstrapEmail = require("bootstrap-email");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
12
|
+
const BootstrapEmail = require("bootstrap-email"); // no typings available
|
|
13
|
+
const tmp_promise_1 = require("tmp-promise");
|
|
14
|
+
const promises_1 = require("fs/promises");
|
|
15
|
+
const tags_1 = __importDefault(require("@saltcorn/markup/tags"));
|
|
16
|
+
const { div } = tags_1.default;
|
|
17
|
+
const view_1 = __importDefault(require("./view"));
|
|
18
|
+
const uuid_1 = require("uuid");
|
|
19
|
+
const db_1 = __importDefault(require("../db"));
|
|
16
20
|
const { mockReqRes } = require("../tests/mocks");
|
|
17
21
|
/**
|
|
18
22
|
* @returns {Transporter}
|
|
@@ -20,7 +24,7 @@ const { mockReqRes } = require("../tests/mocks");
|
|
|
20
24
|
const getMailTransport = () => {
|
|
21
25
|
const port = getState().getConfig("smtp_port");
|
|
22
26
|
const secure = getState().getConfig("smtp_secure", port === 465);
|
|
23
|
-
return
|
|
27
|
+
return (0, nodemailer_1.createTransport)({
|
|
24
28
|
host: getState().getConfig("smtp_host"),
|
|
25
29
|
port,
|
|
26
30
|
secure,
|
|
@@ -35,11 +39,11 @@ const getMailTransport = () => {
|
|
|
35
39
|
* @returns {object}
|
|
36
40
|
*/
|
|
37
41
|
const transformBootstrapEmail = async (bsHtml) => {
|
|
38
|
-
const filename = await
|
|
39
|
-
await
|
|
42
|
+
const filename = await (0, tmp_promise_1.tmpName)();
|
|
43
|
+
await (0, promises_1.writeFile)(filename, div({ class: "container" }, bsHtml));
|
|
40
44
|
const template = new BootstrapEmail(filename);
|
|
41
45
|
const email = template.compile();
|
|
42
|
-
await
|
|
46
|
+
await (0, promises_1.unlink)(filename);
|
|
43
47
|
return email;
|
|
44
48
|
};
|
|
45
49
|
/**
|
|
@@ -50,13 +54,13 @@ const transformBootstrapEmail = async (bsHtml) => {
|
|
|
50
54
|
const send_verification_email = async (user, req) => {
|
|
51
55
|
const verification_view_name = getState().getConfig("verification_view");
|
|
52
56
|
if (verification_view_name) {
|
|
53
|
-
const verification_view = await
|
|
57
|
+
const verification_view = await view_1.default.findOne({
|
|
54
58
|
name: verification_view_name,
|
|
55
59
|
});
|
|
56
60
|
if (verification_view) {
|
|
57
|
-
const verification_token =
|
|
61
|
+
const verification_token = (0, uuid_1.v4)();
|
|
58
62
|
try {
|
|
59
|
-
await
|
|
63
|
+
await db_1.default.update("users", { verification_token }, user.id);
|
|
60
64
|
user.verification_token = verification_token;
|
|
61
65
|
const htmlBs = await verification_view.run({ id: user.id }, mockReqRes);
|
|
62
66
|
const html = await transformBootstrapEmail(htmlBs);
|
package/dist/models/email.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../models/email.
|
|
1
|
+
{"version":3,"file":"email.js","sourceRoot":"","sources":["../../models/email.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ declare class EventLog {
|
|
|
27
27
|
* @param {object} selopts
|
|
28
28
|
* @returns {Promise<EventLog[]>}
|
|
29
29
|
*/
|
|
30
|
-
static find(where: Where, selopts
|
|
30
|
+
static find(where: Where, selopts?: SelectOptions): Promise<EventLog[]>;
|
|
31
31
|
/**
|
|
32
32
|
* @param {object} where
|
|
33
33
|
* @returns {Promise<EventLog>}
|