@effect/language-service 0.16.6 → 0.16.7
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/index.js +28 -18
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -3707,7 +3707,7 @@ var createUnsupportedNodeComment = (ts, sourceFile, node) => ts.addSyntheticTrai
|
|
|
3707
3707
|
ts.SyntaxKind.MultiLineCommentTrivia,
|
|
3708
3708
|
" Not supported conversion: " + node.getText(sourceFile) + " "
|
|
3709
3709
|
);
|
|
3710
|
-
var processNode = (node) => gen2(function* () {
|
|
3710
|
+
var processNode = (node, isVirtualTypeNode) => gen2(function* () {
|
|
3711
3711
|
const { createApiCall, createApiPropertyAccess, entityNameToDataTypeName, sourceFile, ts } = yield* service(
|
|
3712
3712
|
SchemaGenContext
|
|
3713
3713
|
);
|
|
@@ -3741,12 +3741,12 @@ var processNode = (node) => gen2(function* () {
|
|
|
3741
3741
|
if (ts.isUnionTypeNode(node)) {
|
|
3742
3742
|
const allLiterals = yield* option(parseAllLiterals(node));
|
|
3743
3743
|
if (isSome2(allLiterals)) return createApiCall("Literal", allLiterals.value);
|
|
3744
|
-
const members = yield* all2(...node.types.map((_) => processNode(_)));
|
|
3744
|
+
const members = yield* all2(...node.types.map((_) => processNode(_, isVirtualTypeNode)));
|
|
3745
3745
|
return createApiCall("Union", members);
|
|
3746
3746
|
}
|
|
3747
3747
|
if (ts.isIntersectionTypeNode(node)) {
|
|
3748
3748
|
const [firstSchema, ...otherSchemas] = yield* all2(
|
|
3749
|
-
...node.types.map((_) => processNode(_))
|
|
3749
|
+
...node.types.map((_) => processNode(_, isVirtualTypeNode))
|
|
3750
3750
|
);
|
|
3751
3751
|
if (otherSchemas.length === 0) return firstSchema;
|
|
3752
3752
|
return ts.factory.createCallExpression(
|
|
@@ -3760,22 +3760,28 @@ var processNode = (node) => gen2(function* () {
|
|
|
3760
3760
|
}
|
|
3761
3761
|
if (ts.isTypeOperatorNode(node)) {
|
|
3762
3762
|
if (node.operator === ts.SyntaxKind.KeyOfKeyword) {
|
|
3763
|
-
return createApiCall("keyof", [yield* processNode(node.type)]);
|
|
3763
|
+
return createApiCall("keyof", [yield* processNode(node.type, isVirtualTypeNode)]);
|
|
3764
3764
|
} else if (node.operator === ts.SyntaxKind.ReadonlyKeyword) {
|
|
3765
|
-
return yield* processNode(node.type);
|
|
3765
|
+
return yield* processNode(node.type, isVirtualTypeNode);
|
|
3766
3766
|
}
|
|
3767
3767
|
}
|
|
3768
3768
|
if (ts.isArrayTypeNode(node)) {
|
|
3769
|
-
const typeSchema = yield* processNode(node.elementType);
|
|
3769
|
+
const typeSchema = yield* processNode(node.elementType, isVirtualTypeNode);
|
|
3770
3770
|
return createApiCall("Array", [typeSchema]);
|
|
3771
3771
|
}
|
|
3772
3772
|
if (ts.isTypeLiteralNode(node)) {
|
|
3773
|
-
const { properties, records } = yield* processMembers(node.members);
|
|
3773
|
+
const { properties, records } = yield* processMembers(node.members, isVirtualTypeNode);
|
|
3774
3774
|
return createApiCall(
|
|
3775
3775
|
"Struct",
|
|
3776
3776
|
[ts.factory.createObjectLiteralExpression(properties, true)].concat(records)
|
|
3777
3777
|
);
|
|
3778
3778
|
}
|
|
3779
|
+
if (ts.isTypeQueryNode(node)) {
|
|
3780
|
+
const typeChecker = yield* service(TypeCheckerApi);
|
|
3781
|
+
const type = typeChecker.getTypeAtLocation(node.exprName);
|
|
3782
|
+
const typeNode = typeChecker.typeToTypeNode(type, void 0, ts.NodeBuilderFlags.NoTruncation);
|
|
3783
|
+
if (typeNode) return yield* processNode(typeNode, true);
|
|
3784
|
+
}
|
|
3779
3785
|
if (ts.isTypeReferenceNode(node)) {
|
|
3780
3786
|
const parsedName = entityNameToDataTypeName(node.typeName);
|
|
3781
3787
|
if (isSome2(parsedName)) {
|
|
@@ -3787,13 +3793,13 @@ var processNode = (node) => gen2(function* () {
|
|
|
3787
3793
|
case "Chunk":
|
|
3788
3794
|
case "Array": {
|
|
3789
3795
|
const elements = yield* all2(
|
|
3790
|
-
...node.typeArguments ? node.typeArguments.map(processNode) : []
|
|
3796
|
+
...node.typeArguments ? node.typeArguments.map((_) => processNode(_, isVirtualTypeNode)) : []
|
|
3791
3797
|
);
|
|
3792
3798
|
return createApiCall(parsedName.value, elements);
|
|
3793
3799
|
}
|
|
3794
3800
|
case "Record": {
|
|
3795
3801
|
const elements = yield* all2(
|
|
3796
|
-
...node.typeArguments ? node.typeArguments.map(processNode) : []
|
|
3802
|
+
...node.typeArguments ? node.typeArguments.map((_) => processNode(_, isVirtualTypeNode)) : []
|
|
3797
3803
|
);
|
|
3798
3804
|
if (elements.length >= 2) {
|
|
3799
3805
|
return createApiCall(parsedName.value, [
|
|
@@ -3807,7 +3813,7 @@ var processNode = (node) => gen2(function* () {
|
|
|
3807
3813
|
}
|
|
3808
3814
|
case "Either": {
|
|
3809
3815
|
const elements = yield* all2(
|
|
3810
|
-
...node.typeArguments ? node.typeArguments.map(processNode) : []
|
|
3816
|
+
...node.typeArguments ? node.typeArguments.map((_) => processNode(_, isVirtualTypeNode)) : []
|
|
3811
3817
|
);
|
|
3812
3818
|
if (elements.length >= 2) {
|
|
3813
3819
|
return createApiCall(parsedName.value, [
|
|
@@ -3825,7 +3831,7 @@ var processNode = (node) => gen2(function* () {
|
|
|
3825
3831
|
if (typeArguments.length !== 2) {
|
|
3826
3832
|
return createUnsupportedNodeComment(ts, sourceFile, node);
|
|
3827
3833
|
}
|
|
3828
|
-
const baseType = yield* processNode(typeArguments[0]);
|
|
3834
|
+
const baseType = yield* processNode(typeArguments[0], isVirtualTypeNode);
|
|
3829
3835
|
const stringLiteralArguments = yield* option(parseAllLiterals(typeArguments[1]));
|
|
3830
3836
|
if (isNone2(stringLiteralArguments)) {
|
|
3831
3837
|
return createUnsupportedNodeComment(ts, sourceFile, node);
|
|
@@ -3852,7 +3858,7 @@ var processNode = (node) => gen2(function* () {
|
|
|
3852
3858
|
var processMembers = fn(
|
|
3853
3859
|
"SchemaGen.processMembers"
|
|
3854
3860
|
)(
|
|
3855
|
-
function* (members) {
|
|
3861
|
+
function* (members, isVirtualTypeNode) {
|
|
3856
3862
|
const { createApiCall, ts } = yield* service(
|
|
3857
3863
|
SchemaGenContext
|
|
3858
3864
|
);
|
|
@@ -3866,7 +3872,7 @@ var processMembers = fn(
|
|
|
3866
3872
|
return yield* fail(new RequiredExplicitTypesError(propertySignature));
|
|
3867
3873
|
}
|
|
3868
3874
|
const propertyAssignment = pipe(
|
|
3869
|
-
yield* processNode(propertySignature.type),
|
|
3875
|
+
yield* processNode(propertySignature.type, isVirtualTypeNode),
|
|
3870
3876
|
propertySignature.questionToken ? (_) => createApiCall("optional", [_]) : identity,
|
|
3871
3877
|
(_) => ts.factory.createPropertyAssignment(name, _)
|
|
3872
3878
|
);
|
|
@@ -3880,8 +3886,8 @@ var processMembers = fn(
|
|
|
3880
3886
|
const parameter = indexSignature.parameters[0];
|
|
3881
3887
|
if (!parameter.type) return yield* fail(new RequiredExplicitTypesError(parameter));
|
|
3882
3888
|
const parameterType = parameter.type;
|
|
3883
|
-
const key = yield* processNode(parameterType);
|
|
3884
|
-
const value = yield* processNode(indexSignature.type);
|
|
3889
|
+
const key = yield* processNode(parameterType, isVirtualTypeNode);
|
|
3890
|
+
const value = yield* processNode(indexSignature.type, isVirtualTypeNode);
|
|
3885
3891
|
records.push(
|
|
3886
3892
|
ts.factory.createObjectLiteralExpression([
|
|
3887
3893
|
ts.factory.createPropertyAssignment("key", key),
|
|
@@ -3900,7 +3906,7 @@ var processInterfaceDeclaration = fn("SchemaGen.processInterfaceDeclaration")(
|
|
|
3900
3906
|
const { createApiCall, ts } = yield* service(
|
|
3901
3907
|
SchemaGenContext
|
|
3902
3908
|
);
|
|
3903
|
-
const { properties, records } = yield* processMembers(node.members);
|
|
3909
|
+
const { properties, records } = yield* processMembers(node.members, false);
|
|
3904
3910
|
if (preferClass && records.length === 0) {
|
|
3905
3911
|
return yield* createExportSchemaClassDeclaration(node.name.text, properties);
|
|
3906
3912
|
}
|
|
@@ -3918,12 +3924,12 @@ var processTypeAliasDeclaration = fn("SchemaGen.processInterfaceDeclaration")(
|
|
|
3918
3924
|
return yield* fail(new TypeParametersNotSupportedError(node));
|
|
3919
3925
|
}
|
|
3920
3926
|
if (preferClass && ts.isTypeLiteralNode(node.type)) {
|
|
3921
|
-
const { properties, records } = yield* processMembers(node.type.members);
|
|
3927
|
+
const { properties, records } = yield* processMembers(node.type.members, false);
|
|
3922
3928
|
if (records.length === 0) {
|
|
3923
3929
|
return yield* createExportSchemaClassDeclaration(node.name.text, properties);
|
|
3924
3930
|
}
|
|
3925
3931
|
}
|
|
3926
|
-
const effectSchema = yield* processNode(node.type);
|
|
3932
|
+
const effectSchema = yield* processNode(node.type, false);
|
|
3927
3933
|
return yield* createExportVariableDeclaration(node.name.text, effectSchema);
|
|
3928
3934
|
}
|
|
3929
3935
|
);
|
|
@@ -4026,6 +4032,7 @@ var typeToEffectSchema = createRefactor({
|
|
|
4026
4032
|
description: "Refactor to Schema",
|
|
4027
4033
|
apply: fn("typeToEffectSchema.apply")(function* (sourceFile, textRange) {
|
|
4028
4034
|
const ts = yield* service(TypeScriptApi);
|
|
4035
|
+
const typeChecker = yield* service(TypeCheckerApi);
|
|
4029
4036
|
const maybeNode = yield* findNodeToProcess(sourceFile, textRange);
|
|
4030
4037
|
if (isNone2(maybeNode)) return yield* fail(new RefactorNotApplicableError());
|
|
4031
4038
|
const node = maybeNode.value;
|
|
@@ -4034,6 +4041,7 @@ var typeToEffectSchema = createRefactor({
|
|
|
4034
4041
|
description: "Refactor to Schema",
|
|
4035
4042
|
apply: pipe(
|
|
4036
4043
|
applyAtNode(sourceFile, node, false),
|
|
4044
|
+
provideService(TypeCheckerApi, typeChecker),
|
|
4037
4045
|
provideService(TypeScriptApi, ts)
|
|
4038
4046
|
)
|
|
4039
4047
|
};
|
|
@@ -4046,6 +4054,7 @@ var typeToEffectSchemaClass = createRefactor({
|
|
|
4046
4054
|
description: "Refactor to Schema.Class",
|
|
4047
4055
|
apply: fn("typeToEffectSchemaClass.apply")(function* (sourceFile, textRange) {
|
|
4048
4056
|
const ts = yield* service(TypeScriptApi);
|
|
4057
|
+
const typeChecker = yield* service(TypeCheckerApi);
|
|
4049
4058
|
const maybeNode = yield* findNodeToProcess(sourceFile, textRange);
|
|
4050
4059
|
if (isNone2(maybeNode)) return yield* fail(new RefactorNotApplicableError());
|
|
4051
4060
|
const node = maybeNode.value;
|
|
@@ -4054,6 +4063,7 @@ var typeToEffectSchemaClass = createRefactor({
|
|
|
4054
4063
|
description: "Refactor to Schema.Class",
|
|
4055
4064
|
apply: pipe(
|
|
4056
4065
|
applyAtNode(sourceFile, node, true),
|
|
4066
|
+
provideService(TypeCheckerApi, typeChecker),
|
|
4057
4067
|
provideService(TypeScriptApi, ts)
|
|
4058
4068
|
)
|
|
4059
4069
|
};
|