@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/tenant.js
CHANGED
|
@@ -1,33 +1,55 @@
|
|
|
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
|
* Tenant Management Data Layer Access
|
|
4
26
|
* @category saltcorn-data
|
|
5
27
|
* @module models/tenant
|
|
6
28
|
* @subcategory models
|
|
7
29
|
*/
|
|
8
|
-
const
|
|
30
|
+
const db_1 = __importDefault(require("../db"));
|
|
9
31
|
const reset = require("../db/reset_schema");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const { setConfig } =
|
|
13
|
-
const
|
|
32
|
+
const internal_1 = require("@saltcorn/db-common/internal");
|
|
33
|
+
const config_1 = __importDefault(require("./config"));
|
|
34
|
+
const { setConfig } = config_1.default;
|
|
35
|
+
const promises_1 = require("fs/promises");
|
|
14
36
|
/**
|
|
15
37
|
* List all Tenants
|
|
16
38
|
* @function
|
|
17
39
|
* @returns {Promise<string[]>}
|
|
18
40
|
*/
|
|
19
|
-
const getAllTenants =
|
|
20
|
-
const tens = await
|
|
41
|
+
const getAllTenants = async () => {
|
|
42
|
+
const tens = await db_1.default.select("_sc_tenants");
|
|
21
43
|
return tens.map(({ subdomain }) => subdomain);
|
|
22
|
-
}
|
|
44
|
+
};
|
|
23
45
|
/**
|
|
24
46
|
* List all Tenants
|
|
25
47
|
* @function
|
|
26
48
|
* @returns {Promise<string[]>}
|
|
27
49
|
*/
|
|
28
|
-
const getAllTenantRows =
|
|
29
|
-
return await
|
|
30
|
-
}
|
|
50
|
+
const getAllTenantRows = async () => {
|
|
51
|
+
return await db_1.default.select("_sc_tenants");
|
|
52
|
+
};
|
|
31
53
|
/**
|
|
32
54
|
* Create Tenant and switch to It:
|
|
33
55
|
* - normalize domain name
|
|
@@ -47,7 +69,7 @@ const getAllTenantRows = contract(is.fun([], is.promise(is.array(is.obj({})))),
|
|
|
47
69
|
* @param {string} [description]
|
|
48
70
|
* @returns {Promise<void>}
|
|
49
71
|
*/
|
|
50
|
-
const createTenant =
|
|
72
|
+
const createTenant =
|
|
51
73
|
// TODO how to set names for arguments
|
|
52
74
|
async (subdomain, newurl, email, description) => {
|
|
53
75
|
// normalize domain name
|
|
@@ -57,30 +79,30 @@ async (subdomain, newurl, email, description) => {
|
|
|
57
79
|
// add description
|
|
58
80
|
const saneDescription = description !== "undefined" ? description : null;
|
|
59
81
|
// add info about tenant into main site
|
|
60
|
-
const id = await
|
|
82
|
+
const id = await db_1.default.insert("_sc_tenants", { subdomain: saneDomain, email: saneEmail, description: saneDescription }, { noid: true });
|
|
61
83
|
//create schema
|
|
62
|
-
await
|
|
84
|
+
await db_1.default.query(`CREATE SCHEMA "${saneDomain}";`);
|
|
63
85
|
// set continuation storage
|
|
64
86
|
//db.tenantNamespace.set("tenant", saneDomain);
|
|
65
|
-
await
|
|
87
|
+
await db_1.default.runWithTenant(saneDomain, async () => {
|
|
66
88
|
//reset schema
|
|
67
89
|
await reset(true, saneDomain);
|
|
68
90
|
if (newurl)
|
|
69
91
|
await setConfig("base_url", newurl);
|
|
70
92
|
});
|
|
71
|
-
}
|
|
93
|
+
};
|
|
72
94
|
const copy_tenant_template = async ({ tenant_template, target, loadAndSaveNewPlugin, }) => {
|
|
73
|
-
const { create_backup, restore } = require("./backup");
|
|
95
|
+
const { create_backup, restore } = await Promise.resolve().then(() => __importStar(require("./backup")));
|
|
74
96
|
// TODO use a hygenic name for backup file
|
|
75
|
-
const backupFile = await
|
|
76
|
-
await
|
|
97
|
+
const backupFile = await db_1.default.runWithTenant(tenant_template, create_backup);
|
|
98
|
+
await db_1.default.runWithTenant(target, async () => {
|
|
77
99
|
await restore(backupFile, loadAndSaveNewPlugin, true);
|
|
78
|
-
await
|
|
79
|
-
await
|
|
80
|
-
await
|
|
100
|
+
await db_1.default.updateWhere("_sc_files", { user_id: null }, {});
|
|
101
|
+
await db_1.default.deleteWhere("users", {});
|
|
102
|
+
await db_1.default.reset_sequence("users");
|
|
81
103
|
//
|
|
82
104
|
});
|
|
83
|
-
await
|
|
105
|
+
await (0, promises_1.unlink)(backupFile);
|
|
84
106
|
};
|
|
85
107
|
/**
|
|
86
108
|
* Delete Tenant
|
|
@@ -89,13 +111,13 @@ const copy_tenant_template = async ({ tenant_template, target, loadAndSaveNewPlu
|
|
|
89
111
|
* @param {string} sub
|
|
90
112
|
* @returns {Promise<void>}
|
|
91
113
|
*/
|
|
92
|
-
const deleteTenant =
|
|
114
|
+
const deleteTenant = async (sub) => {
|
|
93
115
|
const subdomain = domain_sanitize(sub);
|
|
94
116
|
// drop tenant db schema
|
|
95
|
-
await
|
|
117
|
+
await db_1.default.query(`drop schema if exists "${subdomain}" CASCADE `);
|
|
96
118
|
// delete information about tenant from main site
|
|
97
|
-
await
|
|
98
|
-
}
|
|
119
|
+
await db_1.default.deleteWhere("_sc_tenants", { subdomain });
|
|
120
|
+
};
|
|
99
121
|
/**
|
|
100
122
|
* Sanitize Domain (Normalize domain name).
|
|
101
123
|
* - force to lower case
|
|
@@ -104,7 +126,7 @@ const deleteTenant = contract(is.fun(is.str, is.promise(is.undefined)), async (s
|
|
|
104
126
|
* @param {string} s
|
|
105
127
|
* @returns {string}
|
|
106
128
|
*/
|
|
107
|
-
const domain_sanitize =
|
|
129
|
+
const domain_sanitize = (s) => (0, internal_1.sqlsanitize)(s.replace(".", "").toLowerCase());
|
|
108
130
|
/**
|
|
109
131
|
* Call fuction f for each Tenant
|
|
110
132
|
* @param f - called function
|
|
@@ -112,10 +134,10 @@ const domain_sanitize = contract(is.fun(is.str, is.str), (s) => sqlsanitize(s.re
|
|
|
112
134
|
*/
|
|
113
135
|
const eachTenant = async (f) => {
|
|
114
136
|
await f();
|
|
115
|
-
if (
|
|
137
|
+
if (db_1.default.is_it_multi_tenant()) {
|
|
116
138
|
const tenantList = await getAllTenants();
|
|
117
139
|
for (const domain of tenantList)
|
|
118
|
-
await
|
|
140
|
+
await db_1.default.runWithTenant(domain, f);
|
|
119
141
|
}
|
|
120
142
|
};
|
|
121
143
|
module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../models/tenant.
|
|
1
|
+
{"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../models/tenant.ts"],"names":[],"mappings":"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"}
|
package/dist/models/trigger.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import Table from "./table";
|
|
8
8
|
import type { Where, SelectOptions, Row } from "@saltcorn/db-common/internal";
|
|
9
|
+
import type { TriggerCfg } from "@saltcorn/types/model-abstracts/abstract_trigger";
|
|
9
10
|
/**
|
|
10
11
|
* Trigger class
|
|
11
12
|
* @category saltcorn-data
|
|
@@ -81,7 +82,7 @@ declare class Trigger {
|
|
|
81
82
|
* @param {object} [userPW = {}]
|
|
82
83
|
* @param {*} payload
|
|
83
84
|
*/
|
|
84
|
-
static emitEvent(eventType: string, channel
|
|
85
|
+
static emitEvent(eventType: string, channel?: string | null, userPW?: {}, payload?: any): void;
|
|
85
86
|
/**
|
|
86
87
|
* Run table triggers
|
|
87
88
|
* @param when_trigger
|
|
@@ -109,21 +110,5 @@ declare class Trigger {
|
|
|
109
110
|
*/
|
|
110
111
|
static get when_options(): string[];
|
|
111
112
|
}
|
|
112
|
-
declare namespace Trigger {
|
|
113
|
-
type TriggerCfg = {
|
|
114
|
-
name?: string;
|
|
115
|
-
action: string;
|
|
116
|
-
description?: string;
|
|
117
|
-
table_id?: number | null;
|
|
118
|
-
table_name?: string;
|
|
119
|
-
table: Table;
|
|
120
|
-
when_trigger: string;
|
|
121
|
-
channel?: string;
|
|
122
|
-
id?: number | null;
|
|
123
|
-
configuration: any;
|
|
124
|
-
min_role: number;
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
declare type TriggerCfg = Trigger.TriggerCfg;
|
|
128
113
|
export = Trigger;
|
|
129
114
|
//# sourceMappingURL=trigger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../models/trigger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../models/trigger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kDAAkD,CAAC;AAInF;;;GAGG;AACH,cAAM,OAAO;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;IAE5B;;;OAGG;gBACS,CAAC,EAAE,UAAU;IAoBzB;;;OAGG;IACH,IAAI,MAAM,IAAI,GAAG,CAiBhB;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE;IAKpC;;;;;OAKG;WACU,MAAM,CACjB,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,aAAa,GACzB,OAAO,CAAC,OAAO,EAAE,CAAC;IAKrB;;;OAGG;WACU,oBAAoB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IASvD;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK;IAO3B;;;;;OAKG;WACU,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;;;OAIG;WACU,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAcpD;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,MAAM,GAAG,IAAW,EAC7B,MAAM,KAAK,EACX,OAAO,CAAC,EAAE,GAAG,GACZ,IAAI;IAsCP;;;;;;OAMG;WACU,gBAAgB,CAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC;IAchB;;;;OAIG;IACG,aAAa,CAAC,OAAO,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;IAanD;;;;;OAKG;WACU,gBAAgB,CAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,OAAO,EAAE,CAAC;IAuBrB;;;OAGG;IACH,MAAM,KAAK,YAAY,IAAI,MAAM,EAAE,CAoBlC;CACF;AAGD,SAAS,OAAO,CAAC"}
|
package/dist/models/trigger.js
CHANGED
|
@@ -143,13 +143,13 @@ class Trigger {
|
|
|
143
143
|
* @param {object} [userPW = {}]
|
|
144
144
|
* @param {*} payload
|
|
145
145
|
*/
|
|
146
|
-
static emitEvent(eventType, channel, userPW = {}, payload) {
|
|
146
|
+
static emitEvent(eventType, channel = null, userPW = {}, payload) {
|
|
147
147
|
setTimeout(async () => {
|
|
148
148
|
const { password, ...user } = userPW || {};
|
|
149
149
|
const { getState } = require("../db/state");
|
|
150
150
|
const findArgs = { when_trigger: eventType };
|
|
151
151
|
let table;
|
|
152
|
-
if (["Insert", "Update", "Delete"].includes(channel)) {
|
|
152
|
+
if (channel && ["Insert", "Update", "Delete"].includes(channel)) {
|
|
153
153
|
const Table = require("./table");
|
|
154
154
|
table = await Table.findOne({ name: channel });
|
|
155
155
|
findArgs.table_id = table.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../models/trigger.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;AAEH,4BAA6B;AAC7B,0DAAkC;
|
|
1
|
+
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../models/trigger.ts"],"names":[],"mappings":"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"}
|
package/dist/models/user.d.ts
CHANGED
|
@@ -1,15 +1,47 @@
|
|
|
1
|
-
|
|
1
|
+
import { Row, SelectOptions, Where } from "@saltcorn/db-common/internal";
|
|
2
|
+
import type { ErrorMessage, GenObj, SuccessMessage } from "@saltcorn/types/common_types";
|
|
2
3
|
/**
|
|
3
4
|
* User
|
|
4
5
|
* @category saltcorn-data
|
|
5
6
|
*/
|
|
6
7
|
declare class User {
|
|
8
|
+
email: string;
|
|
9
|
+
password: string;
|
|
10
|
+
language?: string;
|
|
11
|
+
_attributes?: any;
|
|
12
|
+
api_token?: string | null;
|
|
13
|
+
verification_token?: string;
|
|
14
|
+
verified_on?: Date;
|
|
15
|
+
disabled: boolean;
|
|
16
|
+
id?: number;
|
|
17
|
+
reset_password_token?: string | null;
|
|
18
|
+
reset_password_expiry?: Date | null;
|
|
19
|
+
role_id: number;
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
/**
|
|
22
|
+
* User constructor
|
|
23
|
+
* @param {object} o
|
|
24
|
+
*/
|
|
25
|
+
constructor(o: UserCfg | User);
|
|
7
26
|
/**
|
|
8
27
|
* Get bcrypt hash for Password
|
|
9
28
|
* @param pw - password string
|
|
10
29
|
* @returns {Promise<string>}
|
|
11
30
|
*/
|
|
12
|
-
static hashPassword(pw:
|
|
31
|
+
static hashPassword(pw: string): Promise<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Check password
|
|
34
|
+
* @param pw - password string
|
|
35
|
+
* @returns {boolean}
|
|
36
|
+
*/
|
|
37
|
+
checkPassword(pw: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Change password
|
|
40
|
+
* @param newpw - new password string
|
|
41
|
+
* @param expireToken - if true than force reset password token
|
|
42
|
+
* @returns {Promise<void>} no result
|
|
43
|
+
*/
|
|
44
|
+
changePasswordTo(newpw: string, expireToken?: boolean): Promise<void>;
|
|
13
45
|
/**
|
|
14
46
|
* Find or Create User
|
|
15
47
|
* @param k
|
|
@@ -17,71 +49,101 @@ declare class User {
|
|
|
17
49
|
* @param {object} [uo = {}]
|
|
18
50
|
* @returns {Promise<{session_object: {_attributes: {}}, _attributes: {}}|User|*|boolean|{error: string}|User>}
|
|
19
51
|
*/
|
|
20
|
-
static findOrCreateByAttribute(k:
|
|
21
|
-
session_object: {
|
|
22
|
-
_attributes: {};
|
|
23
|
-
};
|
|
24
|
-
_attributes: {};
|
|
25
|
-
} | User | any | boolean | {
|
|
26
|
-
error: string;
|
|
27
|
-
} | User>;
|
|
52
|
+
static findOrCreateByAttribute(k: string, v: any, uo?: any): Promise<User | false | ErrorMessage>;
|
|
28
53
|
/**
|
|
29
54
|
* Create user
|
|
30
55
|
* @param uo - user object
|
|
31
56
|
* @returns {Promise<{error: string}|User>}
|
|
32
57
|
*/
|
|
33
|
-
static create(uo:
|
|
34
|
-
|
|
35
|
-
|
|
58
|
+
static create(uo: GenObj): Promise<User | ErrorMessage>;
|
|
59
|
+
/**
|
|
60
|
+
* Create session object for user
|
|
61
|
+
* @type {{role_id: number, language, id, email, tenant: *}}
|
|
62
|
+
*/
|
|
63
|
+
get session_object(): any;
|
|
36
64
|
/**
|
|
37
65
|
* Authenticate User
|
|
38
66
|
* @param uo - user object
|
|
39
67
|
* @returns {Promise<boolean|User>}
|
|
40
68
|
*/
|
|
41
|
-
static authenticate(uo: any): Promise<
|
|
69
|
+
static authenticate(uo: any): Promise<User | false>;
|
|
42
70
|
/**
|
|
43
71
|
* Find users list
|
|
44
72
|
* @param where - where object
|
|
45
73
|
* @param selectopts - select options
|
|
46
74
|
* @returns {Promise<User[]>}
|
|
47
75
|
*/
|
|
48
|
-
static find(where:
|
|
76
|
+
static find(where: Where, selectopts?: SelectOptions): Promise<Array<User>>;
|
|
49
77
|
/**
|
|
50
78
|
* Find one user
|
|
51
79
|
* @param where - where object
|
|
52
80
|
* @returns {Promise<User|*>}
|
|
53
81
|
*/
|
|
54
|
-
static findOne(where:
|
|
82
|
+
static findOne(where: Where): Promise<User | undefined>;
|
|
55
83
|
/**
|
|
56
84
|
* Check that user table is not empty in database
|
|
57
85
|
* @deprecated use method count()
|
|
58
86
|
* @returns {Promise<boolean>} true if there are users in db
|
|
59
87
|
*/
|
|
60
88
|
static nonEmpty(): Promise<boolean>;
|
|
89
|
+
/**
|
|
90
|
+
* Delete user based on session object
|
|
91
|
+
* @returns {Promise<void>}
|
|
92
|
+
*/
|
|
93
|
+
delete(): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Set language for User in database
|
|
96
|
+
* @param language
|
|
97
|
+
* @returns {Promise<void>}
|
|
98
|
+
*/
|
|
99
|
+
set_language(language: string): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Update User
|
|
102
|
+
* @param row
|
|
103
|
+
* @returns {Promise<void>}
|
|
104
|
+
*/
|
|
105
|
+
update(row: Row): Promise<void>;
|
|
106
|
+
/**
|
|
107
|
+
* Get new reset token
|
|
108
|
+
* @returns {Promise<*|string>}
|
|
109
|
+
*/
|
|
110
|
+
getNewResetToken(): Promise<string>;
|
|
111
|
+
/**
|
|
112
|
+
* Add new API token to user
|
|
113
|
+
* @returns {Promise<string>}
|
|
114
|
+
*/
|
|
115
|
+
getNewAPIToken(): Promise<string>;
|
|
116
|
+
/**
|
|
117
|
+
* Remove API token for user
|
|
118
|
+
* @returns {Promise<string>}
|
|
119
|
+
*/
|
|
120
|
+
removeAPIToken(): Promise<null>;
|
|
61
121
|
/**
|
|
62
122
|
* Validate password
|
|
63
123
|
* @param pw
|
|
64
124
|
* @returns {string}
|
|
65
125
|
*/
|
|
66
|
-
static unacceptable_password_reason(pw:
|
|
126
|
+
static unacceptable_password_reason(pw: string): string | undefined;
|
|
67
127
|
/**
|
|
68
128
|
* Validate email
|
|
69
129
|
* @param email
|
|
70
130
|
* @returns {boolean}
|
|
71
131
|
*/
|
|
72
|
-
static valid_email(email:
|
|
132
|
+
static valid_email(email: string): boolean;
|
|
73
133
|
/**
|
|
74
134
|
* Verification with token
|
|
75
135
|
* @param email - email sting
|
|
76
136
|
* @param verification_token - verification token string
|
|
77
137
|
* @returns {Promise<{error: string}|boolean>} true if verification passed, error string if not
|
|
78
138
|
*/
|
|
79
|
-
static verifyWithToken({ email, verification_token }: {
|
|
80
|
-
email:
|
|
81
|
-
verification_token:
|
|
82
|
-
}): Promise<
|
|
83
|
-
|
|
84
|
-
|
|
139
|
+
static verifyWithToken({ email, verification_token, }: {
|
|
140
|
+
email: string;
|
|
141
|
+
verification_token: string;
|
|
142
|
+
}): Promise<true | ErrorMessage>;
|
|
143
|
+
/**
|
|
144
|
+
* @returns {Promise<boolean>}
|
|
145
|
+
*/
|
|
146
|
+
set_to_verified(): Promise<true>;
|
|
85
147
|
/**
|
|
86
148
|
* Reset password using token
|
|
87
149
|
* @param email - email address string
|
|
@@ -90,107 +152,26 @@ declare class User {
|
|
|
90
152
|
* @returns {Promise<{error: string}|{success: boolean}>}
|
|
91
153
|
*/
|
|
92
154
|
static resetPasswordWithToken({ email, reset_password_token, password, }: {
|
|
93
|
-
email:
|
|
94
|
-
reset_password_token:
|
|
95
|
-
password:
|
|
96
|
-
}): Promise<
|
|
97
|
-
error: string;
|
|
98
|
-
} | {
|
|
99
|
-
success: boolean;
|
|
100
|
-
}>;
|
|
155
|
+
email: string;
|
|
156
|
+
reset_password_token: string;
|
|
157
|
+
password: string;
|
|
158
|
+
}): Promise<SuccessMessage | ErrorMessage>;
|
|
101
159
|
/**
|
|
102
160
|
* Count users in database
|
|
103
161
|
* @param where
|
|
104
162
|
* @returns {Promise<number>}
|
|
105
163
|
*/
|
|
106
|
-
static count(where
|
|
164
|
+
static count(where?: Where): Promise<number>;
|
|
107
165
|
/**
|
|
108
166
|
* Get available roles
|
|
109
167
|
* @returns {Promise<*>}
|
|
110
168
|
*/
|
|
111
|
-
static get_roles(): Promise<
|
|
169
|
+
static get_roles(): Promise<string[]>;
|
|
112
170
|
/**
|
|
113
171
|
* Generate password
|
|
114
172
|
* @returns {string}
|
|
115
173
|
*/
|
|
116
174
|
static generate_password(): string;
|
|
117
|
-
/**
|
|
118
|
-
* User constructor
|
|
119
|
-
* @param {object} o
|
|
120
|
-
*/
|
|
121
|
-
constructor(o: object);
|
|
122
|
-
email: any;
|
|
123
|
-
password: any;
|
|
124
|
-
language: any;
|
|
125
|
-
_attributes: any;
|
|
126
|
-
api_token: any;
|
|
127
|
-
verification_token: any;
|
|
128
|
-
verified_on: any;
|
|
129
|
-
disabled: boolean;
|
|
130
|
-
id: any;
|
|
131
|
-
reset_password_token: any;
|
|
132
|
-
reset_password_expiry: any;
|
|
133
|
-
role_id: number;
|
|
134
|
-
/**
|
|
135
|
-
* Check password
|
|
136
|
-
* @param pw - password string
|
|
137
|
-
* @returns {boolean}
|
|
138
|
-
*/
|
|
139
|
-
checkPassword(pw: any): boolean;
|
|
140
|
-
/**
|
|
141
|
-
* Change password
|
|
142
|
-
* @param newpw - new password string
|
|
143
|
-
* @param expireToken - if true than force reset password token
|
|
144
|
-
* @returns {Promise<void>} no result
|
|
145
|
-
*/
|
|
146
|
-
changePasswordTo(newpw: any, expireToken: any): Promise<void>;
|
|
147
|
-
/**
|
|
148
|
-
* Create session object for user
|
|
149
|
-
* @type {{role_id: number, language, id, email, tenant: *}}
|
|
150
|
-
*/
|
|
151
|
-
get session_object(): {
|
|
152
|
-
role_id: number;
|
|
153
|
-
language: any;
|
|
154
|
-
id: any;
|
|
155
|
-
email: any;
|
|
156
|
-
tenant: any;
|
|
157
|
-
};
|
|
158
|
-
/**
|
|
159
|
-
* Delete user based on session object
|
|
160
|
-
* @returns {Promise<void>}
|
|
161
|
-
*/
|
|
162
|
-
delete(): Promise<void>;
|
|
163
|
-
/**
|
|
164
|
-
* Set language for User in database
|
|
165
|
-
* @param language
|
|
166
|
-
* @returns {Promise<void>}
|
|
167
|
-
*/
|
|
168
|
-
set_language(language: any): Promise<void>;
|
|
169
|
-
/**
|
|
170
|
-
* Update User
|
|
171
|
-
* @param row
|
|
172
|
-
* @returns {Promise<void>}
|
|
173
|
-
*/
|
|
174
|
-
update(row: any): Promise<void>;
|
|
175
|
-
/**
|
|
176
|
-
* Get new reset token
|
|
177
|
-
* @returns {Promise<*|string>}
|
|
178
|
-
*/
|
|
179
|
-
getNewResetToken(): Promise<any | string>;
|
|
180
|
-
/**
|
|
181
|
-
* Add new API token to user
|
|
182
|
-
* @returns {Promise<string>}
|
|
183
|
-
*/
|
|
184
|
-
getNewAPIToken(): Promise<string>;
|
|
185
|
-
/**
|
|
186
|
-
* Remove API token for user
|
|
187
|
-
* @returns {Promise<string>}
|
|
188
|
-
*/
|
|
189
|
-
removeAPIToken(): Promise<string>;
|
|
190
|
-
/**
|
|
191
|
-
* @returns {Promise<boolean>}
|
|
192
|
-
*/
|
|
193
|
-
set_to_verified(): Promise<boolean>;
|
|
194
175
|
/**
|
|
195
176
|
* @returns {Promise<void>}
|
|
196
177
|
*/
|
|
@@ -198,38 +179,25 @@ declare class User {
|
|
|
198
179
|
/**
|
|
199
180
|
* @param {object} req
|
|
200
181
|
*/
|
|
201
|
-
relogin(req:
|
|
182
|
+
relogin(req: NonNullable<any>): void;
|
|
202
183
|
}
|
|
203
184
|
declare namespace User {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
export const changePasswordTo: any;
|
|
220
|
-
export const checkPassword: any;
|
|
221
|
-
}
|
|
222
|
-
namespace static_methods {
|
|
223
|
-
const find: any;
|
|
224
|
-
const findOne: any;
|
|
225
|
-
const nonEmpty: any;
|
|
226
|
-
const hashPassword: any;
|
|
227
|
-
const authenticate: any;
|
|
228
|
-
const verifyWithToken: any;
|
|
229
|
-
const resetPasswordWithToken: any;
|
|
230
|
-
const create: any;
|
|
231
|
-
const get_roles: any;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
185
|
+
type UserCfg = {
|
|
186
|
+
id?: number | string;
|
|
187
|
+
email: string;
|
|
188
|
+
password: string;
|
|
189
|
+
disabled?: boolean;
|
|
190
|
+
language?: string;
|
|
191
|
+
_attributes?: string | any;
|
|
192
|
+
api_token?: string;
|
|
193
|
+
verification_token?: string;
|
|
194
|
+
verified_on?: Date | number | string;
|
|
195
|
+
role_id?: number | string;
|
|
196
|
+
reset_password_token?: string;
|
|
197
|
+
reset_password_expiry?: Date | number | string;
|
|
198
|
+
[key: string]: any;
|
|
199
|
+
};
|
|
234
200
|
}
|
|
201
|
+
declare type UserCfg = User.UserCfg;
|
|
202
|
+
export = User;
|
|
235
203
|
//# sourceMappingURL=user.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../models/user.
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../models/user.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EACV,YAAY,EACZ,MAAM,EACN,cAAc,EACf,MAAM,8BAA8B,CAAC;AA0BtC;;;GAGG;AACH,cAAM,IAAI;IACR,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,qBAAqB,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAEnB;;;OAGG;gBACS,CAAC,EAAE,OAAO,GAAG,IAAI;IA6B7B;;;;OAIG;WACU,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItD;;;;OAIG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIlC;;;;;OAKG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3E;;;;;;OAMG;WACU,uBAAuB,CAClC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,GAAG,EACN,EAAE,GAAE,GAAQ,GACX,OAAO,CAAC,IAAI,GAAG,KAAK,GAAG,YAAY,CAAC;IAyBvC;;;;OAIG;WACU,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;IAsB7D;;;OAGG;IACH,IAAI,cAAc,IAAI,GAAG,CAUxB;IAED;;;;OAIG;WACU,YAAY,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC;IAWzD;;;;;OAKG;WACU,IAAI,CACf,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,aAAa,GACzB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAKvB;;;;OAIG;WACU,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAK7D;;;;OAIG;WACU,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;;;OAIG;IACG,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAazC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAOvC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAOrC;;;;OAIG;IACH,MAAM,CAAC,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMnE;;;;OAIG;IAEH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI1C;;;;;OAKG;WACU,eAAe,CAAC,EAC3B,KAAK,EACL,kBAAkB,GACnB,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;IAahC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IActC;;;;;;OAMG;WACU,sBAAsB,CAAC,EAClC,KAAK,EACL,oBAAoB,EACpB,QAAQ,GACT,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,oBAAoB,EAAE,MAAM,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,cAAc,GAAG,YAAY,CAAC;IAgC1C;;;;OAIG;WAGU,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD;;;OAGG;WACU,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAK3C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAOlC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAavC;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI;CAKrC;AAED,kBAAU,IAAI,CAAC;IACb,KAAY,OAAO,GAAG;QACpB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;QAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;QACrC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,qBAAqB,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;QAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AACD,aAAK,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAE5B,SAAS,IAAI,CAAC"}
|