@ygracs/xobj-lib-js 0.2.5-b → 0.2.7-b
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/CHANGELOG.md +1 -0
- package/LICENSE +1 -1
- package/index.d.ts +76 -53
- package/index.js +8 -1
- package/lib/xObj-defs.d.ts +118 -166
- package/lib/xObj-defs.js +5 -39
- package/lib/xObj-errors.d.ts +41 -0
- package/lib/xObj-errors.js +71 -0
- package/lib/xObj-lib.d.ts +316 -301
- package/lib/xObj-lib.js +82 -96
- package/package.json +3 -2
package/lib/xObj-lib.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// [v0.
|
|
1
|
+
// [v0.3.111-20251229]
|
|
2
2
|
|
|
3
3
|
// === module init block ===
|
|
4
4
|
|
|
@@ -11,7 +11,11 @@ const {
|
|
|
11
11
|
} = require('@ygracs/bsfoc-lib-js');
|
|
12
12
|
|
|
13
13
|
const {
|
|
14
|
+
EvalKeyNameError,
|
|
14
15
|
XOBJ_ECODE_TABLE,
|
|
16
|
+
} = require('./xObj-errors');
|
|
17
|
+
|
|
18
|
+
const {
|
|
15
19
|
XOBJ_DEF_TNAMES,
|
|
16
20
|
} = require('./xObj-defs');
|
|
17
21
|
|
|
@@ -126,11 +130,19 @@ function evalXObjEName(value) {
|
|
|
126
130
|
return name;
|
|
127
131
|
};
|
|
128
132
|
|
|
133
|
+
/**
|
|
134
|
+
* A result of an element name pattern evaluation ops.
|
|
135
|
+
* @typedef {Object} XObjENameDescr
|
|
136
|
+
* @property {boolean} isERR - ops flag
|
|
137
|
+
* @property {(null|number|string)} name - element name
|
|
138
|
+
* @property {?object} conditions - some conditions applied to an element
|
|
139
|
+
*/
|
|
140
|
+
|
|
129
141
|
/**
|
|
130
142
|
* Tries to convert a value into an element name description.
|
|
131
143
|
* @function genXObjENameDescr
|
|
132
|
-
* @param {any} value
|
|
133
|
-
* @returns {
|
|
144
|
+
* @param {any} value - element name pattern
|
|
145
|
+
* @returns {XObjENameDescr}
|
|
134
146
|
*/
|
|
135
147
|
function genXObjENameDescr(value) {
|
|
136
148
|
let result = null;
|
|
@@ -194,19 +206,18 @@ function genXObjENameDescr(value) {
|
|
|
194
206
|
*/
|
|
195
207
|
function getXObjElement(obj, name) {
|
|
196
208
|
if (!isPlainObject(obj)) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
209
|
+
throw new EvalKeyNameError(
|
|
210
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
211
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
212
|
+
);
|
|
200
213
|
};
|
|
201
214
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
202
|
-
if (
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
err.code = code;
|
|
206
|
-
throw err;
|
|
215
|
+
if (isSucceed) {
|
|
216
|
+
// TODO: [?] check type of obj[key_name]
|
|
217
|
+
return obj[key] !== undefined ? obj[key] : null;
|
|
207
218
|
};
|
|
208
|
-
|
|
209
|
-
|
|
219
|
+
const { code, msg } = key;
|
|
220
|
+
throw new EvalKeyNameError(msg, { code });
|
|
210
221
|
};
|
|
211
222
|
|
|
212
223
|
/**
|
|
@@ -253,16 +264,15 @@ function getXObjAttributes(obj, key = XOBJ_DEF_ATTR_TNAME) {
|
|
|
253
264
|
*/
|
|
254
265
|
function addXObjElement(obj, name) {
|
|
255
266
|
if (!isPlainObject(obj)) {
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
267
|
+
throw new EvalKeyNameError(
|
|
268
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
269
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
270
|
+
);
|
|
259
271
|
};
|
|
260
272
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
261
273
|
if (!isSucceed) {
|
|
262
274
|
const { code, msg } = key;
|
|
263
|
-
|
|
264
|
-
err.code = code;
|
|
265
|
-
throw err;
|
|
275
|
+
throw new EvalKeyNameError(msg, { code });
|
|
266
276
|
};
|
|
267
277
|
const item = {};
|
|
268
278
|
let prop = obj[key];
|
|
@@ -335,16 +345,15 @@ function insertXObjElement(...args) {
|
|
|
335
345
|
*/
|
|
336
346
|
function insertXObjElementEx(obj, name, opt) {
|
|
337
347
|
if (!isPlainObject(obj)) {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
348
|
+
throw new EvalKeyNameError(
|
|
349
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
350
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
351
|
+
);
|
|
341
352
|
};
|
|
342
353
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
343
354
|
if (!isSucceed) {
|
|
344
355
|
const { code, msg } = key;
|
|
345
|
-
|
|
346
|
-
err.code = code;
|
|
347
|
-
throw err;
|
|
356
|
+
throw new EvalKeyNameError(msg, { code });
|
|
348
357
|
};
|
|
349
358
|
const item = {};
|
|
350
359
|
let prop = obj[key];
|
|
@@ -413,16 +422,15 @@ function deleteXObjElement(...args) {
|
|
|
413
422
|
*/
|
|
414
423
|
function deleteXObjElementEx(obj, name) {
|
|
415
424
|
if (!isPlainObject(obj)) {
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
425
|
+
throw new EvalKeyNameError(
|
|
426
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
427
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
428
|
+
);
|
|
419
429
|
};
|
|
420
430
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
421
431
|
if (!isSucceed) {
|
|
422
432
|
const { code, msg } = key;
|
|
423
|
-
|
|
424
|
-
err.code = code;
|
|
425
|
-
throw err;
|
|
433
|
+
throw new EvalKeyNameError(msg, { code });
|
|
426
434
|
};
|
|
427
435
|
let prop = obj[key];
|
|
428
436
|
isSucceed = false;
|
|
@@ -447,24 +455,21 @@ function deleteXObjElementEx(obj, name) {
|
|
|
447
455
|
*/
|
|
448
456
|
function renameXObjElement(obj, name = '', value = '') {
|
|
449
457
|
if (!isPlainObject(obj)) {
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
458
|
+
throw new EvalKeyNameError(
|
|
459
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
460
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
461
|
+
);
|
|
453
462
|
};
|
|
454
463
|
const opt = false;
|
|
455
464
|
let { isSucceed: isAcceptON, value: oname } = evalKeyName(name, opt);
|
|
456
465
|
if (!isAcceptON) {
|
|
457
466
|
const { code, msg } = oname;
|
|
458
|
-
|
|
459
|
-
err.code = code;
|
|
460
|
-
throw err;
|
|
467
|
+
throw new EvalKeyNameError(msg, { code });
|
|
461
468
|
};
|
|
462
469
|
let { isSucceed: isAcceptNN, value: nname } = evalKeyName(value, opt);
|
|
463
470
|
if (!isAcceptNN) {
|
|
464
471
|
const { code, msg } = nname;
|
|
465
|
-
|
|
466
|
-
err.code = code;
|
|
467
|
-
throw err;
|
|
472
|
+
throw new EvalKeyNameError(msg, { code });
|
|
468
473
|
};
|
|
469
474
|
let isSucceed = false;
|
|
470
475
|
if (oname !== '' && oname in obj && nname !== '') {
|
|
@@ -504,9 +509,7 @@ function checkXObjAttribute(obj, attr = '', key) {
|
|
|
504
509
|
if (name === '') return false;
|
|
505
510
|
} else {
|
|
506
511
|
const { code, msg } = name;
|
|
507
|
-
|
|
508
|
-
err.code = code;
|
|
509
|
-
throw err;
|
|
512
|
+
throw new EvalKeyNameError(msg, { code });
|
|
510
513
|
};
|
|
511
514
|
return _obj[name] !== undefined;
|
|
512
515
|
};
|
|
@@ -531,9 +534,7 @@ function deleteXObjAttribute(obj, attr = '', key) {
|
|
|
531
534
|
let { isSucceed, value: name } = evalKeyName(attr, false);
|
|
532
535
|
if (!isSucceed) {
|
|
533
536
|
const { code, msg } = name;
|
|
534
|
-
|
|
535
|
-
err.code = code;
|
|
536
|
-
throw err;
|
|
537
|
+
throw new EvalKeyNameError(msg, { code });
|
|
537
538
|
};
|
|
538
539
|
isSucceed = false;
|
|
539
540
|
if (name !== '') {
|
|
@@ -558,17 +559,16 @@ function deleteXObjAttribute(obj, attr = '', key) {
|
|
|
558
559
|
*/
|
|
559
560
|
function renameXObjAttribute(obj, attr = '', value = '', key = XOBJ_DEF_ATTR_TNAME) {
|
|
560
561
|
if (!isPlainObject(obj)) {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
562
|
+
throw new EvalKeyNameError(
|
|
563
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
564
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
565
|
+
);
|
|
564
566
|
};
|
|
565
567
|
const opt = false;
|
|
566
568
|
let { isSucceed, value: _key } = evalKeyName(key, opt);
|
|
567
569
|
if (!isSucceed) {
|
|
568
570
|
const { code, msg } = _key;
|
|
569
|
-
|
|
570
|
-
err.code = code;
|
|
571
|
-
throw err;
|
|
571
|
+
throw new EvalKeyNameError(msg, { code });
|
|
572
572
|
};
|
|
573
573
|
isSucceed = false;
|
|
574
574
|
if (_key !== '') {
|
|
@@ -577,16 +577,12 @@ function renameXObjAttribute(obj, attr = '', value = '', key = XOBJ_DEF_ATTR_TNA
|
|
|
577
577
|
let { isSucceed: isAcceptON, value: oname } = evalKeyName(attr, opt);
|
|
578
578
|
if (!isAcceptON) {
|
|
579
579
|
const { code, msg } = oname;
|
|
580
|
-
|
|
581
|
-
err.code = code;
|
|
582
|
-
throw err;
|
|
580
|
+
throw new EvalKeyNameError(msg, { code });
|
|
583
581
|
};
|
|
584
582
|
let { isSucceed: isAcceptNN, value: nname } = evalKeyName(value, opt);
|
|
585
583
|
if (!isAcceptNN) {
|
|
586
584
|
const { code, msg } = nname;
|
|
587
|
-
|
|
588
|
-
err.code = code;
|
|
589
|
-
throw err;
|
|
585
|
+
throw new EvalKeyNameError(msg, { code });
|
|
590
586
|
};
|
|
591
587
|
if (oname !== '' && oname in _obj && nname !== '') {
|
|
592
588
|
if (oname !== nname) {
|
|
@@ -613,16 +609,15 @@ function renameXObjAttribute(obj, attr = '', value = '', key = XOBJ_DEF_ATTR_TNA
|
|
|
613
609
|
*/
|
|
614
610
|
function readXObjParamRaw(obj, key = XOBJ_DEF_PARAM_TNAME) {
|
|
615
611
|
if (!isPlainObject(obj)) {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
612
|
+
throw new EvalKeyNameError(
|
|
613
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
614
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
615
|
+
);
|
|
619
616
|
};
|
|
620
617
|
let { isSucceed, value: _key } = evalKeyName(key, false);
|
|
621
618
|
if (!isSucceed) {
|
|
622
619
|
const { code, msg } = _key;
|
|
623
|
-
|
|
624
|
-
err.code = code;
|
|
625
|
-
throw err;
|
|
620
|
+
throw new EvalKeyNameError(msg, { code });
|
|
626
621
|
};
|
|
627
622
|
return _key !== '' ? obj[_key] : undefined;
|
|
628
623
|
};
|
|
@@ -639,16 +634,15 @@ function readXObjParamRaw(obj, key = XOBJ_DEF_PARAM_TNAME) {
|
|
|
639
634
|
*/
|
|
640
635
|
function writeXObjParamRaw(obj, value, key = XOBJ_DEF_PARAM_TNAME) {
|
|
641
636
|
if (!isPlainObject(obj)) {
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
637
|
+
throw new EvalKeyNameError(
|
|
638
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
639
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
640
|
+
);
|
|
645
641
|
};
|
|
646
642
|
let { isSucceed, value: _key } = evalKeyName(key, false);
|
|
647
643
|
if (!isSucceed) {
|
|
648
644
|
const { code, msg } = _key;
|
|
649
|
-
|
|
650
|
-
err.code = code;
|
|
651
|
-
throw err;
|
|
645
|
+
throw new EvalKeyNameError(msg, { code });
|
|
652
646
|
};
|
|
653
647
|
if (_key === '' || value === undefined) {
|
|
654
648
|
isSucceed = false;
|
|
@@ -679,9 +673,7 @@ function readXObjAttrRaw(obj, attr = '', key) {
|
|
|
679
673
|
let { isSucceed, value: name } = evalKeyName(attr, false);
|
|
680
674
|
if (!isSucceed) {
|
|
681
675
|
const { code, msg } = name;
|
|
682
|
-
|
|
683
|
-
err.code = code;
|
|
684
|
-
throw err;
|
|
676
|
+
throw new EvalKeyNameError(msg, { code });
|
|
685
677
|
};
|
|
686
678
|
if (name !== '') return _obj[name];
|
|
687
679
|
};
|
|
@@ -702,9 +694,7 @@ function writeXObjAttrRaw(obj, attr = '', value, key = XOBJ_DEF_ATTR_TNAME) {
|
|
|
702
694
|
let { isSucceed, value: name } = evalKeyName(attr, false);
|
|
703
695
|
if (!isSucceed) {
|
|
704
696
|
const { code, msg } = name;
|
|
705
|
-
|
|
706
|
-
err.code = code;
|
|
707
|
-
throw err;
|
|
697
|
+
throw new EvalKeyNameError(msg, { code });
|
|
708
698
|
};
|
|
709
699
|
isSucceed = false;
|
|
710
700
|
if (name !== '' && value !== undefined) {
|
|
@@ -783,13 +773,13 @@ function readXObjParamAsBool(obj, defValue, key) {
|
|
|
783
773
|
};
|
|
784
774
|
|
|
785
775
|
/**
|
|
776
|
+
* Extracts a parameter from a given object and returns it as a number.
|
|
786
777
|
* @function readXObjParamAsNum
|
|
787
778
|
* @param {object} obj - some object
|
|
788
779
|
* @param {number} [defValue] - default value
|
|
789
780
|
* @param {string} [key] - some key
|
|
790
781
|
* @returns {number}
|
|
791
782
|
* @throws {TypeError} if first param is not an object
|
|
792
|
-
* Extracts a parameter from a given object and returns it as a number.
|
|
793
783
|
*/
|
|
794
784
|
function readXObjParamAsNum(obj, defValue, key) {
|
|
795
785
|
let result = undefined;
|
|
@@ -1355,9 +1345,10 @@ function writeXObjAttrEx(obj, attr, value, opt, key) {
|
|
|
1355
1345
|
*/
|
|
1356
1346
|
function insertXObjElements(obj, ...args) {
|
|
1357
1347
|
if (!isPlainObject(obj)) {
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1348
|
+
throw new EvalKeyNameError(
|
|
1349
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
1350
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
1351
|
+
);
|
|
1361
1352
|
};
|
|
1362
1353
|
let count = 0;
|
|
1363
1354
|
let len = args.length;
|
|
@@ -1419,16 +1410,15 @@ function insertXObjEList(...args) {
|
|
|
1419
1410
|
*/
|
|
1420
1411
|
function insertXObjEListEx(obj, name, opt) {
|
|
1421
1412
|
if (!isPlainObject(obj)) {
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1413
|
+
throw new EvalKeyNameError(
|
|
1414
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
1415
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
1416
|
+
);
|
|
1425
1417
|
};
|
|
1426
1418
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
1427
1419
|
if (!isSucceed) {
|
|
1428
1420
|
const { code, msg } = key;
|
|
1429
|
-
|
|
1430
|
-
err.code = code;
|
|
1431
|
-
throw err;
|
|
1421
|
+
throw new EvalKeyNameError(msg, { code });
|
|
1432
1422
|
};
|
|
1433
1423
|
/** @type {OPT_inselops_S} */
|
|
1434
1424
|
let {
|
|
@@ -1469,9 +1459,10 @@ function insertXObjEListEx(obj, name, opt) {
|
|
|
1469
1459
|
*/
|
|
1470
1460
|
function insertXObjEChain(obj, ...args) {
|
|
1471
1461
|
if (!isPlainObject(obj)) {
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1462
|
+
throw new EvalKeyNameError(
|
|
1463
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
1464
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
1465
|
+
);
|
|
1475
1466
|
};
|
|
1476
1467
|
let result = null;
|
|
1477
1468
|
let len = args.length;
|
|
@@ -1501,9 +1492,6 @@ function insertXObjEChain(obj, ...args) {
|
|
|
1501
1492
|
|
|
1502
1493
|
// === module exports block ===
|
|
1503
1494
|
|
|
1504
|
-
module.exports.XOBJ_DEF_PARAM_TNAME = XOBJ_DEF_PARAM_TNAME;
|
|
1505
|
-
module.exports.XOBJ_DEF_ATTR_TNAME = XOBJ_DEF_ATTR_TNAME;
|
|
1506
|
-
|
|
1507
1495
|
module.exports.readXObjParamRaw = readXObjParamRaw;
|
|
1508
1496
|
module.exports.readXObjParam = readXObjParam;
|
|
1509
1497
|
module.exports.readXObjParamAsBool = readXObjParamAsBool;
|
|
@@ -1547,12 +1535,10 @@ module.exports.evalXObjEName = evalXObjEName;
|
|
|
1547
1535
|
module.exports.insertXObjEList = insertXObjEList;
|
|
1548
1536
|
module.exports.insertXObjEListEx = insertXObjEListEx;
|
|
1549
1537
|
|
|
1550
|
-
|
|
1538
|
+
// * inner *
|
|
1551
1539
|
module.exports.evalKeyName = evalKeyName;
|
|
1552
1540
|
|
|
1553
|
-
|
|
1541
|
+
// * experimental *
|
|
1554
1542
|
module.exports.genXObjENameDescr = genXObjENameDescr;
|
|
1555
|
-
/* experimental */
|
|
1556
1543
|
module.exports.insertXObjElements = insertXObjElements;
|
|
1557
|
-
/* experimental */
|
|
1558
1544
|
module.exports.insertXObjEChain = insertXObjEChain;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ygracs/xobj-lib-js",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7-b",
|
|
4
4
|
"description": "A helper library to work with xml-js module",
|
|
5
5
|
"author": "ygracs <cs70th-om@rambler.ru>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"doc/xObj.md",
|
|
15
15
|
"lib/xObj-lib.js",
|
|
16
16
|
"lib/xObj-defs.js",
|
|
17
|
+
"lib/xObj-errors.js",
|
|
17
18
|
"lib/*.d.ts",
|
|
18
19
|
"index.js",
|
|
19
20
|
"index.d.ts",
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"#test-dir/*": "./__test__/*"
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|
|
33
|
-
"@ygracs/bsfoc-lib-js": "^0.3.
|
|
34
|
+
"@ygracs/bsfoc-lib-js": "^0.3.2-b"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@ygracs/test-helper": "~0.0.1-b",
|