From 2447f56bf7f1eb538a4411d8d8cfe9b9f4f1b714 Mon Sep 17 00:00:00 2001 From: Jason Kuhrt Date: Thu, 20 May 2021 20:09:29 -0400 Subject: [PATCH] fix: endent via dedent introduces unexpected newlines on Windows (#51) --- package.json | 2 +- src/generator/helpers/JSDocTemplates.ts | 28 ++++++++-------- src/generator/models/declaration.ts | 32 +++++++++---------- src/generator/models/javascript.ts | 4 +-- src/helpers/prisma.ts | 8 ++--- src/lib/peerDepValidator.ts | 4 +-- tests/__helpers__/testers.ts | 8 ++--- tests/e2e/e2e.test.ts | 14 ++++---- tests/integration/json.test.ts | 4 +-- tests/lib/peerDepValidator.test.ts | 8 ++--- tests/unit/graphqlSchema/enum.test.ts | 8 ++--- tests/unit/graphqlSchema/json.test.ts | 4 +-- .../typescriptDeclarationFile/enum.test.ts | 6 ++-- .../typescriptDeclarationFile/enumDoc.test.ts | 6 ++-- yarn.lock | 22 +++++-------- 15 files changed, 76 insertions(+), 82 deletions(-) diff --git a/package.json b/package.json index 39238bbc8..0db768b19 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "dependencies": { "@prisma/generator-helper": "^2.22.1", "debug": "^4.3.1", - "endent": "^2.0.1", + "dindist": "^1.0.2", "fs-jetpack": "^4.1.0", "graphql-scalars": "^1.9.3", "kleur": "^4.1.4", diff --git a/src/generator/helpers/JSDocTemplates.ts b/src/generator/helpers/JSDocTemplates.ts index f19303a7a..322df73cf 100644 --- a/src/generator/helpers/JSDocTemplates.ts +++ b/src/generator/helpers/JSDocTemplates.ts @@ -1,5 +1,5 @@ import { DMMF } from '@prisma/client/runtime' -import endent from 'endent' +import dedent from 'dindist' import { upperFirst } from 'lodash' type JSDoc = string @@ -15,7 +15,7 @@ type FieldModelParams = { export function jsDocForEnum(enum_: DMMF.DatamodelEnum): JSDoc { const enumDoc = enum_.documentation ? `* ${enum_.documentation}` : enumMissingDoc(enum_) - return endent` + return dedent` /** ${enumIntro(enum_)} * @@ -27,13 +27,13 @@ export function jsDocForEnum(enum_: DMMF.DatamodelEnum): JSDoc { } function enumIntro(enum_: DMMF.DatamodelEnum): string { - return endent` + return dedent` * Nexus \`enumType\` configuration based on the \`${enum_.name}\` enum in your Prisma schema. ` } function enumExample(enum_: DMMF.DatamodelEnum): string { - return endent` + return dedent` * @example * * import { enumType } from 'nexus' @@ -44,7 +44,7 @@ function enumExample(enum_: DMMF.DatamodelEnum): string { } function enumMissingDoc(enum_: DMMF.DatamodelEnum): string { - return endent` + return dedent` ${missingDocsIntro('enum')} * * \`\`\`prisma @@ -64,7 +64,7 @@ function enumMissingDoc(enum_: DMMF.DatamodelEnum): string { export function jsDocForModel(model: DMMF.Model): JSDoc { const modelDoc = model.documentation ? `* ${model.documentation}` : modelMissingDoc(model) - return endent` + return dedent` /** ${modelIntro(model)} * @@ -76,7 +76,7 @@ export function jsDocForModel(model: DMMF.Model): JSDoc { } function modelIntro(model: DMMF.Model): string { - return endent` + return dedent` * Nexus \`objectType\` related configuration based on the \`${model.name}\` model in your Prisma schema. ` } @@ -84,7 +84,7 @@ function modelIntro(model: DMMF.Model): string { function modelMissingDoc(model: DMMF.Model): string { // TODO once https://stackoverflow.com/questions/61893953/how-to-escape-symbol-in-jsdoc-for-vscode // is resolved then we can write better examples below like: id String @id - return endent` + return dedent` ${missingDocsIntro('model')} * * \`\`\`prisma @@ -99,7 +99,7 @@ function modelMissingDoc(model: DMMF.Model): string { } function modelExample(model: DMMF.Model): string { - return endent` + return dedent` * @example * * import { objectType } from 'nexus' @@ -121,7 +121,7 @@ function modelExample(model: DMMF.Model): string { export function jsDocForField({ field, model }: FieldModelParams): JSDoc { const fieldDocs = field.documentation ? `* ${field.documentation}` : fieldMissingDoc({ field, model }) - return endent` + return dedent` /** ${fieldIntro({ field, model })} * @@ -133,13 +133,13 @@ export function jsDocForField({ field, model }: FieldModelParams): JSDoc { } function fieldIntro({ model, field }: FieldModelParams): string { - return endent` + return dedent` * Nexus \`t.field\` related configuration based on the \`${model.name}.${field.name}\` field in your Prisma schema. ` } function fieldMissingDoc({ model, field }: FieldModelParams): string { - return endent` + return dedent` ${missingDocsIntro('model')} * \`\`\`prisma * model ${model.name} { @@ -153,7 +153,7 @@ function fieldMissingDoc({ model, field }: FieldModelParams): string { } function fieldExample({ model, field }: FieldModelParams): string { - return endent` + return dedent` * @example * * import { objectType } from 'nexus' @@ -174,7 +174,7 @@ function fieldExample({ model, field }: FieldModelParams): string { */ function missingDocsIntro(kind: 'model' | 'enum' | 'field'): string { - return endent` + return dedent` * ### ️⚠️ Missing Documentation for this ${upperFirst(kind)} * * Automatically ✨ enrich this JSDoc with information about your enum diff --git a/src/generator/models/declaration.ts b/src/generator/models/declaration.ts index f6cb01fcf..75db4577c 100644 --- a/src/generator/models/declaration.ts +++ b/src/generator/models/declaration.ts @@ -1,5 +1,5 @@ import { DMMF } from '@prisma/generator-helper' -import endent from 'endent' +import dedent from 'dindist' import { LiteralUnion } from 'type-fest' import { StandardGraphQLScalarType, StandardgraphQLScalarTypes } from '../../helpers/graphql' import { PrismaScalarType } from '../../helpers/prisma' @@ -11,17 +11,17 @@ import { ModuleSpec } from '../types' export function createModuleSpec(dmmf: DMMF.Document, settings: Gentime.Settings): ModuleSpec { return { fileName: 'index.d.ts', - content: endent` - ${renderTypeScriptDeclarationForDocumentModels(dmmf, settings)} - `, + content: dedent` + ${renderTypeScriptDeclarationForDocumentModels(dmmf, settings)} + `, } } -const NO_ENUMS_DEFINED_COMMENT = endent` +const NO_ENUMS_DEFINED_COMMENT = dedent` // N/A –– You have not defined any models in your Prisma schema file. ` -const NO_MODELS_DEFINED_COMMENT = endent` +const NO_MODELS_DEFINED_COMMENT = dedent` // N/A –– You have not defined any enums in your Prisma schema file. ` @@ -32,7 +32,7 @@ export function renderTypeScriptDeclarationForDocumentModels( const models = dmmf.datamodel.models const enums = dmmf.datamodel.enums - return endent` + return dedent` import * as Nexus from 'nexus' import * as NexusCore from 'nexus/dist/core' @@ -88,7 +88,7 @@ export function renderTypeScriptDeclarationForDocumentModels( : models .map((model) => { const jsdoc = settings.data.docPropagation.JSDoc ? jsDocForModel(model) + '\n' : '' - return endent` + return dedent` ${jsdoc}export const ${model.name}: $Types.${model.name} ` }) @@ -110,7 +110,7 @@ export function renderTypeScriptDeclarationForDocumentModels( : enums .map((enum_) => { const jsdoc = settings.data.docPropagation.JSDoc ? jsDocForEnum(enum_) + '\n' : '' - return endent` + return dedent` ${jsdoc}export const ${enum_.name}: $Types.${enum_.name} ` }) @@ -124,7 +124,7 @@ function renderTypeScriptDeclarationForEnum(enum_: DMMF.DatamodelEnum, settings: const description = `${ enum_.documentation && settings.data.docPropagation.GraphQLDocs ? `'${enum_.documentation}'` : 'undefined' }` - return endent` + return dedent` ${jsdoc}interface ${enum_.name} { name: '${enum_.name}' description: ${description} @@ -138,7 +138,7 @@ function renderTypeScriptDeclarationForModel(model: DMMF.Model, settings: Gentim const description = `${ model.documentation && settings.data.docPropagation.GraphQLDocs ? `'${model.documentation}'` : 'undefined' }` - return endent` + return dedent` ${jsdoc}interface ${model.name} { $name: '${model.name}' $description: ${description} @@ -166,7 +166,7 @@ function renderTypeScriptDeclarationForField({ const description = `${ field.documentation && settings.data.docPropagation.GraphQLDocs ? `string` : `undefined` }` - return endent` + return dedent` ${jsdoc}${field.name}: { /** * The name of this field. @@ -195,19 +195,19 @@ function renderNexusType2(field: DMMF.Field, settings: Gentime.Settings): string const graphqlType = fieldTypeToGraphQLType(field, settings.data) if (field.isList && field.isRequired) { - return endent` + return dedent` NexusCore.ListDef<${graphqlType}> | NexusCore.NexusNonNullDef<${graphqlType}> ` } else if (field.isList && !field.isRequired) { - return endent` + return dedent` NexusCore.ListDef<${graphqlType}> | NexusCore.NexusNullDef<${graphqlType}> ` } else if (field.isRequired) { - return endent` + return dedent` NexusCore.NexusNonNullDef<'${graphqlType}'> ` } else { - return endent` + return dedent` NexusCore.NexusNullDef<'${graphqlType}'> ` } diff --git a/src/generator/models/javascript.ts b/src/generator/models/javascript.ts index 06ba3f824..b9d5d7ade 100644 --- a/src/generator/models/javascript.ts +++ b/src/generator/models/javascript.ts @@ -1,5 +1,5 @@ import { DMMF } from '@prisma/client/runtime' -import endent from 'endent' +import dedent from 'dindist' import { chain, lowerFirst } from 'lodash' import * as Nexus from 'nexus' import { NexusEnumTypeConfig, NexusListDef, NexusNonNullDef, NexusNullDef } from 'nexus/dist/core' @@ -49,7 +49,7 @@ export type Settings = { export function createModuleSpec(gentimeSettings: Gentime.Settings): ModuleSpec { return { fileName: 'index.js', - content: endent` + content: dedent` const { getPrismaClientDmmf } = require('../helpers/prisma') const ModelsGenerator = require('../generator/models') const { Runtime } = require('../generator/runtime/settingsSingleton') diff --git a/src/helpers/prisma.ts b/src/helpers/prisma.ts index 0714c5279..11e156b89 100644 --- a/src/helpers/prisma.ts +++ b/src/helpers/prisma.ts @@ -1,5 +1,5 @@ import { DMMF } from '@prisma/client/runtime' -import endent from 'endent' +import dedent from 'dindist' import ono from 'ono' import { detectProjectPackageManager, renderRunBin } from '../lib/packageManager' import { d } from './debugNexusPrisma' @@ -17,14 +17,14 @@ export const getPrismaClientDmmf = (importId = '@prisma/client'): DMMF.Document maybeDmmf = require(importId).dmmf } catch (error) { // prettier-ignore - throw ono(error, endent` + throw ono(error, dedent` Failed to get Prisma Client DMMF. An error occured while trying to import it from ${kleur.yellow(importId)}. `) } if (maybeDmmf === undefined) { // prettier-ignore - throw new Error(endent` + throw new Error(dedent` Failed to get Prisma Client DMMF. It was imported from ${kleur.yellow(importId)} but was \`undefined\`. This usually means that you need to run Prisma Client generation. Please run ${renderRunBin(detectProjectPackageManager(), `prisma generate`)}. If that does not solve your problem, you can get community help by opening a discussion at ${kleur.yellow(GITHUB_NEW_DISCUSSION_LINK)}. @@ -37,7 +37,7 @@ export const getPrismaClientDmmf = (importId = '@prisma/client'): DMMF.Document const expectedFields = ['datamodel', 'schema', 'mappings'] as const if (expectedFields.find((fieldName) => dmmf[fieldName] && typeof dmmf[fieldName] !== 'object')) { - throw new Error(endent` + throw new Error(dedent` The DMMF imported from ${importId} appears to be invalid. Missing one/all of expected fields: `) } diff --git a/src/lib/peerDepValidator.ts b/src/lib/peerDepValidator.ts index 2c26a39d1..696066908 100644 --- a/src/lib/peerDepValidator.ts +++ b/src/lib/peerDepValidator.ts @@ -1,4 +1,4 @@ -import endent from 'endent' +import dedent from 'dindist' import * as Semver from 'semver' import { PackageJson } from 'type-fest' import { d } from '../helpers/debugNexusPrisma' @@ -95,7 +95,7 @@ export function validatePeerDependencyRangeSatisfied({ kind: 'peer_dep_not_installed', message: renderError( // prettier-ignore - endent` + dedent` ${kleur.green(peerDependencyName)} is a peer dependency required by ${renderPackageJsonField(requireer,'name')}. But you have not installed it into this project yet. Please run \`${kleur.green(renderAddDeps(detectProjectPackageManager(),[peerDependencyName]))}\`. ` ), diff --git a/tests/__helpers__/testers.ts b/tests/__helpers__/testers.ts index 158e1ab43..21e0afd2e 100644 --- a/tests/__helpers__/testers.ts +++ b/tests/__helpers__/testers.ts @@ -1,5 +1,5 @@ import * as PrismaSDK from '@prisma/sdk' -import endent from 'endent' +import dedent from 'dindist' import execa from 'execa' import * as fs from 'fs-jetpack' import { DocumentNode, execute, printSchema } from 'graphql' @@ -120,7 +120,7 @@ export function createPrismaSchema({ clientOutput?: string nexusPrisma?: boolean }): string { - return endent` + return dedent` datasource db { provider = "${datasourceProvider.provider}" url = ${datasourceProvider.url} @@ -132,7 +132,7 @@ export function createPrismaSchema({ ${ nexusPrisma - ? endent` + ? dedent` generator nexusPrisma { provider = "nexus-prisma" } @@ -216,7 +216,7 @@ function prepareGraphQLSDLForSnapshot(sdl: string): string { function stripNexusQueryOk(sdl: string): string { return sdl.replace( - endent` + dedent` type Query { ok: Boolean! } diff --git a/tests/e2e/e2e.test.ts b/tests/e2e/e2e.test.ts index c670bf4a4..1d34f284b 100644 --- a/tests/e2e/e2e.test.ts +++ b/tests/e2e/e2e.test.ts @@ -1,5 +1,5 @@ import debug from 'debug' -import endent from 'endent' +import dedent from 'dindist' import * as Execa from 'execa' import { gql } from 'graphql-request' import stripAnsi from 'strip-ansi' @@ -114,7 +114,7 @@ it('When bundled custom scalars are used the project type checks and generates e { filePath: `prisma/schema.prisma`, content: createPrismaSchema({ - content: endent` + content: dedent` model Foo { id String @id someJsonField Json @@ -139,7 +139,7 @@ it('When bundled custom scalars are used the project type checks and generates e }, { filePath: `prisma/seed.ts`, - content: endent/*ts*/ ` + content: dedent/*ts*/ ` import { PrismaClient } from '@prisma/client' main() @@ -168,7 +168,7 @@ it('When bundled custom scalars are used the project type checks and generates e }, { filePath: `src/schema.ts`, - content: endent/*ts*/ ` + content: dedent/*ts*/ ` require('dotenv').config() import { makeSchema, objectType, enumType, queryType } from 'nexus' @@ -227,7 +227,7 @@ it('When bundled custom scalars are used the project type checks and generates e }, { filePath: `src/context.ts`, - content: endent/*ts*/ ` + content: dedent/*ts*/ ` import { PrismaClient } from '@prisma/client' const prisma = new PrismaClient() @@ -248,7 +248,7 @@ it('When bundled custom scalars are used the project type checks and generates e }, { filePath: `src/server.ts`, - content: endent/*ts*/ ` + content: dedent/*ts*/ ` require('dotenv').config() import { ApolloServer } from 'apollo-server' @@ -267,7 +267,7 @@ it('When bundled custom scalars are used the project type checks and generates e }, { filePath: `.env`, - content: endent` + content: dedent` DB_URL="postgres://bcnfshogmxsukp:e31b6ddc8b9d85f8964b6671e4b578c58f0d13e15f637513207d44268eabc950@ec2-54-196-33-23.compute-1.amazonaws.com:5432/d17vadgam0dtao?schema=${ process.env.E2E_DB_SCHEMA ?? 'local' }" diff --git a/tests/integration/json.test.ts b/tests/integration/json.test.ts index da1fea878..900b56302 100644 --- a/tests/integration/json.test.ts +++ b/tests/integration/json.test.ts @@ -1,4 +1,4 @@ -import endent from 'endent' +import dedent from 'dindist' import gql from 'graphql-tag' import { list, objectType, queryType } from 'nexus' import NexusPrismaScalars from '../../scalars' @@ -7,7 +7,7 @@ import { testIntegration } from '../__helpers__/testers' testIntegration({ skip: true, // integration test currently only works against SQLite which doesn't support JSON description: 'When a JSON field is defined in the Prisma schema it can be projected into the GraphQL API', - datasourceSchema: endent` + datasourceSchema: dedent` model Foo { id String @id json Json diff --git a/tests/lib/peerDepValidator.test.ts b/tests/lib/peerDepValidator.test.ts index 1456a6a95..6d60ea6d3 100644 --- a/tests/lib/peerDepValidator.test.ts +++ b/tests/lib/peerDepValidator.test.ts @@ -1,4 +1,4 @@ -import endent from 'endent' +import dedent from 'dindist' import * as Execa from 'execa' import { merge, omit } from 'lodash' import { PackageJson } from 'type-fest' @@ -25,7 +25,7 @@ beforeAll(() => { // setup alpha dep that has peer dep requirements - Execa.commandSync(`yarn add kleur semver tslib endent debug fs-jetpack --production`, { + Execa.commandSync(`yarn add kleur semver tslib debug fs-jetpack dindist --production`, { cwd: testProject.fs.cwd(), }) @@ -39,7 +39,7 @@ beforeAll(() => { testProject.fs.write( 'validatePeerDependencies.js', - endent` + dedent` const assert = require('assert') const { validatePeerDependencies } = require('${requireer.name}/dist/lib/peerDepValidator') @@ -56,7 +56,7 @@ beforeAll(() => { testProject.fs.write( 'enforceValidPeerDependencies.js', - endent` + dedent` const assert = require('assert') const { enforceValidPeerDependencies } = require('${requireer.name}/dist/lib/peerDepValidator') diff --git a/tests/unit/graphqlSchema/enum.test.ts b/tests/unit/graphqlSchema/enum.test.ts index 566db545e..890c1a826 100644 --- a/tests/unit/graphqlSchema/enum.test.ts +++ b/tests/unit/graphqlSchema/enum.test.ts @@ -1,10 +1,10 @@ -import endent from 'endent' +import dedent from 'dindist' import { enumType } from 'nexus' import { testGraphqlSchema } from '../../__helpers__/testers' testGraphqlSchema({ description: 'When an enum is defined in the Prisma schema it can be projected into the GraphQL API', - datasourceSchema: endent` + datasourceSchema: dedent` enum Foo { a } @@ -17,7 +17,7 @@ testGraphqlSchema({ testGraphqlSchema({ description: 'When an enum with multiple members is defined in the Prisma schema it and all its members can be projected into the GraphQL API', - datasourceSchema: endent` + datasourceSchema: dedent` enum Foo { a b @@ -32,7 +32,7 @@ testGraphqlSchema({ testGraphqlSchema({ description: 'When an enum is defined with documentation in the Prisma schema it can be projected into the GraphQL API with that documentation', - datasourceSchema: endent` + datasourceSchema: dedent` /// Some documentation enum Foo { a diff --git a/tests/unit/graphqlSchema/json.test.ts b/tests/unit/graphqlSchema/json.test.ts index 820a6e345..ceb122fc2 100644 --- a/tests/unit/graphqlSchema/json.test.ts +++ b/tests/unit/graphqlSchema/json.test.ts @@ -1,11 +1,11 @@ -import endent from 'endent' +import dedent from 'dindist' import { objectType } from 'nexus' import NexusPrismaScalars from '../../../scalars' import { testGraphqlSchema } from '../../__helpers__/testers' testGraphqlSchema({ description: 'When a JSON field is defined in the Prisma schema it can be projected into the GraphQL API', - datasourceSchema: endent` + datasourceSchema: dedent` model Foo { id String @id json Json diff --git a/tests/unit/typescriptDeclarationFile/enum.test.ts b/tests/unit/typescriptDeclarationFile/enum.test.ts index e2a58a9f3..88b165992 100644 --- a/tests/unit/typescriptDeclarationFile/enum.test.ts +++ b/tests/unit/typescriptDeclarationFile/enum.test.ts @@ -1,9 +1,9 @@ -import endent from 'endent' +import dedent from 'dindist' import { testGeneratedModules } from '../../__helpers__/testers' testGeneratedModules({ description: 'An enum maps to a Nexus enum type definition', - databaseSchema: endent` + databaseSchema: dedent` enum Foo { a } @@ -12,7 +12,7 @@ testGeneratedModules({ testGeneratedModules({ description: 'When prisma enum has documentation then it is used for JSDoc and GraphQL enum description', - databaseSchema: endent` + databaseSchema: dedent` /// Some documentation enum Foo { a diff --git a/tests/unit/typescriptDeclarationFile/enumDoc.test.ts b/tests/unit/typescriptDeclarationFile/enumDoc.test.ts index 6df077907..2d395fe7b 100644 --- a/tests/unit/typescriptDeclarationFile/enumDoc.test.ts +++ b/tests/unit/typescriptDeclarationFile/enumDoc.test.ts @@ -1,10 +1,10 @@ -import endent from 'endent' +import dedent from 'dindist' import { testGeneratedModules } from '../../__helpers__/testers' testGeneratedModules({ description: 'When an enum has no documentation comment, then it gets the default JSDoc and its description field is null', - databaseSchema: endent` + databaseSchema: dedent` enum Foo { a } @@ -14,7 +14,7 @@ testGeneratedModules({ testGeneratedModules({ description: 'When an enum has a documentation comment, then it is used for the JSDoc of that enum and its $description field', - databaseSchema: endent` + databaseSchema: dedent` /// Some documentation enum Foo { a diff --git a/yarn.lock b/yarn.lock index 8a4266561..65cda6ee8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2111,11 +2111,6 @@ decompress-response@^4.2.0: dependencies: mimic-response "^2.0.0" -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -2207,6 +2202,14 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +dindist@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/dindist/-/dindist-1.0.2.tgz#cd7eb84fba1b6c4d9c6c2cc675db15168a173c82" + integrity sha512-RLoPvdwNGOO4OAABtng/uP81K1MVfbBJpe9f+/e6w530SqSJcFfRzuDRf1kJX+mhxwo6TFOuj5khaDQGZJZUYg== + dependencies: + fast-json-parse "^1.0.3" + objectorarray "^1.0.4" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2303,15 +2306,6 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -endent@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/endent/-/endent-2.0.1.tgz#fb18383a3f37ae3213a5d9f6c4a880d1061eb4c5" - integrity sha512-mADztvcC+vCk4XEZaCz6xIPO2NHQuprv5CAEjuVAu6aZwqAj7nVNlMyl1goPFYqCCpS2OJV9jwpumJLkotZrNw== - dependencies: - dedent "^0.7.0" - fast-json-parse "^1.0.3" - objectorarray "^1.0.4" - enquirer@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"