@graphql-codegen/visitor-plugin-common
Advanced tools
Comparing version 1.0.1-alpha-6087e2f9.16 to 1.0.1-alpha-97161620.21
@@ -0,6 +1,6 @@ | ||
import { DirectiveDefinitionNode, EnumTypeDefinitionNode, EnumValueDefinitionNode, FieldDefinitionNode, GraphQLSchema, InputObjectTypeDefinitionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ListTypeNode, NamedTypeNode, NameNode, NonNullTypeNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, UnionTypeDefinitionNode, StringValueNode } from 'graphql'; | ||
import { BaseVisitor, ParsedConfig, RawConfig } from './base-visitor'; | ||
import { EnumValuesMap, ScalarsMap } from './types'; | ||
import { DeclarationBlockConfig } from './utils'; | ||
import { OperationVariablesToObject } from './variables-to-object'; | ||
import { DeclarationBlockConfig } from './utils'; | ||
import { InputObjectTypeDefinitionNode, InputValueDefinitionNode, NameNode, FieldDefinitionNode, ObjectTypeDefinitionNode, EnumTypeDefinitionNode, DirectiveDefinitionNode, ListTypeNode, GraphQLSchema, NonNullTypeNode, UnionTypeDefinitionNode, InterfaceTypeDefinitionNode, ScalarTypeDefinitionNode, EnumValueDefinitionNode, NamedTypeNode } from 'graphql'; | ||
export interface ParsedTypesConfig extends ParsedConfig { | ||
@@ -14,4 +14,5 @@ enumValues: EnumValuesMap; | ||
* @description Overrides the default value of enum values declared in your GraphQL schema. | ||
* You can also map the entire enum to an external type by providing a string that of `module#type`. | ||
* | ||
* @example | ||
* @example With Custom Values | ||
* ```yml | ||
@@ -23,2 +24,9 @@ * config: | ||
* ``` | ||
* | ||
* @example With External Enum | ||
* ```yml | ||
* config: | ||
* enumValues: | ||
* MyEnum: ./my-file#MyCustomEnum | ||
* ``` | ||
*/ | ||
@@ -43,4 +51,7 @@ enumValues?: EnumValuesMap; | ||
ScalarTypeDefinition(node: ScalarTypeDefinitionNode): string; | ||
protected _buildEnumImport(identifier: string, source: string): string; | ||
getEnumsImports(): string; | ||
EnumTypeDefinition(node: EnumTypeDefinitionNode): string; | ||
protected buildEnumValuesBlock(values: ReadonlyArray<EnumValueDefinitionNode>): string; | ||
StringValue(node: StringValueNode): string; | ||
protected buildEnumValuesBlock(typeName: string, values: ReadonlyArray<EnumValueDefinitionNode>): string; | ||
DirectiveDefinition(node: DirectiveDefinitionNode): string; | ||
@@ -47,0 +58,0 @@ protected _getScalar(name: string): string; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const base_visitor_1 = require("./base-visitor"); | ||
const mappers_1 = require("./mappers"); | ||
const scalars_1 = require("./scalars"); | ||
const utils_1 = require("./utils"); | ||
const variables_to_object_1 = require("./variables-to-object"); | ||
const utils_1 = require("./utils"); | ||
const scalars_1 = require("./scalars"); | ||
class BaseTypesVisitor extends base_visitor_1.BaseVisitor { | ||
@@ -16,3 +17,5 @@ constructor(_schema, rawConfig, additionalConfig, defaultScalars = scalars_1.DEFAULT_SCALARS) { | ||
const scalarValue = this.config.scalars[scalarName]; | ||
return utils_1.indent(`${scalarName}: ${scalarValue},`); | ||
const scalarType = this._schema.getType(scalarName); | ||
const comment = scalarType && scalarType.astNode && scalarType.description ? utils_1.transformComment(scalarType.description, 1) : ''; | ||
return comment + utils_1.indent(`${scalarName}: ${scalarValue},`); | ||
}); | ||
@@ -23,2 +26,3 @@ return new utils_1.DeclarationBlock(this._declarationBlockConfig) | ||
.withName('Scalars') | ||
.withComment('All built-in and custom scalars, mapped to their actual values') | ||
.withBlock(allScalars.join('\n')).string; | ||
@@ -41,6 +45,8 @@ } | ||
.withName(this.convertName(node)) | ||
.withComment(node.description) | ||
.withBlock(node.fields.join('\n')).string; | ||
} | ||
InputValueDefinition(node) { | ||
return utils_1.indent(`${node.name}: ${node.type},`); | ||
const comment = utils_1.transformComment(node.description, 1); | ||
return comment + utils_1.indent(`${node.name}: ${node.type},`); | ||
} | ||
@@ -52,3 +58,4 @@ Name(node) { | ||
const typeString = node.type; | ||
return utils_1.indent(`${node.name}: ${typeString},`); | ||
const comment = utils_1.transformComment(node.description, 1); | ||
return comment + utils_1.indent(`${node.name}: ${typeString},`); | ||
} | ||
@@ -62,2 +69,3 @@ UnionTypeDefinition(node, key, parent) { | ||
.withName(this.convertName(node)) | ||
.withComment(node.description) | ||
.withContent(possibleTypes).string; | ||
@@ -73,2 +81,3 @@ } | ||
.withContent(interfaces) | ||
.withComment(node.description) | ||
.withBlock(node.fields.join('\n')).string; | ||
@@ -87,2 +96,3 @@ const original = parent[key]; | ||
.withName(this.convertName(name)) | ||
.withComment(node.description) | ||
.withBlock(this._argumentsTransformer.transform(field.arguments)).string; | ||
@@ -97,2 +107,3 @@ }); | ||
.withName(this.convertName(node)) | ||
.withComment(node.description) | ||
.withBlock(node.fields.join('\n')).string; | ||
@@ -104,3 +115,27 @@ } | ||
} | ||
_buildEnumImport(identifier, source) { | ||
return `import { ${identifier} } from '${source}';`; | ||
} | ||
getEnumsImports() { | ||
return Object.keys(this.config.enumValues) | ||
.map(enumName => { | ||
const mappedValue = this.config.enumValues[enumName]; | ||
if (mappedValue && typeof mappedValue === 'string') { | ||
const mapper = mappers_1.parseMapper(mappedValue); | ||
if (mapper.isExternal) { | ||
const identifier = mapper.type === enumName ? enumName : `${mapper.type} as ${enumName}`; | ||
return this._buildEnumImport(identifier, mapper.source); | ||
} | ||
} | ||
return null; | ||
}) | ||
.filter(a => a) | ||
.join('\n'); | ||
} | ||
EnumTypeDefinition(node) { | ||
const enumName = node.name; | ||
// In case of mapped external enum string | ||
if (this.config.enumValues[enumName] && typeof this.config.enumValues[enumName] === 'string') { | ||
return null; | ||
} | ||
return new utils_1.DeclarationBlock(this._declarationBlockConfig) | ||
@@ -110,7 +145,22 @@ .export() | ||
.withName(this.convertName(node)) | ||
.withBlock(this.buildEnumValuesBlock(node.values)).string; | ||
.withComment(node.description) | ||
.withBlock(this.buildEnumValuesBlock(enumName, node.values)).string; | ||
} | ||
buildEnumValuesBlock(values) { | ||
return values.map(enumOption => utils_1.indent(`${this.convertName(enumOption)}${this._declarationBlockConfig.enumNameValueSeparator} ${utils_1.wrapWithSingleQuotes(this.config.enumValues[enumOption.name] || enumOption.name)}`)).join(',\n'); | ||
// We are using it in order to transform "description" field | ||
StringValue(node) { | ||
return node.value; | ||
} | ||
buildEnumValuesBlock(typeName, values) { | ||
return values | ||
.map(enumOption => { | ||
const optionName = this.convertName(enumOption); | ||
const comment = utils_1.transformComment(enumOption.description, 1); | ||
let enumValue = enumOption.name; | ||
if (this.config.enumValues[typeName] && typeof this.config.enumValues[typeName] === 'object' && this.config.enumValues[typeName][enumValue]) { | ||
enumValue = this.config.enumValues[typeName][enumValue]; | ||
} | ||
return comment + utils_1.indent(`${optionName}${this._declarationBlockConfig.enumNameValueSeparator} ${utils_1.wrapWithSingleQuotes(enumValue)}`); | ||
}) | ||
.join(',\n'); | ||
} | ||
DirectiveDefinition(node) { | ||
@@ -117,0 +167,0 @@ return ''; |
@@ -9,3 +9,3 @@ "use strict"; | ||
source, | ||
type | ||
type, | ||
}; | ||
@@ -15,3 +15,3 @@ } | ||
isExternal: false, | ||
type: mapper | ||
type: mapper, | ||
}; | ||
@@ -18,0 +18,0 @@ } |
@@ -6,3 +6,5 @@ import { ASTNode } from 'graphql'; | ||
export declare type EnumValuesMap = { | ||
[key: string]: string; | ||
[enumName: string]: string | { | ||
[key: string]: string; | ||
}; | ||
}; | ||
@@ -9,0 +11,0 @@ export declare type ConvertNameFn<T = {}> = ConvertFn<T>; |
@@ -15,2 +15,3 @@ import { NameNode, TypeNode, NamedTypeNode, GraphQLObjectType, GraphQLNonNull, GraphQLList, GraphQLOutputType, GraphQLNamedType, GraphQLSchema } from 'graphql'; | ||
} | ||
export declare function transformComment(comment: string, indentLevel?: number): string; | ||
export declare class DeclarationBlock { | ||
@@ -25,5 +26,7 @@ private _config; | ||
_nameGenerics: any; | ||
_comment: any; | ||
constructor(_config: DeclarationBlockConfig); | ||
export(exp?: boolean): DeclarationBlock; | ||
asKind(kind: any): DeclarationBlock; | ||
asKind(kind: string): DeclarationBlock; | ||
withComment(comment: string | null): DeclarationBlock; | ||
withMethodCall(methodName: string): DeclarationBlock; | ||
@@ -30,0 +33,0 @@ withBlock(block: string): DeclarationBlock; |
@@ -51,2 +51,19 @@ "use strict"; | ||
exports.indent = indent; | ||
function transformComment(comment, indentLevel = 0) { | ||
if (!comment || comment === '') { | ||
return ''; | ||
} | ||
const lines = comment.split('\n'); | ||
return lines | ||
.map((line, index) => { | ||
const isLast = lines.length === index + 1; | ||
const isFirst = index === 0; | ||
if (isFirst && isLast) { | ||
return indent(`/** ${comment} */\n`, indentLevel); | ||
} | ||
return indent(`${isFirst ? '/** ' : ' * '}${line}${isLast ? '\n */\n' : ''}`, indentLevel); | ||
}) | ||
.join('\n'); | ||
} | ||
exports.transformComment = transformComment; | ||
class DeclarationBlock { | ||
@@ -62,2 +79,3 @@ constructor(_config) { | ||
this._nameGenerics = null; | ||
this._comment = null; | ||
this._config = Object.assign({ blockWrapper: '', blockTransformer: block => block, enumNameValueSeparator: ':' }, this._config); | ||
@@ -73,2 +91,8 @@ } | ||
} | ||
withComment(comment) { | ||
if (comment) { | ||
this._comment = transformComment(comment, 0); | ||
} | ||
return this; | ||
} | ||
withMethodCall(methodName) { | ||
@@ -127,3 +151,3 @@ this._methodName = methodName; | ||
} | ||
return result + (this._kind === 'interface' || this._kind === 'enum' ? '' : ';') + '\n'; | ||
return (this._comment ? this._comment : '') + result + (this._kind === 'interface' || this._kind === 'enum' ? '' : ';') + '\n'; | ||
} | ||
@@ -130,0 +154,0 @@ } |
@@ -0,6 +1,6 @@ | ||
import { DirectiveDefinitionNode, EnumTypeDefinitionNode, EnumValueDefinitionNode, FieldDefinitionNode, GraphQLSchema, InputObjectTypeDefinitionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ListTypeNode, NamedTypeNode, NameNode, NonNullTypeNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, UnionTypeDefinitionNode, StringValueNode } from 'graphql'; | ||
import { BaseVisitor, ParsedConfig, RawConfig } from './base-visitor'; | ||
import { EnumValuesMap, ScalarsMap } from './types'; | ||
import { DeclarationBlockConfig } from './utils'; | ||
import { OperationVariablesToObject } from './variables-to-object'; | ||
import { DeclarationBlockConfig } from './utils'; | ||
import { InputObjectTypeDefinitionNode, InputValueDefinitionNode, NameNode, FieldDefinitionNode, ObjectTypeDefinitionNode, EnumTypeDefinitionNode, DirectiveDefinitionNode, ListTypeNode, GraphQLSchema, NonNullTypeNode, UnionTypeDefinitionNode, InterfaceTypeDefinitionNode, ScalarTypeDefinitionNode, EnumValueDefinitionNode, NamedTypeNode } from 'graphql'; | ||
export interface ParsedTypesConfig extends ParsedConfig { | ||
@@ -14,4 +14,5 @@ enumValues: EnumValuesMap; | ||
* @description Overrides the default value of enum values declared in your GraphQL schema. | ||
* You can also map the entire enum to an external type by providing a string that of `module#type`. | ||
* | ||
* @example | ||
* @example With Custom Values | ||
* ```yml | ||
@@ -23,2 +24,9 @@ * config: | ||
* ``` | ||
* | ||
* @example With External Enum | ||
* ```yml | ||
* config: | ||
* enumValues: | ||
* MyEnum: ./my-file#MyCustomEnum | ||
* ``` | ||
*/ | ||
@@ -43,4 +51,7 @@ enumValues?: EnumValuesMap; | ||
ScalarTypeDefinition(node: ScalarTypeDefinitionNode): string; | ||
protected _buildEnumImport(identifier: string, source: string): string; | ||
getEnumsImports(): string; | ||
EnumTypeDefinition(node: EnumTypeDefinitionNode): string; | ||
protected buildEnumValuesBlock(values: ReadonlyArray<EnumValueDefinitionNode>): string; | ||
StringValue(node: StringValueNode): string; | ||
protected buildEnumValuesBlock(typeName: string, values: ReadonlyArray<EnumValueDefinitionNode>): string; | ||
DirectiveDefinition(node: DirectiveDefinitionNode): string; | ||
@@ -47,0 +58,0 @@ protected _getScalar(name: string): string; |
import { BaseVisitor } from './base-visitor'; | ||
import { parseMapper } from './mappers'; | ||
import { DEFAULT_SCALARS } from './scalars'; | ||
import { transformComment, buildScalars, DeclarationBlock, indent, wrapWithSingleQuotes } from './utils'; | ||
import { OperationVariablesToObject } from './variables-to-object'; | ||
import { DeclarationBlock, indent, wrapWithSingleQuotes, buildScalars } from './utils'; | ||
import { DEFAULT_SCALARS } from './scalars'; | ||
export class BaseTypesVisitor extends BaseVisitor { | ||
@@ -14,3 +15,5 @@ constructor(_schema, rawConfig, additionalConfig, defaultScalars = DEFAULT_SCALARS) { | ||
const scalarValue = this.config.scalars[scalarName]; | ||
return indent(`${scalarName}: ${scalarValue},`); | ||
const scalarType = this._schema.getType(scalarName); | ||
const comment = scalarType && scalarType.astNode && scalarType.description ? transformComment(scalarType.description, 1) : ''; | ||
return comment + indent(`${scalarName}: ${scalarValue},`); | ||
}); | ||
@@ -21,2 +24,3 @@ return new DeclarationBlock(this._declarationBlockConfig) | ||
.withName('Scalars') | ||
.withComment('All built-in and custom scalars, mapped to their actual values') | ||
.withBlock(allScalars.join('\n')).string; | ||
@@ -39,6 +43,8 @@ } | ||
.withName(this.convertName(node)) | ||
.withComment(node.description) | ||
.withBlock(node.fields.join('\n')).string; | ||
} | ||
InputValueDefinition(node) { | ||
return indent(`${node.name}: ${node.type},`); | ||
const comment = transformComment(node.description, 1); | ||
return comment + indent(`${node.name}: ${node.type},`); | ||
} | ||
@@ -50,3 +56,4 @@ Name(node) { | ||
const typeString = node.type; | ||
return indent(`${node.name}: ${typeString},`); | ||
const comment = transformComment(node.description, 1); | ||
return comment + indent(`${node.name}: ${typeString},`); | ||
} | ||
@@ -60,2 +67,3 @@ UnionTypeDefinition(node, key, parent) { | ||
.withName(this.convertName(node)) | ||
.withComment(node.description) | ||
.withContent(possibleTypes).string; | ||
@@ -71,2 +79,3 @@ } | ||
.withContent(interfaces) | ||
.withComment(node.description) | ||
.withBlock(node.fields.join('\n')).string; | ||
@@ -85,2 +94,3 @@ const original = parent[key]; | ||
.withName(this.convertName(name)) | ||
.withComment(node.description) | ||
.withBlock(this._argumentsTransformer.transform(field.arguments)).string; | ||
@@ -95,2 +105,3 @@ }); | ||
.withName(this.convertName(node)) | ||
.withComment(node.description) | ||
.withBlock(node.fields.join('\n')).string; | ||
@@ -102,3 +113,27 @@ } | ||
} | ||
_buildEnumImport(identifier, source) { | ||
return `import { ${identifier} } from '${source}';`; | ||
} | ||
getEnumsImports() { | ||
return Object.keys(this.config.enumValues) | ||
.map(enumName => { | ||
const mappedValue = this.config.enumValues[enumName]; | ||
if (mappedValue && typeof mappedValue === 'string') { | ||
const mapper = parseMapper(mappedValue); | ||
if (mapper.isExternal) { | ||
const identifier = mapper.type === enumName ? enumName : `${mapper.type} as ${enumName}`; | ||
return this._buildEnumImport(identifier, mapper.source); | ||
} | ||
} | ||
return null; | ||
}) | ||
.filter(a => a) | ||
.join('\n'); | ||
} | ||
EnumTypeDefinition(node) { | ||
const enumName = node.name; | ||
// In case of mapped external enum string | ||
if (this.config.enumValues[enumName] && typeof this.config.enumValues[enumName] === 'string') { | ||
return null; | ||
} | ||
return new DeclarationBlock(this._declarationBlockConfig) | ||
@@ -108,7 +143,22 @@ .export() | ||
.withName(this.convertName(node)) | ||
.withBlock(this.buildEnumValuesBlock(node.values)).string; | ||
.withComment(node.description) | ||
.withBlock(this.buildEnumValuesBlock(enumName, node.values)).string; | ||
} | ||
buildEnumValuesBlock(values) { | ||
return values.map(enumOption => indent(`${this.convertName(enumOption)}${this._declarationBlockConfig.enumNameValueSeparator} ${wrapWithSingleQuotes(this.config.enumValues[enumOption.name] || enumOption.name)}`)).join(',\n'); | ||
// We are using it in order to transform "description" field | ||
StringValue(node) { | ||
return node.value; | ||
} | ||
buildEnumValuesBlock(typeName, values) { | ||
return values | ||
.map(enumOption => { | ||
const optionName = this.convertName(enumOption); | ||
const comment = transformComment(enumOption.description, 1); | ||
let enumValue = enumOption.name; | ||
if (this.config.enumValues[typeName] && typeof this.config.enumValues[typeName] === 'object' && this.config.enumValues[typeName][enumValue]) { | ||
enumValue = this.config.enumValues[typeName][enumValue]; | ||
} | ||
return comment + indent(`${optionName}${this._declarationBlockConfig.enumNameValueSeparator} ${wrapWithSingleQuotes(enumValue)}`); | ||
}) | ||
.join(',\n'); | ||
} | ||
DirectiveDefinition(node) { | ||
@@ -115,0 +165,0 @@ return ''; |
@@ -7,3 +7,3 @@ export function parseMapper(mapper) { | ||
source, | ||
type | ||
type, | ||
}; | ||
@@ -13,3 +13,3 @@ } | ||
isExternal: false, | ||
type: mapper | ||
type: mapper, | ||
}; | ||
@@ -16,0 +16,0 @@ } |
@@ -6,3 +6,5 @@ import { ASTNode } from 'graphql'; | ||
export declare type EnumValuesMap = { | ||
[key: string]: string; | ||
[enumName: string]: string | { | ||
[key: string]: string; | ||
}; | ||
}; | ||
@@ -9,0 +11,0 @@ export declare type ConvertNameFn<T = {}> = ConvertFn<T>; |
@@ -15,2 +15,3 @@ import { NameNode, TypeNode, NamedTypeNode, GraphQLObjectType, GraphQLNonNull, GraphQLList, GraphQLOutputType, GraphQLNamedType, GraphQLSchema } from 'graphql'; | ||
} | ||
export declare function transformComment(comment: string, indentLevel?: number): string; | ||
export declare class DeclarationBlock { | ||
@@ -25,5 +26,7 @@ private _config; | ||
_nameGenerics: any; | ||
_comment: any; | ||
constructor(_config: DeclarationBlockConfig); | ||
export(exp?: boolean): DeclarationBlock; | ||
asKind(kind: any): DeclarationBlock; | ||
asKind(kind: string): DeclarationBlock; | ||
withComment(comment: string | null): DeclarationBlock; | ||
withMethodCall(methodName: string): DeclarationBlock; | ||
@@ -30,0 +33,0 @@ withBlock(block: string): DeclarationBlock; |
@@ -43,2 +43,18 @@ import { pascalCase } from 'change-case'; | ||
} | ||
export function transformComment(comment, indentLevel = 0) { | ||
if (!comment || comment === '') { | ||
return ''; | ||
} | ||
const lines = comment.split('\n'); | ||
return lines | ||
.map((line, index) => { | ||
const isLast = lines.length === index + 1; | ||
const isFirst = index === 0; | ||
if (isFirst && isLast) { | ||
return indent(`/** ${comment} */\n`, indentLevel); | ||
} | ||
return indent(`${isFirst ? '/** ' : ' * '}${line}${isLast ? '\n */\n' : ''}`, indentLevel); | ||
}) | ||
.join('\n'); | ||
} | ||
export class DeclarationBlock { | ||
@@ -54,2 +70,3 @@ constructor(_config) { | ||
this._nameGenerics = null; | ||
this._comment = null; | ||
this._config = Object.assign({ blockWrapper: '', blockTransformer: block => block, enumNameValueSeparator: ':' }, this._config); | ||
@@ -65,2 +82,8 @@ } | ||
} | ||
withComment(comment) { | ||
if (comment) { | ||
this._comment = transformComment(comment, 0); | ||
} | ||
return this; | ||
} | ||
withMethodCall(methodName) { | ||
@@ -119,3 +142,3 @@ this._methodName = methodName; | ||
} | ||
return result + (this._kind === 'interface' || this._kind === 'enum' ? '' : ';') + '\n'; | ||
return (this._comment ? this._comment : '') + result + (this._kind === 'interface' || this._kind === 'enum' ? '' : ';') + '\n'; | ||
} | ||
@@ -122,0 +145,0 @@ } |
{ | ||
"name": "@graphql-codegen/visitor-plugin-common", | ||
"version": "1.0.1-alpha-6087e2f9.16+6087e2f9", | ||
"version": "1.0.1-alpha-97161620.21+97161620", | ||
"license": "MIT", | ||
@@ -9,3 +9,3 @@ "scripts": { | ||
"dependencies": { | ||
"@graphql-codegen/plugin-helpers": "1.0.1-alpha-6087e2f9.16+6087e2f9", | ||
"@graphql-codegen/plugin-helpers": "1.0.1-alpha-97161620.21+97161620", | ||
"auto-bind": "2.0.0", | ||
@@ -20,3 +20,3 @@ "dependency-graph": "0.8.0", | ||
"devDependencies": { | ||
"@graphql-codegen/testing": "1.0.1-alpha-6087e2f9.16+6087e2f9", | ||
"@graphql-codegen/testing": "1.0.1-alpha-97161620.21+97161620", | ||
"@types/graphql": "14.0.7", | ||
@@ -36,3 +36,3 @@ "graphql": "14.1.1", | ||
}, | ||
"gitHead": "6087e2f998eb00eb59a0940e14e2c1bf8a54b37a" | ||
"gitHead": "971616200a2a0ab3c25903fd04cf31ac789284c5" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
227281
3329