jsii
jsii copied to clipboard
Unable to resolve unexported referenced type when moved
:bug: Bug Report
Affected Languages
- [X]
TypeScript
orJavascript
- [ ]
Python
- [ ]
Java
- [ ] .NET (
C#
,F#
, ...)
General Information
- JSII Version: 1.12.0
- Platform: Darwin - 18.7.0 Darwin Kernel Version 18.7.0: Thu Jun 18 20:50:10 PDT 2020; root:xnu-4903.278.43~1/RELEASE_X86_64 x86_64
What is the problem?
When refactoring unexported (supporting) types from inline in the same file as exported types to another (unexported) file, jsii loses the ability to resolve the types.
This works
index.ts
export * from './has-unexported-base';
has-unexported-base.ts
interface MyExportedPropsBase { // Not exported
readonly myProperty: number;
}
export interface MyExportedProps extends MyExportedPropsBase { // Exported
readonly mySecondProperty: number;
}
This doesn't
index.ts
export * from './has-unexported-base';
has-unexported-base.ts
import { MyExportedPropsBase } from './private/unexported-base';
export interface MyExportedProps extends MyExportedPropsBase {
readonly mySecondProperty: number;
}
private/unexported-base.ts
export interface MyExportedPropsBase { // Exported here, but not in `index.ts`
readonly myProperty: number;
}
Verbose Log
[2020-09-04T11:58:30.924] [ERROR] jsii/compiler - Type model errors prevented the JSII assembly from being created
error JSII9002: Unable to resolve type "jsii-calc.MyExportedPropsBase". It may be @iternal or not exported from the module's entry point (as configured in "package.json" as "main").
lib/has-unexported-base.ts:3:1 - error JSII9002: Unable to resolve type "jsii-calc.MyExportedPropsBase". It may be @iternal or not exported from the module's entry point (as configured in "package.json" as "main").
3 export interface MyExportedProps extends MyExportedPropsBase {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 readonly mySecondProperty: number;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 }
Verbose output
[2020-09-04T13:11:18.556] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.submodule.child.Goodness
[2020-09-04T13:11:18.560] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.submodule.child.Awesomeness
[2020-09-04T13:11:18.560] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.submodule.child.SomeEnum
[2020-09-04T13:11:18.561] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.AllTypesEnum
[2020-09-04T13:11:18.561] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.StringEnum
[2020-09-04T13:11:18.562] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.SingletonStringEnum
[2020-09-04T13:11:18.562] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.SingletonIntEnum
[2020-09-04T13:11:18.562] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.ExperimentalEnum
[2020-09-04T13:11:18.563] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.StableEnum
[2020-09-04T13:11:18.563] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.DeprecatedEnum
[2020-09-04T13:11:18.563] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.ExternalEnum
[2020-09-04T13:11:18.568] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ClassWithDocs
[2020-09-04T13:11:18.569] [INFO] jsii/assembler - Registering JSII class: jsii-calc.BaseJsii976
[2020-09-04T13:11:18.587] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IJsii487External
[2020-09-04T13:11:18.588] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IJsii487External2
[2020-09-04T13:11:18.588] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IJsii496
[2020-09-04T13:11:18.605] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DerivedClassHasNoProperties.Base
[2020-09-04T13:11:18.606] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Thrower
[2020-09-04T13:11:18.606] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AbstractClassBase
[2020-09-04T13:11:18.606] [INFO] jsii/assembler - Registering JSII class: jsii-calc.PublicClass
[2020-09-04T13:11:18.607] [INFO] jsii/assembler - Registering JSII class: jsii-calc.StripInternal
[2020-09-04T13:11:18.607] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Implementation
[2020-09-04T13:11:18.608] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Old
[2020-09-04T13:11:18.610] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.submodule.child.Structure
[2020-09-04T13:11:18.611] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.submodule.nested_submodule.deeplyNested.INamespaced
[2020-09-04T13:11:18.611] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.PythonSelf.StructWithSelf
[2020-09-04T13:11:18.611] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.InterfaceInNamespaceOnlyInterface.Hello
[2020-09-04T13:11:18.611] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.InterfaceInNamespaceIncludesClasses.Hello
[2020-09-04T13:11:18.612] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IInterfaceImplementedByAbstractClass
[2020-09-04T13:11:18.612] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IMutableObjectLiteral
[2020-09-04T13:11:18.612] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IPrivatelyImplemented
[2020-09-04T13:11:18.615] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IInterfaceWithInternal
[2020-09-04T13:11:18.615] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IAnotherPublicInterface
[2020-09-04T13:11:18.616] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.DiamondInheritanceBaseLevelStruct
[2020-09-04T13:11:18.616] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IBell
[2020-09-04T13:11:18.616] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.NestedStruct
[2020-09-04T13:11:18.616] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IReturnJsii976
[2020-09-04T13:11:18.617] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.ParentStruct982
[2020-09-04T13:11:18.617] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.ExperimentalStruct
[2020-09-04T13:11:18.617] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.StableStruct
[2020-09-04T13:11:18.618] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.DeprecatedStruct
[2020-09-04T13:11:18.618] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.ExternalStruct
[2020-09-04T13:11:18.621] [INFO] jsii/assembler - Registering JSII class: jsii-calc.UseBundledDependency
[2020-09-04T13:11:18.622] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ImplementInternalInterface
[2020-09-04T13:11:18.622] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ImplementsPrivateInterface
[2020-09-04T13:11:18.622] [INFO] jsii/assembler - Registering JSII class: jsii-calc.UmaskCheck
[2020-09-04T13:11:18.624] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IRandomNumberGenerator
[2020-09-04T13:11:18.624] [INFO] jsii/assembler - Registering JSII class: jsii-calc.PropertyNamedProperty
[2020-09-04T13:11:18.625] [INFO] jsii/assembler - Registering JSII class: jsii-calc.JSObjectLiteralToNativeClass
[2020-09-04T13:11:18.627] [INFO] jsii/assembler - Registering JSII class: jsii-calc.InterfaceInNamespaceIncludesClasses.Foo
[2020-09-04T13:11:18.628] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ExportedBaseClass
[2020-09-04T13:11:18.628] [INFO] jsii/assembler - Registering JSII class: jsii-calc.JsiiAgent
[2020-09-04T13:11:18.628] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AugmentableClass
[2020-09-04T13:11:18.629] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IPublicInterface
[2020-09-04T13:11:18.629] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IPublicInterface2
[2020-09-04T13:11:18.630] [INFO] jsii/assembler - Registering JSII class: jsii-calc.WithPrivatePropertyInConstructor
[2020-09-04T13:11:18.632] [INFO] jsii/assembler - Registering JSII class: jsii-calc.SingletonString
[2020-09-04T13:11:18.633] [INFO] jsii/assembler - Registering JSII class: jsii-calc.SingletonInt
[2020-09-04T13:11:18.633] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.SmellyStruct
[2020-09-04T13:11:18.634] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IInterfaceWithProperties
[2020-09-04T13:11:18.634] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IInterfaceWithMethods
[2020-09-04T13:11:18.634] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.ExtendsInternalInterface
[2020-09-04T13:11:18.635] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.OptionalStruct
[2020-09-04T13:11:18.635] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.Greetee
[2020-09-04T13:11:18.635] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IJSII417PublicBaseOfBase
[2020-09-04T13:11:18.636] [INFO] jsii/assembler - Registering JSII class: jsii-calc.MethodNamedProperty
[2020-09-04T13:11:18.636] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.PythonSelf.IInterfaceWithSelf
[2020-09-04T13:11:18.637] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DoNotRecognizeAnyAsOptional
[2020-09-04T13:11:18.641] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IInterfaceWithOptionalMethodArguments
[2020-09-04T13:11:18.641] [INFO] jsii/assembler - Registering JSII class: jsii-calc.VoidCallback
[2020-09-04T13:11:18.642] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IAnonymouslyImplementMe
[2020-09-04T13:11:18.643] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IObjectWithProperty
[2020-09-04T13:11:18.644] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IOptionalMethod
[2020-09-04T13:11:18.646] [INFO] jsii/assembler - Registering JSII class: jsii-calc.StaticContext
[2020-09-04T13:11:18.648] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DontComplainAboutVariadicAfterOptional
[2020-09-04T13:11:18.649] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.SecondLevelStruct
[2020-09-04T13:11:18.649] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.SupportsNiceJavaBuilderProps
[2020-09-04T13:11:18.650] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IExperimentalInterface
[2020-09-04T13:11:18.650] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IStableInterface
[2020-09-04T13:11:18.651] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IDeprecatedInterface
[2020-09-04T13:11:18.651] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IExternalInterface
[2020-09-04T13:11:18.652] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.NullShouldBeTreatedAsUndefinedData
[2020-09-04T13:11:18.652] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IExtendsPrivateInterface
[2020-09-04T13:11:18.653] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DynamicPropertyBearer
[2020-09-04T13:11:18.656] [INFO] jsii/assembler - Registering JSII class: jsii-calc.BurriedAnonymousObject
[2020-09-04T13:11:18.658] [INFO] jsii/assembler - Registering JSII class: jsii-calc.PythonSelf.ClassWithSelf
[2020-09-04T13:11:18.658] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ClassWithJavaReservedWords
[2020-09-04T13:11:18.659] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.CalculatorProps
[2020-09-04T13:11:18.659] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.EraseUndefinedHashValuesOptions
[2020-09-04T13:11:18.660] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.StructParameterType
[2020-09-04T13:11:18.661] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DoNotOverridePrivates
[2020-09-04T13:11:18.664] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AbstractSuite
[2020-09-04T13:11:18.665] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.StructA
[2020-09-04T13:11:18.667] [INFO] jsii/assembler - Registering JSII class: jsii-calc.OverridableProtectedMember
[2020-09-04T13:11:18.667] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DisappointingCollectionSource
[2020-09-04T13:11:18.668] [INFO] jsii/assembler - Registering JSII class: jsii-calc.NodeStandardLibrary
[2020-09-04T13:11:18.668] [INFO] jsii/assembler - Registering JSII class: jsii-calc.RuntimeTypeChecking
[2020-09-04T13:11:18.669] [INFO] jsii/assembler - Registering JSII class: jsii-calc.VariadicMethod
[2020-09-04T13:11:18.669] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AllowedMethodNames
[2020-09-04T13:11:18.670] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ExperimentalClass
[2020-09-04T13:11:18.670] [INFO] jsii/assembler - Registering JSII class: jsii-calc.StableClass
[2020-09-04T13:11:18.670] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DeprecatedClass
[2020-09-04T13:11:18.671] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ExternalClass
[2020-09-04T13:11:18.672] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.StructWithJavaReservedWords
[2020-09-04T13:11:18.673] [INFO] jsii/assembler - Registering JSII class: jsii-calc.OptionalConstructorArgument
[2020-09-04T13:11:18.673] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DefaultedConstructorArgument
[2020-09-04T13:11:18.678] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.LoadBalancedFargateServiceProps
[2020-09-04T13:11:18.679] [INFO] jsii/assembler - Registering JSII class: jsii-calc.VirtualMethodPlayground
[2020-09-04T13:11:18.680] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AsyncVirtualMethods
[2020-09-04T13:11:18.682] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ClassWithCollections
[2020-09-04T13:11:18.684] [INFO] jsii/assembler - Registering JSII class: jsii-calc.JsonFormatter
[2020-09-04T13:11:18.685] [INFO] jsii/assembler - Registering JSII class: jsii-calc.SyncVirtualMethods
[2020-09-04T13:11:18.686] [INFO] jsii/assembler - Registering JSII class: jsii-calc.PythonReservedWords
[2020-09-04T13:11:18.689] [INFO] jsii/assembler - Registering JSII class: jsii-calc.JavaReservedWords
[2020-09-04T13:11:18.697] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IFriendlier
[2020-09-04T13:11:18.698] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Add
[2020-09-04T13:11:18.701] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DerivedClassHasNoProperties.Derived
[2020-09-04T13:11:18.702] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DoubleTrouble
[2020-09-04T13:11:18.704] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.ImplictBaseOfBase
[2020-09-04T13:11:18.705] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IInterfaceWithPropertiesExtension
[2020-09-04T13:11:18.706] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IInterfaceThatShouldNotBeADataType
[2020-09-04T13:11:18.707] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ImplementsInterfaceWithInternal
[2020-09-04T13:11:18.707] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ImplementsInterfaceWithInternalSubclass
[2020-09-04T13:11:18.708] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.INonInternalInterface
[2020-09-04T13:11:18.709] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.DiamondInheritanceFirstMidLevelStruct
[2020-09-04T13:11:18.709] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.DiamondInheritanceSecondMidLevelStruct
[2020-09-04T13:11:18.710] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IFriendlyRandomGenerator
[2020-09-04T13:11:18.711] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ClassThatImplementsTheInternalInterface
[2020-09-04T13:11:18.712] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ClassThatImplementsThePrivateInterface
[2020-09-04T13:11:18.714] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Bell
[2020-09-04T13:11:18.714] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.ChildStruct982
[2020-09-04T13:11:18.716] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DynamicPropertyBearerChild
[2020-09-04T13:11:18.717] [INFO] jsii/assembler - Registering JSII class: jsii-calc.JSII417Derived
[2020-09-04T13:11:18.717] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IJSII417Derived
[2020-09-04T13:11:18.718] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.DiamondInheritanceTopLevelStruct
[2020-09-04T13:11:18.718] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Jsii487Derived
[2020-09-04T13:11:18.719] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Polymorphism
[2020-09-04T13:11:18.720] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Jsii496Derived
[2020-09-04T13:11:18.721] [INFO] jsii/assembler - Registering JSII class: jsii-calc.GreetingAugmenter
[2020-09-04T13:11:18.722] [INFO] jsii/assembler - Registering JSII class: jsii-calc.OverrideReturnsObject
[2020-09-04T13:11:18.722] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ReturnsPrivateImplementationOfInterface
[2020-09-04T13:11:18.723] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ClassWithMutableObjectLiteralProperty
[2020-09-04T13:11:18.724] [INFO] jsii/assembler - Registering JSII class: jsii-calc.EraseUndefinedHashValues
[2020-09-04T13:11:18.725] [INFO] jsii/assembler - Registering JSII class: jsii-calc.PartiallyInitializedThisConsumer
[2020-09-04T13:11:18.726] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DataRenderer
[2020-09-04T13:11:18.727] [INFO] jsii/assembler - Registering JSII class: jsii-calc.RootStructValidator
[2020-09-04T13:11:18.728] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ConstructorPassesThisOut
[2020-09-04T13:11:18.728] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IConcreteBellRinger
[2020-09-04T13:11:18.729] [INFO] jsii/assembler - Registering JSII class: jsii-calc.DocumentedClass
[2020-09-04T13:11:18.730] [INFO] jsii/assembler - Registering JSII class: jsii-calc.JSObjectLiteralToNative
[2020-09-04T13:11:18.730] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IBellRinger
[2020-09-04T13:11:18.731] [INFO] jsii/assembler - Registering JSII class: jsii-calc.UseCalcBase
[2020-09-04T13:11:18.732] [INFO] jsii/assembler - Registering JSII class: jsii-calc.SomeTypeJsii976
[2020-09-04T13:11:18.733] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ObjectWithPropertyProvider
[2020-09-04T13:11:18.734] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Isomorphism
[2020-09-04T13:11:18.734] [INFO] jsii/assembler - Registering JSII class: jsii-calc.JSII417PublicBaseOfBase
[2020-09-04T13:11:18.735] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IStructReturningDelegate
[2020-09-04T13:11:18.736] [INFO] jsii/assembler - Registering JSII class: jsii-calc.OptionalArgumentInvoker
[2020-09-04T13:11:18.736] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.RootStruct
[2020-09-04T13:11:18.736] [INFO] jsii/assembler - Registering JSII class: jsii-calc.InterfacesMaker
[2020-09-04T13:11:18.737] [INFO] jsii/assembler - Registering JSII class: jsii-calc.OptionalStructConsumer
[2020-09-04T13:11:18.737] [INFO] jsii/assembler - Registering JSII class: jsii-calc.NullShouldBeTreatedAsUndefined
[2020-09-04T13:11:18.738] [INFO] jsii/assembler - Registering JSII class: jsii-calc.SupportsNiceJavaBuilderWithRequiredProps
[2020-09-04T13:11:18.739] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.TopLevelStruct
[2020-09-04T13:11:18.740] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.StructB
[2020-09-04T13:11:18.740] [INFO] jsii/assembler - Registering JSII class: jsii-calc.VariadicInvoker
[2020-09-04T13:11:18.740] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.UnionProperties
[2020-09-04T13:11:18.745] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.MyExportedProps
[2020-09-04T13:11:18.746] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.submodule.back_references.MyClassReference
[2020-09-04T13:11:18.746] [INFO] jsii/assembler - Registering JSII class: jsii-calc.NestedClassInstance
[2020-09-04T13:11:18.747] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.submodule.child.KwargsProps
[2020-09-04T13:11:18.748] [INFO] jsii/assembler - Registering JSII class: jsii-calc.submodule.isolated.Kwargs
[2020-09-04T13:11:18.748] [INFO] jsii/assembler - Registering JSII class: jsii-calc.submodule.child.InnerClass
[2020-09-04T13:11:18.748] [INFO] jsii/assembler - Registering JSII class: jsii-calc.submodule.child.OuterClass
[2020-09-04T13:11:18.749] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.submodule.child.SomeStruct
[2020-09-04T13:11:18.755] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Multiply
[2020-09-04T13:11:18.757] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Negate
[2020-09-04T13:11:18.758] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AbstractClass
[2020-09-04T13:11:18.762] [INFO] jsii/assembler - Registering JSII class: jsii-calc.InbetweenClass
[2020-09-04T13:11:18.762] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ClassWithPrivateConstructorAndAutomaticProperties
[2020-09-04T13:11:18.763] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ObjectRefsInCollections
[2020-09-04T13:11:18.764] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ConsumersOfThisCrazyTypeSystem
[2020-09-04T13:11:18.766] [INFO] jsii/assembler - Registering JSII class: jsii-calc.PythonSelf.ClassWithSelfKwarg
[2020-09-04T13:11:18.767] [INFO] jsii/assembler - Registering JSII class: jsii-calc.EnumDispenser
[2020-09-04T13:11:18.767] [INFO] jsii/assembler - Registering JSII class: jsii-calc.JSObjectLiteralForInterface
[2020-09-04T13:11:18.768] [INFO] jsii/assembler - Registering JSII class: jsii-calc.SingleInstanceTwoTypes
[2020-09-04T13:11:18.769] [INFO] jsii/assembler - Registering JSII class: jsii-calc.SupportsNiceJavaBuilder
[2020-09-04T13:11:18.770] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ConsumePureInterface
[2020-09-04T13:11:18.771] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IAnonymousImplementationProvider
[2020-09-04T13:11:18.771] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Demonstrate982
[2020-09-04T13:11:18.772] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.IReturnsNumber
[2020-09-04T13:11:18.774] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Statics
[2020-09-04T13:11:18.778] [INFO] jsii/assembler - Registering JSII class: jsii-calc.submodule.nested_submodule.Namespaced
[2020-09-04T13:11:18.781] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Sum
[2020-09-04T13:11:18.781] [INFO] jsii/assembler - Registering JSII class: jsii-calc.UnaryOperation
[2020-09-04T13:11:18.782] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AnonymousImplementationProvider
[2020-09-04T13:11:18.783] [INFO] jsii/assembler - Registering JSII class: jsii-calc.composition.CompositeOperation
[2020-09-04T13:11:18.783] [INFO] jsii/assembler - Registering JSII enum: jsii-calc.composition.CompositeOperation.CompositionStringStyle
[2020-09-04T13:11:18.784] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.DerivedStruct
[2020-09-04T13:11:18.784] [INFO] jsii/assembler - Registering JSII class: jsii-calc.StructPassing
[2020-09-04T13:11:18.786] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AbstractClassReturner
[2020-09-04T13:11:18.789] [INFO] jsii/assembler - Registering JSII class: jsii-calc.UsesInterfaceWithProperties
[2020-09-04T13:11:18.790] [INFO] jsii/assembler - Registering JSII class: jsii-calc.NumberGenerator
[2020-09-04T13:11:18.791] [INFO] jsii/assembler - Registering JSII interface: jsii-calc.ConfusingToJacksonStruct
[2020-09-04T13:11:18.797] [INFO] jsii/assembler - Registering JSII class: jsii-calc.UpcasingReflectable
[2020-09-04T13:11:18.802] [INFO] jsii/assembler - Registering JSII class: jsii-calc.StructUnionConsumer
[2020-09-04T13:11:18.804] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AmbiguousParameters
[2020-09-04T13:11:18.805] [INFO] jsii/assembler - Registering JSII class: jsii-calc.InterfaceCollections
[2020-09-04T13:11:18.811] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ReferenceEnumFromScopedPackage
[2020-09-04T13:11:18.811] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ConfusingToJackson
[2020-09-04T13:11:18.813] [INFO] jsii/assembler - Registering JSII class: jsii-calc.GiveMeStructs
[2020-09-04T13:11:18.814] [INFO] jsii/assembler - Registering JSII class: jsii-calc.BinaryOperation
[2020-09-04T13:11:18.814] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Power
[2020-09-04T13:11:18.816] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Constructors
[2020-09-04T13:11:18.817] [INFO] jsii/assembler - Registering JSII class: jsii-calc.submodule.MyClass
[2020-09-04T13:11:18.819] [INFO] jsii/assembler - Registering JSII class: jsii-calc.ConsumerCanRingBell
[2020-09-04T13:11:18.821] [INFO] jsii/assembler - Registering JSII class: jsii-calc.Calculator
[2020-09-04T13:11:18.824] [INFO] jsii/assembler - Registering JSII class: jsii-calc.AllTypes
[2020-09-04T13:09:35.501] [ERROR] jsii/compiler - Type model errors prevented the JSII assembly from being created
error JSII9002: Unable to resolve type "jsii-calc.MyExportedPropsBase". It may be @iternal or not exported from the module's entry point (as configured in "package.json" as "main").
lib/has-unexported-base.ts:3:1 - error JSII9002: Unable to resolve type "jsii-calc.MyExportedPropsBase". It may be @iternal or not exported from the module's entry point (as configured in "package.json" as "main").
3 export interface MyExportedProps extends MyExportedPropsBase {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 readonly mySecondProperty: number;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 }
~
Also, just noticed the typo in the error message above:
It may be @iternal or not exported...
https://github.com/aws/jsii/blob/master/packages/jsii/lib/jsii-diagnostic.ts#L710
Worth fixing that at the same time? :D
Your un-exported (from the package) type is exported from the module (i.e: file) that defines it. It must be annotated with @internal
as you are now required to demonstrate that you are intentionally not forwarding it all the way to the root.
I guess it'd be sweet if we could have a warning that this non-@internal
type isn't exported from the root, and that if this was intentional it should be annotated with @internal
.
Thanks for the clarification; I agree a more explicit warning in this case would be really useful.
I guess it'd be sweet if we could have a warning that this non-
@internal
type isn't exported from the root, and that if this was intentional it should be annotated with@internal
.
If we're going to that I'd like to combine this with other heuristics: that a type in a /private/
folder or with _underscore.ts
filename should not be exported (and error if it is).
One snag with the proposed workaround -- other consuming modules see the imports for the unexported classes/interfaces in the *.d.ts
files, and fail to build.
See https://github.com/aws/aws-cdk/pull/10338 and the subsequent build failure.
Build log failure
@aws-cdk/aws-backup: $ cdk-build
@aws-cdk/aws-backup: [2020-09-14T11:42:48.164] [ERROR] jsii/compiler - Compilation errors prevented the JSII assembly from being created
@aws-cdk/aws-backup: ../aws-rds/lib/cluster.d.ts:7:10 - error TS2305: Module '"./private/cluster-internal"' has no exported member 'DatabaseClusterBaseProps'.
@aws-cdk/aws-backup: 7 import { DatabaseClusterBaseProps, DatabaseClusterNew } from './private/cluster-internal';
@aws-cdk/aws-backup: ~~~~~~~~~~~~~~~~~~~~~~~~
@aws-cdk/aws-backup: ../aws-rds/lib/cluster.d.ts:7:36 - error TS2724: Module '"./private/cluster-internal"' has no exported member 'DatabaseClusterNew'. Did you mean 'DatabaseClusterBase'?
@aws-cdk/aws-backup: 7 import { DatabaseClusterBaseProps, DatabaseClusterNew } from './private/cluster-internal';
@aws-cdk/aws-backup: ~~~~~~~~~~~~~~~~~~
@aws-cdk/aws-backup: Error: /Users/nlynch/cdk/aws-cdk/node_modules/jsii/bin/jsii --silence-warnings=reserved-word exited with error code 1
@aws-cdk/aws-backup: Build failed. Total time (5.4s) | /Users/nlynch/cdk/aws-cdk/node_modules/jsii/bin/jsii (5.2s) | cfn2ts (0.2s)
Note that the above build failures are for the aws-rds
cluster.d.ts
file, referenced from the aws-backup
module. The aws-rds
module itself builds, but can't be used by the other consuming modules.
Yeah we need to not erase @internal
from the .d.ts
files (this is achieved by changing a typescript compiler option).
@rix0rrr: If we're going to that I'd like to combine this with other heuristics: that a type in a /private/ folder or with _underscore.ts filename should not be exported (and error if it is).
This would be a breaking change; and this looks too much like opinions forced on developers, which I'm not too favorable to.
I tried to update one of my constructs to cdk v2 and apparently hit this issue(?). Is there anything I can do to work around this or is it even something I can workaround as a library user?
You can find full details of the error in this gist.
I'm also getting this - i have a method that returns a CDK API Gateway class and JSII
` import {Annotations, CfnOutput, IAspect, Stack} from 'aws-cdk-lib'; import {aws_apigateway as api} from 'aws-cdk-lib'; import {aws_iam as iam} from 'aws-cdk-lib'; import {IConstruct} from 'constructs';
export class ApiGatewayHelpers { public static endpointConfiguration(stack: Stack, group?: string): api.EndpointConfiguration { const vpcInfo = VpcHelpers.lookupVpcInfo(Stack.of(stack), group) return {types: [api.EndpointType.PRIVATE], vpcEndpoints: [vpcInfo.apigwEndpointId]} } `
error JSII3002: Type "aws-cdk-lib.EndpointConfiguration" cannot be used as a return type because it is not exported from aws-cdk-lib
9 public static endpointConfiguration(stack: Stack, group?: string): api.EndpointConfiguration { ~~~~~~~~~~~~~~~~~~~~~
node_modules/aws-cdk-lib/aws-apigateway/lib/restapi.d.ts:626:1 626 export interface EndpointConfiguration { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 627 /** ~~~~~~~ ... 640 readonly vpcEndpoints?: IVpcEndpoint[]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 641 } ~ The referenced type is declared here lib/api-gateway-helpers.ts:44:17 - error JSII3002: Type "aws-cdk-lib.PolicyDocument" cannot be used as a return type because it is not exported from aws-cdk-lib
@nlongton - It sounds like you may be running into https://github.com/aws/aws-cdk/issues/17860. Can you leave a comment there as well?