corebasic 1.0.196 → 1.0.198
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/libs/elabase.js +33 -8
- package/package.json +1 -1
package/libs/elabase.js
CHANGED
|
@@ -48,9 +48,26 @@ export function start(dbName) {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
function deepFreeze(obj) {
|
|
52
|
+
if (obj && typeof obj === "object" && !Object.isFrozen(obj)) {
|
|
53
|
+
Object.freeze(obj);
|
|
54
|
+
|
|
55
|
+
for (const key of Object.keys(obj)) {
|
|
56
|
+
deepFreeze(obj[key]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return obj;
|
|
60
|
+
}
|
|
61
|
+
class DipMeta {
|
|
62
|
+
constructor(obj) {
|
|
63
|
+
Object.assign(this, deepFreeze(obj));
|
|
64
|
+
Object.freeze(this);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
51
68
|
|
|
52
69
|
export const globalMeta = args => {
|
|
53
|
-
return { ...args, company: "GLOBAL", outlet: "GLOBAL" }
|
|
70
|
+
return new DipMeta({ ...args, company: "GLOBAL", outlet: "GLOBAL" })
|
|
54
71
|
}
|
|
55
72
|
export const companyMeta = (company, args) => {
|
|
56
73
|
if (typeof company !== "string" && !Array.isArray(company))
|
|
@@ -58,7 +75,7 @@ export const companyMeta = (company, args) => {
|
|
|
58
75
|
if (!company || (typeof company === "string" && company.trim() === "") || company === "GLOBAL" || (Array.isArray(company) && (!company.length || company.some(item => typeof item !== "string" || item.trim() === "" || item === "GLOBAL")) ))
|
|
59
76
|
throw {message: "Error: Invalid company provided in Dip.companyMeta()"}
|
|
60
77
|
|
|
61
|
-
return {...args, outlet: "GLOBAL", company}
|
|
78
|
+
return new DipMeta({...args, outlet: "GLOBAL", company})
|
|
62
79
|
}
|
|
63
80
|
export const outletMeta = (outlet, args) => {
|
|
64
81
|
if (typeof outlet !== "string" && !Array.isArray(outlet))
|
|
@@ -66,7 +83,7 @@ export const outletMeta = (outlet, args) => {
|
|
|
66
83
|
if (!outlet || (typeof outlet === "string" && outlet.trim() === "") || outlet === "GLOBAL" || (Array.isArray(outlet) && (!outlet.length || outlet.some(item => typeof item !== "string" || item.trim() === "" || item === "GLOBAL")) ))
|
|
67
84
|
throw {message: "Error: Invalid outlet provided in Dip.outletMeta()"}
|
|
68
85
|
|
|
69
|
-
return {...args, company: "GLOBAL", outlet}
|
|
86
|
+
return new DipMeta({...args, company: "GLOBAL", outlet})
|
|
70
87
|
}
|
|
71
88
|
|
|
72
89
|
export const customMeta = (company, outlet, args) => {
|
|
@@ -81,7 +98,7 @@ export const customMeta = (company, outlet, args) => {
|
|
|
81
98
|
if (!outlet || (typeof outlet === "string" && outlet.trim() === "") || outlet === "GLOBAL" || (Array.isArray(outlet) && (!outlet.length || outlet.some(item => typeof item !== "string" || item.trim() === "" || item === "GLOBAL")) ))
|
|
82
99
|
throw {message: "Error: Invalid outlet provided in Dip.customMeta()"}
|
|
83
100
|
|
|
84
|
-
return {...args, company, outlet}
|
|
101
|
+
return new DipMeta({...args, company, outlet})
|
|
85
102
|
}
|
|
86
103
|
|
|
87
104
|
function validate_collection(collection, fn_name) {
|
|
@@ -251,11 +268,13 @@ export const operation = async (name, extras) => {
|
|
|
251
268
|
|
|
252
269
|
export const insert = async (meta, collection, value, _id, extras) => {
|
|
253
270
|
|
|
271
|
+
if (!(meta instanceof DipMeta)) console.warn('Warn: Provided meta is not an instance of DipMeta in Dip.insert()') // TODO: throw error once review completes
|
|
272
|
+
|
|
254
273
|
validate_collection(collection, 'in Dip.insert()')
|
|
255
274
|
|
|
256
275
|
validate_meta(meta, 'in Dip.insert()')
|
|
257
276
|
|
|
258
|
-
const topology_meta = validate_topology(meta, collection, 'in Dip.insert()')
|
|
277
|
+
const topology_meta = validate_topology(meta, collection, 'in Dip.insert()') // TODO: loop for arrays
|
|
259
278
|
|
|
260
279
|
var arg = {
|
|
261
280
|
collection: collection,
|
|
@@ -292,11 +311,13 @@ export const insert = async (meta, collection, value, _id, extras) => {
|
|
|
292
311
|
|
|
293
312
|
export const query = async (meta, collection, query, options, extras) => {
|
|
294
313
|
|
|
314
|
+
if (!(meta instanceof DipMeta)) console.warn('Warn: Provided meta is not an instance of DipMeta in Dip.query()') // TODO: throw error once review completes
|
|
315
|
+
|
|
295
316
|
validate_collection(collection, 'in Dip.query()')
|
|
296
317
|
|
|
297
318
|
validate_meta(meta, 'in Dip.query()')
|
|
298
319
|
|
|
299
|
-
const topology_meta = validate_topology(meta, collection, 'in Dip.query()')
|
|
320
|
+
const topology_meta = validate_topology(meta, collection, 'in Dip.query()') // TODO: loop for arrays
|
|
300
321
|
|
|
301
322
|
var arg = {
|
|
302
323
|
collection: collection,
|
|
@@ -339,11 +360,13 @@ function collectionArray(col) {
|
|
|
339
360
|
|
|
340
361
|
export const update = async (meta, collection, query, update, options, extras) => {
|
|
341
362
|
|
|
363
|
+
if (!(meta instanceof DipMeta)) console.warn('Warn: Provided meta is not an instance of DipMeta in Dip.update()') // TODO: throw error once review completes
|
|
364
|
+
|
|
342
365
|
validate_collection(collection, 'in Dip.update()')
|
|
343
366
|
|
|
344
367
|
validate_meta(meta, 'in Dip.update()')
|
|
345
368
|
|
|
346
|
-
const topology_meta = validate_topology(meta, collection, 'in Dip.update()')
|
|
369
|
+
const topology_meta = validate_topology(meta, collection, 'in Dip.update()') // TODO: loop for arrays
|
|
347
370
|
|
|
348
371
|
var arg = {
|
|
349
372
|
collection: collection,
|
|
@@ -373,6 +396,8 @@ export const update = async (meta, collection, query, update, options, extras) =
|
|
|
373
396
|
|
|
374
397
|
export const remove = async (meta, collection, query, options, extras) => {
|
|
375
398
|
|
|
399
|
+
if (!(meta instanceof DipMeta)) console.warn('Warn: Provided meta is not an instance of DipMeta in Dip.remove()') // TODO: throw error once review completes
|
|
400
|
+
|
|
376
401
|
validate_collection(collection, 'in Dip.remove()')
|
|
377
402
|
|
|
378
403
|
if (Utils.isEmpty(query._id) && !meta.allowDangerousRemove)
|
|
@@ -380,7 +405,7 @@ export const remove = async (meta, collection, query, options, extras) => {
|
|
|
380
405
|
|
|
381
406
|
validate_meta(meta, 'in Dip.remove()')
|
|
382
407
|
|
|
383
|
-
const topology_meta = validate_topology(meta, collection, 'in Dip.remove()')
|
|
408
|
+
const topology_meta = validate_topology(meta, collection, 'in Dip.remove()') // TODO: loop for arrays
|
|
384
409
|
|
|
385
410
|
var arg = {
|
|
386
411
|
collection: collection,
|