@ygracs/xobj-lib-js 0.2.4 → 0.2.6-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 +8 -0
- package/doc/xObj.md +80 -26
- package/index.d.ts +76 -0
- package/index.js +11 -2
- package/lib/xObj-defs.d.ts +142 -0
- package/lib/xObj-defs.js +100 -43
- package/lib/xObj-errors.d.ts +41 -0
- package/lib/xObj-errors.js +71 -0
- package/lib/xObj-lib.d.ts +297 -0
- package/lib/xObj-lib.js +94 -101
- package/package.json +13 -6
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
|
|
|
@@ -10,6 +10,15 @@ const {
|
|
|
10
10
|
isArray, isObject, isPlainObject,
|
|
11
11
|
} = require('@ygracs/bsfoc-lib-js');
|
|
12
12
|
|
|
13
|
+
const {
|
|
14
|
+
EvalKeyNameError,
|
|
15
|
+
XOBJ_ECODE_TABLE,
|
|
16
|
+
} = require('./xObj-errors');
|
|
17
|
+
|
|
18
|
+
const {
|
|
19
|
+
XOBJ_DEF_TNAMES,
|
|
20
|
+
} = require('./xObj-defs');
|
|
21
|
+
|
|
13
22
|
const {
|
|
14
23
|
XOBJ_TE_NSTR_EMSG,
|
|
15
24
|
XOBJ_TE_NSTR_ECODE,
|
|
@@ -17,9 +26,14 @@ const {
|
|
|
17
26
|
XOBJ_TE_NPOBJ_ECODE,
|
|
18
27
|
XOBJ_TE_KNES_EMSG,
|
|
19
28
|
XOBJ_TE_KNES_ECODE,
|
|
20
|
-
} =
|
|
29
|
+
} = XOBJ_ECODE_TABLE;
|
|
30
|
+
|
|
31
|
+
const {
|
|
32
|
+
XOBJ_DEF_PARAM_TNAME,
|
|
33
|
+
XOBJ_DEF_ATTR_TNAME,
|
|
34
|
+
} = XOBJ_DEF_TNAMES;
|
|
21
35
|
|
|
22
|
-
// === module
|
|
36
|
+
// === module inner block ===
|
|
23
37
|
|
|
24
38
|
/**
|
|
25
39
|
* A result of a value check ops.
|
|
@@ -75,9 +89,6 @@ function evalKeyName(value, opt = true) {
|
|
|
75
89
|
* (* constant definitions *)
|
|
76
90
|
*/
|
|
77
91
|
|
|
78
|
-
const XOBJ_DEF_PARAM_TNAME = '__text';
|
|
79
|
-
const XOBJ_DEF_ATTR_TNAME = '__attr';
|
|
80
|
-
|
|
81
92
|
/***
|
|
82
93
|
* (* function definitions *)
|
|
83
94
|
*/
|
|
@@ -119,11 +130,19 @@ function evalXObjEName(value) {
|
|
|
119
130
|
return name;
|
|
120
131
|
};
|
|
121
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
|
+
|
|
122
141
|
/**
|
|
123
142
|
* Tries to convert a value into an element name description.
|
|
124
143
|
* @function genXObjENameDescr
|
|
125
|
-
* @param {any} value
|
|
126
|
-
* @returns {
|
|
144
|
+
* @param {any} value - element name pattern
|
|
145
|
+
* @returns {XObjENameDescr}
|
|
127
146
|
*/
|
|
128
147
|
function genXObjENameDescr(value) {
|
|
129
148
|
let result = null;
|
|
@@ -187,19 +206,18 @@ function genXObjENameDescr(value) {
|
|
|
187
206
|
*/
|
|
188
207
|
function getXObjElement(obj, name) {
|
|
189
208
|
if (!isPlainObject(obj)) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
209
|
+
throw new EvalKeyNameError(
|
|
210
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
211
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
212
|
+
);
|
|
193
213
|
};
|
|
194
214
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
195
|
-
if (
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
err.code = code;
|
|
199
|
-
throw err;
|
|
215
|
+
if (isSucceed) {
|
|
216
|
+
// TODO: [?] check type of obj[key_name]
|
|
217
|
+
return obj[key] !== undefined ? obj[key] : null;
|
|
200
218
|
};
|
|
201
|
-
|
|
202
|
-
|
|
219
|
+
const { code, msg } = key;
|
|
220
|
+
throw new EvalKeyNameError(msg, { code });
|
|
203
221
|
};
|
|
204
222
|
|
|
205
223
|
/**
|
|
@@ -246,16 +264,15 @@ function getXObjAttributes(obj, key = XOBJ_DEF_ATTR_TNAME) {
|
|
|
246
264
|
*/
|
|
247
265
|
function addXObjElement(obj, name) {
|
|
248
266
|
if (!isPlainObject(obj)) {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
267
|
+
throw new EvalKeyNameError(
|
|
268
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
269
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
270
|
+
);
|
|
252
271
|
};
|
|
253
272
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
254
273
|
if (!isSucceed) {
|
|
255
274
|
const { code, msg } = key;
|
|
256
|
-
|
|
257
|
-
err.code = code;
|
|
258
|
-
throw err;
|
|
275
|
+
throw new EvalKeyNameError(msg, { code });
|
|
259
276
|
};
|
|
260
277
|
const item = {};
|
|
261
278
|
let prop = obj[key];
|
|
@@ -328,16 +345,15 @@ function insertXObjElement(...args) {
|
|
|
328
345
|
*/
|
|
329
346
|
function insertXObjElementEx(obj, name, opt) {
|
|
330
347
|
if (!isPlainObject(obj)) {
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
348
|
+
throw new EvalKeyNameError(
|
|
349
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
350
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
351
|
+
);
|
|
334
352
|
};
|
|
335
353
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
336
354
|
if (!isSucceed) {
|
|
337
355
|
const { code, msg } = key;
|
|
338
|
-
|
|
339
|
-
err.code = code;
|
|
340
|
-
throw err;
|
|
356
|
+
throw new EvalKeyNameError(msg, { code });
|
|
341
357
|
};
|
|
342
358
|
const item = {};
|
|
343
359
|
let prop = obj[key];
|
|
@@ -406,16 +422,15 @@ function deleteXObjElement(...args) {
|
|
|
406
422
|
*/
|
|
407
423
|
function deleteXObjElementEx(obj, name) {
|
|
408
424
|
if (!isPlainObject(obj)) {
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
425
|
+
throw new EvalKeyNameError(
|
|
426
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
427
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
428
|
+
);
|
|
412
429
|
};
|
|
413
430
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
414
431
|
if (!isSucceed) {
|
|
415
432
|
const { code, msg } = key;
|
|
416
|
-
|
|
417
|
-
err.code = code;
|
|
418
|
-
throw err;
|
|
433
|
+
throw new EvalKeyNameError(msg, { code });
|
|
419
434
|
};
|
|
420
435
|
let prop = obj[key];
|
|
421
436
|
isSucceed = false;
|
|
@@ -440,24 +455,21 @@ function deleteXObjElementEx(obj, name) {
|
|
|
440
455
|
*/
|
|
441
456
|
function renameXObjElement(obj, name = '', value = '') {
|
|
442
457
|
if (!isPlainObject(obj)) {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
458
|
+
throw new EvalKeyNameError(
|
|
459
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
460
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
461
|
+
);
|
|
446
462
|
};
|
|
447
463
|
const opt = false;
|
|
448
464
|
let { isSucceed: isAcceptON, value: oname } = evalKeyName(name, opt);
|
|
449
465
|
if (!isAcceptON) {
|
|
450
466
|
const { code, msg } = oname;
|
|
451
|
-
|
|
452
|
-
err.code = code;
|
|
453
|
-
throw err;
|
|
467
|
+
throw new EvalKeyNameError(msg, { code });
|
|
454
468
|
};
|
|
455
469
|
let { isSucceed: isAcceptNN, value: nname } = evalKeyName(value, opt);
|
|
456
470
|
if (!isAcceptNN) {
|
|
457
471
|
const { code, msg } = nname;
|
|
458
|
-
|
|
459
|
-
err.code = code;
|
|
460
|
-
throw err;
|
|
472
|
+
throw new EvalKeyNameError(msg, { code });
|
|
461
473
|
};
|
|
462
474
|
let isSucceed = false;
|
|
463
475
|
if (oname !== '' && oname in obj && nname !== '') {
|
|
@@ -497,9 +509,7 @@ function checkXObjAttribute(obj, attr = '', key) {
|
|
|
497
509
|
if (name === '') return false;
|
|
498
510
|
} else {
|
|
499
511
|
const { code, msg } = name;
|
|
500
|
-
|
|
501
|
-
err.code = code;
|
|
502
|
-
throw err;
|
|
512
|
+
throw new EvalKeyNameError(msg, { code });
|
|
503
513
|
};
|
|
504
514
|
return _obj[name] !== undefined;
|
|
505
515
|
};
|
|
@@ -524,9 +534,7 @@ function deleteXObjAttribute(obj, attr = '', key) {
|
|
|
524
534
|
let { isSucceed, value: name } = evalKeyName(attr, false);
|
|
525
535
|
if (!isSucceed) {
|
|
526
536
|
const { code, msg } = name;
|
|
527
|
-
|
|
528
|
-
err.code = code;
|
|
529
|
-
throw err;
|
|
537
|
+
throw new EvalKeyNameError(msg, { code });
|
|
530
538
|
};
|
|
531
539
|
isSucceed = false;
|
|
532
540
|
if (name !== '') {
|
|
@@ -551,17 +559,16 @@ function deleteXObjAttribute(obj, attr = '', key) {
|
|
|
551
559
|
*/
|
|
552
560
|
function renameXObjAttribute(obj, attr = '', value = '', key = XOBJ_DEF_ATTR_TNAME) {
|
|
553
561
|
if (!isPlainObject(obj)) {
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
562
|
+
throw new EvalKeyNameError(
|
|
563
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
564
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
565
|
+
);
|
|
557
566
|
};
|
|
558
567
|
const opt = false;
|
|
559
568
|
let { isSucceed, value: _key } = evalKeyName(key, opt);
|
|
560
569
|
if (!isSucceed) {
|
|
561
570
|
const { code, msg } = _key;
|
|
562
|
-
|
|
563
|
-
err.code = code;
|
|
564
|
-
throw err;
|
|
571
|
+
throw new EvalKeyNameError(msg, { code });
|
|
565
572
|
};
|
|
566
573
|
isSucceed = false;
|
|
567
574
|
if (_key !== '') {
|
|
@@ -570,16 +577,12 @@ function renameXObjAttribute(obj, attr = '', value = '', key = XOBJ_DEF_ATTR_TNA
|
|
|
570
577
|
let { isSucceed: isAcceptON, value: oname } = evalKeyName(attr, opt);
|
|
571
578
|
if (!isAcceptON) {
|
|
572
579
|
const { code, msg } = oname;
|
|
573
|
-
|
|
574
|
-
err.code = code;
|
|
575
|
-
throw err;
|
|
580
|
+
throw new EvalKeyNameError(msg, { code });
|
|
576
581
|
};
|
|
577
582
|
let { isSucceed: isAcceptNN, value: nname } = evalKeyName(value, opt);
|
|
578
583
|
if (!isAcceptNN) {
|
|
579
584
|
const { code, msg } = nname;
|
|
580
|
-
|
|
581
|
-
err.code = code;
|
|
582
|
-
throw err;
|
|
585
|
+
throw new EvalKeyNameError(msg, { code });
|
|
583
586
|
};
|
|
584
587
|
if (oname !== '' && oname in _obj && nname !== '') {
|
|
585
588
|
if (oname !== nname) {
|
|
@@ -606,16 +609,15 @@ function renameXObjAttribute(obj, attr = '', value = '', key = XOBJ_DEF_ATTR_TNA
|
|
|
606
609
|
*/
|
|
607
610
|
function readXObjParamRaw(obj, key = XOBJ_DEF_PARAM_TNAME) {
|
|
608
611
|
if (!isPlainObject(obj)) {
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
+
throw new EvalKeyNameError(
|
|
613
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
614
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
615
|
+
);
|
|
612
616
|
};
|
|
613
617
|
let { isSucceed, value: _key } = evalKeyName(key, false);
|
|
614
618
|
if (!isSucceed) {
|
|
615
619
|
const { code, msg } = _key;
|
|
616
|
-
|
|
617
|
-
err.code = code;
|
|
618
|
-
throw err;
|
|
620
|
+
throw new EvalKeyNameError(msg, { code });
|
|
619
621
|
};
|
|
620
622
|
return _key !== '' ? obj[_key] : undefined;
|
|
621
623
|
};
|
|
@@ -632,16 +634,15 @@ function readXObjParamRaw(obj, key = XOBJ_DEF_PARAM_TNAME) {
|
|
|
632
634
|
*/
|
|
633
635
|
function writeXObjParamRaw(obj, value, key = XOBJ_DEF_PARAM_TNAME) {
|
|
634
636
|
if (!isPlainObject(obj)) {
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
637
|
+
throw new EvalKeyNameError(
|
|
638
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
639
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
640
|
+
);
|
|
638
641
|
};
|
|
639
642
|
let { isSucceed, value: _key } = evalKeyName(key, false);
|
|
640
643
|
if (!isSucceed) {
|
|
641
644
|
const { code, msg } = _key;
|
|
642
|
-
|
|
643
|
-
err.code = code;
|
|
644
|
-
throw err;
|
|
645
|
+
throw new EvalKeyNameError(msg, { code });
|
|
645
646
|
};
|
|
646
647
|
if (_key === '' || value === undefined) {
|
|
647
648
|
isSucceed = false;
|
|
@@ -672,9 +673,7 @@ function readXObjAttrRaw(obj, attr = '', key) {
|
|
|
672
673
|
let { isSucceed, value: name } = evalKeyName(attr, false);
|
|
673
674
|
if (!isSucceed) {
|
|
674
675
|
const { code, msg } = name;
|
|
675
|
-
|
|
676
|
-
err.code = code;
|
|
677
|
-
throw err;
|
|
676
|
+
throw new EvalKeyNameError(msg, { code });
|
|
678
677
|
};
|
|
679
678
|
if (name !== '') return _obj[name];
|
|
680
679
|
};
|
|
@@ -695,9 +694,7 @@ function writeXObjAttrRaw(obj, attr = '', value, key = XOBJ_DEF_ATTR_TNAME) {
|
|
|
695
694
|
let { isSucceed, value: name } = evalKeyName(attr, false);
|
|
696
695
|
if (!isSucceed) {
|
|
697
696
|
const { code, msg } = name;
|
|
698
|
-
|
|
699
|
-
err.code = code;
|
|
700
|
-
throw err;
|
|
697
|
+
throw new EvalKeyNameError(msg, { code });
|
|
701
698
|
};
|
|
702
699
|
isSucceed = false;
|
|
703
700
|
if (name !== '' && value !== undefined) {
|
|
@@ -776,13 +773,13 @@ function readXObjParamAsBool(obj, defValue, key) {
|
|
|
776
773
|
};
|
|
777
774
|
|
|
778
775
|
/**
|
|
776
|
+
* Extracts a parameter from a given object and returns it as a number.
|
|
779
777
|
* @function readXObjParamAsNum
|
|
780
778
|
* @param {object} obj - some object
|
|
781
779
|
* @param {number} [defValue] - default value
|
|
782
780
|
* @param {string} [key] - some key
|
|
783
781
|
* @returns {number}
|
|
784
782
|
* @throws {TypeError} if first param is not an object
|
|
785
|
-
* Extracts a parameter from a given object and returns it as a number.
|
|
786
783
|
*/
|
|
787
784
|
function readXObjParamAsNum(obj, defValue, key) {
|
|
788
785
|
let result = undefined;
|
|
@@ -1348,9 +1345,10 @@ function writeXObjAttrEx(obj, attr, value, opt, key) {
|
|
|
1348
1345
|
*/
|
|
1349
1346
|
function insertXObjElements(obj, ...args) {
|
|
1350
1347
|
if (!isPlainObject(obj)) {
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1348
|
+
throw new EvalKeyNameError(
|
|
1349
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
1350
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
1351
|
+
);
|
|
1354
1352
|
};
|
|
1355
1353
|
let count = 0;
|
|
1356
1354
|
let len = args.length;
|
|
@@ -1412,16 +1410,15 @@ function insertXObjEList(...args) {
|
|
|
1412
1410
|
*/
|
|
1413
1411
|
function insertXObjEListEx(obj, name, opt) {
|
|
1414
1412
|
if (!isPlainObject(obj)) {
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1413
|
+
throw new EvalKeyNameError(
|
|
1414
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
1415
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
1416
|
+
);
|
|
1418
1417
|
};
|
|
1419
1418
|
let { isSucceed, value: key } = evalKeyName(name);
|
|
1420
1419
|
if (!isSucceed) {
|
|
1421
1420
|
const { code, msg } = key;
|
|
1422
|
-
|
|
1423
|
-
err.code = code;
|
|
1424
|
-
throw err;
|
|
1421
|
+
throw new EvalKeyNameError(msg, { code });
|
|
1425
1422
|
};
|
|
1426
1423
|
/** @type {OPT_inselops_S} */
|
|
1427
1424
|
let {
|
|
@@ -1462,9 +1459,10 @@ function insertXObjEListEx(obj, name, opt) {
|
|
|
1462
1459
|
*/
|
|
1463
1460
|
function insertXObjEChain(obj, ...args) {
|
|
1464
1461
|
if (!isPlainObject(obj)) {
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1462
|
+
throw new EvalKeyNameError(
|
|
1463
|
+
XOBJ_TE_NPOBJ_EMSG,
|
|
1464
|
+
{ code: XOBJ_TE_NPOBJ_ECODE },
|
|
1465
|
+
);
|
|
1468
1466
|
};
|
|
1469
1467
|
let result = null;
|
|
1470
1468
|
let len = args.length;
|
|
@@ -1494,9 +1492,6 @@ function insertXObjEChain(obj, ...args) {
|
|
|
1494
1492
|
|
|
1495
1493
|
// === module exports block ===
|
|
1496
1494
|
|
|
1497
|
-
module.exports.XOBJ_DEF_PARAM_TNAME = XOBJ_DEF_PARAM_TNAME;
|
|
1498
|
-
module.exports.XOBJ_DEF_ATTR_TNAME = XOBJ_DEF_ATTR_TNAME;
|
|
1499
|
-
|
|
1500
1495
|
module.exports.readXObjParamRaw = readXObjParamRaw;
|
|
1501
1496
|
module.exports.readXObjParam = readXObjParam;
|
|
1502
1497
|
module.exports.readXObjParamAsBool = readXObjParamAsBool;
|
|
@@ -1540,12 +1535,10 @@ module.exports.evalXObjEName = evalXObjEName;
|
|
|
1540
1535
|
module.exports.insertXObjEList = insertXObjEList;
|
|
1541
1536
|
module.exports.insertXObjEListEx = insertXObjEListEx;
|
|
1542
1537
|
|
|
1543
|
-
|
|
1538
|
+
// * inner *
|
|
1544
1539
|
module.exports.evalKeyName = evalKeyName;
|
|
1545
1540
|
|
|
1546
|
-
|
|
1541
|
+
// * experimental *
|
|
1547
1542
|
module.exports.genXObjENameDescr = genXObjENameDescr;
|
|
1548
|
-
/* experimental */
|
|
1549
1543
|
module.exports.insertXObjElements = insertXObjElements;
|
|
1550
|
-
/* experimental */
|
|
1551
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.6-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",
|
|
@@ -9,28 +9,35 @@
|
|
|
9
9
|
"url": "git+https://gitlab.com/ygracs/xobj-lib-js.git"
|
|
10
10
|
},
|
|
11
11
|
"main": "./index.js",
|
|
12
|
+
"types": "./index.d.ts",
|
|
12
13
|
"files": [
|
|
13
14
|
"doc/xObj.md",
|
|
14
15
|
"lib/xObj-lib.js",
|
|
15
16
|
"lib/xObj-defs.js",
|
|
17
|
+
"lib/xObj-errors.js",
|
|
18
|
+
"lib/*.d.ts",
|
|
16
19
|
"index.js",
|
|
20
|
+
"index.d.ts",
|
|
17
21
|
"CHANGELOG.md"
|
|
18
22
|
],
|
|
19
23
|
"scripts": {
|
|
20
24
|
"test": "jest",
|
|
21
25
|
"build-doc-md": "jsdoc2md",
|
|
22
|
-
"build-doc-html": "jsdoc"
|
|
26
|
+
"build-doc-html": "jsdoc",
|
|
27
|
+
"gen-dts": "npx -p typescript tsc"
|
|
23
28
|
},
|
|
24
29
|
"imports": {
|
|
25
30
|
"#lib/*": "./lib/*",
|
|
26
31
|
"#test-dir/*": "./__test__/*"
|
|
27
32
|
},
|
|
28
33
|
"dependencies": {
|
|
29
|
-
"@ygracs/bsfoc-lib-js": "^0.3.
|
|
34
|
+
"@ygracs/bsfoc-lib-js": "^0.3.1-b"
|
|
30
35
|
},
|
|
31
36
|
"devDependencies": {
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
37
|
+
"@ygracs/test-helper": "~0.0.1-b",
|
|
38
|
+
"jest": "^30.2.0",
|
|
39
|
+
"jsdoc-to-markdown": "^9.1.3",
|
|
40
|
+
"minimist": "^1.2.8",
|
|
41
|
+
"typescript": "~5.9.3"
|
|
35
42
|
}
|
|
36
43
|
}
|