@xlr-lib/xlr-utils 0.1.1-next.2 → 0.1.1-next.4
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/cjs/index.cjs +76 -22
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/index.legacy-esm.js +75 -22
- package/dist/index.mjs +75 -22
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/ts-helpers.test.ts +706 -9
- package/src/__tests__/validation-helpers.test.ts +2 -2
- package/src/ts-helpers.ts +85 -17
- package/src/validation-helpers.ts +1 -7
- package/types/ts-helpers.d.ts +6 -2
package/dist/index.legacy-esm.js
CHANGED
|
@@ -218,12 +218,8 @@ function isNamedType(node) {
|
|
|
218
218
|
|
|
219
219
|
// ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/utils/src/validation-helpers.ts
|
|
220
220
|
function propertyToTuple(node) {
|
|
221
|
-
let key = node.children?.[0].value;
|
|
222
|
-
if (key.includes("-")) {
|
|
223
|
-
key = `'${key}'`;
|
|
224
|
-
}
|
|
225
221
|
return {
|
|
226
|
-
key,
|
|
222
|
+
key: node.children?.[0].value,
|
|
227
223
|
value: node.children?.[1]
|
|
228
224
|
};
|
|
229
225
|
}
|
|
@@ -369,6 +365,9 @@ function isExportedDeclaration(node) {
|
|
|
369
365
|
}
|
|
370
366
|
return false;
|
|
371
367
|
}
|
|
368
|
+
function isExportedModuleDeclaration(node) {
|
|
369
|
+
return isExportedDeclaration(node) && ts3.isModuleDeclaration(node);
|
|
370
|
+
}
|
|
372
371
|
function isNodeExported(node) {
|
|
373
372
|
return (ts3.getCombinedModifierFlags(node) & ts3.ModifierFlags.Export) !== 0 || !!node.parent && node.parent.kind === ts3.SyntaxKind.SourceFile;
|
|
374
373
|
}
|
|
@@ -437,10 +436,19 @@ function buildTemplateRegex(node, typeChecker) {
|
|
|
437
436
|
});
|
|
438
437
|
return regex;
|
|
439
438
|
}
|
|
440
|
-
function fillInGenerics(xlrNode, generics) {
|
|
439
|
+
function fillInGenerics(xlrNode, generics, preferLocalGenerics = false) {
|
|
441
440
|
let localGenerics;
|
|
442
441
|
if (generics) {
|
|
443
442
|
localGenerics = new Map(generics);
|
|
443
|
+
if (preferLocalGenerics && isGenericNodeType(xlrNode)) {
|
|
444
|
+
xlrNode.genericTokens?.forEach((token) => {
|
|
445
|
+
const genericValue = token.default ?? token.constraints;
|
|
446
|
+
localGenerics.set(
|
|
447
|
+
token.symbol,
|
|
448
|
+
fillInGenerics(genericValue, localGenerics, preferLocalGenerics)
|
|
449
|
+
);
|
|
450
|
+
});
|
|
451
|
+
}
|
|
444
452
|
} else {
|
|
445
453
|
localGenerics = /* @__PURE__ */ new Map();
|
|
446
454
|
if (isGenericNodeType(xlrNode)) {
|
|
@@ -448,7 +456,7 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
448
456
|
const genericValue = token.default ?? token.constraints;
|
|
449
457
|
localGenerics.set(
|
|
450
458
|
token.symbol,
|
|
451
|
-
fillInGenerics(genericValue, localGenerics)
|
|
459
|
+
fillInGenerics(genericValue, localGenerics, preferLocalGenerics)
|
|
452
460
|
);
|
|
453
461
|
});
|
|
454
462
|
}
|
|
@@ -459,7 +467,7 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
459
467
|
...localGenerics.get(xlrNode.ref),
|
|
460
468
|
...xlrNode.genericArguments ? {
|
|
461
469
|
genericArguments: xlrNode.genericArguments.map(
|
|
462
|
-
(ga) => fillInGenerics(ga, localGenerics)
|
|
470
|
+
(ga) => fillInGenerics(ga, localGenerics, preferLocalGenerics)
|
|
463
471
|
)
|
|
464
472
|
} : {},
|
|
465
473
|
...xlrNode.title ? { title: xlrNode.title } : {},
|
|
@@ -472,7 +480,7 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
472
480
|
...xlrNode,
|
|
473
481
|
...xlrNode.genericArguments ? {
|
|
474
482
|
genericArguments: xlrNode.genericArguments.map(
|
|
475
|
-
(ga) => fillInGenerics(ga, localGenerics)
|
|
483
|
+
(ga) => fillInGenerics(ga, localGenerics, preferLocalGenerics)
|
|
476
484
|
)
|
|
477
485
|
} : {}
|
|
478
486
|
};
|
|
@@ -483,7 +491,7 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
483
491
|
const prop = xlrNode.properties[propName];
|
|
484
492
|
newProperties[propName] = {
|
|
485
493
|
required: prop.required,
|
|
486
|
-
node: fillInGenerics(prop.node, localGenerics)
|
|
494
|
+
node: fillInGenerics(prop.node, localGenerics, preferLocalGenerics)
|
|
487
495
|
};
|
|
488
496
|
});
|
|
489
497
|
return {
|
|
@@ -493,19 +501,39 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
493
501
|
genericTokens: xlrNode.genericTokens.map((token) => {
|
|
494
502
|
return {
|
|
495
503
|
...token,
|
|
496
|
-
constraints: token.constraints ? fillInGenerics(
|
|
497
|
-
|
|
504
|
+
constraints: token.constraints ? fillInGenerics(
|
|
505
|
+
token.constraints,
|
|
506
|
+
localGenerics,
|
|
507
|
+
preferLocalGenerics
|
|
508
|
+
) : void 0,
|
|
509
|
+
default: token.default ? fillInGenerics(
|
|
510
|
+
token.default,
|
|
511
|
+
localGenerics,
|
|
512
|
+
preferLocalGenerics
|
|
513
|
+
) : void 0
|
|
498
514
|
};
|
|
499
515
|
})
|
|
500
516
|
} : {},
|
|
501
|
-
extends: xlrNode.extends ? fillInGenerics(
|
|
502
|
-
|
|
517
|
+
extends: xlrNode.extends ? fillInGenerics(
|
|
518
|
+
xlrNode.extends,
|
|
519
|
+
localGenerics,
|
|
520
|
+
preferLocalGenerics
|
|
521
|
+
) : void 0,
|
|
522
|
+
additionalProperties: xlrNode.additionalProperties ? fillInGenerics(
|
|
523
|
+
xlrNode.additionalProperties,
|
|
524
|
+
localGenerics,
|
|
525
|
+
preferLocalGenerics
|
|
526
|
+
) : false
|
|
503
527
|
};
|
|
504
528
|
}
|
|
505
529
|
if (xlrNode.type === "array") {
|
|
506
530
|
return {
|
|
507
531
|
...xlrNode,
|
|
508
|
-
elementType: fillInGenerics(
|
|
532
|
+
elementType: fillInGenerics(
|
|
533
|
+
xlrNode.elementType,
|
|
534
|
+
localGenerics,
|
|
535
|
+
preferLocalGenerics
|
|
536
|
+
)
|
|
509
537
|
};
|
|
510
538
|
} else if (xlrNode.type === "or" || xlrNode.type === "and") {
|
|
511
539
|
let pointer;
|
|
@@ -517,25 +545,49 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
517
545
|
return {
|
|
518
546
|
...xlrNode,
|
|
519
547
|
[xlrNode.type]: pointer.map((prop) => {
|
|
520
|
-
return fillInGenerics(prop, localGenerics);
|
|
548
|
+
return fillInGenerics(prop, localGenerics, preferLocalGenerics);
|
|
521
549
|
})
|
|
522
550
|
};
|
|
523
551
|
} else if (xlrNode.type === "record") {
|
|
524
552
|
return {
|
|
525
553
|
...xlrNode,
|
|
526
|
-
keyType: fillInGenerics(
|
|
527
|
-
|
|
554
|
+
keyType: fillInGenerics(
|
|
555
|
+
xlrNode.keyType,
|
|
556
|
+
localGenerics,
|
|
557
|
+
preferLocalGenerics
|
|
558
|
+
),
|
|
559
|
+
valueType: fillInGenerics(
|
|
560
|
+
xlrNode.valueType,
|
|
561
|
+
localGenerics,
|
|
562
|
+
preferLocalGenerics
|
|
563
|
+
)
|
|
528
564
|
};
|
|
529
565
|
} else if (xlrNode.type === "conditional") {
|
|
530
566
|
const filledInConditional = {
|
|
531
567
|
...xlrNode,
|
|
532
568
|
check: {
|
|
533
|
-
left: fillInGenerics(
|
|
534
|
-
|
|
569
|
+
left: fillInGenerics(
|
|
570
|
+
xlrNode.check.left,
|
|
571
|
+
localGenerics,
|
|
572
|
+
preferLocalGenerics
|
|
573
|
+
),
|
|
574
|
+
right: fillInGenerics(
|
|
575
|
+
xlrNode.check.right,
|
|
576
|
+
localGenerics,
|
|
577
|
+
preferLocalGenerics
|
|
578
|
+
)
|
|
535
579
|
},
|
|
536
580
|
value: {
|
|
537
|
-
true: fillInGenerics(
|
|
538
|
-
|
|
581
|
+
true: fillInGenerics(
|
|
582
|
+
xlrNode.value.true,
|
|
583
|
+
localGenerics,
|
|
584
|
+
preferLocalGenerics
|
|
585
|
+
),
|
|
586
|
+
false: fillInGenerics(
|
|
587
|
+
xlrNode.value.false,
|
|
588
|
+
localGenerics,
|
|
589
|
+
preferLocalGenerics
|
|
590
|
+
)
|
|
539
591
|
}
|
|
540
592
|
};
|
|
541
593
|
if (filledInConditional.check.left.type !== "ref" && filledInConditional.check.right.type !== "ref") {
|
|
@@ -847,6 +899,7 @@ export {
|
|
|
847
899
|
isArrayType,
|
|
848
900
|
isBooleanType,
|
|
849
901
|
isExportedDeclaration,
|
|
902
|
+
isExportedModuleDeclaration,
|
|
850
903
|
isGenericInterfaceDeclaration,
|
|
851
904
|
isGenericNamedType,
|
|
852
905
|
isGenericNodeType,
|
package/dist/index.mjs
CHANGED
|
@@ -218,12 +218,8 @@ function isNamedType(node) {
|
|
|
218
218
|
|
|
219
219
|
// ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/utils/src/validation-helpers.ts
|
|
220
220
|
function propertyToTuple(node) {
|
|
221
|
-
let key = node.children?.[0].value;
|
|
222
|
-
if (key.includes("-")) {
|
|
223
|
-
key = `'${key}'`;
|
|
224
|
-
}
|
|
225
221
|
return {
|
|
226
|
-
key,
|
|
222
|
+
key: node.children?.[0].value,
|
|
227
223
|
value: node.children?.[1]
|
|
228
224
|
};
|
|
229
225
|
}
|
|
@@ -369,6 +365,9 @@ function isExportedDeclaration(node) {
|
|
|
369
365
|
}
|
|
370
366
|
return false;
|
|
371
367
|
}
|
|
368
|
+
function isExportedModuleDeclaration(node) {
|
|
369
|
+
return isExportedDeclaration(node) && ts3.isModuleDeclaration(node);
|
|
370
|
+
}
|
|
372
371
|
function isNodeExported(node) {
|
|
373
372
|
return (ts3.getCombinedModifierFlags(node) & ts3.ModifierFlags.Export) !== 0 || !!node.parent && node.parent.kind === ts3.SyntaxKind.SourceFile;
|
|
374
373
|
}
|
|
@@ -437,10 +436,19 @@ function buildTemplateRegex(node, typeChecker) {
|
|
|
437
436
|
});
|
|
438
437
|
return regex;
|
|
439
438
|
}
|
|
440
|
-
function fillInGenerics(xlrNode, generics) {
|
|
439
|
+
function fillInGenerics(xlrNode, generics, preferLocalGenerics = false) {
|
|
441
440
|
let localGenerics;
|
|
442
441
|
if (generics) {
|
|
443
442
|
localGenerics = new Map(generics);
|
|
443
|
+
if (preferLocalGenerics && isGenericNodeType(xlrNode)) {
|
|
444
|
+
xlrNode.genericTokens?.forEach((token) => {
|
|
445
|
+
const genericValue = token.default ?? token.constraints;
|
|
446
|
+
localGenerics.set(
|
|
447
|
+
token.symbol,
|
|
448
|
+
fillInGenerics(genericValue, localGenerics, preferLocalGenerics)
|
|
449
|
+
);
|
|
450
|
+
});
|
|
451
|
+
}
|
|
444
452
|
} else {
|
|
445
453
|
localGenerics = /* @__PURE__ */ new Map();
|
|
446
454
|
if (isGenericNodeType(xlrNode)) {
|
|
@@ -448,7 +456,7 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
448
456
|
const genericValue = token.default ?? token.constraints;
|
|
449
457
|
localGenerics.set(
|
|
450
458
|
token.symbol,
|
|
451
|
-
fillInGenerics(genericValue, localGenerics)
|
|
459
|
+
fillInGenerics(genericValue, localGenerics, preferLocalGenerics)
|
|
452
460
|
);
|
|
453
461
|
});
|
|
454
462
|
}
|
|
@@ -459,7 +467,7 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
459
467
|
...localGenerics.get(xlrNode.ref),
|
|
460
468
|
...xlrNode.genericArguments ? {
|
|
461
469
|
genericArguments: xlrNode.genericArguments.map(
|
|
462
|
-
(ga) => fillInGenerics(ga, localGenerics)
|
|
470
|
+
(ga) => fillInGenerics(ga, localGenerics, preferLocalGenerics)
|
|
463
471
|
)
|
|
464
472
|
} : {},
|
|
465
473
|
...xlrNode.title ? { title: xlrNode.title } : {},
|
|
@@ -472,7 +480,7 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
472
480
|
...xlrNode,
|
|
473
481
|
...xlrNode.genericArguments ? {
|
|
474
482
|
genericArguments: xlrNode.genericArguments.map(
|
|
475
|
-
(ga) => fillInGenerics(ga, localGenerics)
|
|
483
|
+
(ga) => fillInGenerics(ga, localGenerics, preferLocalGenerics)
|
|
476
484
|
)
|
|
477
485
|
} : {}
|
|
478
486
|
};
|
|
@@ -483,7 +491,7 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
483
491
|
const prop = xlrNode.properties[propName];
|
|
484
492
|
newProperties[propName] = {
|
|
485
493
|
required: prop.required,
|
|
486
|
-
node: fillInGenerics(prop.node, localGenerics)
|
|
494
|
+
node: fillInGenerics(prop.node, localGenerics, preferLocalGenerics)
|
|
487
495
|
};
|
|
488
496
|
});
|
|
489
497
|
return {
|
|
@@ -493,19 +501,39 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
493
501
|
genericTokens: xlrNode.genericTokens.map((token) => {
|
|
494
502
|
return {
|
|
495
503
|
...token,
|
|
496
|
-
constraints: token.constraints ? fillInGenerics(
|
|
497
|
-
|
|
504
|
+
constraints: token.constraints ? fillInGenerics(
|
|
505
|
+
token.constraints,
|
|
506
|
+
localGenerics,
|
|
507
|
+
preferLocalGenerics
|
|
508
|
+
) : void 0,
|
|
509
|
+
default: token.default ? fillInGenerics(
|
|
510
|
+
token.default,
|
|
511
|
+
localGenerics,
|
|
512
|
+
preferLocalGenerics
|
|
513
|
+
) : void 0
|
|
498
514
|
};
|
|
499
515
|
})
|
|
500
516
|
} : {},
|
|
501
|
-
extends: xlrNode.extends ? fillInGenerics(
|
|
502
|
-
|
|
517
|
+
extends: xlrNode.extends ? fillInGenerics(
|
|
518
|
+
xlrNode.extends,
|
|
519
|
+
localGenerics,
|
|
520
|
+
preferLocalGenerics
|
|
521
|
+
) : void 0,
|
|
522
|
+
additionalProperties: xlrNode.additionalProperties ? fillInGenerics(
|
|
523
|
+
xlrNode.additionalProperties,
|
|
524
|
+
localGenerics,
|
|
525
|
+
preferLocalGenerics
|
|
526
|
+
) : false
|
|
503
527
|
};
|
|
504
528
|
}
|
|
505
529
|
if (xlrNode.type === "array") {
|
|
506
530
|
return {
|
|
507
531
|
...xlrNode,
|
|
508
|
-
elementType: fillInGenerics(
|
|
532
|
+
elementType: fillInGenerics(
|
|
533
|
+
xlrNode.elementType,
|
|
534
|
+
localGenerics,
|
|
535
|
+
preferLocalGenerics
|
|
536
|
+
)
|
|
509
537
|
};
|
|
510
538
|
} else if (xlrNode.type === "or" || xlrNode.type === "and") {
|
|
511
539
|
let pointer;
|
|
@@ -517,25 +545,49 @@ function fillInGenerics(xlrNode, generics) {
|
|
|
517
545
|
return {
|
|
518
546
|
...xlrNode,
|
|
519
547
|
[xlrNode.type]: pointer.map((prop) => {
|
|
520
|
-
return fillInGenerics(prop, localGenerics);
|
|
548
|
+
return fillInGenerics(prop, localGenerics, preferLocalGenerics);
|
|
521
549
|
})
|
|
522
550
|
};
|
|
523
551
|
} else if (xlrNode.type === "record") {
|
|
524
552
|
return {
|
|
525
553
|
...xlrNode,
|
|
526
|
-
keyType: fillInGenerics(
|
|
527
|
-
|
|
554
|
+
keyType: fillInGenerics(
|
|
555
|
+
xlrNode.keyType,
|
|
556
|
+
localGenerics,
|
|
557
|
+
preferLocalGenerics
|
|
558
|
+
),
|
|
559
|
+
valueType: fillInGenerics(
|
|
560
|
+
xlrNode.valueType,
|
|
561
|
+
localGenerics,
|
|
562
|
+
preferLocalGenerics
|
|
563
|
+
)
|
|
528
564
|
};
|
|
529
565
|
} else if (xlrNode.type === "conditional") {
|
|
530
566
|
const filledInConditional = {
|
|
531
567
|
...xlrNode,
|
|
532
568
|
check: {
|
|
533
|
-
left: fillInGenerics(
|
|
534
|
-
|
|
569
|
+
left: fillInGenerics(
|
|
570
|
+
xlrNode.check.left,
|
|
571
|
+
localGenerics,
|
|
572
|
+
preferLocalGenerics
|
|
573
|
+
),
|
|
574
|
+
right: fillInGenerics(
|
|
575
|
+
xlrNode.check.right,
|
|
576
|
+
localGenerics,
|
|
577
|
+
preferLocalGenerics
|
|
578
|
+
)
|
|
535
579
|
},
|
|
536
580
|
value: {
|
|
537
|
-
true: fillInGenerics(
|
|
538
|
-
|
|
581
|
+
true: fillInGenerics(
|
|
582
|
+
xlrNode.value.true,
|
|
583
|
+
localGenerics,
|
|
584
|
+
preferLocalGenerics
|
|
585
|
+
),
|
|
586
|
+
false: fillInGenerics(
|
|
587
|
+
xlrNode.value.false,
|
|
588
|
+
localGenerics,
|
|
589
|
+
preferLocalGenerics
|
|
590
|
+
)
|
|
539
591
|
}
|
|
540
592
|
};
|
|
541
593
|
if (filledInConditional.check.left.type !== "ref" && filledInConditional.check.right.type !== "ref") {
|
|
@@ -847,6 +899,7 @@ export {
|
|
|
847
899
|
isArrayType,
|
|
848
900
|
isBooleanType,
|
|
849
901
|
isExportedDeclaration,
|
|
902
|
+
isExportedModuleDeclaration,
|
|
850
903
|
isGenericInterfaceDeclaration,
|
|
851
904
|
isGenericNamedType,
|
|
852
905
|
isGenericNodeType,
|