@budibase/shared-core 2.8.31 → 2.8.32-alpha.0
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/package.json +11 -25
- package/src/constants.ts +6 -0
- package/src/index.ts +1 -0
- package/src/sdk/documents/applications.ts +35 -0
- package/src/sdk/documents/index.ts +2 -0
- package/src/sdk/documents/users.ts +62 -0
- package/src/sdk/index.ts +1 -0
- package/tsconfig.build.json +22 -5
- package/tsconfig.json +6 -3
- package/dist/cjs/src/constants.d.ts +0 -87
- package/dist/cjs/src/constants.js +0 -94
- package/dist/cjs/src/constants.js.map +0 -1
- package/dist/cjs/src/filters.d.ts +0 -94
- package/dist/cjs/src/filters.js +0 -367
- package/dist/cjs/src/filters.js.map +0 -1
- package/dist/cjs/src/helpers/helpers.d.ts +0 -29
- package/dist/cjs/src/helpers/helpers.js +0 -90
- package/dist/cjs/src/helpers/helpers.js.map +0 -1
- package/dist/cjs/src/helpers/index.d.ts +0 -2
- package/dist/cjs/src/helpers/index.js +0 -19
- package/dist/cjs/src/helpers/index.js.map +0 -1
- package/dist/cjs/src/helpers/integrations.d.ts +0 -3
- package/dist/cjs/src/helpers/integrations.js +0 -22
- package/dist/cjs/src/helpers/integrations.js.map +0 -1
- package/dist/cjs/src/index.d.ts +0 -4
- package/dist/cjs/src/index.js +0 -34
- package/dist/cjs/src/index.js.map +0 -1
- package/dist/cjs/src/tsconfig-cjs.build.tsbuildinfo +0 -1
- package/dist/cjs/src/utils.d.ts +0 -2
- package/dist/cjs/src/utils.js +0 -50
- package/dist/cjs/src/utils.js.map +0 -1
- package/dist/mjs/src/constants.d.ts +0 -87
- package/dist/mjs/src/constants.js +0 -91
- package/dist/mjs/src/constants.js.map +0 -1
- package/dist/mjs/src/filters.d.ts +0 -94
- package/dist/mjs/src/filters.js +0 -356
- package/dist/mjs/src/filters.js.map +0 -1
- package/dist/mjs/src/helpers/helpers.d.ts +0 -29
- package/dist/mjs/src/helpers/helpers.js +0 -82
- package/dist/mjs/src/helpers/helpers.js.map +0 -1
- package/dist/mjs/src/helpers/index.d.ts +0 -2
- package/dist/mjs/src/helpers/index.js +0 -3
- package/dist/mjs/src/helpers/index.js.map +0 -1
- package/dist/mjs/src/helpers/integrations.d.ts +0 -3
- package/dist/mjs/src/helpers/integrations.js +0 -17
- package/dist/mjs/src/helpers/integrations.js.map +0 -1
- package/dist/mjs/src/index.d.ts +0 -4
- package/dist/mjs/src/index.js +0 -5
- package/dist/mjs/src/index.js.map +0 -1
- package/dist/mjs/src/tsconfig.build.tsbuildinfo +0 -1
- package/dist/mjs/src/utils.d.ts +0 -2
- package/dist/mjs/src/utils.js +0 -34
- package/dist/mjs/src/utils.js.map +0 -1
- package/tsconfig-base.build.json +0 -25
- package/tsconfig-cjs.build.json +0 -8
package/dist/cjs/src/filters.js
DELETED
|
@@ -1,367 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasFilters = exports.luceneLimit = exports.luceneSort = exports.runLuceneQuery = exports.buildLuceneQuery = exports.NoEmptyFilterStrings = exports.getValidOperatorsForType = void 0;
|
|
4
|
-
const types_1 = require("@budibase/types");
|
|
5
|
-
const constants_1 = require("./constants");
|
|
6
|
-
const helpers_1 = require("./helpers");
|
|
7
|
-
const HBS_REGEX = /{{([^{].*?)}}/g;
|
|
8
|
-
/**
|
|
9
|
-
* Returns the valid operator options for a certain data type
|
|
10
|
-
* @param type the data type
|
|
11
|
-
*/
|
|
12
|
-
const getValidOperatorsForType = (type, field, datasource // TODO: is this table id ever populated?
|
|
13
|
-
) => {
|
|
14
|
-
var _a;
|
|
15
|
-
const Op = constants_1.OperatorOptions;
|
|
16
|
-
const stringOps = [
|
|
17
|
-
Op.Equals,
|
|
18
|
-
Op.NotEquals,
|
|
19
|
-
Op.StartsWith,
|
|
20
|
-
Op.Like,
|
|
21
|
-
Op.Empty,
|
|
22
|
-
Op.NotEmpty,
|
|
23
|
-
Op.In,
|
|
24
|
-
];
|
|
25
|
-
const numOps = [
|
|
26
|
-
Op.Equals,
|
|
27
|
-
Op.NotEquals,
|
|
28
|
-
Op.MoreThan,
|
|
29
|
-
Op.LessThan,
|
|
30
|
-
Op.Empty,
|
|
31
|
-
Op.NotEmpty,
|
|
32
|
-
Op.In,
|
|
33
|
-
];
|
|
34
|
-
let ops = [];
|
|
35
|
-
if (type === "string") {
|
|
36
|
-
ops = stringOps;
|
|
37
|
-
}
|
|
38
|
-
else if (type === "number" || type === "bigint") {
|
|
39
|
-
ops = numOps;
|
|
40
|
-
}
|
|
41
|
-
else if (type === "options") {
|
|
42
|
-
ops = [Op.Equals, Op.NotEquals, Op.Empty, Op.NotEmpty, Op.In];
|
|
43
|
-
}
|
|
44
|
-
else if (type === "array") {
|
|
45
|
-
ops = [Op.Contains, Op.NotContains, Op.Empty, Op.NotEmpty, Op.ContainsAny];
|
|
46
|
-
}
|
|
47
|
-
else if (type === "boolean") {
|
|
48
|
-
ops = [Op.Equals, Op.NotEquals, Op.Empty, Op.NotEmpty];
|
|
49
|
-
}
|
|
50
|
-
else if (type === "longform") {
|
|
51
|
-
ops = stringOps;
|
|
52
|
-
}
|
|
53
|
-
else if (type === "datetime") {
|
|
54
|
-
ops = numOps;
|
|
55
|
-
}
|
|
56
|
-
else if (type === "formula") {
|
|
57
|
-
ops = stringOps.concat([Op.MoreThan, Op.LessThan]);
|
|
58
|
-
}
|
|
59
|
-
// Only allow equal/not equal for _id in SQL tables
|
|
60
|
-
const externalTable = (_a = datasource === null || datasource === void 0 ? void 0 : datasource.tableId) === null || _a === void 0 ? void 0 : _a.includes("datasource_plus");
|
|
61
|
-
if (field === "_id" && externalTable) {
|
|
62
|
-
ops = [Op.Equals, Op.NotEquals, Op.In];
|
|
63
|
-
}
|
|
64
|
-
return ops;
|
|
65
|
-
};
|
|
66
|
-
exports.getValidOperatorsForType = getValidOperatorsForType;
|
|
67
|
-
/**
|
|
68
|
-
* Operators which do not support empty strings as values
|
|
69
|
-
*/
|
|
70
|
-
exports.NoEmptyFilterStrings = [
|
|
71
|
-
constants_1.OperatorOptions.StartsWith.value,
|
|
72
|
-
constants_1.OperatorOptions.Like.value,
|
|
73
|
-
constants_1.OperatorOptions.Equals.value,
|
|
74
|
-
constants_1.OperatorOptions.NotEquals.value,
|
|
75
|
-
constants_1.OperatorOptions.Contains.value,
|
|
76
|
-
constants_1.OperatorOptions.NotContains.value,
|
|
77
|
-
];
|
|
78
|
-
/**
|
|
79
|
-
* Removes any fields that contain empty strings that would cause inconsistent
|
|
80
|
-
* behaviour with how backend tables are filtered (no value means no filter).
|
|
81
|
-
*/
|
|
82
|
-
const cleanupQuery = (query) => {
|
|
83
|
-
if (!query) {
|
|
84
|
-
return query;
|
|
85
|
-
}
|
|
86
|
-
for (let filterField of exports.NoEmptyFilterStrings) {
|
|
87
|
-
if (!query[filterField]) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
for (let [key, value] of Object.entries(query[filterField])) {
|
|
91
|
-
if (value == null || value === "") {
|
|
92
|
-
delete query[filterField][key];
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return query;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* Removes a numeric prefix on field names designed to give fields uniqueness
|
|
100
|
-
*/
|
|
101
|
-
const removeKeyNumbering = (key) => {
|
|
102
|
-
if (typeof key === "string" && key.match(/\d[0-9]*:/g) != null) {
|
|
103
|
-
const parts = key.split(":");
|
|
104
|
-
parts.shift();
|
|
105
|
-
return parts.join(":");
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
return key;
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
/**
|
|
112
|
-
* Builds a lucene JSON query from the filter structure generated in the builder
|
|
113
|
-
* @param filter the builder filter structure
|
|
114
|
-
*/
|
|
115
|
-
const buildLuceneQuery = (filter) => {
|
|
116
|
-
let query = {
|
|
117
|
-
string: {},
|
|
118
|
-
fuzzy: {},
|
|
119
|
-
range: {},
|
|
120
|
-
equal: {},
|
|
121
|
-
notEqual: {},
|
|
122
|
-
empty: {},
|
|
123
|
-
notEmpty: {},
|
|
124
|
-
contains: {},
|
|
125
|
-
notContains: {},
|
|
126
|
-
oneOf: {},
|
|
127
|
-
containsAny: {},
|
|
128
|
-
};
|
|
129
|
-
if (Array.isArray(filter)) {
|
|
130
|
-
filter.forEach(expression => {
|
|
131
|
-
var _a, _b, _c;
|
|
132
|
-
let { operator, field, type, value, externalType } = expression;
|
|
133
|
-
const isHbs = typeof value === "string" && (value.match(HBS_REGEX) || []).length > 0;
|
|
134
|
-
// Parse all values into correct types
|
|
135
|
-
if (operator === "allOr") {
|
|
136
|
-
query.allOr = true;
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
if (type === "datetime" &&
|
|
140
|
-
!isHbs &&
|
|
141
|
-
operator !== "empty" &&
|
|
142
|
-
operator !== "notEmpty") {
|
|
143
|
-
// Ensure date value is a valid date and parse into correct format
|
|
144
|
-
if (!value) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
try {
|
|
148
|
-
value = new Date(value).toISOString();
|
|
149
|
-
}
|
|
150
|
-
catch (error) {
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (type === "number" && typeof value === "string") {
|
|
155
|
-
if (operator === "oneOf") {
|
|
156
|
-
value = value.split(",").map(item => parseFloat(item));
|
|
157
|
-
}
|
|
158
|
-
else if (!isHbs) {
|
|
159
|
-
value = parseFloat(value);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
if (type === "boolean") {
|
|
163
|
-
value = ((_a = `${value}`) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === "true";
|
|
164
|
-
}
|
|
165
|
-
if (["contains", "notContains", "containsAny"].includes(operator) &&
|
|
166
|
-
type === "array" &&
|
|
167
|
-
typeof value === "string") {
|
|
168
|
-
value = value.split(",");
|
|
169
|
-
}
|
|
170
|
-
if (operator.startsWith("range") && query.range) {
|
|
171
|
-
const minint = ((_b = constants_1.SqlNumberTypeRangeMap[externalType]) === null || _b === void 0 ? void 0 : _b.min) || Number.MIN_SAFE_INTEGER;
|
|
172
|
-
const maxint = ((_c = constants_1.SqlNumberTypeRangeMap[externalType]) === null || _c === void 0 ? void 0 : _c.max) || Number.MAX_SAFE_INTEGER;
|
|
173
|
-
if (!query.range[field]) {
|
|
174
|
-
query.range[field] = {
|
|
175
|
-
low: type === "number" ? minint : "0000-00-00T00:00:00.000Z",
|
|
176
|
-
high: type === "number" ? maxint : "9999-00-00T00:00:00.000Z",
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
if (operator === "rangeLow" && value != null && value !== "") {
|
|
180
|
-
query.range[field].low = value;
|
|
181
|
-
}
|
|
182
|
-
else if (operator === "rangeHigh" &&
|
|
183
|
-
value != null &&
|
|
184
|
-
value !== "") {
|
|
185
|
-
query.range[field].high = value;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
else if (query[operator]) {
|
|
189
|
-
if (type === "boolean") {
|
|
190
|
-
// Transform boolean filters to cope with null.
|
|
191
|
-
// "equals false" needs to be "not equals true"
|
|
192
|
-
// "not equals false" needs to be "equals true"
|
|
193
|
-
if (operator === "equal" && value === false) {
|
|
194
|
-
query.notEqual = query.notEqual || {};
|
|
195
|
-
query.notEqual[field] = true;
|
|
196
|
-
}
|
|
197
|
-
else if (operator === "notEqual" && value === false) {
|
|
198
|
-
query.equal = query.equal || {};
|
|
199
|
-
query.equal[field] = true;
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
query[operator] = query[operator] || {};
|
|
203
|
-
query[operator][field] = value;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
query[operator] = query[operator] || {};
|
|
208
|
-
query[operator][field] = value;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
return query;
|
|
214
|
-
};
|
|
215
|
-
exports.buildLuceneQuery = buildLuceneQuery;
|
|
216
|
-
/**
|
|
217
|
-
* Performs a client-side lucene search on an array of data
|
|
218
|
-
* @param docs the data
|
|
219
|
-
* @param query the JSON lucene query
|
|
220
|
-
*/
|
|
221
|
-
const runLuceneQuery = (docs, query) => {
|
|
222
|
-
if (!docs || !Array.isArray(docs)) {
|
|
223
|
-
return [];
|
|
224
|
-
}
|
|
225
|
-
if (!query) {
|
|
226
|
-
return docs;
|
|
227
|
-
}
|
|
228
|
-
// Make query consistent first
|
|
229
|
-
query = cleanupQuery(query);
|
|
230
|
-
// Iterates over a set of filters and evaluates a fail function against a doc
|
|
231
|
-
const match = (type, failFn) => (doc) => {
|
|
232
|
-
const filters = Object.entries(query[type] || {});
|
|
233
|
-
for (let i = 0; i < filters.length; i++) {
|
|
234
|
-
const [key, testValue] = filters[i];
|
|
235
|
-
const docValue = (0, helpers_1.deepGet)(doc, removeKeyNumbering(key));
|
|
236
|
-
if (failFn(docValue, testValue)) {
|
|
237
|
-
return false;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
return true;
|
|
241
|
-
};
|
|
242
|
-
// Process a string match (fails if the value does not start with the string)
|
|
243
|
-
const stringMatch = match("string", (docValue, testValue) => {
|
|
244
|
-
return (!docValue || !(docValue === null || docValue === void 0 ? void 0 : docValue.toLowerCase().startsWith(testValue === null || testValue === void 0 ? void 0 : testValue.toLowerCase())));
|
|
245
|
-
});
|
|
246
|
-
// Process a fuzzy match (treat the same as starts with when running locally)
|
|
247
|
-
const fuzzyMatch = match("fuzzy", (docValue, testValue) => {
|
|
248
|
-
return (!docValue || !(docValue === null || docValue === void 0 ? void 0 : docValue.toLowerCase().startsWith(testValue === null || testValue === void 0 ? void 0 : testValue.toLowerCase())));
|
|
249
|
-
});
|
|
250
|
-
// Process a range match
|
|
251
|
-
const rangeMatch = match("range", (docValue, testValue) => {
|
|
252
|
-
return (docValue == null ||
|
|
253
|
-
docValue === "" ||
|
|
254
|
-
+docValue < testValue.low ||
|
|
255
|
-
+docValue > testValue.high);
|
|
256
|
-
});
|
|
257
|
-
// Process an equal match (fails if the value is different)
|
|
258
|
-
const equalMatch = match("equal", (docValue, testValue) => {
|
|
259
|
-
return testValue != null && testValue !== "" && docValue !== testValue;
|
|
260
|
-
});
|
|
261
|
-
// Process a not-equal match (fails if the value is the same)
|
|
262
|
-
const notEqualMatch = match("notEqual", (docValue, testValue) => {
|
|
263
|
-
return testValue != null && testValue !== "" && docValue === testValue;
|
|
264
|
-
});
|
|
265
|
-
// Process an empty match (fails if the value is not empty)
|
|
266
|
-
const emptyMatch = match("empty", (docValue) => {
|
|
267
|
-
return docValue != null && docValue !== "";
|
|
268
|
-
});
|
|
269
|
-
// Process a not-empty match (fails is the value is empty)
|
|
270
|
-
const notEmptyMatch = match("notEmpty", (docValue) => {
|
|
271
|
-
return docValue == null || docValue === "";
|
|
272
|
-
});
|
|
273
|
-
// Process an includes match (fails if the value is not included)
|
|
274
|
-
const oneOf = match("oneOf", (docValue, testValue) => {
|
|
275
|
-
if (typeof testValue === "string") {
|
|
276
|
-
testValue = testValue.split(",");
|
|
277
|
-
if (typeof docValue === "number") {
|
|
278
|
-
testValue = testValue.map((item) => parseFloat(item));
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
return !(testValue === null || testValue === void 0 ? void 0 : testValue.includes(docValue));
|
|
282
|
-
});
|
|
283
|
-
const containsAny = match("containsAny", (docValue, testValue) => {
|
|
284
|
-
return !(docValue === null || docValue === void 0 ? void 0 : docValue.includes(...testValue));
|
|
285
|
-
});
|
|
286
|
-
const contains = match("contains", (docValue, testValue) => {
|
|
287
|
-
return !(testValue === null || testValue === void 0 ? void 0 : testValue.every((item) => docValue === null || docValue === void 0 ? void 0 : docValue.includes(item)));
|
|
288
|
-
});
|
|
289
|
-
const notContains = match("notContains", (docValue, testValue) => {
|
|
290
|
-
return testValue === null || testValue === void 0 ? void 0 : testValue.every((item) => docValue === null || docValue === void 0 ? void 0 : docValue.includes(item));
|
|
291
|
-
});
|
|
292
|
-
// Match a document against all criteria
|
|
293
|
-
const docMatch = (doc) => {
|
|
294
|
-
return (stringMatch(doc) &&
|
|
295
|
-
fuzzyMatch(doc) &&
|
|
296
|
-
rangeMatch(doc) &&
|
|
297
|
-
equalMatch(doc) &&
|
|
298
|
-
notEqualMatch(doc) &&
|
|
299
|
-
emptyMatch(doc) &&
|
|
300
|
-
notEmptyMatch(doc) &&
|
|
301
|
-
oneOf(doc) &&
|
|
302
|
-
contains(doc) &&
|
|
303
|
-
containsAny(doc) &&
|
|
304
|
-
notContains(doc));
|
|
305
|
-
};
|
|
306
|
-
// Process all docs
|
|
307
|
-
return docs.filter(docMatch);
|
|
308
|
-
};
|
|
309
|
-
exports.runLuceneQuery = runLuceneQuery;
|
|
310
|
-
/**
|
|
311
|
-
* Performs a client-side sort from the equivalent server-side lucene sort
|
|
312
|
-
* parameters.
|
|
313
|
-
* @param docs the data
|
|
314
|
-
* @param sort the sort column
|
|
315
|
-
* @param sortOrder the sort order ("ascending" or "descending")
|
|
316
|
-
* @param sortType the type of sort ("string" or "number")
|
|
317
|
-
*/
|
|
318
|
-
const luceneSort = (docs, sort, sortOrder, sortType = types_1.SortType.STRING) => {
|
|
319
|
-
if (!sort || !sortOrder || !sortType) {
|
|
320
|
-
return docs;
|
|
321
|
-
}
|
|
322
|
-
const parse = sortType === "string" ? (x) => `${x}` : (x) => parseFloat(x);
|
|
323
|
-
return docs
|
|
324
|
-
.slice()
|
|
325
|
-
.sort((a, b) => {
|
|
326
|
-
const colA = parse(a[sort]);
|
|
327
|
-
const colB = parse(b[sort]);
|
|
328
|
-
if (sortOrder.toLowerCase() === "descending") {
|
|
329
|
-
return colA > colB ? -1 : 1;
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
return colA > colB ? 1 : -1;
|
|
333
|
-
}
|
|
334
|
-
});
|
|
335
|
-
};
|
|
336
|
-
exports.luceneSort = luceneSort;
|
|
337
|
-
/**
|
|
338
|
-
* Limits the specified docs to the specified number of rows from the equivalent
|
|
339
|
-
* server-side lucene limit parameters.
|
|
340
|
-
* @param docs the data
|
|
341
|
-
* @param limit the number of docs to limit to
|
|
342
|
-
*/
|
|
343
|
-
const luceneLimit = (docs, limit) => {
|
|
344
|
-
const numLimit = parseFloat(limit);
|
|
345
|
-
if (isNaN(numLimit)) {
|
|
346
|
-
return docs;
|
|
347
|
-
}
|
|
348
|
-
return docs.slice(0, numLimit);
|
|
349
|
-
};
|
|
350
|
-
exports.luceneLimit = luceneLimit;
|
|
351
|
-
const hasFilters = (query) => {
|
|
352
|
-
if (!query) {
|
|
353
|
-
return false;
|
|
354
|
-
}
|
|
355
|
-
const skipped = ["allOr"];
|
|
356
|
-
for (let [key, value] of Object.entries(query)) {
|
|
357
|
-
if (skipped.includes(key) || typeof value !== "object") {
|
|
358
|
-
continue;
|
|
359
|
-
}
|
|
360
|
-
if (Object.keys(value).length !== 0) {
|
|
361
|
-
return true;
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
return false;
|
|
365
|
-
};
|
|
366
|
-
exports.hasFilters = hasFilters;
|
|
367
|
-
//# sourceMappingURL=filters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../src/filters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { User } from "@budibase/types";
|
|
2
|
-
/**
|
|
3
|
-
* Gets a key within an object. The key supports dot syntax for retrieving deep
|
|
4
|
-
* fields - e.g. "a.b.c".
|
|
5
|
-
* Exact matches of keys with dots in them take precedence over nested keys of
|
|
6
|
-
* the same path - e.g. getting "a.b" from { "a.b": "foo", a: { b: "bar" } }
|
|
7
|
-
* will return "foo" over "bar".
|
|
8
|
-
* @param obj the object
|
|
9
|
-
* @param key the key
|
|
10
|
-
* @return {*|null} the value or null if a value was not found for this key
|
|
11
|
-
*/
|
|
12
|
-
export declare const deepGet: (obj: {
|
|
13
|
-
[x: string]: any;
|
|
14
|
-
}, key: string) => any;
|
|
15
|
-
/**
|
|
16
|
-
* Gets the initials to show in a user avatar.
|
|
17
|
-
* @param user the user
|
|
18
|
-
*/
|
|
19
|
-
export declare const getUserInitials: (user: User) => string;
|
|
20
|
-
/**
|
|
21
|
-
* Gets a deterministic colour for a particular user
|
|
22
|
-
* @param user the user
|
|
23
|
-
*/
|
|
24
|
-
export declare const getUserColor: (user: User) => string;
|
|
25
|
-
/**
|
|
26
|
-
* Gets a friendly label to describe who a user is.
|
|
27
|
-
* @param user the user
|
|
28
|
-
*/
|
|
29
|
-
export declare const getUserLabel: (user: User) => string;
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUserLabel = exports.getUserColor = exports.getUserInitials = exports.deepGet = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Gets a key within an object. The key supports dot syntax for retrieving deep
|
|
6
|
-
* fields - e.g. "a.b.c".
|
|
7
|
-
* Exact matches of keys with dots in them take precedence over nested keys of
|
|
8
|
-
* the same path - e.g. getting "a.b" from { "a.b": "foo", a: { b: "bar" } }
|
|
9
|
-
* will return "foo" over "bar".
|
|
10
|
-
* @param obj the object
|
|
11
|
-
* @param key the key
|
|
12
|
-
* @return {*|null} the value or null if a value was not found for this key
|
|
13
|
-
*/
|
|
14
|
-
const deepGet = (obj, key) => {
|
|
15
|
-
if (!obj || !key) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
19
|
-
return obj[key];
|
|
20
|
-
}
|
|
21
|
-
const split = key.split(".");
|
|
22
|
-
for (let i = 0; i < split.length; i++) {
|
|
23
|
-
obj = obj === null || obj === void 0 ? void 0 : obj[split[i]];
|
|
24
|
-
}
|
|
25
|
-
return obj;
|
|
26
|
-
};
|
|
27
|
-
exports.deepGet = deepGet;
|
|
28
|
-
/**
|
|
29
|
-
* Gets the initials to show in a user avatar.
|
|
30
|
-
* @param user the user
|
|
31
|
-
*/
|
|
32
|
-
const getUserInitials = (user) => {
|
|
33
|
-
var _a;
|
|
34
|
-
if (!user) {
|
|
35
|
-
return "?";
|
|
36
|
-
}
|
|
37
|
-
let initials = "";
|
|
38
|
-
initials += user.firstName ? user.firstName[0] : "";
|
|
39
|
-
initials += user.lastName ? user.lastName[0] : "";
|
|
40
|
-
if (initials !== "") {
|
|
41
|
-
return initials;
|
|
42
|
-
}
|
|
43
|
-
return ((_a = user.email) === null || _a === void 0 ? void 0 : _a[0]) || "U";
|
|
44
|
-
};
|
|
45
|
-
exports.getUserInitials = getUserInitials;
|
|
46
|
-
/**
|
|
47
|
-
* Gets a deterministic colour for a particular user
|
|
48
|
-
* @param user the user
|
|
49
|
-
*/
|
|
50
|
-
const getUserColor = (user) => {
|
|
51
|
-
let id = user === null || user === void 0 ? void 0 : user._id;
|
|
52
|
-
if (!id) {
|
|
53
|
-
return "var(--spectrum-global-color-blue-400)";
|
|
54
|
-
}
|
|
55
|
-
// In order to generate the same color for global users as app users, we need
|
|
56
|
-
// to remove the app-specific table prefix
|
|
57
|
-
id = id.replace("ro_ta_users_", "");
|
|
58
|
-
// Generate a hue based on the ID
|
|
59
|
-
let hue = 1;
|
|
60
|
-
for (let i = 0; i < id.length; i++) {
|
|
61
|
-
hue += id.charCodeAt(i);
|
|
62
|
-
hue = hue % 36;
|
|
63
|
-
}
|
|
64
|
-
return `hsl(${hue * 10}, 50%, 40%)`;
|
|
65
|
-
};
|
|
66
|
-
exports.getUserColor = getUserColor;
|
|
67
|
-
/**
|
|
68
|
-
* Gets a friendly label to describe who a user is.
|
|
69
|
-
* @param user the user
|
|
70
|
-
*/
|
|
71
|
-
const getUserLabel = (user) => {
|
|
72
|
-
if (!user) {
|
|
73
|
-
return "";
|
|
74
|
-
}
|
|
75
|
-
const { firstName, lastName, email } = user;
|
|
76
|
-
if (firstName && lastName) {
|
|
77
|
-
return `${firstName} ${lastName}`;
|
|
78
|
-
}
|
|
79
|
-
else if (firstName) {
|
|
80
|
-
return firstName;
|
|
81
|
-
}
|
|
82
|
-
else if (lastName) {
|
|
83
|
-
return lastName;
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
return email;
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
exports.getUserLabel = getUserLabel;
|
|
90
|
-
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/helpers/helpers.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;GASG;AACI,MAAM,OAAO,GAAG,CAAC,GAAyB,EAAE,GAAW,EAAE,EAAE;IAChE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;QAChB,OAAO,IAAI,CAAA;KACZ;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;QAClD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;KAChB;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,GAAG,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KACtB;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAZY,QAAA,OAAO,WAYnB;AAED;;;GAGG;AACI,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,EAAE;;IAC5C,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,GAAG,CAAA;KACX;IACD,IAAI,QAAQ,GAAG,EAAE,CAAA;IACjB,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACnD,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACjD,IAAI,QAAQ,KAAK,EAAE,EAAE;QACnB,OAAO,QAAQ,CAAA;KAChB;IACD,OAAO,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAG,CAAC,CAAC,KAAI,GAAG,CAAA;AAC/B,CAAC,CAAA;AAXY,QAAA,eAAe,mBAW3B;AAED;;;GAGG;AACI,MAAM,YAAY,GAAG,CAAC,IAAU,EAAE,EAAE;IACzC,IAAI,EAAE,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,CAAA;IAClB,IAAI,CAAC,EAAE,EAAE;QACP,OAAO,uCAAuC,CAAA;KAC/C;IAED,6EAA6E;IAC7E,0CAA0C;IAC1C,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IAEnC,iCAAiC;IACjC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACvB,GAAG,GAAG,GAAG,GAAG,EAAE,CAAA;KACf;IACD,OAAO,OAAO,GAAG,GAAG,EAAE,aAAa,CAAA;AACrC,CAAC,CAAA;AAjBY,QAAA,YAAY,gBAiBxB;AAED;;;GAGG;AACI,MAAM,YAAY,GAAG,CAAC,IAAU,EAAE,EAAE;IACzC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,CAAA;KACV;IACD,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;IAC3C,IAAI,SAAS,IAAI,QAAQ,EAAE;QACzB,OAAO,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAA;KAClC;SAAM,IAAI,SAAS,EAAE;QACpB,OAAO,SAAS,CAAA;KACjB;SAAM,IAAI,QAAQ,EAAE;QACnB,OAAO,QAAQ,CAAA;KAChB;SAAM;QACL,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAdY,QAAA,YAAY,gBAcxB"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./helpers"), exports);
|
|
18
|
-
__exportStar(require("./integrations"), exports);
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,iDAA8B"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isSQL = exports.isGoogleSheets = void 0;
|
|
4
|
-
const types_1 = require("@budibase/types");
|
|
5
|
-
function isGoogleSheets(type) {
|
|
6
|
-
return type === types_1.SourceName.GOOGLE_SHEETS;
|
|
7
|
-
}
|
|
8
|
-
exports.isGoogleSheets = isGoogleSheets;
|
|
9
|
-
function isSQL(datasource) {
|
|
10
|
-
if (!datasource || !datasource.source) {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
const SQL = [
|
|
14
|
-
types_1.SourceName.POSTGRES,
|
|
15
|
-
types_1.SourceName.SQL_SERVER,
|
|
16
|
-
types_1.SourceName.MYSQL,
|
|
17
|
-
types_1.SourceName.ORACLE,
|
|
18
|
-
];
|
|
19
|
-
return SQL.indexOf(datasource.source) !== -1;
|
|
20
|
-
}
|
|
21
|
-
exports.isSQL = isSQL;
|
|
22
|
-
//# sourceMappingURL=integrations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../../../src/helpers/integrations.ts"],"names":[],"mappings":";;;AAAA,2CAAwD;AAExD,SAAgB,cAAc,CAAC,IAAgB;IAC7C,OAAO,IAAI,KAAK,kBAAU,CAAC,aAAa,CAAA;AAC1C,CAAC;AAFD,wCAEC;AAED,SAAgB,KAAK,CAAC,UAAsB;IAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QACrC,OAAO,KAAK,CAAA;KACb;IACD,MAAM,GAAG,GAAG;QACV,kBAAU,CAAC,QAAQ;QACnB,kBAAU,CAAC,UAAU;QACrB,kBAAU,CAAC,KAAK;QAChB,kBAAU,CAAC,MAAM;KAClB,CAAA;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAC9C,CAAC;AAXD,sBAWC"}
|
package/dist/cjs/src/index.d.ts
DELETED
package/dist/cjs/src/index.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
-
};
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.utils = exports.helpers = exports.dataFilters = void 0;
|
|
30
|
-
__exportStar(require("./constants"), exports);
|
|
31
|
-
exports.dataFilters = __importStar(require("./filters"));
|
|
32
|
-
exports.helpers = __importStar(require("./helpers"));
|
|
33
|
-
exports.utils = __importStar(require("./utils"));
|
|
34
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,yDAAwC;AACxC,qDAAoC;AACpC,iDAAgC"}
|