jsii 5.9.36-dev.0 → 5.9.36-dev.1
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/lib/assembler.d.ts +1 -0
- package/lib/assembler.js +9 -1
- package/lib/assembler.js.map +1 -1
- package/lib/jsii-diagnostic.d.ts +1 -0
- package/lib/jsii-diagnostic.js +5 -0
- package/lib/jsii-diagnostic.js.map +1 -1
- package/lib/transforms/deprecation-warnings.d.ts +3 -1
- package/lib/transforms/deprecation-warnings.js +29 -32
- package/lib/transforms/deprecation-warnings.js.map +1 -1
- package/lib/type-tracker.d.ts +13 -0
- package/lib/type-tracker.js +36 -0
- package/lib/type-tracker.js.map +1 -0
- package/lib/version.d.ts +2 -2
- package/lib/version.js +2 -2
- package/lib/version.js.map +1 -1
- package/package.json +1 -1
package/lib/jsii-diagnostic.d.ts
CHANGED
|
@@ -104,6 +104,7 @@ export declare class JsiiDiagnostic implements ts.Diagnostic {
|
|
|
104
104
|
static readonly JSII_1009_INTERSECTION_ONLY_INPUT: Code<(location: string) => string>;
|
|
105
105
|
static readonly JSII_1010_INTERSECTION_NOT_IN_CTOR: Code<() => string>;
|
|
106
106
|
static readonly JSII_1011_INTERSECTION_MEMBER_DIFFERENT: Code<(member: string, type1: string, reason1: string, type2: string, reason2: string) => string>;
|
|
107
|
+
static readonly JSII_1012_ONLY_CONST_ENUM_MEMBERS: Code<() => string>;
|
|
107
108
|
static readonly JSII_1999_UNSUPPORTED: Code<({ what, alternative, suggestInternal, }: {
|
|
108
109
|
what: string;
|
|
109
110
|
alternative?: string;
|
package/lib/jsii-diagnostic.js
CHANGED
|
@@ -365,6 +365,11 @@ JsiiDiagnostic.JSII_1011_INTERSECTION_MEMBER_DIFFERENT = Code.error({
|
|
|
365
365
|
formatter: (member, type1, reason1, type2, reason2) => `Member ${member} is different between types in a type intersection: ${type1} (${reason1}) and ${type2} (${reason2})`,
|
|
366
366
|
name: 'typescript-restriction/intersection-member-different',
|
|
367
367
|
});
|
|
368
|
+
JsiiDiagnostic.JSII_1012_ONLY_CONST_ENUM_MEMBERS = Code.error({
|
|
369
|
+
code: 1012,
|
|
370
|
+
formatter: () => 'Only constant enum members are allowed',
|
|
371
|
+
name: 'typescript-restrictions/only-const-enum-members',
|
|
372
|
+
});
|
|
368
373
|
JsiiDiagnostic.JSII_1999_UNSUPPORTED = Code.error({
|
|
369
374
|
code: 1999,
|
|
370
375
|
formatter: ({ what, alternative, suggestInternal, }) => `${what} are not supported in jsii APIs.${alternative ? ` Consider using ${alternative} instead.` : ''}${suggestInternal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsii-diagnostic.js","sourceRoot":"","sources":["../src/jsii-diagnostic.ts"],"names":[],"mappings":"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","sourcesContent":["import * as spec from '@jsii/spec';\nimport { camel, constant, pascal } from 'case';\nimport * as ts from 'typescript';\n\nimport { TypeSystemHints } from './docs';\nimport { WARNINGSCODE_FILE_NAME } from './transforms/deprecation-warnings';\nimport { Violation } from './tsconfig/validator';\nimport { JSII_DIAGNOSTICS_CODE, _formatDiagnostic } from './utils';\n\n/**\n * Descriptors for all valid jsii diagnostic codes.\n *\n * The `category` or non-error codes can be updated, for example to treat\n * warnings as errors, or to suppress certain undesirable warnings.\n */\nexport class Code<T extends DiagnosticMessageFormatter = DiagnosticMessageFormatter> {\n /**\n * @internal\n */\n public static message<T extends DiagnosticMessageFormatter>({\n code,\n name,\n formatter,\n }: {\n code: number;\n formatter: T;\n name: string;\n }) {\n return new Code<T>(code, name, ts.DiagnosticCategory.Message, formatter);\n }\n\n /**\n * @internal\n */\n public static suggestion<T extends DiagnosticMessageFormatter>({\n code,\n name,\n formatter,\n }: {\n code: number;\n formatter: T;\n name: string;\n }) {\n return new Code<T>(code, name, ts.DiagnosticCategory.Suggestion, formatter);\n }\n\n /**\n * @internal\n */\n public static warning<T extends DiagnosticMessageFormatter>({\n code,\n name,\n formatter,\n }: {\n code: number;\n formatter: T;\n name: string;\n }) {\n return new Code<T>(code, name, ts.DiagnosticCategory.Warning, formatter);\n }\n\n /**\n * @internal\n */\n public static error<T extends DiagnosticMessageFormatter>({\n code,\n name,\n formatter,\n }: {\n code: number;\n formatter: T;\n name: string;\n }) {\n return new Code<T>(code, name, ts.DiagnosticCategory.Error, formatter);\n }\n\n /**\n * Get a diagnostic code by code or name.\n *\n * @param codeOrName the looked up diagnostic code or name.\n *\n * @returns the JsiiDiagnosticCode instande, if one exists, or `undefined`\n *\n * @experimental this module is under active development and the error codes\n * and names may change in the future.\n */\n public static lookup(codeOrName: string | number): Code | undefined {\n if (typeof codeOrName === 'number') {\n return this.byCode.get(codeOrName);\n }\n return this.byName.get(codeOrName);\n }\n\n /**\n * Find all codes matching a name or partial name.\n *\n * If the input contains a `/`, it must match a full diagnostic name exactly.\n * Otherwise it matches any diagnostic whose category (before `/`) or specific\n * name (after `/`) equals the input.\n */\n public static lookupByPartialName(name: string): Code[] {\n if (name.includes('/')) {\n const exact = this.byName.get(name);\n return exact ? [exact] : [];\n }\n return [...this.byName.values()].filter((c) => {\n const [category, specific] = c.name.split('/', 2);\n return category === name || specific === name;\n });\n }\n\n private static readonly byCode: Map<number, Code> = new Map();\n private static readonly byName: Map<string, Code> = new Map();\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n readonly #defaultCategory: ts.DiagnosticCategory;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n #category?: ts.DiagnosticCategory;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n #formatter: T;\n\n /**\n * Registers a new diagnostic code.\n *\n * @param code the numeric code for the diagnostic\n * @param name the symbolic name for the diagnostic\n * @param defaultCategory the default category this diagnostic ranks in\n * @param formatter a message formatter for easy creation of diagnostics\n */\n private constructor(\n public readonly code: number,\n public readonly name: string,\n defaultCategory: ts.DiagnosticCategory,\n formatter: T,\n ) {\n this.#defaultCategory = defaultCategory;\n this.#formatter = formatter;\n\n if (code in Code.byCode) {\n throw new Error(`Attempted to create two instances of ${this.constructor.name} with code ${code}`);\n }\n if (name in Code.byName) {\n throw new Error(`Attempted to create two instances of ${this.constructor.name} with name ${name}`);\n }\n Code.byCode.set(code, this);\n Code.byName.set(name, this);\n }\n\n /**\n * Determines whether this diagnostic is a compilation error. Diagnostics\n * where this is `true` cannot have their `category` overridden to a lower\n * category.\n */\n public get isError(): boolean {\n return this.#defaultCategory === ts.DiagnosticCategory.Error;\n }\n\n /**\n * The diagnostic category this particular code is filed as.\n */\n public get category(): ts.DiagnosticCategory {\n return this.#category ?? this.#defaultCategory;\n }\n\n /**\n * Update the diagnostic category for this particular code. If `isError` is\n * `true`, attempting to set anything other than `ts.DiagnosticCategory.Error`\n * will result in an error being throw.\n *\n * @param newValue the new diagnostic category to be used.\n */\n public set category(newValue: ts.DiagnosticCategory) {\n if (this.isError && newValue !== ts.DiagnosticCategory.Error) {\n throw new Error(\n `Illegal attempt to override category of error ${this.code} to ${ts.DiagnosticCategory[newValue]}`,\n );\n }\n this.#category = newValue;\n }\n\n /**\n * Creates a new `JsiiDiagnostic` message without any source code location\n * data.\n *\n * @param args the arguments to the message formatter.\n *\n * @deprecated It is preferred to specify a source code location for problem\n * markers. Prefer the use of `create` while providing a value\n * for the `location` parameter whenever possible.\n */\n public createDetached(...args: Parameters<T>): JsiiDiagnostic {\n return new JsiiDiagnostic(this, this.#formatter(...args));\n }\n\n /**\n * Creates a new `JsiiDiagnostic` message with source code location denoted\n * by the provided `location` node.\n *\n * @param location the source code location attachment of the message.\n * @param args the arguments to the message formatter.\n */\n public create(location: ts.Node | undefined, ...args: Parameters<T>): JsiiDiagnostic {\n return new JsiiDiagnostic(this, this.#formatter(...args), location);\n }\n}\n\n/**\n * A jsii-specific diagnostic entry.\n */\nexport class JsiiDiagnostic implements ts.Diagnostic {\n //////////////////////////////////////////////////////////////////////////////\n // 0001 => 0999 -- PACKAGE METADATA PROBLEMS\n\n public static readonly JSII_0001_PKG_MISSING_DESCRIPTION = Code.suggestion({\n code: 1,\n formatter: () => 'A \"description\" field should be specified in \"package.json\"',\n name: 'metadata/package-json-missing-description',\n });\n\n public static readonly JSII_0002_PKG_MISSING_HOMEPAGE = Code.suggestion({\n code: 2,\n formatter: () => 'A \"homepage\" field should be specified in \"package.json\"',\n name: 'metadata/package-json-missing-homepage',\n });\n\n public static readonly JSII_0003_MISSING_README = Code.warning({\n code: 3,\n formatter: () => 'There is no \"README.md\" file. It is required in order to generate valid PyPI (Python) packages.',\n name: 'metadata/missing-readme',\n });\n\n public static readonly JSII_0004_COULD_NOT_FIND_ENTRYPOINT = Code.error({\n code: 4,\n formatter: (mainFile: string) => `Could not find \"main\" file: ${mainFile}`,\n name: 'metadata/could-not-find-entrypoint',\n });\n\n public static readonly JSII_0005_MISSING_PEER_DEPENDENCY = Code.warning({\n code: 5,\n formatter: (assm: string, reference: string) =>\n `The type \"${reference}\" is exposed in the public API of this module. ` +\n `Therefore, the module \"${assm}\" must also be defined under \"peerDependencies\". ` +\n 'This will be auto-corrected unless --no-fix-peer-dependencies was specified.',\n name: 'metadata/missing-peer-dependency',\n });\n\n // NOTE: currently not possible to change the severity of this code,\n // as it's being emitted before the overrides have been loaded\n public static readonly JSII_0006_MISSING_DEV_DEPENDENCY = Code.warning({\n code: 6,\n formatter: (dependencyName: string, peerRange: string, minVersion: string, actual: string) =>\n `A \"peerDependency\" on \"${dependencyName}\" at \"${peerRange}\" means you ` +\n `should take a \"devDependency\" on \"${dependencyName}\" at \"${minVersion}\" ` +\n `(found ${JSON.stringify(actual)})`,\n name: 'metadata/missing-dev-dependency',\n });\n\n public static readonly JSII_0007_MISSING_WARNINGS_EXPORT = Code.error({\n code: 7,\n formatter: () =>\n 'If you are compiling with --add-deprecation-warnings and your package.json ' +\n `declares subpath exports, you must include { \"./${WARNINGSCODE_FILE_NAME}\": \"./${WARNINGSCODE_FILE_NAME}\" } ` +\n 'in the set of exports.',\n name: 'metadata/missing-warnings-export',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 1000 => 1999 -- TYPESCRIPT LANGUAGE RESTRICTIONS\n\n public static readonly JSII_1000_NO_CONST_ENUM = Code.error({\n code: 1000,\n formatter: () => 'Exported \"const enum\" declarations are not allowed',\n name: 'typescript-restrictions/no-const-enum',\n });\n\n public static readonly JSII_1001_TYPE_HAS_NO_SYMBOL = Code.error({\n code: 1001,\n formatter: () => 'Non-primitive types without a symbol cannot be processed.',\n name: 'typescript-restrictions/type-has-no-symbol',\n });\n\n public static readonly JSII_1002_UNSPECIFIED_PROMISE = Code.error({\n code: 1002,\n formatter: () => 'Un-specified promise type. Specify it using \"Promise<T>\"',\n name: 'typescript-restrictions/unspecified-promise',\n });\n\n public static readonly JSII_1003_UNSUPPORTED_TYPE = Code.error({\n code: 1003,\n formatter: (messageText) => messageText,\n name: 'typescript-restrictions/unsupported-type',\n });\n\n public static readonly JSII_1004_DUPLICATE_ENUM_VALUE = Code.error({\n code: 1004,\n formatter: (enumValue: string, enumMemberNames: string[]) =>\n `Value ${enumValue} is used for multiple enum values: ${enumMemberNames.join(', ')}`,\n name: 'typescript-restrictions/duplicate-enum-value',\n });\n\n public static readonly JSII_1005_SEPARATE_WRITE_TYPE = Code.error({\n code: 1005,\n formatter: () => 'Visible property signatures cannot use a separate write type. Use the same type as the getter.',\n name: 'typescript-restrictions/separate-write-type',\n });\n\n public static readonly JSII_1006_GENERIC_TYPE = Code.error({\n code: 1006,\n formatter: () => 'Generic types are not supported because semantics are not uniform in target languages.',\n name: 'typescript-restriction/generic-type',\n });\n\n public static readonly JSII_1007_NEVER_TYPE = Code.error({\n code: 1007,\n formatter: () => 'The \"never\" type is not allowed because it cannot be represented in target languages.',\n name: 'typescript-restriction/no-never-type',\n });\n\n public static readonly JSII_1008_ONLY_INTERFACE_INTERSECTION = Code.error({\n code: 1008,\n formatter: (type: string) => `Found non-interface type in type intersection: ${type}`,\n name: 'typescript-restriction/only-interface-intersection',\n });\n\n public static readonly JSII_1009_INTERSECTION_ONLY_INPUT = Code.error({\n code: 1009,\n formatter: (location: string) => `Intersection types may only be used as inputs, but ${location} is used as output`,\n name: 'typescript-restriction/intersection-only-input',\n });\n\n public static readonly JSII_1010_INTERSECTION_NOT_IN_CTOR = Code.error({\n code: 1010,\n formatter: () => `Intersection types cannot be used as constructor arguments`,\n name: 'typescript-restriction/intersection-no-ctor',\n });\n\n public static readonly JSII_1011_INTERSECTION_MEMBER_DIFFERENT = Code.error({\n code: 1011,\n formatter: (member: string, type1: string, reason1: string, type2: string, reason2: string) =>\n `Member ${member} is different between types in a type intersection: ${type1} (${reason1}) and ${type2} (${reason2})`,\n name: 'typescript-restriction/intersection-member-different',\n });\n\n public static readonly JSII_1999_UNSUPPORTED = Code.error({\n code: 1999,\n formatter: ({\n what,\n alternative,\n suggestInternal,\n }: {\n what: string;\n alternative?: string;\n suggestInternal?: boolean;\n }) =>\n `${what} are not supported in jsii APIs.${alternative ? ` Consider using ${alternative} instead.` : ''}${\n suggestInternal\n ? ` This declaration must${alternative ? ' otherwise' : ''} be marked \"@internal\" or \"@jsii ignore\".`\n : ''\n }`,\n name: 'typescript-restrictions/unsupported',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 2000 => 2999 -- INCORRECT USE OF THE @jsii DIRECTIVE\n public static readonly JSII_2000_MISSING_DIRECTIVE_ARGUMENT = Code.warning({\n code: 2000,\n formatter: () =>\n 'Missing argument to @jsii directive. Refer to the jsii compiler documentation for more information.',\n name: 'jsii-directive/missing-argument',\n });\n\n public static readonly JSII_2100_STRUCT_ON_NON_INTERFACE = Code.warning({\n code: 2100,\n formatter: () => 'The \"@jsii struct\" directive is only applicable to interface declarations.',\n name: 'jsii-directive/struct-on-non-interface',\n });\n\n public static readonly JSII_2999_UNKNOWN_DIRECTIVE = Code.warning({\n code: 2999,\n formatter: (text: string) =>\n `Unknown @jsii directive: ${JSON.stringify(\n text,\n )}. Refer to the jsii compiler documentation for more information.`,\n name: 'jsii-directive/unknown',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 3000 => 3999 -- TYPE MODEL COHERENCE\n\n public static readonly JSII_3000_EXPORTED_API_USES_HIDDEN_TYPE = Code.error({\n code: 3000,\n formatter: (badFqn) => `Exported APIs cannot use un-exported type \"${badFqn}\"`,\n name: 'type-model/exported-api-cannot-use-unexported-type',\n });\n\n public static readonly JSII_3001_EXPOSED_INTERNAL_TYPE = Code.error({\n code: 3001,\n formatter: (symbol: ts.Symbol, isThisType: boolean, typeUse: string) =>\n `Type ${\n isThisType ? `\"this\" (aka: \"${symbol.name}\")` : `\"${symbol.name}\"`\n } cannot be used as the ${typeUse} because it is private or @internal`,\n name: 'type-model/use-of-internal-type',\n });\n\n public static readonly JSII_3002_USE_OF_UNEXPORTED_FOREIGN_TYPE = Code.error({\n code: 3002,\n formatter: (fqn: string, typeUse: string, pkg: { readonly name: string }) =>\n `Type \"${fqn}\" cannot be used as a ${typeUse} because it is not exported from ${pkg.name}`,\n name: 'type-model/unexported-foreign-type',\n });\n\n public static readonly JSII_3003_SYMBOL_IS_EXPORTED_TWICE = Code.error({\n code: 3003,\n formatter: (ns1: string, ns2: string) => `Symbol is exported under two distinct submodules: ${ns1} and ${ns2}`,\n name: 'type-model/symbol-is-exported-twice',\n });\n\n public static readonly JSII_3004_INVALID_SUPERTYPE = Code.error({\n code: 3004,\n formatter: (clause: ts.HeritageClause, badDeclaration: ts.Declaration) => {\n return `Illegal ${clauseType(clause.token)} clause for an exported API: ${ts.SyntaxKind[badDeclaration.kind]}`;\n\n function clauseType(token: ts.SyntaxKind): string {\n switch (token) {\n case ts.SyntaxKind.ExtendsKeyword:\n return 'extends';\n case ts.SyntaxKind.ImplementsKeyword:\n return 'implements';\n default:\n return ts.SyntaxKind[token];\n }\n }\n },\n name: 'type-model/invalid-supertype',\n });\n\n public static readonly JSII_3005_TYPE_USED_AS_INTERFACE = Code.error({\n code: 3005,\n formatter: (badType: spec.TypeReference) =>\n `Type \"${spec.describeTypeReference(badType)}\" cannot be used as an interface`,\n name: 'type-model/type-used-as-interface',\n });\n\n public static readonly JSII_3006_TYPE_USED_AS_CLASS = Code.error({\n code: 3006,\n formatter: (badType: spec.TypeReference) =>\n `Type \"${spec.describeTypeReference(badType)}\" cannot be used as a class`,\n name: 'type-model/type-used-as-class',\n });\n\n public static readonly JSII_3007_ILLEGAL_STRUCT_EXTENSION = Code.error({\n code: 3007,\n formatter: (offender: spec.Type, struct: spec.InterfaceType) =>\n `Attempt to extend or implement struct \"${struct.fqn}\" from \"${offender.fqn}\"`,\n name: 'type-model/illegal-struct-extension',\n });\n\n public static readonly JSII_3008_STRUCT_PROPS_MUST_BE_READONLY = Code.error({\n code: 3008,\n formatter: (propName: string, struct: spec.InterfaceType) =>\n `The \"${propName}\" property of struct \"${struct.fqn}\" must be \"readonly\". Rename \"${struct.fqn}\" to \"I${struct.name}\" if it is meant to be a behavioral interface.`,\n name: 'type-model/struct-props-must-be-readonly',\n });\n\n public static readonly JSII_3009_OPTIONAL_PARAMETER_BEFORE_REQUIRED = Code.error({\n code: 3009,\n formatter: (param: spec.Parameter, nextParam: spec.Parameter) =>\n `Parameter \"${param.name}\" cannot be optional, as it precedes required parameter \"${nextParam.name}\"`,\n name: 'type-model/optional-parameter-before-required',\n });\n\n public static readonly JSII_3999_INCOHERENT_TYPE_MODEL = Code.error({\n code: 3999,\n formatter: (messageText) => messageText,\n name: 'type-model/incoherent-type-model',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 4000 => 4999 -- TYPESCRIPT & JSII CONFIG ERRORS\n\n public static readonly JSII_4000_FAILED_TSCONFIG_VALIDATION = Code.error({\n code: 4000,\n formatter: (config: string, ruleSet: string, violations: Array<Violation>) => {\n return `Typescript compiler options in \"${config}\" are not passing validation against rule set \"${ruleSet}\", found the following rule violations:\\n${violations\n .map((v) => ` - ${v.field}: ${v.message}`)\n .join('\\n')}`;\n },\n name: 'typescript-config/invalid-tsconfig',\n });\n\n public static readonly JSII_4009_DISABLED_TSCONFIG_VALIDATION = Code.warning({\n code: 4009,\n formatter: (config: string) =>\n `Validation of typescript config \"${config}\" is disabled. This is intended for experimental setups only. Compilation might fail or produce incompatible artifacts.`,\n name: 'typescript-config/disabled-tsconfig-validation',\n });\n\n public static readonly JSII_4010_SUBMODULE_NAMESPACE_CONFLICT = Code.warning({\n code: 4010,\n formatter: (language: string, namespace: string, modules: string[]) =>\n `Multiple modules emit to the same ${language} namespace \"${namespace}\": ${modules.join(', ')}`,\n name: 'jsii-config/submodule-conflict',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 5000 => 5999 -- LANGUAGE COMPATIBILITY ERRORS\n\n public static readonly JSII_5000_JAVA_GETTERS = Code.error({\n code: 5000,\n formatter: (badName: string, typeName: string) =>\n `Methods and properties cannot have names like \"getXxx\": those conflict with Java property getters. Rename \"${typeName}.${badName}\"`,\n name: 'language-compatibility/potential-java-getter-conflict',\n });\n\n public static readonly JSII_5001_JAVA_SETTERS = Code.error({\n code: 5001,\n formatter: (badName: string, typeName: string) =>\n `Methods and properties cannot have names like \"setXxx\": those conflict with Java property setters. Rename \"${typeName}.${badName}\"`,\n name: 'language-compatibility/potential-java-setter-conflict',\n });\n\n public static readonly JSII_5002_OVERRIDE_CHANGES_VISIBILITY = Code.error({\n code: 5002,\n formatter: (\n newElement: string,\n action: string,\n newValue: 'protected' | 'public',\n oldValue: 'protected' | 'public',\n ) => `\"${newElement}\" changes visibility to ${newValue} when ${action}. Change it to ${oldValue}`,\n name: 'language-compatibility/override-changes-visibility',\n });\n\n public static readonly JSII_5003_OVERRIDE_CHANGES_RETURN_TYPE = Code.error({\n code: 5003,\n formatter: (newElement: string, action: string, newValue: string, oldValue: string) =>\n `\"${newElement}\" changes the return type to \"${newValue}\" when ${action}. Change it to \"${oldValue}\"`,\n name: 'language-compatibility/override-changes-return-type',\n });\n\n public static readonly JSII_5004_OVERRIDE_CHANGES_PROP_TYPE = Code.error({\n code: 5004,\n formatter: (newElement: string, action: string, newType: spec.TypeReference, oldType: spec.TypeReference) =>\n `\"${newElement}\" changes the property type to \"${spec.describeTypeReference(\n newType,\n )}\" when ${action}. Change it to \"${spec.describeTypeReference(oldType)}\"`,\n name: 'language-compatibility/override-changes-property-type',\n });\n\n public static readonly JSII_5005_OVERRIDE_CHANGES_PARAM_COUNT = Code.error({\n code: 5005,\n formatter: (newElement: string, action: string, newCount: number, oldCount: number) =>\n `\"${newElement}\" has ${newCount} parameters when ${action}. It should accept ${oldCount} parameters`,\n name: 'language-compatibility/override-changes-param-count',\n });\n\n public static readonly JSII_5006_OVERRIDE_CHANGES_PARAM_TYPE = Code.error({\n code: 5006,\n formatter: (newElement: string, action: string, newParam: spec.Parameter, oldParam: spec.Parameter) =>\n `\"${newElement}\" changes the type of parameter \"${newParam.name}\" to ${spec.describeTypeReference(\n newParam.type,\n )} when ${action}. Change it to ${spec.describeTypeReference(oldParam.type)}`,\n name: 'language-compatibility/override-changes-param-type',\n });\n\n public static readonly JSII_5007_OVERRIDE_CHANGES_VARIADIC = Code.error({\n code: 5007,\n formatter: (newElement: string, action: string, newVariadic = false, oldVariadic = false) =>\n `\"${newElement}\" turns ${newVariadic ? 'variadic' : 'non variadic'} when ${action}. Make it ${\n oldVariadic ? 'variadic' : 'non-variadic'\n }`,\n name: 'language-compatibility/override-changes-variadic',\n });\n\n public static readonly JSII_5008_OVERRIDE_CHANGES_PARAM_OPTIONAL = Code.error({\n code: 5008,\n formatter: (newElement: string, action: string, newParam: spec.Parameter, oldParam: spec.Parameter) =>\n `\"${newElement}\" turns parameter \"${newParam.name}\" ${\n newParam.optional ? 'optional' : 'required'\n } when ${action}. Make it ${oldParam.optional ? 'optional' : 'required'}`,\n name: 'language-compatibility/override-changes-param-optional',\n });\n\n public static readonly JSII_5009_OVERRIDE_CHANGES_PROP_OPTIONAL = Code.error({\n code: 5009,\n formatter: (newElement: string, action: string, newOptional = false, oldOptional = false) =>\n `\"${newElement}\" turns ${newOptional ? 'optional' : 'required'} when ${action}. Make it ${\n oldOptional ? 'optional' : 'required'\n }`,\n name: 'language-compatibility/override-changes-prop-optional',\n });\n\n public static readonly JSII_5010_OVERRIDE_CHANGES_MUTABILITY = Code.error({\n code: 5010,\n formatter: (newElement: string, action: string, newReadonly = false, oldReadonly = false) =>\n `\"${newElement}\" turns ${newReadonly ? 'readonly' : 'mutable'} when ${action}. Make it ${\n oldReadonly ? 'readonly' : 'mutable'\n }`,\n name: 'language-compatibility/override-changes-mutability',\n });\n\n public static readonly JSII_5011_SUBMODULE_NAME_CONFLICT = Code.error({\n code: 5011,\n formatter: (submoduleName: string, typeName: string, reserved: readonly string[]) =>\n `Submodule \"${submoduleName}\" conflicts with \"${typeName}, as different languages could represent it as: ${reserved\n .map((x) => `\"${x}\"`)\n .join(', ')}\"`,\n name: 'language-compatibility/submodule-name-conflicts',\n });\n\n public static readonly JSII_5012_NAMESPACE_IN_TYPE = Code.error({\n code: 5012,\n formatter: (typeName: string, namespaceName: string) =>\n `All entities nested under a type (e.g: \"${typeName}\") must be concrete types, but \"${namespaceName}\" is a namespace. This structure cannot be supported in all languages (e.g: Java)`,\n name: 'language-compatibility/namespace-in-type',\n });\n\n public static readonly JSII_5013_STATIC_INSTANCE_CONFLICT = Code.error({\n code: 5013,\n formatter: (member: string, type: spec.ClassType) =>\n `Member \"${member}\" of class \"${type.fqn}\" has both a static and an instance delcaration`,\n name: 'language-compatibility/static-instance-conflict',\n });\n\n public static readonly JSII_5014_INHERITED_STATIC_CONFLICT = Code.error({\n code: 5014,\n formatter: (\n member: spec.Method | spec.Property,\n type: spec.ClassType,\n baseMember: spec.Method | spec.Property,\n baseType: spec.ClassType,\n ) =>\n `${member.static ? 'Static' : 'Instance'} member \"${member.name}\" of class \"${type.fqn}\" conflicts with ${\n baseMember.static ? 'static' : 'instance'\n } member in ancestor \"${baseType.fqn}\"`,\n name: 'language-compatibility/inherited-static-conflict',\n });\n\n public static readonly JSII_5015_REDECLARED_INTERFACE_MEMBER = Code.error({\n code: 5015,\n formatter: (memberName: string, iface: spec.InterfaceType) =>\n `Interface \"${iface.fqn}\" re-declares member \"${memberName}\". This is not supported as it results in invalid C#.`,\n name: 'language-compatibility/redeclared-interface-member',\n });\n\n public static readonly JSII_5016_PROHIBITED_MEMBER_NAME = Code.error({\n code: 5016,\n formatter: (badName: string) =>\n `Members cannot be named \"${badName}\" as it conflicts with synthetic declarations in some languages.`,\n name: 'language-compatibility/prohibited-member-name',\n });\n\n public static readonly JSII_5017_POSITIONAL_KEYWORD_CONFLICT = Code.error({\n code: 5017,\n formatter: (badName: string) =>\n `Parameter name \"${badName}\" is also the name of a property in a struct parameter. Rename the positional parameter.`,\n name: 'language-compatibility/positional-keyword-conflict',\n });\n\n public static readonly JSII_5018_RESERVED_WORD = Code.warning({\n code: 5018,\n formatter: (badName: string, languages: readonly string[]) =>\n `\"${badName}\" is a reserved word in ${languages.join(\n ', ',\n )}. Using this name may cause problems when generating language bindings. Consider a different name.`,\n name: 'language-compatibility/reserved-word',\n });\n\n public static readonly JSII_5019_MEMBER_TYPE_NAME_CONFLICT = Code.warning({\n code: 5019,\n formatter: (memberKind: 'method' | 'property', memberSymbol: ts.Symbol, declaringType: spec.Type) =>\n `The ${memberKind} name \"${memberSymbol.name}\" conflicts with the declaring ${declaringType.kind} \"${declaringType.name}\". This will result in renaming the ${declaringType.kind} to \"_${declaringType.name}\" in C#. Consider renaming \"${memberSymbol.name}\".`,\n name: 'language-compatibility/member-name-conflicts-with-type-name',\n });\n\n public static readonly JSII_5020_STATIC_MEMBER_CONFLICTS_WITH_NESTED_TYPE = Code.error({\n code: 5020,\n formatter: (\n nestingType: spec.Type,\n staticMember: spec.Property | spec.Method | spec.EnumMember,\n nestedType: spec.Type,\n ) =>\n `The static member \"${nestingType.name}.${staticMember.name}\" has the same PascalCased representation as nested type \"${nestingType.name}.${nestedType.name}\". This would result in invalid code in Go.`,\n name: 'language-compatibility/static-member-name-conflicts-with-nested-type',\n });\n\n public static readonly JSII_5021_ABSTRACT_CLASS_MISSING_PROP_IMPL = Code.error({\n code: 5021,\n formatter: (intf: spec.InterfaceType, cls: spec.ClassType, prop: string) =>\n `A declaration of \"${intf.name}.${prop}\" is missing on class \"${cls.name}\". Declare the property as \"public abstract\" if you want to defer it to subclasses.`,\n name: 'language-compatibility/abstract-class-missing-prop-impl',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 6000 => 6999 -- RESERVED\n\n //////////////////////////////////////////////////////////////////////////////\n // 7000 => 7999 -- DOCUMENTATION ERRORS\n\n public static readonly JSII_7000_NON_EXISTENT_PARAMETER = Code.warning({\n code: 7000,\n formatter: (method: spec.Method, param: string) =>\n `Documentation for method \"${method.name}\" refers to non-existent @param \"${param}\"`,\n name: 'documentation/non-existent-parameter',\n });\n\n public static readonly JSII_7001_ILLEGAL_HINT = Code.error({\n code: 7001,\n formatter: (hint: keyof TypeSystemHints, ...valid: readonly string[]) =>\n `Illegal use of \"@${hint}\" hint. It is only valid on ${valid.join(', ')}.`,\n name: 'documentation/illegal-hint',\n });\n\n public static readonly JSII_7999_DOCUMENTATION_ERROR = Code.error({\n code: 7999,\n formatter: (messageText) => messageText,\n name: 'documentation/documentation-error',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 8000 => 8999 -- JSII STYLE ENFORCEMENT\n\n public static readonly JSII_8000_PASCAL_CASED_TYPE_NAMES = Code.error({\n code: 8000,\n formatter: (badName: string, expectedName: string = pascal(badName)) =>\n `Type names must be PascalCased. Rename \"${badName}\" to \"${expectedName}\"`,\n name: 'code-style/type-names-must-use-pascal-case',\n });\n\n public static readonly JSII_8001_ALL_CAPS_ENUM_MEMBERS = Code.error({\n code: 8001,\n formatter: (badName: string, typeName: string) =>\n `Enum members must be ALL_CAPS. Rename \"${typeName}.${badName}\" to \"${constant(badName)}\"`,\n name: 'code-style/enum-members-must-use-all-caps',\n });\n\n public static readonly JSII_8002_CAMEL_CASED_MEMBERS = Code.error({\n code: 8002,\n formatter: (badName: string, typeName: string) =>\n `Method and property (unless they are static readonly) names must use camelCase. Rename \"${typeName}.${badName}\" to \"${camel(\n badName,\n )}\"`,\n name: 'code-style/member-names-must-use-camel-case',\n });\n\n public static readonly JSII_8003_STATIC_CONST_CASING = Code.error({\n code: 8003,\n formatter: (badName: string, typeName: string) =>\n `Static constant names must use ALL_CAPS, PascalCase, or camelCase. Rename \"${typeName}.${badName}\" to \"${constant(\n badName,\n )}\"`,\n name: 'code-style/static-readonly-property-casing',\n });\n\n public static readonly JSII_8004_SUBMOULE_NAME_CASING = Code.error({\n code: 8004,\n formatter: (badName: string) =>\n `Submodule namespaces must be camelCased or snake_cased. Rename \"${badName}\" to ${camel(badName)}`,\n name: 'code-style/submodule-name-casing',\n });\n\n public static readonly JSII_8005_INTERNAL_UNDERSCORE = Code.error({\n code: 8005,\n formatter: (badName: string) =>\n `Members marked with @internal must have a name starting with \"_\". Rename \"${badName}\" to \"_${badName}\"`,\n name: 'code-style/internal-members-underscore-prefix',\n });\n\n public static readonly JSII_8006_UNDERSCORE_INTERNAL = Code.error({\n code: 8006,\n formatter: (badName: string) =>\n `Members with a name starting with \"_\" (e.g: \"${badName}\") must be marked @internal`,\n name: 'code-style/underscored-members-must-be-internal',\n });\n\n public static readonly JSII_8007_BEHAVIORAL_INTERFACE_NAME = Code.error({\n code: 8007,\n formatter: (badName: string) => `Interface contains behavior. Rename \"${badName}\" to \"I${badName}\"`,\n name: 'code-style/behavioral-interface-name',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 9000 => 9999 -- SURPRISING ERRORS & INFORMATIONAL MESSAGES\n\n public static readonly JSII_9000_UNKNOWN_MODULE = Code.error({\n code: 9000,\n formatter: (moduleName) =>\n `Encountered use of module that is not declared in \"dependencies\" or \"peerDependencies\": \"${moduleName}\"`,\n name: 'miscellaneous/unknown-module',\n });\n\n public static readonly JSII_9001_TYPE_NOT_FOUND = Code.error({\n code: 9001,\n formatter: (typeRef: spec.NamedTypeReference) => `Type not found in the corresponding assembly: \"${typeRef.fqn}\"`,\n name: 'miscellaneous/type-not-found',\n });\n\n public static readonly JSII_9002_UNRESOLVEABLE_TYPE = Code.error({\n code: 9002,\n formatter: (reference: string) =>\n `Type \"${reference}\" is part of the public API but not exported (@internal or not exported from the package.json \"main\" file). Either export it or add @internal explicitly if you want this to be a hidden base class.`,\n name: 'miscellaneous/unresolveable-type',\n });\n\n public static readonly JSII_9003_UNRESOLVEABLE_MODULE = Code.error({\n code: 9003,\n formatter: (location: string) => `Unable to resolve module location \"${location}\"`,\n name: 'miscellaneous/unresolveable-module',\n });\n\n public static readonly JSII_9004_UNABLE_TO_COMPUTE_SIGNATURE = Code.error({\n code: 9004,\n formatter: (methodName: string, type: spec.Type) =>\n `Unable to compute signature for method \"${methodName}\" of \"${type.fqn}\"`,\n name: 'miscellaneous/unable-to-compute-signature',\n });\n\n public static readonly JSII_9996_UNNECESSARY_TOKEN = Code.message({\n code: 9996,\n formatter: () => 'Unnecessary token, consider removing it',\n name: 'miscellaneous/unnecessary-token',\n });\n\n public static readonly JSII_9997_UNKNOWN_ERROR = Code.error({\n code: 9997,\n formatter: (error: Error) => `Unknown error: ${error.message} -- ${error.stack}`,\n name: 'miscellaneous/unknown-error',\n });\n\n public static readonly JSII_9998_UNSUPPORTED_NODE = Code.message({\n code: 9998,\n formatter: (kindOrMessage: ts.SyntaxKind | string) =>\n typeof kindOrMessage === 'string'\n ? kindOrMessage\n : `Unsupported ${ts.SyntaxKind[kindOrMessage]} node. This declaration will not be accessible from other languages.`,\n name: 'miscellaneous/unsupported-node',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n\n /**\n * Determines whether a `Diagnostic` instance is a `JsiiDiagnostic` or not.\n * @param diag\n */\n public static isJsiiDiagnostic(diag: ts.Diagnostic): diag is JsiiDiagnostic {\n return (diag as unknown as JsiiDiagnostic).domain === JsiiDiagnostic.DOMAIN;\n }\n\n //////////////////////////////////////////////////////////////////////////////\n\n private static readonly JSII_9999_RELATED_INFO = Code.suggestion({\n code: 9999,\n formatter: (messageText) => messageText,\n name: 'miscellaneous/related-info',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n\n /**\n * This symbol unequivocally identifies the `JsiiDiagnostic` domain.\n */\n private static readonly DOMAIN = Symbol('jsii');\n\n private readonly domain = JsiiDiagnostic.DOMAIN;\n\n public readonly category: ts.DiagnosticCategory;\n public readonly code: number = JSII_DIAGNOSTICS_CODE;\n public readonly jsiiCode: number;\n public readonly messageText: string | ts.DiagnosticMessageChain;\n\n public readonly file: ts.SourceFile | undefined;\n public readonly start: number | undefined;\n public readonly length: number | undefined;\n\n public readonly relatedInformation = new Array<ts.DiagnosticRelatedInformation>();\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n #formatted?: string;\n\n /**\n * Creates a new `JsiiDiagnostic` with the provided properties.\n *\n * @internal\n */\n public constructor(code: Code, messageText: string | ts.DiagnosticMessageChain, location?: ts.Node) {\n this.category = code.category;\n this.jsiiCode = code.code;\n this.messageText = messageText;\n\n if (location != null) {\n this.file = location.getSourceFile();\n this.start = location.getStart(this.file);\n this.length = location.getEnd() - this.start;\n }\n }\n\n public addRelatedInformation(node: ts.Node, message: JsiiDiagnostic['messageText']): this {\n // Don't relate info into the TypeScript standard library\n if (!/[\\\\/]typescript[\\\\/]lib[\\\\/]lib\\..+\\.d\\.ts$/.test(node.getSourceFile().fileName)) {\n this.relatedInformation.push(JsiiDiagnostic.JSII_9999_RELATED_INFO.create(node, message));\n }\n // Clearing out #formatted, as this would no longer be the correct string.\n this.#formatted = undefined;\n return this;\n }\n\n /**\n * Links the provided `node` with the specified `message` as related to the\n * current diagnostic, unless `node` is undefined.\n *\n * @param node the node where the message should be attached, if any.\n * @param message the message to be attached to the diagnostic entry.\n *\n * @returns `this`\n */\n public addRelatedInformationIf(node: ts.Node | undefined, message: JsiiDiagnostic['messageText']): this {\n if (node != null) {\n return this.addRelatedInformation(node, message);\n } else {\n return this;\n }\n }\n\n /**\n * Adds related information to this `JsiiDiagnostic` instance if the provided\n * `node` is defined.\n *\n * @param node the node to bind as related information, or `undefined`.\n * @param message the message to attach to the related information.\n *\n * @returns `this`\n */\n public maybeAddRelatedInformation(node: ts.Node | undefined, message: JsiiDiagnostic['messageText']): this {\n if (node == null) {\n return this;\n }\n this.relatedInformation.push(JsiiDiagnostic.JSII_9999_RELATED_INFO.create(node, message));\n // Clearing out #formatted, as this would no longer be the correct string.\n this.#formatted = undefined;\n return this;\n }\n\n /**\n * Formats this diagnostic with color and context if possible, and returns it.\n * The formatted diagnostic is cached, so that it can be re-used. This is\n * useful for diagnostic messages involving trivia -- as the trivia may have\n * been obliterated from the `SourceFile` by the `TsCommentReplacer`, which\n * makes the error messages really confusing.\n */\n public format(projectRoot: string): string {\n if (this.#formatted == null) {\n this.#formatted = _formatDiagnostic(this, projectRoot);\n }\n return this.#formatted;\n }\n}\n\nexport type DiagnosticMessageFormatter = (...args: any[]) => JsiiDiagnostic['messageText'];\n\nexport function configureCategories(records: { [code: string]: ts.DiagnosticCategory }) {\n for (const [code, category] of Object.entries(records)) {\n const diagCode = Code.lookup(diagnosticCode(code));\n if (!diagCode) {\n throw new Error(`Unrecognized diagnostic code '${code}'`);\n }\n diagCode.category = category;\n }\n}\n\nfunction diagnosticCode(str: string): string | number {\n if (str.toLowerCase().startsWith('jsii')) {\n const re = /^JSII(\\d+)$/i.exec(str);\n if (re) {\n return parseInt(re[1], 10);\n }\n throw new Error(`Invalid diagnostic code ${str}. A number must follow code that starts with 'JSII'`);\n }\n return str;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"jsii-diagnostic.js","sourceRoot":"","sources":["../src/jsii-diagnostic.ts"],"names":[],"mappings":"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","sourcesContent":["import * as spec from '@jsii/spec';\nimport { camel, constant, pascal } from 'case';\nimport * as ts from 'typescript';\n\nimport { TypeSystemHints } from './docs';\nimport { WARNINGSCODE_FILE_NAME } from './transforms/deprecation-warnings';\nimport { Violation } from './tsconfig/validator';\nimport { JSII_DIAGNOSTICS_CODE, _formatDiagnostic } from './utils';\n\n/**\n * Descriptors for all valid jsii diagnostic codes.\n *\n * The `category` or non-error codes can be updated, for example to treat\n * warnings as errors, or to suppress certain undesirable warnings.\n */\nexport class Code<T extends DiagnosticMessageFormatter = DiagnosticMessageFormatter> {\n /**\n * @internal\n */\n public static message<T extends DiagnosticMessageFormatter>({\n code,\n name,\n formatter,\n }: {\n code: number;\n formatter: T;\n name: string;\n }) {\n return new Code<T>(code, name, ts.DiagnosticCategory.Message, formatter);\n }\n\n /**\n * @internal\n */\n public static suggestion<T extends DiagnosticMessageFormatter>({\n code,\n name,\n formatter,\n }: {\n code: number;\n formatter: T;\n name: string;\n }) {\n return new Code<T>(code, name, ts.DiagnosticCategory.Suggestion, formatter);\n }\n\n /**\n * @internal\n */\n public static warning<T extends DiagnosticMessageFormatter>({\n code,\n name,\n formatter,\n }: {\n code: number;\n formatter: T;\n name: string;\n }) {\n return new Code<T>(code, name, ts.DiagnosticCategory.Warning, formatter);\n }\n\n /**\n * @internal\n */\n public static error<T extends DiagnosticMessageFormatter>({\n code,\n name,\n formatter,\n }: {\n code: number;\n formatter: T;\n name: string;\n }) {\n return new Code<T>(code, name, ts.DiagnosticCategory.Error, formatter);\n }\n\n /**\n * Get a diagnostic code by code or name.\n *\n * @param codeOrName the looked up diagnostic code or name.\n *\n * @returns the JsiiDiagnosticCode instande, if one exists, or `undefined`\n *\n * @experimental this module is under active development and the error codes\n * and names may change in the future.\n */\n public static lookup(codeOrName: string | number): Code | undefined {\n if (typeof codeOrName === 'number') {\n return this.byCode.get(codeOrName);\n }\n return this.byName.get(codeOrName);\n }\n\n /**\n * Find all codes matching a name or partial name.\n *\n * If the input contains a `/`, it must match a full diagnostic name exactly.\n * Otherwise it matches any diagnostic whose category (before `/`) or specific\n * name (after `/`) equals the input.\n */\n public static lookupByPartialName(name: string): Code[] {\n if (name.includes('/')) {\n const exact = this.byName.get(name);\n return exact ? [exact] : [];\n }\n return [...this.byName.values()].filter((c) => {\n const [category, specific] = c.name.split('/', 2);\n return category === name || specific === name;\n });\n }\n\n private static readonly byCode: Map<number, Code> = new Map();\n private static readonly byName: Map<string, Code> = new Map();\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n readonly #defaultCategory: ts.DiagnosticCategory;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n #category?: ts.DiagnosticCategory;\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n #formatter: T;\n\n /**\n * Registers a new diagnostic code.\n *\n * @param code the numeric code for the diagnostic\n * @param name the symbolic name for the diagnostic\n * @param defaultCategory the default category this diagnostic ranks in\n * @param formatter a message formatter for easy creation of diagnostics\n */\n private constructor(\n public readonly code: number,\n public readonly name: string,\n defaultCategory: ts.DiagnosticCategory,\n formatter: T,\n ) {\n this.#defaultCategory = defaultCategory;\n this.#formatter = formatter;\n\n if (code in Code.byCode) {\n throw new Error(`Attempted to create two instances of ${this.constructor.name} with code ${code}`);\n }\n if (name in Code.byName) {\n throw new Error(`Attempted to create two instances of ${this.constructor.name} with name ${name}`);\n }\n Code.byCode.set(code, this);\n Code.byName.set(name, this);\n }\n\n /**\n * Determines whether this diagnostic is a compilation error. Diagnostics\n * where this is `true` cannot have their `category` overridden to a lower\n * category.\n */\n public get isError(): boolean {\n return this.#defaultCategory === ts.DiagnosticCategory.Error;\n }\n\n /**\n * The diagnostic category this particular code is filed as.\n */\n public get category(): ts.DiagnosticCategory {\n return this.#category ?? this.#defaultCategory;\n }\n\n /**\n * Update the diagnostic category for this particular code. If `isError` is\n * `true`, attempting to set anything other than `ts.DiagnosticCategory.Error`\n * will result in an error being throw.\n *\n * @param newValue the new diagnostic category to be used.\n */\n public set category(newValue: ts.DiagnosticCategory) {\n if (this.isError && newValue !== ts.DiagnosticCategory.Error) {\n throw new Error(\n `Illegal attempt to override category of error ${this.code} to ${ts.DiagnosticCategory[newValue]}`,\n );\n }\n this.#category = newValue;\n }\n\n /**\n * Creates a new `JsiiDiagnostic` message without any source code location\n * data.\n *\n * @param args the arguments to the message formatter.\n *\n * @deprecated It is preferred to specify a source code location for problem\n * markers. Prefer the use of `create` while providing a value\n * for the `location` parameter whenever possible.\n */\n public createDetached(...args: Parameters<T>): JsiiDiagnostic {\n return new JsiiDiagnostic(this, this.#formatter(...args));\n }\n\n /**\n * Creates a new `JsiiDiagnostic` message with source code location denoted\n * by the provided `location` node.\n *\n * @param location the source code location attachment of the message.\n * @param args the arguments to the message formatter.\n */\n public create(location: ts.Node | undefined, ...args: Parameters<T>): JsiiDiagnostic {\n return new JsiiDiagnostic(this, this.#formatter(...args), location);\n }\n}\n\n/**\n * A jsii-specific diagnostic entry.\n */\nexport class JsiiDiagnostic implements ts.Diagnostic {\n //////////////////////////////////////////////////////////////////////////////\n // 0001 => 0999 -- PACKAGE METADATA PROBLEMS\n\n public static readonly JSII_0001_PKG_MISSING_DESCRIPTION = Code.suggestion({\n code: 1,\n formatter: () => 'A \"description\" field should be specified in \"package.json\"',\n name: 'metadata/package-json-missing-description',\n });\n\n public static readonly JSII_0002_PKG_MISSING_HOMEPAGE = Code.suggestion({\n code: 2,\n formatter: () => 'A \"homepage\" field should be specified in \"package.json\"',\n name: 'metadata/package-json-missing-homepage',\n });\n\n public static readonly JSII_0003_MISSING_README = Code.warning({\n code: 3,\n formatter: () => 'There is no \"README.md\" file. It is required in order to generate valid PyPI (Python) packages.',\n name: 'metadata/missing-readme',\n });\n\n public static readonly JSII_0004_COULD_NOT_FIND_ENTRYPOINT = Code.error({\n code: 4,\n formatter: (mainFile: string) => `Could not find \"main\" file: ${mainFile}`,\n name: 'metadata/could-not-find-entrypoint',\n });\n\n public static readonly JSII_0005_MISSING_PEER_DEPENDENCY = Code.warning({\n code: 5,\n formatter: (assm: string, reference: string) =>\n `The type \"${reference}\" is exposed in the public API of this module. ` +\n `Therefore, the module \"${assm}\" must also be defined under \"peerDependencies\". ` +\n 'This will be auto-corrected unless --no-fix-peer-dependencies was specified.',\n name: 'metadata/missing-peer-dependency',\n });\n\n // NOTE: currently not possible to change the severity of this code,\n // as it's being emitted before the overrides have been loaded\n public static readonly JSII_0006_MISSING_DEV_DEPENDENCY = Code.warning({\n code: 6,\n formatter: (dependencyName: string, peerRange: string, minVersion: string, actual: string) =>\n `A \"peerDependency\" on \"${dependencyName}\" at \"${peerRange}\" means you ` +\n `should take a \"devDependency\" on \"${dependencyName}\" at \"${minVersion}\" ` +\n `(found ${JSON.stringify(actual)})`,\n name: 'metadata/missing-dev-dependency',\n });\n\n public static readonly JSII_0007_MISSING_WARNINGS_EXPORT = Code.error({\n code: 7,\n formatter: () =>\n 'If you are compiling with --add-deprecation-warnings and your package.json ' +\n `declares subpath exports, you must include { \"./${WARNINGSCODE_FILE_NAME}\": \"./${WARNINGSCODE_FILE_NAME}\" } ` +\n 'in the set of exports.',\n name: 'metadata/missing-warnings-export',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 1000 => 1999 -- TYPESCRIPT LANGUAGE RESTRICTIONS\n\n public static readonly JSII_1000_NO_CONST_ENUM = Code.error({\n code: 1000,\n formatter: () => 'Exported \"const enum\" declarations are not allowed',\n name: 'typescript-restrictions/no-const-enum',\n });\n\n public static readonly JSII_1001_TYPE_HAS_NO_SYMBOL = Code.error({\n code: 1001,\n formatter: () => 'Non-primitive types without a symbol cannot be processed.',\n name: 'typescript-restrictions/type-has-no-symbol',\n });\n\n public static readonly JSII_1002_UNSPECIFIED_PROMISE = Code.error({\n code: 1002,\n formatter: () => 'Un-specified promise type. Specify it using \"Promise<T>\"',\n name: 'typescript-restrictions/unspecified-promise',\n });\n\n public static readonly JSII_1003_UNSUPPORTED_TYPE = Code.error({\n code: 1003,\n formatter: (messageText) => messageText,\n name: 'typescript-restrictions/unsupported-type',\n });\n\n public static readonly JSII_1004_DUPLICATE_ENUM_VALUE = Code.error({\n code: 1004,\n formatter: (enumValue: string, enumMemberNames: string[]) =>\n `Value ${enumValue} is used for multiple enum values: ${enumMemberNames.join(', ')}`,\n name: 'typescript-restrictions/duplicate-enum-value',\n });\n\n public static readonly JSII_1005_SEPARATE_WRITE_TYPE = Code.error({\n code: 1005,\n formatter: () => 'Visible property signatures cannot use a separate write type. Use the same type as the getter.',\n name: 'typescript-restrictions/separate-write-type',\n });\n\n public static readonly JSII_1006_GENERIC_TYPE = Code.error({\n code: 1006,\n formatter: () => 'Generic types are not supported because semantics are not uniform in target languages.',\n name: 'typescript-restriction/generic-type',\n });\n\n public static readonly JSII_1007_NEVER_TYPE = Code.error({\n code: 1007,\n formatter: () => 'The \"never\" type is not allowed because it cannot be represented in target languages.',\n name: 'typescript-restriction/no-never-type',\n });\n\n public static readonly JSII_1008_ONLY_INTERFACE_INTERSECTION = Code.error({\n code: 1008,\n formatter: (type: string) => `Found non-interface type in type intersection: ${type}`,\n name: 'typescript-restriction/only-interface-intersection',\n });\n\n public static readonly JSII_1009_INTERSECTION_ONLY_INPUT = Code.error({\n code: 1009,\n formatter: (location: string) => `Intersection types may only be used as inputs, but ${location} is used as output`,\n name: 'typescript-restriction/intersection-only-input',\n });\n\n public static readonly JSII_1010_INTERSECTION_NOT_IN_CTOR = Code.error({\n code: 1010,\n formatter: () => `Intersection types cannot be used as constructor arguments`,\n name: 'typescript-restriction/intersection-no-ctor',\n });\n\n public static readonly JSII_1011_INTERSECTION_MEMBER_DIFFERENT = Code.error({\n code: 1011,\n formatter: (member: string, type1: string, reason1: string, type2: string, reason2: string) =>\n `Member ${member} is different between types in a type intersection: ${type1} (${reason1}) and ${type2} (${reason2})`,\n name: 'typescript-restriction/intersection-member-different',\n });\n\n public static readonly JSII_1012_ONLY_CONST_ENUM_MEMBERS = Code.error({\n code: 1012,\n formatter: () => 'Only constant enum members are allowed',\n name: 'typescript-restrictions/only-const-enum-members',\n });\n\n public static readonly JSII_1999_UNSUPPORTED = Code.error({\n code: 1999,\n formatter: ({\n what,\n alternative,\n suggestInternal,\n }: {\n what: string;\n alternative?: string;\n suggestInternal?: boolean;\n }) =>\n `${what} are not supported in jsii APIs.${alternative ? ` Consider using ${alternative} instead.` : ''}${\n suggestInternal\n ? ` This declaration must${alternative ? ' otherwise' : ''} be marked \"@internal\" or \"@jsii ignore\".`\n : ''\n }`,\n name: 'typescript-restrictions/unsupported',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 2000 => 2999 -- INCORRECT USE OF THE @jsii DIRECTIVE\n public static readonly JSII_2000_MISSING_DIRECTIVE_ARGUMENT = Code.warning({\n code: 2000,\n formatter: () =>\n 'Missing argument to @jsii directive. Refer to the jsii compiler documentation for more information.',\n name: 'jsii-directive/missing-argument',\n });\n\n public static readonly JSII_2100_STRUCT_ON_NON_INTERFACE = Code.warning({\n code: 2100,\n formatter: () => 'The \"@jsii struct\" directive is only applicable to interface declarations.',\n name: 'jsii-directive/struct-on-non-interface',\n });\n\n public static readonly JSII_2999_UNKNOWN_DIRECTIVE = Code.warning({\n code: 2999,\n formatter: (text: string) =>\n `Unknown @jsii directive: ${JSON.stringify(\n text,\n )}. Refer to the jsii compiler documentation for more information.`,\n name: 'jsii-directive/unknown',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 3000 => 3999 -- TYPE MODEL COHERENCE\n\n public static readonly JSII_3000_EXPORTED_API_USES_HIDDEN_TYPE = Code.error({\n code: 3000,\n formatter: (badFqn) => `Exported APIs cannot use un-exported type \"${badFqn}\"`,\n name: 'type-model/exported-api-cannot-use-unexported-type',\n });\n\n public static readonly JSII_3001_EXPOSED_INTERNAL_TYPE = Code.error({\n code: 3001,\n formatter: (symbol: ts.Symbol, isThisType: boolean, typeUse: string) =>\n `Type ${\n isThisType ? `\"this\" (aka: \"${symbol.name}\")` : `\"${symbol.name}\"`\n } cannot be used as the ${typeUse} because it is private or @internal`,\n name: 'type-model/use-of-internal-type',\n });\n\n public static readonly JSII_3002_USE_OF_UNEXPORTED_FOREIGN_TYPE = Code.error({\n code: 3002,\n formatter: (fqn: string, typeUse: string, pkg: { readonly name: string }) =>\n `Type \"${fqn}\" cannot be used as a ${typeUse} because it is not exported from ${pkg.name}`,\n name: 'type-model/unexported-foreign-type',\n });\n\n public static readonly JSII_3003_SYMBOL_IS_EXPORTED_TWICE = Code.error({\n code: 3003,\n formatter: (ns1: string, ns2: string) => `Symbol is exported under two distinct submodules: ${ns1} and ${ns2}`,\n name: 'type-model/symbol-is-exported-twice',\n });\n\n public static readonly JSII_3004_INVALID_SUPERTYPE = Code.error({\n code: 3004,\n formatter: (clause: ts.HeritageClause, badDeclaration: ts.Declaration) => {\n return `Illegal ${clauseType(clause.token)} clause for an exported API: ${ts.SyntaxKind[badDeclaration.kind]}`;\n\n function clauseType(token: ts.SyntaxKind): string {\n switch (token) {\n case ts.SyntaxKind.ExtendsKeyword:\n return 'extends';\n case ts.SyntaxKind.ImplementsKeyword:\n return 'implements';\n default:\n return ts.SyntaxKind[token];\n }\n }\n },\n name: 'type-model/invalid-supertype',\n });\n\n public static readonly JSII_3005_TYPE_USED_AS_INTERFACE = Code.error({\n code: 3005,\n formatter: (badType: spec.TypeReference) =>\n `Type \"${spec.describeTypeReference(badType)}\" cannot be used as an interface`,\n name: 'type-model/type-used-as-interface',\n });\n\n public static readonly JSII_3006_TYPE_USED_AS_CLASS = Code.error({\n code: 3006,\n formatter: (badType: spec.TypeReference) =>\n `Type \"${spec.describeTypeReference(badType)}\" cannot be used as a class`,\n name: 'type-model/type-used-as-class',\n });\n\n public static readonly JSII_3007_ILLEGAL_STRUCT_EXTENSION = Code.error({\n code: 3007,\n formatter: (offender: spec.Type, struct: spec.InterfaceType) =>\n `Attempt to extend or implement struct \"${struct.fqn}\" from \"${offender.fqn}\"`,\n name: 'type-model/illegal-struct-extension',\n });\n\n public static readonly JSII_3008_STRUCT_PROPS_MUST_BE_READONLY = Code.error({\n code: 3008,\n formatter: (propName: string, struct: spec.InterfaceType) =>\n `The \"${propName}\" property of struct \"${struct.fqn}\" must be \"readonly\". Rename \"${struct.fqn}\" to \"I${struct.name}\" if it is meant to be a behavioral interface.`,\n name: 'type-model/struct-props-must-be-readonly',\n });\n\n public static readonly JSII_3009_OPTIONAL_PARAMETER_BEFORE_REQUIRED = Code.error({\n code: 3009,\n formatter: (param: spec.Parameter, nextParam: spec.Parameter) =>\n `Parameter \"${param.name}\" cannot be optional, as it precedes required parameter \"${nextParam.name}\"`,\n name: 'type-model/optional-parameter-before-required',\n });\n\n public static readonly JSII_3999_INCOHERENT_TYPE_MODEL = Code.error({\n code: 3999,\n formatter: (messageText) => messageText,\n name: 'type-model/incoherent-type-model',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 4000 => 4999 -- TYPESCRIPT & JSII CONFIG ERRORS\n\n public static readonly JSII_4000_FAILED_TSCONFIG_VALIDATION = Code.error({\n code: 4000,\n formatter: (config: string, ruleSet: string, violations: Array<Violation>) => {\n return `Typescript compiler options in \"${config}\" are not passing validation against rule set \"${ruleSet}\", found the following rule violations:\\n${violations\n .map((v) => ` - ${v.field}: ${v.message}`)\n .join('\\n')}`;\n },\n name: 'typescript-config/invalid-tsconfig',\n });\n\n public static readonly JSII_4009_DISABLED_TSCONFIG_VALIDATION = Code.warning({\n code: 4009,\n formatter: (config: string) =>\n `Validation of typescript config \"${config}\" is disabled. This is intended for experimental setups only. Compilation might fail or produce incompatible artifacts.`,\n name: 'typescript-config/disabled-tsconfig-validation',\n });\n\n public static readonly JSII_4010_SUBMODULE_NAMESPACE_CONFLICT = Code.warning({\n code: 4010,\n formatter: (language: string, namespace: string, modules: string[]) =>\n `Multiple modules emit to the same ${language} namespace \"${namespace}\": ${modules.join(', ')}`,\n name: 'jsii-config/submodule-conflict',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 5000 => 5999 -- LANGUAGE COMPATIBILITY ERRORS\n\n public static readonly JSII_5000_JAVA_GETTERS = Code.error({\n code: 5000,\n formatter: (badName: string, typeName: string) =>\n `Methods and properties cannot have names like \"getXxx\": those conflict with Java property getters. Rename \"${typeName}.${badName}\"`,\n name: 'language-compatibility/potential-java-getter-conflict',\n });\n\n public static readonly JSII_5001_JAVA_SETTERS = Code.error({\n code: 5001,\n formatter: (badName: string, typeName: string) =>\n `Methods and properties cannot have names like \"setXxx\": those conflict with Java property setters. Rename \"${typeName}.${badName}\"`,\n name: 'language-compatibility/potential-java-setter-conflict',\n });\n\n public static readonly JSII_5002_OVERRIDE_CHANGES_VISIBILITY = Code.error({\n code: 5002,\n formatter: (\n newElement: string,\n action: string,\n newValue: 'protected' | 'public',\n oldValue: 'protected' | 'public',\n ) => `\"${newElement}\" changes visibility to ${newValue} when ${action}. Change it to ${oldValue}`,\n name: 'language-compatibility/override-changes-visibility',\n });\n\n public static readonly JSII_5003_OVERRIDE_CHANGES_RETURN_TYPE = Code.error({\n code: 5003,\n formatter: (newElement: string, action: string, newValue: string, oldValue: string) =>\n `\"${newElement}\" changes the return type to \"${newValue}\" when ${action}. Change it to \"${oldValue}\"`,\n name: 'language-compatibility/override-changes-return-type',\n });\n\n public static readonly JSII_5004_OVERRIDE_CHANGES_PROP_TYPE = Code.error({\n code: 5004,\n formatter: (newElement: string, action: string, newType: spec.TypeReference, oldType: spec.TypeReference) =>\n `\"${newElement}\" changes the property type to \"${spec.describeTypeReference(\n newType,\n )}\" when ${action}. Change it to \"${spec.describeTypeReference(oldType)}\"`,\n name: 'language-compatibility/override-changes-property-type',\n });\n\n public static readonly JSII_5005_OVERRIDE_CHANGES_PARAM_COUNT = Code.error({\n code: 5005,\n formatter: (newElement: string, action: string, newCount: number, oldCount: number) =>\n `\"${newElement}\" has ${newCount} parameters when ${action}. It should accept ${oldCount} parameters`,\n name: 'language-compatibility/override-changes-param-count',\n });\n\n public static readonly JSII_5006_OVERRIDE_CHANGES_PARAM_TYPE = Code.error({\n code: 5006,\n formatter: (newElement: string, action: string, newParam: spec.Parameter, oldParam: spec.Parameter) =>\n `\"${newElement}\" changes the type of parameter \"${newParam.name}\" to ${spec.describeTypeReference(\n newParam.type,\n )} when ${action}. Change it to ${spec.describeTypeReference(oldParam.type)}`,\n name: 'language-compatibility/override-changes-param-type',\n });\n\n public static readonly JSII_5007_OVERRIDE_CHANGES_VARIADIC = Code.error({\n code: 5007,\n formatter: (newElement: string, action: string, newVariadic = false, oldVariadic = false) =>\n `\"${newElement}\" turns ${newVariadic ? 'variadic' : 'non variadic'} when ${action}. Make it ${\n oldVariadic ? 'variadic' : 'non-variadic'\n }`,\n name: 'language-compatibility/override-changes-variadic',\n });\n\n public static readonly JSII_5008_OVERRIDE_CHANGES_PARAM_OPTIONAL = Code.error({\n code: 5008,\n formatter: (newElement: string, action: string, newParam: spec.Parameter, oldParam: spec.Parameter) =>\n `\"${newElement}\" turns parameter \"${newParam.name}\" ${\n newParam.optional ? 'optional' : 'required'\n } when ${action}. Make it ${oldParam.optional ? 'optional' : 'required'}`,\n name: 'language-compatibility/override-changes-param-optional',\n });\n\n public static readonly JSII_5009_OVERRIDE_CHANGES_PROP_OPTIONAL = Code.error({\n code: 5009,\n formatter: (newElement: string, action: string, newOptional = false, oldOptional = false) =>\n `\"${newElement}\" turns ${newOptional ? 'optional' : 'required'} when ${action}. Make it ${\n oldOptional ? 'optional' : 'required'\n }`,\n name: 'language-compatibility/override-changes-prop-optional',\n });\n\n public static readonly JSII_5010_OVERRIDE_CHANGES_MUTABILITY = Code.error({\n code: 5010,\n formatter: (newElement: string, action: string, newReadonly = false, oldReadonly = false) =>\n `\"${newElement}\" turns ${newReadonly ? 'readonly' : 'mutable'} when ${action}. Make it ${\n oldReadonly ? 'readonly' : 'mutable'\n }`,\n name: 'language-compatibility/override-changes-mutability',\n });\n\n public static readonly JSII_5011_SUBMODULE_NAME_CONFLICT = Code.error({\n code: 5011,\n formatter: (submoduleName: string, typeName: string, reserved: readonly string[]) =>\n `Submodule \"${submoduleName}\" conflicts with \"${typeName}, as different languages could represent it as: ${reserved\n .map((x) => `\"${x}\"`)\n .join(', ')}\"`,\n name: 'language-compatibility/submodule-name-conflicts',\n });\n\n public static readonly JSII_5012_NAMESPACE_IN_TYPE = Code.error({\n code: 5012,\n formatter: (typeName: string, namespaceName: string) =>\n `All entities nested under a type (e.g: \"${typeName}\") must be concrete types, but \"${namespaceName}\" is a namespace. This structure cannot be supported in all languages (e.g: Java)`,\n name: 'language-compatibility/namespace-in-type',\n });\n\n public static readonly JSII_5013_STATIC_INSTANCE_CONFLICT = Code.error({\n code: 5013,\n formatter: (member: string, type: spec.ClassType) =>\n `Member \"${member}\" of class \"${type.fqn}\" has both a static and an instance delcaration`,\n name: 'language-compatibility/static-instance-conflict',\n });\n\n public static readonly JSII_5014_INHERITED_STATIC_CONFLICT = Code.error({\n code: 5014,\n formatter: (\n member: spec.Method | spec.Property,\n type: spec.ClassType,\n baseMember: spec.Method | spec.Property,\n baseType: spec.ClassType,\n ) =>\n `${member.static ? 'Static' : 'Instance'} member \"${member.name}\" of class \"${type.fqn}\" conflicts with ${\n baseMember.static ? 'static' : 'instance'\n } member in ancestor \"${baseType.fqn}\"`,\n name: 'language-compatibility/inherited-static-conflict',\n });\n\n public static readonly JSII_5015_REDECLARED_INTERFACE_MEMBER = Code.error({\n code: 5015,\n formatter: (memberName: string, iface: spec.InterfaceType) =>\n `Interface \"${iface.fqn}\" re-declares member \"${memberName}\". This is not supported as it results in invalid C#.`,\n name: 'language-compatibility/redeclared-interface-member',\n });\n\n public static readonly JSII_5016_PROHIBITED_MEMBER_NAME = Code.error({\n code: 5016,\n formatter: (badName: string) =>\n `Members cannot be named \"${badName}\" as it conflicts with synthetic declarations in some languages.`,\n name: 'language-compatibility/prohibited-member-name',\n });\n\n public static readonly JSII_5017_POSITIONAL_KEYWORD_CONFLICT = Code.error({\n code: 5017,\n formatter: (badName: string) =>\n `Parameter name \"${badName}\" is also the name of a property in a struct parameter. Rename the positional parameter.`,\n name: 'language-compatibility/positional-keyword-conflict',\n });\n\n public static readonly JSII_5018_RESERVED_WORD = Code.warning({\n code: 5018,\n formatter: (badName: string, languages: readonly string[]) =>\n `\"${badName}\" is a reserved word in ${languages.join(\n ', ',\n )}. Using this name may cause problems when generating language bindings. Consider a different name.`,\n name: 'language-compatibility/reserved-word',\n });\n\n public static readonly JSII_5019_MEMBER_TYPE_NAME_CONFLICT = Code.warning({\n code: 5019,\n formatter: (memberKind: 'method' | 'property', memberSymbol: ts.Symbol, declaringType: spec.Type) =>\n `The ${memberKind} name \"${memberSymbol.name}\" conflicts with the declaring ${declaringType.kind} \"${declaringType.name}\". This will result in renaming the ${declaringType.kind} to \"_${declaringType.name}\" in C#. Consider renaming \"${memberSymbol.name}\".`,\n name: 'language-compatibility/member-name-conflicts-with-type-name',\n });\n\n public static readonly JSII_5020_STATIC_MEMBER_CONFLICTS_WITH_NESTED_TYPE = Code.error({\n code: 5020,\n formatter: (\n nestingType: spec.Type,\n staticMember: spec.Property | spec.Method | spec.EnumMember,\n nestedType: spec.Type,\n ) =>\n `The static member \"${nestingType.name}.${staticMember.name}\" has the same PascalCased representation as nested type \"${nestingType.name}.${nestedType.name}\". This would result in invalid code in Go.`,\n name: 'language-compatibility/static-member-name-conflicts-with-nested-type',\n });\n\n public static readonly JSII_5021_ABSTRACT_CLASS_MISSING_PROP_IMPL = Code.error({\n code: 5021,\n formatter: (intf: spec.InterfaceType, cls: spec.ClassType, prop: string) =>\n `A declaration of \"${intf.name}.${prop}\" is missing on class \"${cls.name}\". Declare the property as \"public abstract\" if you want to defer it to subclasses.`,\n name: 'language-compatibility/abstract-class-missing-prop-impl',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 6000 => 6999 -- RESERVED\n\n //////////////////////////////////////////////////////////////////////////////\n // 7000 => 7999 -- DOCUMENTATION ERRORS\n\n public static readonly JSII_7000_NON_EXISTENT_PARAMETER = Code.warning({\n code: 7000,\n formatter: (method: spec.Method, param: string) =>\n `Documentation for method \"${method.name}\" refers to non-existent @param \"${param}\"`,\n name: 'documentation/non-existent-parameter',\n });\n\n public static readonly JSII_7001_ILLEGAL_HINT = Code.error({\n code: 7001,\n formatter: (hint: keyof TypeSystemHints, ...valid: readonly string[]) =>\n `Illegal use of \"@${hint}\" hint. It is only valid on ${valid.join(', ')}.`,\n name: 'documentation/illegal-hint',\n });\n\n public static readonly JSII_7999_DOCUMENTATION_ERROR = Code.error({\n code: 7999,\n formatter: (messageText) => messageText,\n name: 'documentation/documentation-error',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 8000 => 8999 -- JSII STYLE ENFORCEMENT\n\n public static readonly JSII_8000_PASCAL_CASED_TYPE_NAMES = Code.error({\n code: 8000,\n formatter: (badName: string, expectedName: string = pascal(badName)) =>\n `Type names must be PascalCased. Rename \"${badName}\" to \"${expectedName}\"`,\n name: 'code-style/type-names-must-use-pascal-case',\n });\n\n public static readonly JSII_8001_ALL_CAPS_ENUM_MEMBERS = Code.error({\n code: 8001,\n formatter: (badName: string, typeName: string) =>\n `Enum members must be ALL_CAPS. Rename \"${typeName}.${badName}\" to \"${constant(badName)}\"`,\n name: 'code-style/enum-members-must-use-all-caps',\n });\n\n public static readonly JSII_8002_CAMEL_CASED_MEMBERS = Code.error({\n code: 8002,\n formatter: (badName: string, typeName: string) =>\n `Method and property (unless they are static readonly) names must use camelCase. Rename \"${typeName}.${badName}\" to \"${camel(\n badName,\n )}\"`,\n name: 'code-style/member-names-must-use-camel-case',\n });\n\n public static readonly JSII_8003_STATIC_CONST_CASING = Code.error({\n code: 8003,\n formatter: (badName: string, typeName: string) =>\n `Static constant names must use ALL_CAPS, PascalCase, or camelCase. Rename \"${typeName}.${badName}\" to \"${constant(\n badName,\n )}\"`,\n name: 'code-style/static-readonly-property-casing',\n });\n\n public static readonly JSII_8004_SUBMOULE_NAME_CASING = Code.error({\n code: 8004,\n formatter: (badName: string) =>\n `Submodule namespaces must be camelCased or snake_cased. Rename \"${badName}\" to ${camel(badName)}`,\n name: 'code-style/submodule-name-casing',\n });\n\n public static readonly JSII_8005_INTERNAL_UNDERSCORE = Code.error({\n code: 8005,\n formatter: (badName: string) =>\n `Members marked with @internal must have a name starting with \"_\". Rename \"${badName}\" to \"_${badName}\"`,\n name: 'code-style/internal-members-underscore-prefix',\n });\n\n public static readonly JSII_8006_UNDERSCORE_INTERNAL = Code.error({\n code: 8006,\n formatter: (badName: string) =>\n `Members with a name starting with \"_\" (e.g: \"${badName}\") must be marked @internal`,\n name: 'code-style/underscored-members-must-be-internal',\n });\n\n public static readonly JSII_8007_BEHAVIORAL_INTERFACE_NAME = Code.error({\n code: 8007,\n formatter: (badName: string) => `Interface contains behavior. Rename \"${badName}\" to \"I${badName}\"`,\n name: 'code-style/behavioral-interface-name',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n // 9000 => 9999 -- SURPRISING ERRORS & INFORMATIONAL MESSAGES\n\n public static readonly JSII_9000_UNKNOWN_MODULE = Code.error({\n code: 9000,\n formatter: (moduleName) =>\n `Encountered use of module that is not declared in \"dependencies\" or \"peerDependencies\": \"${moduleName}\"`,\n name: 'miscellaneous/unknown-module',\n });\n\n public static readonly JSII_9001_TYPE_NOT_FOUND = Code.error({\n code: 9001,\n formatter: (typeRef: spec.NamedTypeReference) => `Type not found in the corresponding assembly: \"${typeRef.fqn}\"`,\n name: 'miscellaneous/type-not-found',\n });\n\n public static readonly JSII_9002_UNRESOLVEABLE_TYPE = Code.error({\n code: 9002,\n formatter: (reference: string) =>\n `Type \"${reference}\" is part of the public API but not exported (@internal or not exported from the package.json \"main\" file). Either export it or add @internal explicitly if you want this to be a hidden base class.`,\n name: 'miscellaneous/unresolveable-type',\n });\n\n public static readonly JSII_9003_UNRESOLVEABLE_MODULE = Code.error({\n code: 9003,\n formatter: (location: string) => `Unable to resolve module location \"${location}\"`,\n name: 'miscellaneous/unresolveable-module',\n });\n\n public static readonly JSII_9004_UNABLE_TO_COMPUTE_SIGNATURE = Code.error({\n code: 9004,\n formatter: (methodName: string, type: spec.Type) =>\n `Unable to compute signature for method \"${methodName}\" of \"${type.fqn}\"`,\n name: 'miscellaneous/unable-to-compute-signature',\n });\n\n public static readonly JSII_9996_UNNECESSARY_TOKEN = Code.message({\n code: 9996,\n formatter: () => 'Unnecessary token, consider removing it',\n name: 'miscellaneous/unnecessary-token',\n });\n\n public static readonly JSII_9997_UNKNOWN_ERROR = Code.error({\n code: 9997,\n formatter: (error: Error) => `Unknown error: ${error.message} -- ${error.stack}`,\n name: 'miscellaneous/unknown-error',\n });\n\n public static readonly JSII_9998_UNSUPPORTED_NODE = Code.message({\n code: 9998,\n formatter: (kindOrMessage: ts.SyntaxKind | string) =>\n typeof kindOrMessage === 'string'\n ? kindOrMessage\n : `Unsupported ${ts.SyntaxKind[kindOrMessage]} node. This declaration will not be accessible from other languages.`,\n name: 'miscellaneous/unsupported-node',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n\n /**\n * Determines whether a `Diagnostic` instance is a `JsiiDiagnostic` or not.\n * @param diag\n */\n public static isJsiiDiagnostic(diag: ts.Diagnostic): diag is JsiiDiagnostic {\n return (diag as unknown as JsiiDiagnostic).domain === JsiiDiagnostic.DOMAIN;\n }\n\n //////////////////////////////////////////////////////////////////////////////\n\n private static readonly JSII_9999_RELATED_INFO = Code.suggestion({\n code: 9999,\n formatter: (messageText) => messageText,\n name: 'miscellaneous/related-info',\n });\n\n //////////////////////////////////////////////////////////////////////////////\n\n /**\n * This symbol unequivocally identifies the `JsiiDiagnostic` domain.\n */\n private static readonly DOMAIN = Symbol('jsii');\n\n private readonly domain = JsiiDiagnostic.DOMAIN;\n\n public readonly category: ts.DiagnosticCategory;\n public readonly code: number = JSII_DIAGNOSTICS_CODE;\n public readonly jsiiCode: number;\n public readonly messageText: string | ts.DiagnosticMessageChain;\n\n public readonly file: ts.SourceFile | undefined;\n public readonly start: number | undefined;\n public readonly length: number | undefined;\n\n public readonly relatedInformation = new Array<ts.DiagnosticRelatedInformation>();\n\n // eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n #formatted?: string;\n\n /**\n * Creates a new `JsiiDiagnostic` with the provided properties.\n *\n * @internal\n */\n public constructor(code: Code, messageText: string | ts.DiagnosticMessageChain, location?: ts.Node) {\n this.category = code.category;\n this.jsiiCode = code.code;\n this.messageText = messageText;\n\n if (location != null) {\n this.file = location.getSourceFile();\n this.start = location.getStart(this.file);\n this.length = location.getEnd() - this.start;\n }\n }\n\n public addRelatedInformation(node: ts.Node, message: JsiiDiagnostic['messageText']): this {\n // Don't relate info into the TypeScript standard library\n if (!/[\\\\/]typescript[\\\\/]lib[\\\\/]lib\\..+\\.d\\.ts$/.test(node.getSourceFile().fileName)) {\n this.relatedInformation.push(JsiiDiagnostic.JSII_9999_RELATED_INFO.create(node, message));\n }\n // Clearing out #formatted, as this would no longer be the correct string.\n this.#formatted = undefined;\n return this;\n }\n\n /**\n * Links the provided `node` with the specified `message` as related to the\n * current diagnostic, unless `node` is undefined.\n *\n * @param node the node where the message should be attached, if any.\n * @param message the message to be attached to the diagnostic entry.\n *\n * @returns `this`\n */\n public addRelatedInformationIf(node: ts.Node | undefined, message: JsiiDiagnostic['messageText']): this {\n if (node != null) {\n return this.addRelatedInformation(node, message);\n } else {\n return this;\n }\n }\n\n /**\n * Adds related information to this `JsiiDiagnostic` instance if the provided\n * `node` is defined.\n *\n * @param node the node to bind as related information, or `undefined`.\n * @param message the message to attach to the related information.\n *\n * @returns `this`\n */\n public maybeAddRelatedInformation(node: ts.Node | undefined, message: JsiiDiagnostic['messageText']): this {\n if (node == null) {\n return this;\n }\n this.relatedInformation.push(JsiiDiagnostic.JSII_9999_RELATED_INFO.create(node, message));\n // Clearing out #formatted, as this would no longer be the correct string.\n this.#formatted = undefined;\n return this;\n }\n\n /**\n * Formats this diagnostic with color and context if possible, and returns it.\n * The formatted diagnostic is cached, so that it can be re-used. This is\n * useful for diagnostic messages involving trivia -- as the trivia may have\n * been obliterated from the `SourceFile` by the `TsCommentReplacer`, which\n * makes the error messages really confusing.\n */\n public format(projectRoot: string): string {\n if (this.#formatted == null) {\n this.#formatted = _formatDiagnostic(this, projectRoot);\n }\n return this.#formatted;\n }\n}\n\nexport type DiagnosticMessageFormatter = (...args: any[]) => JsiiDiagnostic['messageText'];\n\nexport function configureCategories(records: { [code: string]: ts.DiagnosticCategory }) {\n for (const [code, category] of Object.entries(records)) {\n const diagCode = Code.lookup(diagnosticCode(code));\n if (!diagCode) {\n throw new Error(`Unrecognized diagnostic code '${code}'`);\n }\n diagCode.category = category;\n }\n}\n\nfunction diagnosticCode(str: string): string | number {\n if (str.toLowerCase().startsWith('jsii')) {\n const re = /^JSII(\\d+)$/i.exec(str);\n if (re) {\n return parseInt(re[1], 10);\n }\n throw new Error(`Invalid diagnostic code ${str}. A number must follow code that starts with 'JSII'`);\n }\n return str;\n}\n"]}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Assembly } from '@jsii/spec';
|
|
2
2
|
import * as ts from 'typescript';
|
|
3
3
|
import { ProjectInfo } from '../project-info';
|
|
4
|
+
import { TypeTracker } from '../type-tracker';
|
|
4
5
|
export declare const WARNINGSCODE_FILE_NAME = ".warnings.jsii.js";
|
|
5
6
|
export declare class DeprecationWarningsInjector {
|
|
6
7
|
private readonly typeChecker;
|
|
8
|
+
private readonly typeTracker;
|
|
7
9
|
private transformers;
|
|
8
|
-
constructor(typeChecker: ts.TypeChecker);
|
|
10
|
+
constructor(typeChecker: ts.TypeChecker, typeTracker: TypeTracker);
|
|
9
11
|
process(assembly: Assembly, projectInfo: ProjectInfo): void;
|
|
10
12
|
get customTransformers(): ts.CustomTransformers;
|
|
11
13
|
private buildTypeIndex;
|
|
@@ -11,13 +11,13 @@ const WARNING_FUNCTION_NAME = 'print';
|
|
|
11
11
|
const PARAMETER_NAME = 'p';
|
|
12
12
|
const FOR_LOOP_ITEM_NAME = 'o';
|
|
13
13
|
const NAMESPACE = 'jsiiDeprecationWarnings';
|
|
14
|
-
const LOCAL_ENUM_NAMESPACE = 'ns';
|
|
15
14
|
const VISITED_OBJECTS_SET_NAME = 'visitedObjects';
|
|
16
15
|
const DEPRECATION_ERROR = 'DeprecationError';
|
|
17
16
|
const GET_PROPERTY_DESCRIPTOR = 'getPropertyDescriptor';
|
|
18
17
|
class DeprecationWarningsInjector {
|
|
19
|
-
constructor(typeChecker) {
|
|
18
|
+
constructor(typeChecker, typeTracker) {
|
|
20
19
|
this.typeChecker = typeChecker;
|
|
20
|
+
this.typeTracker = typeTracker;
|
|
21
21
|
this.transformers = {
|
|
22
22
|
before: [],
|
|
23
23
|
};
|
|
@@ -38,15 +38,34 @@ class DeprecationWarningsInjector {
|
|
|
38
38
|
isEmpty = false;
|
|
39
39
|
}
|
|
40
40
|
if (spec.isEnumType(type) && type.locationInModule?.filename) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
// Check for deprecated enum members
|
|
42
|
+
//
|
|
43
|
+
// We need to compare to the value of the deprecated enum. We can do that in one of 2 ways:
|
|
44
|
+
//
|
|
45
|
+
// - Compare against `require('./actual-file').EnumType.SOME_ENUM_MEMBER`
|
|
46
|
+
// - Look up the enum member value and compare against `'some-enum-member'`.
|
|
47
|
+
//
|
|
48
|
+
// The first one introduces a circular dependency between this file and `actual-file.js`, so we
|
|
49
|
+
// will go with the second.
|
|
50
|
+
//
|
|
51
|
+
// One complication: two enum members can have the same value (shouldn't, but can!) where
|
|
52
|
+
// one symbolic name is deprecated but the other isn't. In that case we don't treat it as deprecated.
|
|
53
|
+
const memDecls = this.typeTracker.getEnumMembers(type.fqn);
|
|
54
|
+
const nonDeprecatedValues = new Set((type.members ?? [])
|
|
55
|
+
.filter((m) => !spec.isDeprecated(m))
|
|
56
|
+
.map((m) => this.typeChecker.getConstantValue(memDecls[m.name])));
|
|
57
|
+
const deprecatedMembers = (type.members ?? []).filter(spec.isDeprecated);
|
|
58
|
+
for (const member of deprecatedMembers) {
|
|
59
|
+
const constantValue = this.typeChecker.getConstantValue(memDecls[member.name]);
|
|
60
|
+
if (nonDeprecatedValues.has(constantValue)) {
|
|
61
|
+
// Collission with non-deprecated enum member
|
|
62
|
+
continue;
|
|
49
63
|
}
|
|
64
|
+
const condition = ts.factory.createBinaryExpression(ts.factory.createIdentifier(PARAMETER_NAME), ts.SyntaxKind.EqualsEqualsEqualsToken, typeof constantValue === 'string'
|
|
65
|
+
? ts.factory.createStringLiteral(constantValue)
|
|
66
|
+
: ts.factory.createNumericLiteral(constantValue));
|
|
67
|
+
tryStatements.push(createWarningFunctionCall(`${type.fqn}#${member.name}`, member.docs?.deprecated, condition));
|
|
68
|
+
isEmpty = false;
|
|
50
69
|
}
|
|
51
70
|
}
|
|
52
71
|
else if (spec.isInterfaceType(type) && type.datatype) {
|
|
@@ -344,11 +363,6 @@ function insertStatements(block, newStatements) {
|
|
|
344
363
|
result.splice(splicePoint(block.statements[0]), 0, ...newStatements);
|
|
345
364
|
return ts.factory.createNodeArray(result);
|
|
346
365
|
}
|
|
347
|
-
function createEnumRequireStatement(typeLocation) {
|
|
348
|
-
const { ext } = path.parse(typeLocation);
|
|
349
|
-
const jsFileName = typeLocation.replace(ext, '.js');
|
|
350
|
-
return createRequireStatement(LOCAL_ENUM_NAMESPACE, `./${jsFileName}`);
|
|
351
|
-
}
|
|
352
366
|
function createRequireStatement(name, importPath) {
|
|
353
367
|
return ts.factory.createVariableStatement(undefined, ts.factory.createVariableDeclarationList([
|
|
354
368
|
ts.factory.createVariableDeclaration(name, undefined, undefined, ts.factory.createCallExpression(ts.factory.createIdentifier('require'), undefined, [
|
|
@@ -398,23 +412,6 @@ function createTypeHandlerCall(functionName, parameter, collectionKind) {
|
|
|
398
412
|
])));
|
|
399
413
|
}
|
|
400
414
|
}
|
|
401
|
-
/**
|
|
402
|
-
* There is a chance an enum contains duplicates values with distinct keys,
|
|
403
|
-
* with one of those keys being deprecated. This is a potential pattern to "rename" an enum.
|
|
404
|
-
* In this case, we can't concretely determine if the deprecated member was used or not,
|
|
405
|
-
* so in those cases we skip the warnings altogether, rather than erroneously warning for valid usage.
|
|
406
|
-
* This create a statement to check if the enum value is a duplicate:
|
|
407
|
-
*
|
|
408
|
-
* if (Object.values(Foo).filter(x => x === p).length > 1) { return; }
|
|
409
|
-
*
|
|
410
|
-
* Note that we can't just check the assembly for these duplicates, due to:
|
|
411
|
-
* https://github.com/aws/jsii/issues/2782
|
|
412
|
-
*/
|
|
413
|
-
function createDuplicateEnumValuesCheck(type) {
|
|
414
|
-
return ts.factory.createIfStatement(ts.factory.createBinaryExpression(ts.factory.createPropertyAccessExpression(ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier('Object'), 'values'), undefined, [ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(LOCAL_ENUM_NAMESPACE), type.name)]), ts.factory.createIdentifier('filter')), undefined, [
|
|
415
|
-
ts.factory.createArrowFunction(undefined, undefined, [ts.factory.createParameterDeclaration(undefined, undefined, 'x')], undefined, ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), ts.factory.createBinaryExpression(ts.factory.createIdentifier('x'), ts.factory.createToken(ts.SyntaxKind.EqualsEqualsEqualsToken), ts.factory.createIdentifier(PARAMETER_NAME))),
|
|
416
|
-
]), ts.factory.createIdentifier('length')), ts.factory.createToken(ts.SyntaxKind.GreaterThanToken), ts.factory.createNumericLiteral('1')), ts.factory.createReturnStatement());
|
|
417
|
-
}
|
|
418
415
|
// We try-then-rethrow exceptions to avoid runtimes displaying an uncanny wall of text if the place
|
|
419
416
|
// where the error was thrown is webpacked. For example, jest somehow manages to capture the throw
|
|
420
417
|
// location and renders the source line (which may be the whole file) when bundled.
|