@form8ion/javascript 15.6.2 → 15.7.0

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/index.js CHANGED
@@ -175,6 +175,7 @@ function validate(options) {
175
175
  }).default({registries: {}}),
176
176
  plugins: {
177
177
  unitTestFrameworks: pluginsSchema,
178
+ integrationTestFrameworks: pluginsSchema,
178
179
  packageBundlers: pluginsSchema,
179
180
  applicationTypes: pluginsSchema,
180
181
  packageTypes: pluginsSchema,
@@ -1503,21 +1504,30 @@ async function scaffoldProjectTypePlugin({
1503
1504
  );
1504
1505
  }
1505
1506
 
1507
+ function scaffoldIntegrationTesting() {
1508
+ return {};
1509
+ }
1510
+
1506
1511
  async function scaffoldTesting({
1507
1512
  projectRoot,
1508
1513
  tests: {unit, integration},
1509
1514
  unitTestFrameworks,
1515
+ integrationTestFrameworks,
1510
1516
  decisions,
1511
1517
  dialect
1512
1518
  }) {
1513
- const unitResults = unit
1514
- ? await scaffoldUnitTesting({projectRoot, frameworks: unitTestFrameworks, decisions, dialect})
1515
- : {};
1519
+ const [unitResults, integrationResults] = await Promise.all([
1520
+ unit ? scaffoldUnitTesting({projectRoot, frameworks: unitTestFrameworks, decisions, dialect}) : {},
1521
+ integration
1522
+ ? scaffoldIntegrationTesting()
1523
+ : {}
1524
+ ]);
1516
1525
 
1517
- return deepmerge(
1526
+ return deepmerge.all([
1518
1527
  {dependencies: {javascript: {development: [...(unit || integration) ? ['@travi/any'] : []]}}, eslint: {}},
1519
- unitResults
1520
- );
1528
+ unitResults,
1529
+ integrationResults
1530
+ ]);
1521
1531
  }
1522
1532
 
1523
1533
  function buildAllowedHosts({packageManager, registries = {}}) {
@@ -1585,11 +1595,12 @@ async function scaffoldVerification({
1585
1595
  registries,
1586
1596
  tests,
1587
1597
  unitTestFrameworks,
1598
+ integrationTestFrameworks,
1588
1599
  decisions,
1589
1600
  pathWithinParent
1590
1601
  }) {
1591
1602
  const [testingResults, lintingResults, huskyResults] = await Promise.all([
1592
- scaffoldTesting({projectRoot, tests, unitTestFrameworks, decisions, dialect}),
1603
+ scaffoldTesting({projectRoot, tests, unitTestFrameworks, integrationTestFrameworks, decisions, dialect}),
1593
1604
  scaffoldLinting({projectRoot, packageManager, registries}),
1594
1605
  scaffold$2({projectRoot, packageManager, pathWithinParent})
1595
1606
  ]);
@@ -1686,6 +1697,7 @@ async function scaffoldJavascript(options) {
1686
1697
  monorepoTypes,
1687
1698
  packageBundlers,
1688
1699
  unitTestFrameworks,
1700
+ integrationTestFrameworks,
1689
1701
  hosts,
1690
1702
  ciServices
1691
1703
  }
@@ -1738,6 +1750,7 @@ async function scaffoldJavascript(options) {
1738
1750
  registries: configs.registries,
1739
1751
  tests,
1740
1752
  unitTestFrameworks,
1753
+ integrationTestFrameworks,
1741
1754
  decisions,
1742
1755
  pathWithinParent
1743
1756
  });
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/prompts/question-names.js","../src/coverage/scaffolder.js","../src/coverage/nyc/tester.js","../src/coverage/nyc/remover.js","../src/coverage/lifter.js","../src/coverage/tester.js","../src/testing/unit/prompt.js","../src/plugins-schemas.js","../src/testing/unit/scaffolder.js","../src/options/schemas.js","../src/vcs/schema.js","../src/options/validator.js","../src/dialects/prompt-choices.js","../src/prompts/conditionals.js","../src/prompts/validators.js","../src/prompts/questions.js","../src/dialects/babel/config/writer.js","../src/dialects/babel/config/loader.js","../src/dialects/babel/config/ignore-adder.js","../src/dialects/babel/scaffolder.js","../src/dialects/babel/lifter.js","../src/dialects/babel/predicate.js","../src/dialects/typescript/scaffolder.js","../src/dialects/scaffolder.js","../src/npm-config/writer.js","../src/npm-config/scaffolder.js","../src/npm-config/tester.js","../src/npm-config/reader.js","../src/npm-config/lifter.js","../src/package-managers/npm/scaffolder.js","../src/package-managers/lockfile-path-resolver.js","../src/package-managers/npm/tester.js","../src/package-managers/yarn/scaffolder.js","../src/package-managers/yarn/tester.js","../src/package-managers/tester.js","../src/corepack/lifter.js","../src/package-managers/lifter.js","../src/package-managers/scaffolder.js","../src/package-managers/current-manager-resolver.js","../src/documentation/generation-command.js","../src/documentation/scaffolder.js","../src/node-version/tasks.js","../src/node-version/scaffolder.js","../src/node-version/tester.js","../src/vcs/ignore-lists-builder.js","../src/package/package-name.js","../src/package/details.js","../src/package/scaffolder.js","../src/package/property-sorter.js","../src/package/vcs-host-details.js","../src/dependencies/package-managers.js","../src/dependencies/installer.js","../src/dependencies/remover.js","../src/dependencies/processor.js","../src/package/scripts/test-script-updater.js","../src/package/scripts/script-comparator.js","../src/package/scripts/scripts-sorter.js","../src/package/scripts/lifter.js","../src/package/lifter.js","../src/project-type/publishable/access-level.js","../src/project-type/publishable/registry-resolver.js","../src/project-type/publishable/badges.js","../src/project-type/publishable/provenance/slsa.js","../src/project-type/publishable/provenance/lifter.js","../src/project-type/publishable/lifter.js","../src/project-type/publishable/scaffolder.js","../src/project-type/package/documentation.js","../src/project-type/publishable/bundler/prompt.js","../src/project-type/publishable/bundler/scaffolder.js","../src/project-type/package/build-details.js","../src/project-type/package/scaffolder.js","../src/project-type/package/lifter.js","../src/project-type/package/tester.js","../src/project-type/application/scaffolder.js","../src/project-type/application/predicate.js","../src/project-type/monorepo/scaffolder.js","../src/project-type/cli/scaffolder.js","../src/project-type/cli/tester.js","../src/project-type/cli/lifter.js","../src/project-type/scaffolder.js","../src/project-type/tester.js","../src/project-type/lifter.js","../src/project-type-plugin/prompt.js","../src/project-type-plugin/scaffolder.js","../src/testing/scaffolder.js","../src/lockfile-lint/allowed-hosts-builder.js","../src/lockfile-lint/scaffolder.js","../src/lockfile-lint/tester.js","../src/lockfile-lint/config.js","../src/linting/scaffolder.js","../src/verification/scaffolder.js","../src/code-style/remark/scaffolder.js","../src/code-style/scaffolder.js","../src/code-style/lifter.js","../src/code-style/tester.js","../src/scaffolder.js","../src/registries/tester.js","../src/registries/npm-config/list-builder.js","../src/registries/lifter.js","../src/engines/tester.js","../src/engines/lifter.js","../src/lifter.js","../src/tester.js","../src/index.js"],"sourcesContent":["export const questionNames = {\n UNIT_TEST_FRAMEWORK: 'unitTestFramework',\n NODE_VERSION_CATEGORY: 'nodeVersionCategory',\n PACKAGE_MANAGER: 'packageManager',\n PACKAGE_BUNDLER: 'packageBundler',\n PROJECT_TYPE: 'projectType',\n PROJECT_TYPE_CHOICE: 'projectTypeChoice',\n SHOULD_BE_SCOPED: 'shouldBeScoped',\n SCOPE: 'scope',\n AUTHOR_NAME: 'authorName',\n AUTHOR_EMAIL: 'authorEmail',\n AUTHOR_URL: 'authorUrl',\n HOST: 'host',\n CONFIGURE_LINTING: 'configureLint',\n PROVIDE_EXAMPLE: 'provideExample',\n DIALECT: 'dialect'\n};\n","import deepmerge from 'deepmerge';\nimport {scaffold as scaffoldCodecov} from '@form8ion/codecov';\nimport {scaffold as scaffoldC8} from '@form8ion/c8';\n\nexport default async function scaffoldCoverage({projectRoot}) {\n return deepmerge(await scaffoldC8({projectRoot}), await scaffoldCodecov({projectRoot}));\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function nyvInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.nycrc`);\n}\n","import {promises as fs} from 'node:fs';\n\nexport default async function removeNyc({projectRoot}) {\n await Promise.all([\n fs.unlink(`${projectRoot}/.nycrc`),\n fs.rm(`${projectRoot}/.nyc_output`, {recursive: true, force: true})\n ]);\n\n return {\n dependencies: {\n javascript: {\n remove: ['nyc', '@istanbuljs/nyc-config-babel', 'babel-plugin-istanbul']\n }\n }\n };\n}\n","import deepmerge from 'deepmerge';\nimport {lift as liftCodecov} from '@form8ion/codecov';\nimport {scaffold as scaffoldC8} from '@form8ion/c8';\n\nimport {test as nycIsConfigured, remove as removeNyc} from './nyc/index.js';\n\nexport async function lift({projectRoot, packageManager, vcs}) {\n const codecovResults = await liftCodecov({projectRoot, packageManager, vcs});\n\n if (await nycIsConfigured({projectRoot})) {\n const [c8Results, nycResults] = await Promise.all([\n scaffoldC8({projectRoot}),\n removeNyc({projectRoot})\n ]);\n\n return deepmerge.all([\n c8Results,\n nycResults,\n codecovResults,\n {\n scripts: {'test:unit': 'cross-env NODE_ENV=test c8 run-s test:unit:base'},\n nextSteps: [{\n summary: 'Remove use of `@istanbuljs/nyc-config-babel` from your babel config, if present,'\n + ' after the migration away from `nyc`'\n }]\n }\n ]);\n }\n\n return codecovResults;\n}\n","import {directoryExists} from '@form8ion/core';\nimport {test as c8IsConfigured} from '@form8ion/c8';\n\nimport nycIsConfigured from './nyc/tester.js';\n\nexport default async function testCoverageBeingCollected({projectRoot}) {\n const [c8Exists, nycExists] = await Promise.all([c8IsConfigured({projectRoot}), nycIsConfigured({projectRoot})]);\n\n return c8Exists || nycExists || directoryExists(`${projectRoot}/coverage`);\n}\n","import {prompt} from '@form8ion/overridable-prompts';\nimport {questionNames} from '../../prompts/question-names.js';\n\nexport default async function gatherUnitTestingInput({frameworks, decisions}) {\n if (!Object.keys(frameworks).length) return 'Other';\n\n const answers = await prompt([{\n name: questionNames.UNIT_TEST_FRAMEWORK,\n type: 'list',\n message: 'Which type of unit testing framework should be used?',\n choices: [...Object.keys(frameworks), 'Other']\n }], decisions);\n\n return answers[questionNames.UNIT_TEST_FRAMEWORK];\n}\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport const pluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin).default({});\n","import deepmerge from 'deepmerge';\nimport {validateOptions} from '@form8ion/core';\nimport {scaffoldChoice as scaffoldFrameworkChoice} from '@form8ion/javascript-core';\n\nimport {scaffold as scaffoldCoverage} from '../../coverage/index.js';\nimport chooseFramework from './prompt.js';\nimport {pluginsSchema} from '../../plugins-schemas.js';\n\nexport default async function scaffoldUnitTesting({projectRoot, frameworks, decisions, dialect}) {\n const validatedFrameworks = validateOptions(pluginsSchema, frameworks);\n const [framework, coverage] = await Promise.all([\n chooseFramework({frameworks: validatedFrameworks, decisions})\n .then(chosenFramework => scaffoldFrameworkChoice(validatedFrameworks, chosenFramework, {projectRoot, dialect})),\n scaffoldCoverage({projectRoot})\n ]);\n\n return deepmerge.all([\n {scripts: {'test:unit': 'cross-env NODE_ENV=test c8 run-s test:unit:base'}},\n framework,\n coverage\n ]);\n}\n","import joi from 'joi';\n\nexport const scopeBasedConfigSchema = joi.object({scope: joi.string().regex(/^@[a-z0-9-]+$/i, 'scope').required()});\n\nexport const nameBasedConfigSchema = joi.object({\n packageName: joi.string().required(),\n name: joi.string().required()\n});\n\nexport const registriesSchema = joi.object().pattern(joi.string(), joi.string().uri()).default({});\n\nexport const visibilitySchema = joi.string().valid('Public', 'Private').required();\n\nexport const projectNameSchema = joi.string().regex(/^@\\w*\\//, {invert: true}).required();\n","import joi from 'joi';\n\nexport const vcsSchema = joi.object({\n host: joi.string().required(),\n owner: joi.string().required(),\n name: joi.string().required()\n});\n","import joi from 'joi';\nimport {validateOptions} from '@form8ion/core';\n\nimport {pluginsSchema} from '../plugins-schemas.js';\nimport {\n nameBasedConfigSchema,\n projectNameSchema,\n registriesSchema,\n scopeBasedConfigSchema,\n visibilitySchema\n} from './schemas.js';\nimport {vcsSchema} from '../vcs/schema.js';\n\nexport function validate(options) {\n const schema = joi.object({\n projectRoot: joi.string().required(),\n projectName: projectNameSchema,\n visibility: visibilitySchema,\n license: joi.string().required(),\n description: joi.string(),\n pathWithinParent: joi.string(),\n decisions: joi.object(),\n vcs: vcsSchema,\n configs: joi.object({\n eslint: scopeBasedConfigSchema,\n typescript: scopeBasedConfigSchema,\n prettier: scopeBasedConfigSchema,\n commitlint: nameBasedConfigSchema,\n babelPreset: nameBasedConfigSchema,\n remark: joi.string(),\n registries: registriesSchema\n }).default({registries: {}}),\n plugins: {\n unitTestFrameworks: pluginsSchema,\n packageBundlers: pluginsSchema,\n applicationTypes: pluginsSchema,\n packageTypes: pluginsSchema,\n monorepoTypes: pluginsSchema,\n hosts: pluginsSchema,\n ciServices: pluginsSchema\n }\n }).required();\n\n return validateOptions(schema, options);\n}\n","import {dialects} from '@form8ion/javascript-core';\n\nexport default function gatherDialectInput({babelPreset, typescript}) {\n return [\n {name: 'Common JS (no transpilation)', value: dialects.COMMON_JS, short: 'cjs'},\n ...babelPreset ? [{name: 'Modern JavaScript (transpiled)', value: dialects.BABEL, short: 'modern'}] : [],\n {name: 'ESM-only (no transpilation)', value: dialects.ESM, short: 'esm'},\n ...typescript ? [{name: 'TypeScript', value: dialects.TYPESCRIPT, short: 'ts'}] : []\n ];\n}\n","import {projectTypes} from '@form8ion/javascript-core';\nimport {questionNames as commonQuestionNames} from '@travi/language-scaffolder-prompts';\n\nimport {questionNames} from './question-names.js';\n\nfunction projectIsCLI(answers) {\n return projectTypes.CLI === answers[questionNames.PROJECT_TYPE];\n}\n\nexport function projectIsPackage(answers) {\n return projectTypes.PACKAGE === answers[questionNames.PROJECT_TYPE];\n}\n\nexport function projectIsApplication(answers) {\n return projectTypes.APPLICATION === answers[questionNames.PROJECT_TYPE];\n}\n\nfunction packageShouldBeScoped(visibility, answers) {\n return 'Private' === visibility || answers[questionNames.SHOULD_BE_SCOPED];\n}\n\nfunction willBePublishedToNpm(answers) {\n return projectIsPackage(answers) || projectIsCLI(answers);\n}\n\nexport function shouldBeScopedPromptShouldBePresented(answers) {\n return willBePublishedToNpm(answers);\n}\n\nexport function scopePromptShouldBePresentedFactory(visibility) {\n return answers => willBePublishedToNpm(answers) && packageShouldBeScoped(visibility, answers);\n}\n\nexport function lintingPromptShouldBePresented({\n [commonQuestionNames.UNIT_TESTS]: unitTested,\n [commonQuestionNames.INTEGRATION_TESTS]: integrationTested\n}) {\n return !unitTested && !integrationTested;\n}\n","export function scope(visibility) {\n return input => {\n if (!input && 'Private' === visibility) {\n return 'Private packages must be scoped (https://docs.npmjs.com/private-modules/intro#setting-up-your-package)';\n }\n\n return true;\n };\n}\n","import {packageManagers, projectTypes} from '@form8ion/javascript-core';\nimport {prompt as promptWithInquirer} from '@form8ion/overridable-prompts';\nimport {questionNames as commonQuestionNames, questions as commonQuestions} from '@travi/language-scaffolder-prompts';\nimport {warn} from '@travi/cli-messages';\n\nimport {execa} from 'execa';\nimport npmConfFactory from '../../thirdparty-wrappers/npm-conf.js';\nimport buildDialectChoices from '../dialects/prompt-choices.js';\nimport {\n lintingPromptShouldBePresented,\n projectIsApplication,\n projectIsPackage,\n scopePromptShouldBePresentedFactory,\n shouldBeScopedPromptShouldBePresented\n} from './conditionals.js';\nimport {questionNames} from './question-names.js';\nimport {scope as validateScope} from './validators.js';\n\nfunction authorQuestions({name, email, url}) {\n return [\n {\n name: questionNames.AUTHOR_NAME,\n message: 'What is the author\\'s name?',\n default: name\n },\n {\n name: questionNames.AUTHOR_EMAIL,\n message: 'What is the author\\'s email?',\n default: email\n },\n {\n name: questionNames.AUTHOR_URL,\n message: 'What is the author\\'s website url?',\n default: url\n }\n ];\n}\n\nexport async function prompt(\n ciServices,\n hosts,\n visibility,\n vcs,\n decisions,\n configs,\n pathWithinParent\n) {\n const npmConf = npmConfFactory();\n\n let maybeLoggedInNpmUsername;\n try {\n maybeLoggedInNpmUsername = (await execa('npm', ['whoami'])).stdout;\n } catch (failedExecutionResult) {\n if (!decisions[questionNames.SCOPE]) {\n warn('No logged in user found with `npm whoami`. Login with `npm login` '\n + 'to use your npm account name as the package scope default.');\n }\n }\n\n const {\n [commonQuestionNames.UNIT_TESTS]: unitTested,\n [commonQuestionNames.INTEGRATION_TESTS]: integrationTested,\n [questionNames.PROJECT_TYPE]: projectType,\n [commonQuestionNames.CI_SERVICE]: ci,\n [questionNames.HOST]: chosenHost,\n [questionNames.SCOPE]: scope,\n [questionNames.NODE_VERSION_CATEGORY]: nodeVersionCategory,\n [questionNames.AUTHOR_NAME]: authorName,\n [questionNames.AUTHOR_EMAIL]: authorEmail,\n [questionNames.AUTHOR_URL]: authorUrl,\n [questionNames.CONFIGURE_LINTING]: configureLinting,\n [questionNames.PROVIDE_EXAMPLE]: provideExample,\n [questionNames.PACKAGE_MANAGER]: packageManager,\n [questionNames.DIALECT]: dialect\n } = await promptWithInquirer([\n {\n name: questionNames.DIALECT,\n message: 'Which JavaScript dialect should this project follow?',\n type: 'list',\n choices: buildDialectChoices(configs),\n default: 'babel'\n },\n ...pathWithinParent ? [] : [{\n name: questionNames.NODE_VERSION_CATEGORY,\n message: 'What node.js version should be used?',\n type: 'list',\n choices: ['LTS', 'Latest'],\n default: 'LTS'\n }],\n {\n name: questionNames.PACKAGE_MANAGER,\n message: 'Which package manager will be used with this project?',\n type: 'list',\n choices: Object.values(packageManagers),\n default: packageManagers.NPM\n },\n {\n name: questionNames.PROJECT_TYPE,\n message: 'What type of JavaScript project is this?',\n type: 'list',\n choices: [...Object.values(projectTypes), 'Other'],\n default: projectTypes.PACKAGE\n },\n ...'Private' === visibility ? [] : [{\n name: questionNames.SHOULD_BE_SCOPED,\n message: 'Should this package be scoped?',\n type: 'confirm',\n when: shouldBeScopedPromptShouldBePresented,\n default: true\n }],\n {\n name: questionNames.SCOPE,\n message: 'What is the scope?',\n when: scopePromptShouldBePresentedFactory(visibility),\n validate: validateScope(visibility),\n default: maybeLoggedInNpmUsername\n },\n ...authorQuestions({\n name: npmConf.get('init.author.name'),\n email: npmConf.get('init.author.email'),\n url: npmConf.get('init.author.url')\n }),\n ...commonQuestions(({vcs, ciServices, pathWithinParent})),\n {\n name: questionNames.CONFIGURE_LINTING,\n message: 'Will there be source code that should be linted?',\n type: 'confirm',\n when: lintingPromptShouldBePresented\n },\n {\n name: questionNames.PROVIDE_EXAMPLE,\n message: 'Should an example be provided in the README?',\n type: 'confirm',\n when: projectIsPackage\n },\n {\n name: questionNames.HOST,\n type: 'list',\n message: 'Where will the application be hosted?',\n when: projectIsApplication,\n choices: [...Object.keys(hosts), 'Other']\n }\n ], decisions);\n\n return {\n tests: {unit: unitTested, integration: integrationTested},\n projectType,\n ci,\n chosenHost,\n scope,\n nodeVersionCategory,\n author: {name: authorName, email: authorEmail, url: authorUrl},\n configureLinting: false !== configureLinting,\n provideExample,\n packageManager,\n dialect\n };\n}\n","import {fileTypes} from '@form8ion/core';\nimport {write} from '@form8ion/config-file';\n\nexport default function writeBabelConfig({projectRoot, config}) {\n return write({path: projectRoot, name: 'babel', format: fileTypes.JSON, config});\n}\n","import {fileTypes, loadConfigFile} from '@form8ion/core';\n\nexport default function loadBabelConfig({projectRoot}) {\n return loadConfigFile({path: projectRoot, name: '.babelrc', format: fileTypes.JSON});\n}\n","import writeConfig from './writer.js';\nimport loadConfig from './loader.js';\n\nexport default async function addIgnores({projectRoot, ignore}) {\n if (ignore) {\n const existingConfig = await loadConfig({projectRoot});\n\n await writeConfig({projectRoot, config: {...existingConfig, ignore: [`./${ignore}/`]}});\n }\n}\n","import {write} from './config/index.js';\n\nexport default async function scaffoldBabel({projectRoot, preset}) {\n if (!preset) {\n throw new Error('No babel preset provided. Cannot configure babel transpilation');\n }\n\n await write({projectRoot, config: {presets: [preset.name]}});\n\n return {\n dependencies: {javascript: {development: ['@babel/register', preset.packageName]}},\n eslint: {}\n };\n}\n","import {addIgnore} from './config/index.js';\n\nexport default async function liftBabel({results, projectRoot}) {\n await addIgnore({ignore: results.buildDirectory, projectRoot});\n\n return {};\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function babelIsInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.babelrc.json`);\n}\n","import {fileTypes, writeConfigFile} from '@form8ion/core';\nimport {projectTypes} from '@form8ion/javascript-core';\n\nexport default async function scaffoldTypescript({config, projectType, projectRoot, testFilenamePattern}) {\n const shareableTsConfigPackage = `${config.scope}/tsconfig`;\n\n await writeConfigFile({\n path: projectRoot,\n name: 'tsconfig',\n format: fileTypes.JSON,\n config: {\n $schema: 'https://json.schemastore.org/tsconfig',\n extends: shareableTsConfigPackage,\n compilerOptions: {\n rootDir: 'src',\n ...projectTypes.PACKAGE === projectType && {\n outDir: 'lib',\n declaration: true\n }\n },\n include: ['src/**/*.ts'],\n ...testFilenamePattern && {exclude: [testFilenamePattern]}\n }\n });\n\n return {\n eslint: {configs: ['typescript']},\n dependencies: {javascript: {development: ['typescript', shareableTsConfigPackage]}},\n vcsIgnore: {files: ['tsconfig.tsbuildinfo']}\n };\n}\n","import {dialects} from '@form8ion/javascript-core';\n\nimport {scaffold as scaffoldBabel} from './babel/index.js';\nimport {scaffold as scaffoldTypescript} from './typescript/index.js';\n\nexport default function scaffoldDialect({dialect, projectType, projectRoot, configs, testFilenamePattern}) {\n switch (dialect) {\n case dialects.BABEL:\n return scaffoldBabel({preset: configs.babelPreset, projectRoot});\n case dialects.TYPESCRIPT:\n return scaffoldTypescript({config: configs.typescript, projectType, projectRoot, testFilenamePattern});\n default:\n return {};\n }\n}\n","import {promises as fs} from 'node:fs';\nimport {stringify} from 'ini';\n\nexport default async function writeNpmConfig({projectRoot, config}) {\n await fs.writeFile(`${projectRoot}/.npmrc`, stringify(config));\n}\n","import {projectTypes} from '@form8ion/javascript-core';\n\nimport write from './writer.js';\n\nfunction projectWillNotBeConsumed(projectType) {\n return projectTypes.APPLICATION === projectType || projectTypes.CLI === projectType;\n}\n\nexport default async function scaffoldNpmConfiguration({projectRoot, projectType}) {\n await write({\n projectRoot,\n config: {'update-notifier': false, ...projectWillNotBeConsumed(projectType) && {'save-exact': true}}\n });\n\n return {scripts: {'lint:peer': 'npm ls >/dev/null'}};\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function npmConfigExists({projectRoot}) {\n return fileExists(`${projectRoot}/.npmrc`);\n}\n","import {parse} from 'ini';\nimport {promises as fs} from 'node:fs';\nimport {fileExists} from '@form8ion/core';\n\nexport default async function readNpmConfig({projectRoot}) {\n const pathToConfig = `${projectRoot}/.npmrc`;\n\n if (!(await fileExists(pathToConfig))) return {};\n\n return parse(await fs.readFile(pathToConfig, 'utf-8'));\n}\n","import read from './reader.js';\nimport write from './writer.js';\n\nexport default async function liftNpmConfig({projectRoot}) {\n const {\n provenance,\n 'engines-strict': enginesStrict,\n ...remainingProperties\n } = await read({projectRoot});\n\n await write({projectRoot, config: remainingProperties});\n\n return {};\n}\n","import {promises as fs} from 'node:fs';\nimport {execa} from 'execa';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nexport default async function scaffoldNpmPackageManager({projectRoot}) {\n const [packageContents, {stdout}] = await Promise.all([\n fs.readFile(`${projectRoot}/package.json`, 'utf-8'),\n execa('npm', ['--version'])\n ]);\n const existingPackageJsonContents = JSON.parse(packageContents);\n\n await writePackageJson({\n projectRoot,\n config: {\n ...existingPackageJsonContents,\n packageManager: `npm@${stdout}`\n }\n });\n}\n","import {packageManagers} from '@form8ion/javascript-core';\n\nexport default function resolveLockfilePath(packageManager) {\n const lockfilePaths = {\n [packageManagers.NPM]: 'package-lock.json',\n [packageManagers.YARN]: 'yarn.lock'\n };\n\n return lockfilePaths[packageManager];\n}\n","import {fileExists} from '@form8ion/core';\nimport {packageManagers} from '@form8ion/javascript-core';\n\nimport determineLockfilePath from '../lockfile-path-resolver.js';\n\nexport default function packageManagerIsNpm({projectRoot, pinnedPackageManager = ''}) {\n const [packageManager] = pinnedPackageManager.split('@');\n\n return packageManagers.NPM === packageManager\n || fileExists(`${projectRoot}/${determineLockfilePath(packageManagers.NPM)}`);\n}\n","import {promises as fs} from 'node:fs';\nimport {execa} from 'execa';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nexport default async function scaffoldYarn({projectRoot}) {\n const [packageContents, {stdout}] = await Promise.all([\n fs.readFile(`${projectRoot}/package.json`, 'utf-8'),\n execa('yarn', ['--version'])\n ]);\n const existingPackageJsonContents = JSON.parse(packageContents);\n\n await writePackageJson({\n projectRoot,\n config: {\n ...existingPackageJsonContents,\n packageManager: `yarn@${stdout}`\n }\n });\n}\n","import {fileExists} from '@form8ion/core';\nimport {packageManagers} from '@form8ion/javascript-core';\n\nimport determineLockfilePath from '../lockfile-path-resolver.js';\n\nexport default function packageManagerIsYarn({projectRoot, pinnedPackageManager = ''}) {\n const [packageManager] = pinnedPackageManager.split('@');\n\n return packageManagers.YARN === packageManager\n || fileExists(`${projectRoot}/${determineLockfilePath(packageManagers.YARN)}`);\n}\n","import {test as npmIsUsed} from './npm/index.js';\nimport {test as yarnIsUsed} from './yarn/index.js';\n\nexport default async function packageManagerInUse({projectRoot}) {\n const [npmFound, yarnFound] = await Promise.all([\n npmIsUsed({projectRoot}),\n yarnIsUsed({projectRoot})\n ]);\n\n return npmFound || yarnFound;\n}\n","import {execa} from 'execa';\n\nexport default async function liftCorepack() {\n await execa('corepack', ['use', 'npm@latest']);\n}\n","import {lift as liftCorepack} from '../corepack/index.js';\n\nexport default async function liftPackageManagers() {\n await liftCorepack();\n\n return {};\n}\n","import {scaffold as scaffoldNpm} from './npm/index.js';\nimport {scaffold as scaffoldYarn} from './yarn/index.js';\n\nconst scaffolders = {\n npm: scaffoldNpm,\n yarn: scaffoldYarn\n};\n\nexport default function scaffoldPackageManager({projectRoot, packageManager}) {\n return scaffolders[packageManager]({projectRoot});\n}\n","import {promises as fs} from 'node:fs';\nimport {packageManagers} from '@form8ion/javascript-core';\n\nimport {test as npmIsUsed} from './npm/index.js';\nimport {test as yarnIsUsed} from './yarn/index.js';\n\nexport default async function resolveCurrentPackageManager({projectRoot, packageManager}) {\n if (packageManager) return packageManager;\n\n const {packageManager: pinnedPackageManager} = JSON.parse(await fs.readFile(`${projectRoot}/package.json`, 'utf-8'));\n\n if (await npmIsUsed({projectRoot, pinnedPackageManager})) {\n return packageManagers.NPM;\n }\n\n if (await yarnIsUsed({projectRoot, pinnedPackageManager})) {\n return packageManagers.YARN;\n }\n\n throw new Error('Package-manager could not be determined');\n}\n","import {packageManagers} from '@form8ion/javascript-core';\n\nexport default function scaffoldGenerationCommand(packageManager) {\n if (packageManagers.NPM === packageManager) return 'npm run generate:md';\n if (packageManagers.YARN === packageManager) return 'yarn generate:md';\n\n throw new Error(\n `The ${packageManager} package manager is currently not supported. `\n + `Only ${Object.values(packageManagers).join(' and ')} are currently supported.`\n );\n}\n","import buildGenerationCommand from './generation-command.js';\n\nexport default function scaffoldDocumentation({projectTypeResults, packageManager}) {\n return {\n toc: `Run \\`${buildGenerationCommand(packageManager)}\\` to generate a table of contents`,\n ...projectTypeResults.documentation,\n contributing: `### Dependencies\n\n\\`\\`\\`sh\n$ nvm install\n$ ${packageManager} install\n\\`\\`\\`\n\n### Verification\n\n\\`\\`\\`sh\n$ ${packageManager} test\n\\`\\`\\``\n };\n}\n","import {info} from '@travi/cli-messages';\n\nimport {execa} from 'execa';\n\nexport async function determineLatestVersionOf(nodeVersionCategory) {\n info('Determining version of node', {level: 'secondary'});\n\n const {stdout: nvmLsOutput} = await execa(\n `. ~/.nvm/nvm.sh && nvm ls-remote${('LTS' === nodeVersionCategory) ? ' --lts' : ''}`,\n {shell: true}\n );\n\n const lsLines = nvmLsOutput.split('\\n');\n const lsLine = lsLines[lsLines.length - 2];\n\n return lsLine.match(/(v[0-9]+)\\.[0-9]+\\.[0-9]+/)[1];\n}\n\nexport function install(nodeVersionCategory) {\n info(`Installing ${nodeVersionCategory} version of node using nvm`, {level: 'secondary'});\n\n const subprocess = execa('. ~/.nvm/nvm.sh && nvm install', {shell: true});\n subprocess.stdout.pipe(process.stdout);\n return subprocess;\n}\n","import {promises as fs} from 'node:fs';\nimport {info} from '@travi/cli-messages';\n\nimport {determineLatestVersionOf, install as installNodeVersion} from './tasks.js';\n\nexport default async function scaffoldNodeVersion({projectRoot, nodeVersionCategory}) {\n if (!nodeVersionCategory) return undefined;\n\n const lowerCaseCategory = nodeVersionCategory.toLowerCase();\n info(`Configuring ${lowerCaseCategory} version of node`);\n\n const version = await determineLatestVersionOf(nodeVersionCategory);\n\n await fs.writeFile(`${projectRoot}/.nvmrc`, version);\n\n await installNodeVersion(nodeVersionCategory);\n\n return version;\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function nodeVersionMangerInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.nvmrc`);\n}\n","export default function buildIgnoreLists(vcsIgnoreLists = {}) {\n return {\n files: vcsIgnoreLists.files || [],\n directories: ['/node_modules/', ...vcsIgnoreLists.directories || []]\n };\n}\n","import {EOL} from 'os';\nimport validatePackageName from '../../thirdparty-wrappers/validate-npm-package-name.js';\n\nexport default function determinePackageName(projectName, scope) {\n const name = `${scope ? `@${scope}/` : ''}${projectName}`;\n\n const {validForNewPackages, errors} = validatePackageName(name);\n\n if (validForNewPackages) return name;\n if (1 === errors.length && errors.includes('name cannot start with a period')) return projectName.slice(1);\n\n throw new Error(`The package name ${name} is invalid:${EOL}\\t* ${errors.join(`${EOL}\\t* `)}`);\n}\n","import {dialects} from '@form8ion/javascript-core';\n\nexport default function scaffoldPackageJsonDetails({\n packageName,\n dialect,\n license,\n author,\n description\n}) {\n return {\n name: packageName,\n description,\n license,\n type: dialects.ESM === dialect ? 'module' : 'commonjs',\n author: `${author.name}${author.email ? ` <${author.email}>` : ''}${author.url ? ` (${author.url})` : ''}`,\n scripts: {}\n };\n}\n","import {info} from '@travi/cli-messages';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nimport buildPackageName from './package-name.js';\nimport buildPackageDetails from './details.js';\n\nexport default async function scaffoldPackage({\n projectRoot,\n projectName,\n scope,\n dialect,\n license,\n author,\n description\n}) {\n info('Configuring package.json');\n\n const packageName = buildPackageName(projectName, scope);\n\n await writePackageJson({\n projectRoot,\n config: await buildPackageDetails({\n packageName,\n dialect,\n license,\n author,\n description\n })\n });\n\n return {packageName};\n}\n","import sortObjectKeys from 'sort-object-keys';\n\nexport default function sortProperties(packageContents) {\n return sortObjectKeys(\n packageContents,\n [\n 'name',\n 'description',\n 'license',\n 'version',\n 'private',\n 'type',\n 'engines',\n 'author',\n 'contributors',\n 'repository',\n 'bugs',\n 'homepage',\n 'funding',\n 'keywords',\n 'runkitExampleFilename',\n 'exports',\n 'bin',\n 'main',\n 'module',\n 'types',\n 'sideEffects',\n 'scripts',\n 'files',\n 'publishConfig',\n 'packageManager',\n 'config',\n 'dependencies',\n 'devDependencies',\n 'peerDependencies'\n ]\n );\n}\n","export default function scaffoldVcsHostDetails(vcs, pathWithinParent) {\n return vcs && 'github' === vcs.host && {\n repository: pathWithinParent\n ? {\n type: 'git',\n url: `https://github.com/${vcs.owner}/${vcs.name}.git`,\n directory: pathWithinParent\n }\n : `${vcs.owner}/${vcs.name}`,\n bugs: `https://github.com/${vcs.owner}/${vcs.name}/issues`\n };\n}\n","import {DEV_DEPENDENCY_TYPE, PROD_DEPENDENCY_TYPE, packageManagers} from '@form8ion/javascript-core';\n\nexport const details = {\n [packageManagers.NPM]: {\n installationCommand: 'install',\n installationFlags: {\n [DEV_DEPENDENCY_TYPE]: `save-${DEV_DEPENDENCY_TYPE}`,\n [PROD_DEPENDENCY_TYPE]: `save-${PROD_DEPENDENCY_TYPE}`,\n exact: 'save-exact'\n }\n },\n [packageManagers.YARN]: {\n installationCommand: 'add',\n installationFlags: {\n [DEV_DEPENDENCY_TYPE]: DEV_DEPENDENCY_TYPE,\n [PROD_DEPENDENCY_TYPE]: PROD_DEPENDENCY_TYPE,\n exact: 'exact'\n }\n }\n};\n\nexport function getInstallationCommandFor(manager) {\n return details[manager].installationCommand;\n}\n\nexport function getDependencyTypeFlag(manager, type) {\n return details[manager].installationFlags[type];\n}\n\nexport function getExactFlag(manager) {\n return details[manager].installationFlags.exact;\n}\n","import {info, warn} from '@travi/cli-messages';\nimport {DEV_DEPENDENCY_TYPE, packageManagers} from '@form8ion/javascript-core';\n\nimport {execa} from 'execa';\nimport {getDependencyTypeFlag, getExactFlag, getInstallationCommandFor} from './package-managers.js';\n\nexport default async function installDependencies(\n dependencies,\n dependenciesType,\n projectRoot,\n packageManager = packageManagers.NPM\n) {\n if (dependencies.length) {\n info(`Installing ${dependenciesType} dependencies`, {level: 'secondary'});\n\n await execa(\n `. ~/.nvm/nvm.sh && nvm use && ${packageManager} ${\n getInstallationCommandFor(packageManager)\n } ${[...new Set(dependencies)].join(' ')} --${getDependencyTypeFlag(packageManager, dependenciesType)}${\n DEV_DEPENDENCY_TYPE === dependenciesType ? ` --${getExactFlag(packageManager)}` : ''\n }`,\n {shell: true, cwd: projectRoot}\n );\n } else warn(`No ${dependenciesType} dependencies to install`);\n}\n","import {execa} from 'execa';\nimport {info} from '@travi/cli-messages';\n\nexport default async function removeDependencies({packageManager, dependencies}) {\n if (dependencies.length) {\n info('Removing dependencies dependencies', {level: 'secondary'});\n\n await execa(packageManager, ['remove', ...dependencies]);\n }\n}\n","import {error, info} from '@travi/cli-messages';\nimport {DEV_DEPENDENCY_TYPE, PROD_DEPENDENCY_TYPE} from '@form8ion/javascript-core';\n\nimport install from './installer.js';\nimport remove from './remover.js';\n\nexport default async function processDependencies({dependencies = {}, devDependencies, projectRoot, packageManager}) {\n info('Processing dependencies');\n\n if (Array.isArray(devDependencies)) {\n throw new Error(\n `devDependencies provided as: ${devDependencies}. Instead, provide under dependencies.javascript.development`\n );\n }\n\n if (Array.isArray(dependencies)) {\n throw new Error(`Expected dependencies to be an object. Instead received: ${dependencies}`);\n }\n\n const {javascript: {production = [], development = [], remove: dependenciesToRemove = []} = {}} = dependencies;\n\n try {\n await install(production, PROD_DEPENDENCY_TYPE, projectRoot, packageManager);\n await install(development, DEV_DEPENDENCY_TYPE, projectRoot, packageManager);\n await remove({packageManager, dependencies: dependenciesToRemove});\n } catch (e) {\n error('Failed to update dependencies');\n error(e, {level: 'secondary'});\n }\n}\n","function projectWillBeTested(scripts) {\n return Object.keys(scripts).find(scriptName => scriptName.startsWith('test:'));\n}\n\nfunction projectShouldBeBuiltForVerification(scripts) {\n return 'run-s build' === scripts['pregenerate:md'];\n}\n\nexport default function updateTestScript(scripts) {\n return {\n ...scripts,\n ...projectShouldBeBuiltForVerification(scripts) && {pretest: 'run-s build'},\n test: `npm-run-all --print-label --parallel lint:*${projectWillBeTested(scripts) ? ' --parallel test:*' : ''}`\n };\n}\n","function isRelatedScript(a, b, prefix) {\n return a.startsWith(prefix) && a.slice(prefix.length) === b;\n}\n\nfunction isPreScriptFor(a, b) {\n return isRelatedScript(a, b, 'pre');\n}\n\nfunction isPostScriptFor(a, b) {\n return isRelatedScript(a, b, 'post');\n}\n\nfunction stripPrefix(script) {\n if (script.startsWith('pre')) return script.slice(3);\n if (script.startsWith('post')) return script.slice(4);\n return script;\n}\n\nfunction getCategoryOrder(script) {\n const base = stripPrefix(script);\n if ('test' === base) return 0;\n if (base.startsWith('lint:')) return 1;\n if (base.startsWith('test:unit')) return 2;\n if (base.startsWith('test:integration')) return 3;\n if (base.startsWith('test:')) return 2;\n\n return 4;\n}\n\nexport default function compareScriptNames(a, b) {\n if (isPreScriptFor(a, b)) return -1;\n if (isPreScriptFor(b, a)) return 1;\n if (isPostScriptFor(a, b)) return 1;\n if (isPostScriptFor(b, a)) return -1;\n\n const categoryDiff = getCategoryOrder(a) - getCategoryOrder(b);\n if (0 !== categoryDiff) return 0 > categoryDiff ? -1 : 1;\n\n const aStripped = stripPrefix(a);\n const bStripped = stripPrefix(b);\n\n const aKey = aStripped !== a ? aStripped : a;\n const bKey = bStripped !== b ? bStripped : b;\n\n return aKey.localeCompare(bKey);\n}\n","import sortObjectKeys from 'sort-object-keys';\n\nimport compareScriptNames from './script-comparator.js';\n\nexport default function sortScripts(scripts) {\n return sortObjectKeys(scripts, compareScriptNames);\n}\n","import updateTestScript from './test-script-updater.js';\nimport sortScripts from './scripts-sorter.js';\n\nexport default function liftScripts({existingScripts, scripts}) {\n return {\n scripts: sortScripts(updateTestScript({...existingScripts, ...scripts})),\n dependencies: {\n javascript: {\n development: ['npm-run-all2'],\n remove: ['npm-run-all']\n }\n }\n };\n}\n","import {promises as fs} from 'node:fs';\nimport deepmerge from 'deepmerge';\nimport {info} from '@travi/cli-messages';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nimport sortPackageProperties from './property-sorter.js';\nimport defineVcsHostDetails from './vcs-host-details.js';\nimport {process as processDependencies} from '../dependencies/index.js';\nimport {lift as liftScripts} from './scripts/index.js';\n\nexport default async function liftPackageJson({\n projectRoot,\n scripts,\n tags,\n dependencies,\n devDependencies,\n packageManager,\n vcs,\n pathWithinParent\n}) {\n info('Updating `package.json`', {level: 'secondary'});\n\n const existingPackageJsonContents = JSON.parse(await fs.readFile(`${projectRoot}/package.json`, 'utf-8'));\n const {scripts: liftedScripts, dependencies: scriptDependencies} = liftScripts({\n existingScripts: existingPackageJsonContents.scripts,\n scripts\n });\n\n await writePackageJson({\n projectRoot,\n config: sortPackageProperties({\n ...existingPackageJsonContents,\n ...defineVcsHostDetails(vcs, pathWithinParent),\n scripts: liftedScripts,\n ...tags && {\n keywords: existingPackageJsonContents.keywords ? [...existingPackageJsonContents.keywords, ...tags] : tags\n }\n })\n });\n\n await processDependencies({\n dependencies: deepmerge(dependencies, scriptDependencies),\n devDependencies,\n projectRoot,\n packageManager\n });\n}\n","export default function mapProjectVisibility({projectVisibility}) {\n return 'Public' === projectVisibility ? 'public' : 'restricted';\n}\n","function isScope(firstPart) {\n return firstPart.startsWith('@');\n}\n\nexport default function resolveRegistry(packageName, registries = {}) {\n if (registries.publish) return registries.publish;\n\n const [firstPart] = packageName.split('/');\n if (isScope(firstPart)) {\n const scopedRegistry = registries[firstPart.slice(1)];\n if (scopedRegistry) return scopedRegistry;\n }\n\n return registries.registry;\n}\n","function buildNpmBadgeImageUrl(packageName, customRegistry) {\n const params = new URLSearchParams({logo: 'npm', ...customRegistry && {registry_uri: customRegistry}});\n\n return `https://img.shields.io/npm/v/${packageName}?${params}`;\n}\n\nexport default function scaffoldPublishableBadges({packageName, accessLevel, customRegistry}) {\n return {\n consumer: {\n ...'public' === accessLevel && {\n npm: {\n img: buildNpmBadgeImageUrl(packageName, customRegistry),\n text: 'npm',\n link: `https://www.npmjs.com/package/${packageName}`\n }\n }\n },\n status: {}\n };\n}\n","export default function scaffoldSlsa({provenance}) {\n if (provenance) {\n return {\n badges: {\n status: {\n slsa: {\n img: 'https://slsa.dev/images/gh-badge-level2.svg',\n url: 'https://slsa.dev',\n text: 'SLSA Level 2'\n }\n }\n }\n };\n }\n\n return {};\n}\n","import {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\n\nimport enhanceSlsa from './slsa.js';\n\nexport default async function liftProvenance({projectRoot, packageDetails, customRegistry}) {\n const {publishConfig: {access} = {}} = packageDetails;\n\n if ('public' === access && !customRegistry) {\n await mergeIntoExistingPackageJson({projectRoot, config: {publishConfig: {provenance: true}}});\n\n return enhanceSlsa({provenance: true});\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\nimport {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\n\nimport resolveRegistry from './registry-resolver.js';\nimport defineBadges from './badges.js';\nimport {lift as liftProvenance} from './provenance/index.js';\n\nexport default async function liftPublishable({projectRoot, packageDetails, configs}) {\n const {name: packageName, publishConfig: {access: packageAccessLevel}} = packageDetails;\n const homepage = `https://npm.im/${packageName}`;\n const customRegistry = resolveRegistry(packageName, configs.registries);\n\n await mergeIntoExistingPackageJson({projectRoot, config: {homepage}});\n\n return deepmerge(\n await liftProvenance({packageDetails, projectRoot, customRegistry}),\n {\n homepage,\n dependencies: {javascript: {development: ['publint']}},\n scripts: {'lint:publish': 'publint --strict'},\n badges: defineBadges({packageName, accessLevel: packageAccessLevel, customRegistry})\n }\n );\n}\n","import defineBadges from './badges.js';\n\nexport default async function scaffoldPublishable({packageName, packageAccessLevel}) {\n return {\n badges: await defineBadges(packageName, packageAccessLevel)\n };\n}\n","import {packageManagers} from '@form8ion/javascript-core';\n\nimport buildGenerationCommand from '../../documentation/generation-command.js';\n\nfunction getInstallationCommand(packageManager) {\n if (packageManagers.NPM === packageManager) return 'npm install';\n if (packageManagers.YARN === packageManager) return 'yarn add';\n\n throw new Error(\n `The ${packageManager} package manager is currently not supported. `\n + `Only ${Object.values(packageManagers).join(' and ')} are currently supported.`\n );\n}\n\nexport default function scaffoldPackageDocumentation({scope, packageName, packageManager, visibility, provideExample}) {\n return {\n usage: `### Installation\n${'Private' === visibility ? `\n:warning: this is a private package, so you will need to use an npm token with\naccess to private packages under \\`@${scope}\\`\n` : ''\n}\n\\`\\`\\`sh\n$ ${getInstallationCommand(packageManager)} ${packageName}\n\\`\\`\\`${provideExample\n ? `\n\n### Example\n\nrun \\`${buildGenerationCommand(packageManager)}\\` to inject the usage example`\n : ''\n}`\n };\n}\n","import {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../../../prompts/question-names.js';\n\nexport default async function gatherBundlerInput({bundlers, decisions}) {\n if (!Object.keys(bundlers).length) return 'Other';\n\n const answers = await prompt([{\n name: questionNames.PACKAGE_BUNDLER,\n type: 'list',\n message: 'Which bundler should be used?',\n choices: [...Object.keys(bundlers), 'Other']\n }], decisions);\n\n return answers[questionNames.PACKAGE_BUNDLER];\n}\n","import {scaffoldChoice as scaffoldChosenBundler} from '@form8ion/javascript-core';\nimport chooseBundler from './prompt.js';\n\nexport default async function scaffoldBundler({projectRoot, projectType, bundlers, dialect, decisions}) {\n const chosenBundler = await chooseBundler({bundlers, decisions});\n\n return scaffoldChosenBundler(bundlers, chosenBundler, {projectRoot, projectType, dialect});\n}\n","import {promises as fs} from 'node:fs';\nimport deepmerge from 'deepmerge';\nimport touch from 'touch';\nimport {dialects, projectTypes} from '@form8ion/javascript-core';\nimport {scaffold as scaffoldBundler} from '../publishable/bundler/index.js';\n\nconst defaultBuildDirectory = 'lib';\n\nasync function createExample(projectRoot) {\n return fs.writeFile(`${projectRoot}/example.js`, \"import {} from './lib/index.js';\\n\");\n}\n\nasync function buildDetailsForCommonJsProject({projectRoot, provideExample}) {\n await Promise.all([\n touch(`${projectRoot}/index.js`),\n provideExample\n ? fs.writeFile(`${projectRoot}/example.js`, \"const {} = require('.');\\n\")\n : Promise.resolve()\n ]);\n\n return {};\n}\n\nexport default async function buildDetails({\n projectRoot,\n projectName,\n packageBundlers,\n dialect,\n provideExample,\n decisions\n}) {\n if (dialects.COMMON_JS === dialect) return buildDetailsForCommonJsProject({projectRoot, provideExample});\n\n await fs.mkdir(`${projectRoot}/src`, {recursive: true});\n const [bundlerResults] = await Promise.all([\n scaffoldBundler({bundlers: packageBundlers, projectRoot, dialect, decisions, projectType: projectTypes.PACKAGE}),\n provideExample ? await createExample(projectRoot, projectName, dialect) : Promise.resolve,\n touch(`${projectRoot}/src/index.js`)\n ]);\n\n return deepmerge(\n bundlerResults,\n {\n dependencies: {javascript: {development: ['rimraf']}},\n scripts: {\n clean: `rimraf ./${defaultBuildDirectory}`,\n prebuild: 'run-s clean',\n build: 'npm-run-all --print-label --parallel build:*',\n prepack: 'run-s build',\n ...provideExample && {'pregenerate:md': 'run-s build'}\n },\n vcsIgnore: {directories: [`/${defaultBuildDirectory}/`]},\n buildDirectory: defaultBuildDirectory\n }\n );\n}\n","import deepmerge from 'deepmerge';\nimport {info} from '@travi/cli-messages';\nimport {dialects, mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\n\nimport determinePackageAccessLevelFromProjectVisibility from '../publishable/access-level.js';\nimport {scaffold as scaffoldPublishable} from '../publishable/index.js';\nimport scaffoldPackageDocumentation from './documentation.js';\nimport buildDetails from './build-details.js';\n\nexport default async function scaffoldPackageProjectType({\n projectRoot,\n projectName,\n packageName,\n packageManager,\n visibility,\n scope,\n packageBundlers,\n decisions,\n dialect,\n provideExample,\n publishRegistry\n}) {\n info('Scaffolding Package Details');\n\n const packageAccessLevel = determinePackageAccessLevelFromProjectVisibility({projectVisibility: visibility});\n const [detailsForBuild, publishableResults] = await Promise.all([\n buildDetails({\n projectRoot,\n projectName,\n packageBundlers,\n dialect,\n provideExample,\n decisions\n }),\n scaffoldPublishable({packageName, packageAccessLevel}),\n mergeIntoExistingPackageJson({\n projectRoot,\n config: {\n files: ['example.js', ...dialects.COMMON_JS === dialect ? ['index.js'] : ['lib/', 'src/']],\n publishConfig: {\n access: packageAccessLevel,\n ...publishRegistry && {registry: publishRegistry}\n },\n sideEffects: false,\n ...dialects.BABEL === dialect && {\n main: './lib/index.js',\n module: './lib/index.mjs',\n exports: {\n module: './lib/index.mjs',\n require: './lib/index.js',\n import: './lib/index.mjs'\n }\n },\n ...dialects.ESM === dialect && {\n main: './lib/index.js',\n exports: './lib/index.js'\n },\n ...dialects.TYPESCRIPT === dialect && {\n main: './lib/index.js',\n module: './lib/index.mjs',\n types: './lib/index.d.ts',\n exports: {\n types: './lib/index.d.ts',\n require: './lib/index.js',\n import: './lib/index.mjs'\n }\n }\n }\n })\n ]);\n\n return deepmerge.all([\n publishableResults,\n {\n documentation: scaffoldPackageDocumentation({packageName, visibility, scope, packageManager, provideExample}),\n nextSteps: [\n {summary: 'Add the appropriate `save` flag to the installation instructions in the README'},\n {summary: 'Define supported node.js versions as `engines.node` in the `package.json` file'},\n {summary: 'Publish pre-release versions to npm until package is stable enough to publish v1.0.0'}\n ]\n },\n detailsForBuild\n ]);\n}\n","import {lift as liftPublishable} from '../publishable/index.js';\n\nexport default function liftPackage({projectRoot, packageDetails, configs}) {\n return liftPublishable({projectRoot, packageDetails, configs});\n}\n","export default async function projectIsPackage({\n packageDetails: {exports, publishConfig, bin, private: projectMarkedPrivate}\n}) {\n return !projectMarkedPrivate && (!!exports || (!!publishConfig && !bin));\n}\n","import {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\nimport {info} from '@travi/cli-messages';\n\nconst defaultBuildDirectory = 'public';\n\nexport default async function scaffoldApplication({projectRoot}) {\n info('Scaffolding Application Details');\n\n await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});\n\n const buildDirectory = defaultBuildDirectory;\n\n return {\n scripts: {\n clean: `rimraf ./${buildDirectory}`,\n start: `node ./${buildDirectory}/index.js`,\n prebuild: 'run-s clean'\n },\n dependencies: {javascript: {development: ['rimraf']}},\n vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},\n buildDirectory,\n nextSteps: []\n };\n}\n","export default function projectIsApplication({packageDetails}) {\n return !!packageDetails.private;\n}\n","import {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\nimport {info} from '@travi/cli-messages';\n\nexport default async function scaffoldMonorepo({projectRoot}) {\n info('Scaffolding Monorepo Details');\n\n await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});\n\n return {\n nextSteps: [{\n summary: 'Add packages to your new monorepo',\n description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'\n + ' to scaffold new packages into your new monorepo'\n }]\n };\n}\n","import deepmerge from 'deepmerge';\nimport {mergeIntoExistingPackageJson, projectTypes} from '@form8ion/javascript-core';\n\nimport determinePackageAccessLevelFromProjectVisibility from '../publishable/access-level.js';\nimport {scaffold as scaffoldPublishable} from '../publishable/index.js';\nimport {scaffold as scaffoldBundler} from '../publishable/bundler/index.js';\n\nconst defaultBuildDirectory = 'bin';\n\nexport default async function scaffoldCli({\n packageName,\n visibility,\n projectRoot,\n dialect,\n publishRegistry,\n decisions,\n packageBundlers\n}) {\n const packageAccessLevel = determinePackageAccessLevelFromProjectVisibility({projectVisibility: visibility});\n const [bundlerResults, publishableResults] = await Promise.all([\n scaffoldBundler({bundlers: packageBundlers, projectRoot, dialect, decisions, projectType: projectTypes.CLI}),\n scaffoldPublishable({packageName, packageAccessLevel}),\n mergeIntoExistingPackageJson({\n projectRoot,\n config: {\n bin: {},\n files: [`${defaultBuildDirectory}/`, 'src/'],\n publishConfig: {\n access: packageAccessLevel,\n ...publishRegistry && {registry: publishRegistry}\n }\n }\n })\n ]);\n\n return deepmerge.all([\n publishableResults,\n bundlerResults,\n {\n scripts: {\n clean: `rimraf ./${defaultBuildDirectory}`,\n prebuild: 'run-s clean',\n build: 'npm-run-all --print-label --parallel build:*',\n prepack: 'run-s build'\n },\n dependencies: {javascript: {production: ['update-notifier'], development: ['rimraf']}},\n vcsIgnore: {files: [], directories: [`/${defaultBuildDirectory}/`]},\n buildDirectory: defaultBuildDirectory,\n nextSteps: [{summary: 'Define supported node.js versions as `engines.node` in the `package.json` file'}]\n }\n ]);\n}\n","export default async function projectIsCli({packageDetails: {bin}}) {\n return !!bin;\n}\n","import {lift as liftPublishable} from '../publishable/index.js';\n\nexport default function liftCli({projectRoot, packageDetails, configs}) {\n return liftPublishable({projectRoot, packageDetails, configs});\n}\n","import {projectTypes} from '@form8ion/javascript-core';\n\nimport {scaffold as scaffoldPackageType} from './package/index.js';\nimport {scaffold as scaffoldApplicationType} from './application/index.js';\nimport {scaffold as scaffoldMonorepoType} from './monorepo/index.js';\nimport {scaffold as scaffoldCliType} from './cli/index.js';\n\nexport default async function scaffoldProjectType({\n projectType,\n projectRoot,\n projectName,\n packageName,\n packageManager,\n visibility,\n packageBundlers,\n scope,\n decisions,\n dialect,\n provideExample,\n publishRegistry\n}) {\n switch (projectType) {\n case projectTypes.PACKAGE:\n return scaffoldPackageType({\n projectRoot,\n projectName,\n packageName,\n packageManager,\n visibility,\n scope,\n packageBundlers,\n decisions,\n dialect,\n provideExample,\n publishRegistry\n });\n case projectTypes.APPLICATION:\n return scaffoldApplicationType({projectRoot});\n case projectTypes.CLI:\n return scaffoldCliType({\n packageName,\n visibility,\n projectRoot,\n dialect,\n publishRegistry,\n decisions,\n packageBundlers\n });\n case projectTypes.MONOREPO:\n return scaffoldMonorepoType({projectRoot});\n case 'Other':\n return {};\n default:\n throw new Error(`The project-type of ${projectType} is invalid`);\n }\n}\n","import {test as isPackage} from './package/index.js';\nimport {test as isCli} from './cli/index.js';\nimport {test as isApplication} from './application/index.js';\n\nexport default async function isProjectType({projectRoot, packageDetails}) {\n return await isPackage({projectRoot, packageDetails})\n || await isCli({projectRoot, packageDetails})\n || isApplication({projectRoot, packageDetails});\n}\n","import {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\n\nimport {test as isPackage, lift as liftPackage} from './package/index.js';\nimport {test as isCli, lift as liftCli} from './cli/index.js';\n\nfunction vcsRepositoryHostedOnGithub(vcs) {\n return vcs && 'github' === vcs.host;\n}\n\nexport default async function liftProjectType({projectRoot, packageDetails, vcs, configs}) {\n if (await isPackage({projectRoot, packageDetails})) return liftPackage({projectRoot, packageDetails, configs});\n if (await isCli({projectRoot, packageDetails})) return liftCli({projectRoot, packageDetails, configs});\n\n let homepage;\n\n if (vcsRepositoryHostedOnGithub(vcs)) {\n homepage = `https://github.com/${vcs.owner}/${vcs.name}#readme`;\n\n await mergeIntoExistingPackageJson({projectRoot, config: {homepage}});\n }\n\n return {homepage};\n}\n","import {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../prompts/question-names.js';\n\nexport default async function gatherProjectTypePluginInput({types, projectType, decisions}) {\n if (!Object.keys(types).length) return 'Other';\n\n const answers = await prompt([{\n name: questionNames.PROJECT_TYPE_CHOICE,\n type: 'list',\n message: `What type of ${projectType} is this?`,\n choices: [...Object.keys(types), 'Other']\n }], decisions);\n\n return answers[questionNames.PROJECT_TYPE_CHOICE];\n}\n","import {scaffoldChoice} from '@form8ion/javascript-core';\n\nimport chooseProjectTypePlugin from './prompt.js';\n\nexport default async function scaffoldProjectTypePlugin({\n projectRoot,\n projectType,\n projectName,\n packageName,\n packageManager,\n scope,\n dialect,\n tests,\n decisions,\n plugins\n}) {\n const pluginsForProjectType = plugins[projectType];\n\n if (!pluginsForProjectType) return {};\n\n const chosenType = await chooseProjectTypePlugin({types: pluginsForProjectType, decisions, projectType});\n\n return scaffoldChoice(\n pluginsForProjectType,\n chosenType,\n {projectRoot, projectName, packageName, packageManager, scope, tests, dialect}\n );\n}\n","import deepmerge from 'deepmerge';\n\nimport {scaffold as scaffoldUnitTesting} from './unit/index.js';\n\nexport default async function scaffoldTesting({\n projectRoot,\n tests: {unit, integration},\n unitTestFrameworks,\n decisions,\n dialect\n}) {\n const unitResults = unit\n ? await scaffoldUnitTesting({projectRoot, frameworks: unitTestFrameworks, decisions, dialect})\n : {};\n\n return deepmerge(\n {dependencies: {javascript: {development: [...(unit || integration) ? ['@travi/any'] : []]}}, eslint: {}},\n unitResults\n );\n}\n","export default function buildAllowedHosts({packageManager, registries = {}}) {\n return [\n ...!registries.registry ? [packageManager] : [],\n ...Object.values(Object.fromEntries(Object.entries(registries).filter(([scope]) => 'publish' !== scope)))\n ];\n}\n","import {fileTypes} from '@form8ion/core';\nimport {packageManagers} from '@form8ion/javascript-core';\nimport {write} from '@form8ion/config-file';\n\nimport buildAllowedHostsList from './allowed-hosts-builder.js';\nimport {defineLockfilePath as determineLockfilePathFor} from '../package-managers/index.js';\n\nconst lockfileLintSupportedPackageManagers = [packageManagers.NPM, packageManagers.YARN];\n\nfunction lockfileLintSupports(packageManager) {\n return lockfileLintSupportedPackageManagers.includes(packageManager);\n}\n\nexport default async function scaffoldLockfileLint({projectRoot, packageManager, registries}) {\n if (!lockfileLintSupports(packageManager)) {\n throw new Error(\n `The ${packageManager} package manager is currently not supported by lockfile-lint. `\n + `Only ${lockfileLintSupportedPackageManagers.join(' and ')} are currently supported.`\n );\n }\n\n await write({\n name: 'lockfile-lint',\n format: fileTypes.JSON,\n path: projectRoot,\n config: {\n path: determineLockfilePathFor(packageManager),\n type: packageManager,\n 'validate-https': true,\n 'allowed-hosts': buildAllowedHostsList({packageManager, registries})\n }\n });\n\n return {\n dependencies: {javascript: {development: ['lockfile-lint']}},\n scripts: {'lint:lockfile': 'lockfile-lint'}\n };\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function lockfileLintInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.lockfile-lintrc.json`);\n}\n","import {fileTypes, loadConfigFile} from '@form8ion/core';\nimport {write as writeConfig} from '@form8ion/config-file';\n\nconst configName = 'lockfile-lint';\n\nexport function read({projectRoot}) {\n return loadConfigFile({name: `.${configName}rc`, format: fileTypes.JSON, path: projectRoot});\n}\n\nexport function write({projectRoot, config}) {\n return writeConfig({name: configName, format: fileTypes.JSON, path: projectRoot, config});\n}\n","import {scaffold as scaffoldLockfileLint} from '../lockfile-lint/index.js';\n\nexport default async function scaffoldLinting({projectRoot, packageManager, registries}) {\n return scaffoldLockfileLint({projectRoot, packageManager, registries});\n}\n","import deepmerge from 'deepmerge';\nimport {scaffold as scaffoldHusky} from '@form8ion/husky';\n\nimport {scaffold as scaffoldTesting} from '../testing/index.js';\nimport {scaffold as scaffoldLinting} from '../linting/index.js';\n\nexport async function scaffoldVerification({\n projectRoot,\n dialect,\n packageManager,\n vcs,\n registries,\n tests,\n unitTestFrameworks,\n decisions,\n pathWithinParent\n}) {\n const [testingResults, lintingResults, huskyResults] = await Promise.all([\n scaffoldTesting({projectRoot, tests, unitTestFrameworks, decisions, dialect}),\n scaffoldLinting({projectRoot, packageManager, registries, vcs, pathWithinParent}),\n scaffoldHusky({projectRoot, packageManager, pathWithinParent})\n ]);\n\n return deepmerge.all([testingResults, lintingResults, huskyResults]);\n}\n","import deepmerge from 'deepmerge';\nimport {fileTypes} from '@form8ion/core';\nimport {projectTypes} from '@form8ion/javascript-core';\nimport {write} from '@form8ion/config-file';\n\nexport default async function scaffoldRemark({config, projectRoot, projectType, vcs}) {\n await write({\n format: fileTypes.JSON,\n path: projectRoot,\n name: 'remark',\n config: {\n settings: {\n listItemIndent: 'one',\n emphasis: '_',\n strong: '_',\n bullet: '*',\n incrementListMarker: false\n },\n plugins: [\n config,\n ['remark-toc', {tight: true}],\n ...projectTypes.PACKAGE === projectType ? [['remark-usage', {heading: 'example'}]] : [],\n ...!vcs ? [['validate-links', {repository: false}]] : []\n ]\n }\n });\n\n return deepmerge(\n {\n dependencies: {javascript: {development: [config, 'remark-cli', 'remark-toc']}},\n scripts: {\n 'lint:md': 'remark . --frail',\n 'generate:md': 'remark . --output'\n }\n },\n {...projectTypes.PACKAGE === projectType && {dependencies: {javascript: {development: ['remark-usage']}}}}\n );\n}\n","import deepmerge from 'deepmerge';\nimport {scaffold as scaffoldPrettier} from '@form8ion/prettier';\nimport {scaffold as scaffoldEslint} from '@form8ion/eslint';\n\nimport {scaffold as scaffoldRemark} from './remark/index.js';\n\nexport default async function scaffoldCodeStyle({\n projectRoot,\n projectType,\n configs,\n vcs,\n configureLinting\n}) {\n return deepmerge.all(await Promise.all([\n configs.eslint\n && configureLinting\n && scaffoldEslint({projectRoot, config: configs.eslint}),\n scaffoldRemark({\n projectRoot,\n projectType,\n vcs,\n config: configs.remark || '@form8ion/remark-lint-preset'\n }),\n scaffoldPrettier({projectRoot, config: configs.prettier})\n ].filter(Boolean)));\n}\n","import {applyEnhancers} from '@form8ion/core';\nimport * as eslintPlugin from '@form8ion/eslint';\n\nexport default function liftCodeStyle(options) {\n return applyEnhancers({options, enhancers: [eslintPlugin]});\n}\n","import {test as testForEslint} from '@form8ion/eslint';\n\nexport default function codeStyleConfigured(options) {\n return testForEslint(options);\n}\n","import deepmerge from 'deepmerge';\nimport {info} from '@travi/cli-messages';\nimport {projectTypes, scaffoldChoice} from '@form8ion/javascript-core';\nimport {scaffold as scaffoldCommitConvention} from '@form8ion/commit-convention';\n\nimport {validate} from './options/validator.js';\nimport {prompt} from './prompts/questions.js';\nimport {scaffold as scaffoldDialect} from './dialects/index.js';\nimport {scaffold as scaffoldNpmConfig} from './npm-config/index.js';\nimport {scaffold as scaffoldPackageManager} from './package-managers/index.js';\nimport scaffoldDocumentation from './documentation/index.js';\nimport {scaffold as scaffoldNodeVersion} from './node-version/index.js';\nimport buildVcsIgnoreLists from './vcs/ignore-lists-builder.js';\nimport {scaffold as scaffoldPackage} from './package/index.js';\nimport {scaffold as scaffoldProjectType} from './project-type/index.js';\nimport {scaffold as scaffoldProjectTypePlugin} from './project-type-plugin/index.js';\nimport buildDocumentationCommand from './documentation/generation-command.js';\nimport {scaffold as scaffoldVerification} from './verification/index.js';\nimport {scaffold as scaffoldCodeStyle} from './code-style/index.js';\n\nexport default async function scaffoldJavascript(options) {\n info('Initializing JavaScript project');\n\n const {\n projectRoot,\n projectName,\n visibility,\n license,\n vcs,\n description,\n configs,\n decisions,\n pathWithinParent,\n plugins: {\n applicationTypes,\n packageTypes,\n monorepoTypes,\n packageBundlers,\n unitTestFrameworks,\n hosts,\n ciServices\n }\n } = validate(options);\n\n const {\n tests,\n projectType,\n ci,\n chosenHost,\n scope,\n nodeVersionCategory,\n author,\n configureLinting,\n provideExample,\n packageManager,\n dialect\n } = await prompt(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent);\n\n info('Writing project files', {level: 'secondary'});\n\n const {packageName} = await scaffoldPackage({\n projectRoot,\n projectName,\n scope,\n dialect,\n license,\n author,\n description\n });\n const projectTypeResults = await scaffoldProjectType({\n projectType,\n projectRoot,\n projectName,\n packageName,\n packageManager,\n visibility,\n applicationTypes,\n packageTypes,\n monorepoTypes,\n packageBundlers,\n scope,\n tests,\n vcs,\n decisions,\n dialect,\n provideExample,\n publishRegistry: configs.registries.publish\n });\n const verificationResults = await scaffoldVerification({\n projectRoot,\n dialect,\n packageManager,\n vcs,\n registries: configs.registries,\n tests,\n unitTestFrameworks,\n decisions,\n pathWithinParent\n });\n const [nodeVersion, npmResults, dialectResults, codeStyleResults] = await Promise.all([\n scaffoldNodeVersion({projectRoot, nodeVersionCategory}),\n scaffoldNpmConfig({projectType, projectRoot}),\n scaffoldDialect({\n dialect,\n configs,\n projectRoot,\n projectType,\n testFilenamePattern: verificationResults.testFilenamePattern\n }),\n scaffoldCodeStyle({projectRoot, projectType, configs, vcs, configureLinting}),\n scaffoldPackageManager({projectRoot, packageManager})\n ]);\n const projectTypePluginResults = await scaffoldProjectTypePlugin({\n projectRoot,\n projectType,\n projectName,\n packageName,\n packageManager,\n scope,\n dialect,\n tests,\n decisions,\n plugins: {\n [projectTypes.PACKAGE]: packageTypes,\n [projectTypes.APPLICATION]: applicationTypes,\n [projectTypes.MONOREPO]: monorepoTypes\n }\n });\n const mergedContributions = deepmerge.all([\n ...(await Promise.all([\n scaffoldChoice(\n hosts,\n chosenHost,\n {buildDirectory: `./${projectTypeResults.buildDirectory}`, projectRoot, projectName, nodeVersion}\n ),\n scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),\n scaffoldCommitConvention({projectRoot, projectType, configs, pathWithinParent})\n ])),\n projectTypeResults,\n verificationResults,\n codeStyleResults,\n npmResults,\n dialectResults,\n projectTypePluginResults\n ]);\n\n return {\n ...mergedContributions,\n documentation: scaffoldDocumentation({projectTypeResults, packageManager}),\n tags: projectTypeResults.tags,\n vcsIgnore: buildVcsIgnoreLists(mergedContributions.vcsIgnore),\n verificationCommand: `${buildDocumentationCommand(packageManager)} && ${packageManager} test`\n };\n}\n","export default function registriesAreInUse() {\n return true;\n}\n","export default function buildRegistriesList(registries = {}) {\n return Object.entries(registries)\n .filter(([scope]) => 'publish' !== scope)\n .reduce((acc, [scope, url]) => {\n if ('registry' === scope) return {...acc, registry: url};\n\n return {...acc, [`@${scope}:registry`]: url};\n }, {registry: 'https://registry.npmjs.org'});\n}\n","import {\n scaffold as scaffoldLockfileLint,\n test as lockfileLintIsAlreadyConfigured,\n read as readLockfileLintConfig,\n write as writeLockfileLintConfig\n} from '../lockfile-lint/index.js';\nimport {read as readNpmConfig, write as writeNpmConfig} from '../npm-config/index.js';\nimport buildRegistriesConfig from './npm-config/list-builder.js';\nimport buildAllowedHostsList from '../lockfile-lint/allowed-hosts-builder.js';\n\nasync function updateRegistriesInNpmConfig(registries, projectRoot) {\n const registriesForNpmConfig = buildRegistriesConfig(registries);\n\n await writeNpmConfig({\n projectRoot,\n config: {\n ...(await readNpmConfig({projectRoot})),\n ...registriesForNpmConfig\n }\n });\n}\n\nasync function updateRegistriesInLockfileLintConfig(projectRoot, packageManager, registries) {\n await writeLockfileLintConfig({\n projectRoot,\n config: {\n ...await readLockfileLintConfig({projectRoot}),\n 'allowed-hosts': buildAllowedHostsList({packageManager, registries})\n }\n });\n}\n\nexport default async function liftRegistries({projectRoot, packageManager, configs: {registries}}) {\n await updateRegistriesInNpmConfig(registries, projectRoot);\n\n if (!(await lockfileLintIsAlreadyConfigured({projectRoot}))) {\n return scaffoldLockfileLint({projectRoot, packageManager, registries});\n }\n\n await updateRegistriesInLockfileLintConfig(projectRoot, packageManager, registries);\n\n return {};\n}\n","import {promises as fs} from 'fs';\n\nexport default async function testEngines({projectRoot}) {\n const {engines} = JSON.parse(await fs.readFile(`${projectRoot}/package.json`, 'utf8'));\n\n return !!engines?.node;\n}\n","export default async function liftEngines({packageDetails: {name}}) {\n return {\n dependencies: {javascript: {development: ['ls-engines']}},\n scripts: {'lint:engines': 'ls-engines'},\n badges: {consumer: {node: {img: `https://img.shields.io/node/v/${name}?logo=node.js`, text: 'node'}}}\n };\n}\n","import {promises as fs} from 'node:fs';\nimport deepmerge from 'deepmerge';\nimport {info} from '@travi/cli-messages';\nimport {applyEnhancers} from '@form8ion/core';\nimport * as huskyPlugin from '@form8ion/husky';\nimport * as commitConventionPlugin from '@form8ion/commit-convention';\n\nimport * as registriesPlugin from './registries/index.js';\nimport * as coveragePlugin from './coverage/index.js';\nimport * as codeStylePlugin from './code-style/index.js';\nimport * as npmConfigPlugin from './npm-config/index.js';\nimport * as enginesEnhancer from './engines/index.js';\nimport * as projectTypes from './project-type/index.js';\nimport * as dialects from './dialects/index.js';\nimport {lift as liftPackage} from './package/index.js';\nimport * as packageManagers from './package-managers/index.js';\nimport {determineCurrent as resolvePackageManager} from './package-managers/index.js';\n\nexport default async function liftJavaScript({\n projectRoot,\n vcs,\n results,\n pathWithinParent,\n enhancers = {},\n configs = {}\n}) {\n info('Lifting JavaScript-specific details');\n\n const [packageManager, packageContents] = await Promise.all([\n resolvePackageManager({projectRoot, packageManager: results.packageManager}),\n fs.readFile(`${projectRoot}/package.json`, 'utf8')\n ]);\n\n const enhancerResults = await applyEnhancers({\n results,\n enhancers: {\n ...enhancers,\n huskyPlugin,\n enginesEnhancer,\n coveragePlugin,\n commitConventionPlugin,\n dialects,\n codeStylePlugin,\n npmConfigPlugin,\n projectTypes,\n packageManagers,\n registriesPlugin\n },\n options: {packageManager, projectRoot, vcs, packageDetails: JSON.parse(packageContents), configs}\n });\n\n await liftPackage(deepmerge.all([{projectRoot, packageManager, vcs, pathWithinParent}, enhancerResults]));\n\n return enhancerResults;\n}\n","import {info} from '@travi/cli-messages';\n\nimport {test as nvmIsUsed} from './node-version/index.js';\nimport {test as jsPackageManagerIsUsed} from './package-managers/index.js';\n\nexport default async function projectUsesJavaScript({projectRoot}) {\n const [nvmFound, jsPackageManagerFound] = await Promise.all([\n nvmIsUsed({projectRoot}),\n jsPackageManagerIsUsed({projectRoot})\n ]);\n\n const jsProjectFound = nvmFound || jsPackageManagerFound;\n\n if (jsProjectFound) info('JavaScript Project Detected');\n\n return jsProjectFound;\n}\n","import {questionNames as languageScaffolderPromptsQuestionNames} from '@travi/language-scaffolder-prompts';\n\nimport {questionNames as jsScaffolderQuestionNames} from './prompts/question-names.js';\n\nexport {scaffold as scaffoldUnitTesting} from './testing/unit/index.js';\nexport {default as scaffold} from './scaffolder.js';\nexport {default as lift} from './lifter.js';\nexport {default as test} from './tester.js';\nexport const questionNames = {...languageScaffolderPromptsQuestionNames, ...jsScaffolderQuestionNames};\n"],"names":["questionNames","scaffoldC8","scaffoldCodecov","fs","liftCodecov","nycIsConfigured","c8IsConfigured","prompt","chooseFramework","scaffoldFrameworkChoice","dialects","projectTypes","projectIsPackage","projectIsApplication","commonQuestionNames","npmConf","npmConfFactory","scope","promptWithInquirer","buildDialectChoices","packageManagers","validateScope","commonQuestions","write","loadConfig","writeConfig","addIgnore","read","determineLockfilePath","npmIsUsed","yarnIsUsed","scaffoldNpm","buildGenerationCommand","installNodeVersion","buildPackageName","buildPackageDetails","install","remove","sortPackageProperties","defineVcsHostDetails","enhanceSlsa","defineBadges","chooseBundler","scaffoldChosenBundler","defaultBuildDirectory","determinePackageAccessLevelFromProjectVisibility","exports","scaffoldPackageType","scaffoldApplicationType","scaffoldCliType","scaffoldMonorepoType","isPackage","isCli","isApplication","chooseProjectTypePlugin","determineLockfilePathFor","buildAllowedHostsList","scaffoldHusky","scaffoldEslint","scaffoldPrettier","testForEslint","scaffoldNpmConfig","scaffoldCommitConvention","buildVcsIgnoreLists","buildDocumentationCommand","buildRegistriesConfig","writeLockfileLintConfig","readLockfileLintConfig","lockfileLintIsAlreadyConfigured","resolvePackageManager","liftPackage","nvmIsUsed","jsPackageManagerIsUsed","languageScaffolderPromptsQuestionNames","jsScaffolderQuestionNames"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/prompts/question-names.js","../src/coverage/scaffolder.js","../src/coverage/nyc/tester.js","../src/coverage/nyc/remover.js","../src/coverage/lifter.js","../src/coverage/tester.js","../src/testing/unit/prompt.js","../src/plugins-schemas.js","../src/testing/unit/scaffolder.js","../src/options/schemas.js","../src/vcs/schema.js","../src/options/validator.js","../src/dialects/prompt-choices.js","../src/prompts/conditionals.js","../src/prompts/validators.js","../src/prompts/questions.js","../src/dialects/babel/config/writer.js","../src/dialects/babel/config/loader.js","../src/dialects/babel/config/ignore-adder.js","../src/dialects/babel/scaffolder.js","../src/dialects/babel/lifter.js","../src/dialects/babel/predicate.js","../src/dialects/typescript/scaffolder.js","../src/dialects/scaffolder.js","../src/npm-config/writer.js","../src/npm-config/scaffolder.js","../src/npm-config/tester.js","../src/npm-config/reader.js","../src/npm-config/lifter.js","../src/package-managers/npm/scaffolder.js","../src/package-managers/lockfile-path-resolver.js","../src/package-managers/npm/tester.js","../src/package-managers/yarn/scaffolder.js","../src/package-managers/yarn/tester.js","../src/package-managers/tester.js","../src/corepack/lifter.js","../src/package-managers/lifter.js","../src/package-managers/scaffolder.js","../src/package-managers/current-manager-resolver.js","../src/documentation/generation-command.js","../src/documentation/scaffolder.js","../src/node-version/tasks.js","../src/node-version/scaffolder.js","../src/node-version/tester.js","../src/vcs/ignore-lists-builder.js","../src/package/package-name.js","../src/package/details.js","../src/package/scaffolder.js","../src/package/property-sorter.js","../src/package/vcs-host-details.js","../src/dependencies/package-managers.js","../src/dependencies/installer.js","../src/dependencies/remover.js","../src/dependencies/processor.js","../src/package/scripts/test-script-updater.js","../src/package/scripts/script-comparator.js","../src/package/scripts/scripts-sorter.js","../src/package/scripts/lifter.js","../src/package/lifter.js","../src/project-type/publishable/access-level.js","../src/project-type/publishable/registry-resolver.js","../src/project-type/publishable/badges.js","../src/project-type/publishable/provenance/slsa.js","../src/project-type/publishable/provenance/lifter.js","../src/project-type/publishable/lifter.js","../src/project-type/publishable/scaffolder.js","../src/project-type/package/documentation.js","../src/project-type/publishable/bundler/prompt.js","../src/project-type/publishable/bundler/scaffolder.js","../src/project-type/package/build-details.js","../src/project-type/package/scaffolder.js","../src/project-type/package/lifter.js","../src/project-type/package/tester.js","../src/project-type/application/scaffolder.js","../src/project-type/application/predicate.js","../src/project-type/monorepo/scaffolder.js","../src/project-type/cli/scaffolder.js","../src/project-type/cli/tester.js","../src/project-type/cli/lifter.js","../src/project-type/scaffolder.js","../src/project-type/tester.js","../src/project-type/lifter.js","../src/project-type-plugin/prompt.js","../src/project-type-plugin/scaffolder.js","../src/testing/integration/scaffolder.js","../src/testing/scaffolder.js","../src/lockfile-lint/allowed-hosts-builder.js","../src/lockfile-lint/scaffolder.js","../src/lockfile-lint/tester.js","../src/lockfile-lint/config.js","../src/linting/scaffolder.js","../src/verification/scaffolder.js","../src/code-style/remark/scaffolder.js","../src/code-style/scaffolder.js","../src/code-style/lifter.js","../src/code-style/tester.js","../src/scaffolder.js","../src/registries/tester.js","../src/registries/npm-config/list-builder.js","../src/registries/lifter.js","../src/engines/tester.js","../src/engines/lifter.js","../src/lifter.js","../src/tester.js","../src/index.js"],"sourcesContent":["export const questionNames = {\n UNIT_TEST_FRAMEWORK: 'unitTestFramework',\n NODE_VERSION_CATEGORY: 'nodeVersionCategory',\n PACKAGE_MANAGER: 'packageManager',\n PACKAGE_BUNDLER: 'packageBundler',\n PROJECT_TYPE: 'projectType',\n PROJECT_TYPE_CHOICE: 'projectTypeChoice',\n SHOULD_BE_SCOPED: 'shouldBeScoped',\n SCOPE: 'scope',\n AUTHOR_NAME: 'authorName',\n AUTHOR_EMAIL: 'authorEmail',\n AUTHOR_URL: 'authorUrl',\n HOST: 'host',\n CONFIGURE_LINTING: 'configureLint',\n PROVIDE_EXAMPLE: 'provideExample',\n DIALECT: 'dialect'\n};\n","import deepmerge from 'deepmerge';\nimport {scaffold as scaffoldCodecov} from '@form8ion/codecov';\nimport {scaffold as scaffoldC8} from '@form8ion/c8';\n\nexport default async function scaffoldCoverage({projectRoot}) {\n return deepmerge(await scaffoldC8({projectRoot}), await scaffoldCodecov({projectRoot}));\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function nyvInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.nycrc`);\n}\n","import {promises as fs} from 'node:fs';\n\nexport default async function removeNyc({projectRoot}) {\n await Promise.all([\n fs.unlink(`${projectRoot}/.nycrc`),\n fs.rm(`${projectRoot}/.nyc_output`, {recursive: true, force: true})\n ]);\n\n return {\n dependencies: {\n javascript: {\n remove: ['nyc', '@istanbuljs/nyc-config-babel', 'babel-plugin-istanbul']\n }\n }\n };\n}\n","import deepmerge from 'deepmerge';\nimport {lift as liftCodecov} from '@form8ion/codecov';\nimport {scaffold as scaffoldC8} from '@form8ion/c8';\n\nimport {test as nycIsConfigured, remove as removeNyc} from './nyc/index.js';\n\nexport async function lift({projectRoot, packageManager, vcs}) {\n const codecovResults = await liftCodecov({projectRoot, packageManager, vcs});\n\n if (await nycIsConfigured({projectRoot})) {\n const [c8Results, nycResults] = await Promise.all([\n scaffoldC8({projectRoot}),\n removeNyc({projectRoot})\n ]);\n\n return deepmerge.all([\n c8Results,\n nycResults,\n codecovResults,\n {\n scripts: {'test:unit': 'cross-env NODE_ENV=test c8 run-s test:unit:base'},\n nextSteps: [{\n summary: 'Remove use of `@istanbuljs/nyc-config-babel` from your babel config, if present,'\n + ' after the migration away from `nyc`'\n }]\n }\n ]);\n }\n\n return codecovResults;\n}\n","import {directoryExists} from '@form8ion/core';\nimport {test as c8IsConfigured} from '@form8ion/c8';\n\nimport nycIsConfigured from './nyc/tester.js';\n\nexport default async function testCoverageBeingCollected({projectRoot}) {\n const [c8Exists, nycExists] = await Promise.all([c8IsConfigured({projectRoot}), nycIsConfigured({projectRoot})]);\n\n return c8Exists || nycExists || directoryExists(`${projectRoot}/coverage`);\n}\n","import {prompt} from '@form8ion/overridable-prompts';\nimport {questionNames} from '../../prompts/question-names.js';\n\nexport default async function gatherUnitTestingInput({frameworks, decisions}) {\n if (!Object.keys(frameworks).length) return 'Other';\n\n const answers = await prompt([{\n name: questionNames.UNIT_TEST_FRAMEWORK,\n type: 'list',\n message: 'Which type of unit testing framework should be used?',\n choices: [...Object.keys(frameworks), 'Other']\n }], decisions);\n\n return answers[questionNames.UNIT_TEST_FRAMEWORK];\n}\n","import joi from 'joi';\nimport {optionsSchemas} from '@form8ion/core';\n\nexport const pluginsSchema = joi.object().pattern(/^/, optionsSchemas.form8ionPlugin).default({});\n","import deepmerge from 'deepmerge';\nimport {validateOptions} from '@form8ion/core';\nimport {scaffoldChoice as scaffoldFrameworkChoice} from '@form8ion/javascript-core';\n\nimport {scaffold as scaffoldCoverage} from '../../coverage/index.js';\nimport chooseFramework from './prompt.js';\nimport {pluginsSchema} from '../../plugins-schemas.js';\n\nexport default async function scaffoldUnitTesting({projectRoot, frameworks, decisions, dialect}) {\n const validatedFrameworks = validateOptions(pluginsSchema, frameworks);\n const [framework, coverage] = await Promise.all([\n chooseFramework({frameworks: validatedFrameworks, decisions})\n .then(chosenFramework => scaffoldFrameworkChoice(validatedFrameworks, chosenFramework, {projectRoot, dialect})),\n scaffoldCoverage({projectRoot})\n ]);\n\n return deepmerge.all([\n {scripts: {'test:unit': 'cross-env NODE_ENV=test c8 run-s test:unit:base'}},\n framework,\n coverage\n ]);\n}\n","import joi from 'joi';\n\nexport const scopeBasedConfigSchema = joi.object({scope: joi.string().regex(/^@[a-z0-9-]+$/i, 'scope').required()});\n\nexport const nameBasedConfigSchema = joi.object({\n packageName: joi.string().required(),\n name: joi.string().required()\n});\n\nexport const registriesSchema = joi.object().pattern(joi.string(), joi.string().uri()).default({});\n\nexport const visibilitySchema = joi.string().valid('Public', 'Private').required();\n\nexport const projectNameSchema = joi.string().regex(/^@\\w*\\//, {invert: true}).required();\n","import joi from 'joi';\n\nexport const vcsSchema = joi.object({\n host: joi.string().required(),\n owner: joi.string().required(),\n name: joi.string().required()\n});\n","import joi from 'joi';\nimport {validateOptions} from '@form8ion/core';\n\nimport {pluginsSchema} from '../plugins-schemas.js';\nimport {\n nameBasedConfigSchema,\n projectNameSchema,\n registriesSchema,\n scopeBasedConfigSchema,\n visibilitySchema\n} from './schemas.js';\nimport {vcsSchema} from '../vcs/schema.js';\n\nexport function validate(options) {\n const schema = joi.object({\n projectRoot: joi.string().required(),\n projectName: projectNameSchema,\n visibility: visibilitySchema,\n license: joi.string().required(),\n description: joi.string(),\n pathWithinParent: joi.string(),\n decisions: joi.object(),\n vcs: vcsSchema,\n configs: joi.object({\n eslint: scopeBasedConfigSchema,\n typescript: scopeBasedConfigSchema,\n prettier: scopeBasedConfigSchema,\n commitlint: nameBasedConfigSchema,\n babelPreset: nameBasedConfigSchema,\n remark: joi.string(),\n registries: registriesSchema\n }).default({registries: {}}),\n plugins: {\n unitTestFrameworks: pluginsSchema,\n integrationTestFrameworks: pluginsSchema,\n packageBundlers: pluginsSchema,\n applicationTypes: pluginsSchema,\n packageTypes: pluginsSchema,\n monorepoTypes: pluginsSchema,\n hosts: pluginsSchema,\n ciServices: pluginsSchema\n }\n }).required();\n\n return validateOptions(schema, options);\n}\n","import {dialects} from '@form8ion/javascript-core';\n\nexport default function gatherDialectInput({babelPreset, typescript}) {\n return [\n {name: 'Common JS (no transpilation)', value: dialects.COMMON_JS, short: 'cjs'},\n ...babelPreset ? [{name: 'Modern JavaScript (transpiled)', value: dialects.BABEL, short: 'modern'}] : [],\n {name: 'ESM-only (no transpilation)', value: dialects.ESM, short: 'esm'},\n ...typescript ? [{name: 'TypeScript', value: dialects.TYPESCRIPT, short: 'ts'}] : []\n ];\n}\n","import {projectTypes} from '@form8ion/javascript-core';\nimport {questionNames as commonQuestionNames} from '@travi/language-scaffolder-prompts';\n\nimport {questionNames} from './question-names.js';\n\nfunction projectIsCLI(answers) {\n return projectTypes.CLI === answers[questionNames.PROJECT_TYPE];\n}\n\nexport function projectIsPackage(answers) {\n return projectTypes.PACKAGE === answers[questionNames.PROJECT_TYPE];\n}\n\nexport function projectIsApplication(answers) {\n return projectTypes.APPLICATION === answers[questionNames.PROJECT_TYPE];\n}\n\nfunction packageShouldBeScoped(visibility, answers) {\n return 'Private' === visibility || answers[questionNames.SHOULD_BE_SCOPED];\n}\n\nfunction willBePublishedToNpm(answers) {\n return projectIsPackage(answers) || projectIsCLI(answers);\n}\n\nexport function shouldBeScopedPromptShouldBePresented(answers) {\n return willBePublishedToNpm(answers);\n}\n\nexport function scopePromptShouldBePresentedFactory(visibility) {\n return answers => willBePublishedToNpm(answers) && packageShouldBeScoped(visibility, answers);\n}\n\nexport function lintingPromptShouldBePresented({\n [commonQuestionNames.UNIT_TESTS]: unitTested,\n [commonQuestionNames.INTEGRATION_TESTS]: integrationTested\n}) {\n return !unitTested && !integrationTested;\n}\n","export function scope(visibility) {\n return input => {\n if (!input && 'Private' === visibility) {\n return 'Private packages must be scoped (https://docs.npmjs.com/private-modules/intro#setting-up-your-package)';\n }\n\n return true;\n };\n}\n","import {packageManagers, projectTypes} from '@form8ion/javascript-core';\nimport {prompt as promptWithInquirer} from '@form8ion/overridable-prompts';\nimport {questionNames as commonQuestionNames, questions as commonQuestions} from '@travi/language-scaffolder-prompts';\nimport {warn} from '@travi/cli-messages';\n\nimport {execa} from 'execa';\nimport npmConfFactory from '../../thirdparty-wrappers/npm-conf.js';\nimport buildDialectChoices from '../dialects/prompt-choices.js';\nimport {\n lintingPromptShouldBePresented,\n projectIsApplication,\n projectIsPackage,\n scopePromptShouldBePresentedFactory,\n shouldBeScopedPromptShouldBePresented\n} from './conditionals.js';\nimport {questionNames} from './question-names.js';\nimport {scope as validateScope} from './validators.js';\n\nfunction authorQuestions({name, email, url}) {\n return [\n {\n name: questionNames.AUTHOR_NAME,\n message: 'What is the author\\'s name?',\n default: name\n },\n {\n name: questionNames.AUTHOR_EMAIL,\n message: 'What is the author\\'s email?',\n default: email\n },\n {\n name: questionNames.AUTHOR_URL,\n message: 'What is the author\\'s website url?',\n default: url\n }\n ];\n}\n\nexport async function prompt(\n ciServices,\n hosts,\n visibility,\n vcs,\n decisions,\n configs,\n pathWithinParent\n) {\n const npmConf = npmConfFactory();\n\n let maybeLoggedInNpmUsername;\n try {\n maybeLoggedInNpmUsername = (await execa('npm', ['whoami'])).stdout;\n } catch (failedExecutionResult) {\n if (!decisions[questionNames.SCOPE]) {\n warn('No logged in user found with `npm whoami`. Login with `npm login` '\n + 'to use your npm account name as the package scope default.');\n }\n }\n\n const {\n [commonQuestionNames.UNIT_TESTS]: unitTested,\n [commonQuestionNames.INTEGRATION_TESTS]: integrationTested,\n [questionNames.PROJECT_TYPE]: projectType,\n [commonQuestionNames.CI_SERVICE]: ci,\n [questionNames.HOST]: chosenHost,\n [questionNames.SCOPE]: scope,\n [questionNames.NODE_VERSION_CATEGORY]: nodeVersionCategory,\n [questionNames.AUTHOR_NAME]: authorName,\n [questionNames.AUTHOR_EMAIL]: authorEmail,\n [questionNames.AUTHOR_URL]: authorUrl,\n [questionNames.CONFIGURE_LINTING]: configureLinting,\n [questionNames.PROVIDE_EXAMPLE]: provideExample,\n [questionNames.PACKAGE_MANAGER]: packageManager,\n [questionNames.DIALECT]: dialect\n } = await promptWithInquirer([\n {\n name: questionNames.DIALECT,\n message: 'Which JavaScript dialect should this project follow?',\n type: 'list',\n choices: buildDialectChoices(configs),\n default: 'babel'\n },\n ...pathWithinParent ? [] : [{\n name: questionNames.NODE_VERSION_CATEGORY,\n message: 'What node.js version should be used?',\n type: 'list',\n choices: ['LTS', 'Latest'],\n default: 'LTS'\n }],\n {\n name: questionNames.PACKAGE_MANAGER,\n message: 'Which package manager will be used with this project?',\n type: 'list',\n choices: Object.values(packageManagers),\n default: packageManagers.NPM\n },\n {\n name: questionNames.PROJECT_TYPE,\n message: 'What type of JavaScript project is this?',\n type: 'list',\n choices: [...Object.values(projectTypes), 'Other'],\n default: projectTypes.PACKAGE\n },\n ...'Private' === visibility ? [] : [{\n name: questionNames.SHOULD_BE_SCOPED,\n message: 'Should this package be scoped?',\n type: 'confirm',\n when: shouldBeScopedPromptShouldBePresented,\n default: true\n }],\n {\n name: questionNames.SCOPE,\n message: 'What is the scope?',\n when: scopePromptShouldBePresentedFactory(visibility),\n validate: validateScope(visibility),\n default: maybeLoggedInNpmUsername\n },\n ...authorQuestions({\n name: npmConf.get('init.author.name'),\n email: npmConf.get('init.author.email'),\n url: npmConf.get('init.author.url')\n }),\n ...commonQuestions(({vcs, ciServices, pathWithinParent})),\n {\n name: questionNames.CONFIGURE_LINTING,\n message: 'Will there be source code that should be linted?',\n type: 'confirm',\n when: lintingPromptShouldBePresented\n },\n {\n name: questionNames.PROVIDE_EXAMPLE,\n message: 'Should an example be provided in the README?',\n type: 'confirm',\n when: projectIsPackage\n },\n {\n name: questionNames.HOST,\n type: 'list',\n message: 'Where will the application be hosted?',\n when: projectIsApplication,\n choices: [...Object.keys(hosts), 'Other']\n }\n ], decisions);\n\n return {\n tests: {unit: unitTested, integration: integrationTested},\n projectType,\n ci,\n chosenHost,\n scope,\n nodeVersionCategory,\n author: {name: authorName, email: authorEmail, url: authorUrl},\n configureLinting: false !== configureLinting,\n provideExample,\n packageManager,\n dialect\n };\n}\n","import {fileTypes} from '@form8ion/core';\nimport {write} from '@form8ion/config-file';\n\nexport default function writeBabelConfig({projectRoot, config}) {\n return write({path: projectRoot, name: 'babel', format: fileTypes.JSON, config});\n}\n","import {fileTypes, loadConfigFile} from '@form8ion/core';\n\nexport default function loadBabelConfig({projectRoot}) {\n return loadConfigFile({path: projectRoot, name: '.babelrc', format: fileTypes.JSON});\n}\n","import writeConfig from './writer.js';\nimport loadConfig from './loader.js';\n\nexport default async function addIgnores({projectRoot, ignore}) {\n if (ignore) {\n const existingConfig = await loadConfig({projectRoot});\n\n await writeConfig({projectRoot, config: {...existingConfig, ignore: [`./${ignore}/`]}});\n }\n}\n","import {write} from './config/index.js';\n\nexport default async function scaffoldBabel({projectRoot, preset}) {\n if (!preset) {\n throw new Error('No babel preset provided. Cannot configure babel transpilation');\n }\n\n await write({projectRoot, config: {presets: [preset.name]}});\n\n return {\n dependencies: {javascript: {development: ['@babel/register', preset.packageName]}},\n eslint: {}\n };\n}\n","import {addIgnore} from './config/index.js';\n\nexport default async function liftBabel({results, projectRoot}) {\n await addIgnore({ignore: results.buildDirectory, projectRoot});\n\n return {};\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function babelIsInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.babelrc.json`);\n}\n","import {fileTypes, writeConfigFile} from '@form8ion/core';\nimport {projectTypes} from '@form8ion/javascript-core';\n\nexport default async function scaffoldTypescript({config, projectType, projectRoot, testFilenamePattern}) {\n const shareableTsConfigPackage = `${config.scope}/tsconfig`;\n\n await writeConfigFile({\n path: projectRoot,\n name: 'tsconfig',\n format: fileTypes.JSON,\n config: {\n $schema: 'https://json.schemastore.org/tsconfig',\n extends: shareableTsConfigPackage,\n compilerOptions: {\n rootDir: 'src',\n ...projectTypes.PACKAGE === projectType && {\n outDir: 'lib',\n declaration: true\n }\n },\n include: ['src/**/*.ts'],\n ...testFilenamePattern && {exclude: [testFilenamePattern]}\n }\n });\n\n return {\n eslint: {configs: ['typescript']},\n dependencies: {javascript: {development: ['typescript', shareableTsConfigPackage]}},\n vcsIgnore: {files: ['tsconfig.tsbuildinfo']}\n };\n}\n","import {dialects} from '@form8ion/javascript-core';\n\nimport {scaffold as scaffoldBabel} from './babel/index.js';\nimport {scaffold as scaffoldTypescript} from './typescript/index.js';\n\nexport default function scaffoldDialect({dialect, projectType, projectRoot, configs, testFilenamePattern}) {\n switch (dialect) {\n case dialects.BABEL:\n return scaffoldBabel({preset: configs.babelPreset, projectRoot});\n case dialects.TYPESCRIPT:\n return scaffoldTypescript({config: configs.typescript, projectType, projectRoot, testFilenamePattern});\n default:\n return {};\n }\n}\n","import {promises as fs} from 'node:fs';\nimport {stringify} from 'ini';\n\nexport default async function writeNpmConfig({projectRoot, config}) {\n await fs.writeFile(`${projectRoot}/.npmrc`, stringify(config));\n}\n","import {projectTypes} from '@form8ion/javascript-core';\n\nimport write from './writer.js';\n\nfunction projectWillNotBeConsumed(projectType) {\n return projectTypes.APPLICATION === projectType || projectTypes.CLI === projectType;\n}\n\nexport default async function scaffoldNpmConfiguration({projectRoot, projectType}) {\n await write({\n projectRoot,\n config: {'update-notifier': false, ...projectWillNotBeConsumed(projectType) && {'save-exact': true}}\n });\n\n return {scripts: {'lint:peer': 'npm ls >/dev/null'}};\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function npmConfigExists({projectRoot}) {\n return fileExists(`${projectRoot}/.npmrc`);\n}\n","import {parse} from 'ini';\nimport {promises as fs} from 'node:fs';\nimport {fileExists} from '@form8ion/core';\n\nexport default async function readNpmConfig({projectRoot}) {\n const pathToConfig = `${projectRoot}/.npmrc`;\n\n if (!(await fileExists(pathToConfig))) return {};\n\n return parse(await fs.readFile(pathToConfig, 'utf-8'));\n}\n","import read from './reader.js';\nimport write from './writer.js';\n\nexport default async function liftNpmConfig({projectRoot}) {\n const {\n provenance,\n 'engines-strict': enginesStrict,\n ...remainingProperties\n } = await read({projectRoot});\n\n await write({projectRoot, config: remainingProperties});\n\n return {};\n}\n","import {promises as fs} from 'node:fs';\nimport {execa} from 'execa';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nexport default async function scaffoldNpmPackageManager({projectRoot}) {\n const [packageContents, {stdout}] = await Promise.all([\n fs.readFile(`${projectRoot}/package.json`, 'utf-8'),\n execa('npm', ['--version'])\n ]);\n const existingPackageJsonContents = JSON.parse(packageContents);\n\n await writePackageJson({\n projectRoot,\n config: {\n ...existingPackageJsonContents,\n packageManager: `npm@${stdout}`\n }\n });\n}\n","import {packageManagers} from '@form8ion/javascript-core';\n\nexport default function resolveLockfilePath(packageManager) {\n const lockfilePaths = {\n [packageManagers.NPM]: 'package-lock.json',\n [packageManagers.YARN]: 'yarn.lock'\n };\n\n return lockfilePaths[packageManager];\n}\n","import {fileExists} from '@form8ion/core';\nimport {packageManagers} from '@form8ion/javascript-core';\n\nimport determineLockfilePath from '../lockfile-path-resolver.js';\n\nexport default function packageManagerIsNpm({projectRoot, pinnedPackageManager = ''}) {\n const [packageManager] = pinnedPackageManager.split('@');\n\n return packageManagers.NPM === packageManager\n || fileExists(`${projectRoot}/${determineLockfilePath(packageManagers.NPM)}`);\n}\n","import {promises as fs} from 'node:fs';\nimport {execa} from 'execa';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nexport default async function scaffoldYarn({projectRoot}) {\n const [packageContents, {stdout}] = await Promise.all([\n fs.readFile(`${projectRoot}/package.json`, 'utf-8'),\n execa('yarn', ['--version'])\n ]);\n const existingPackageJsonContents = JSON.parse(packageContents);\n\n await writePackageJson({\n projectRoot,\n config: {\n ...existingPackageJsonContents,\n packageManager: `yarn@${stdout}`\n }\n });\n}\n","import {fileExists} from '@form8ion/core';\nimport {packageManagers} from '@form8ion/javascript-core';\n\nimport determineLockfilePath from '../lockfile-path-resolver.js';\n\nexport default function packageManagerIsYarn({projectRoot, pinnedPackageManager = ''}) {\n const [packageManager] = pinnedPackageManager.split('@');\n\n return packageManagers.YARN === packageManager\n || fileExists(`${projectRoot}/${determineLockfilePath(packageManagers.YARN)}`);\n}\n","import {test as npmIsUsed} from './npm/index.js';\nimport {test as yarnIsUsed} from './yarn/index.js';\n\nexport default async function packageManagerInUse({projectRoot}) {\n const [npmFound, yarnFound] = await Promise.all([\n npmIsUsed({projectRoot}),\n yarnIsUsed({projectRoot})\n ]);\n\n return npmFound || yarnFound;\n}\n","import {execa} from 'execa';\n\nexport default async function liftCorepack() {\n await execa('corepack', ['use', 'npm@latest']);\n}\n","import {lift as liftCorepack} from '../corepack/index.js';\n\nexport default async function liftPackageManagers() {\n await liftCorepack();\n\n return {};\n}\n","import {scaffold as scaffoldNpm} from './npm/index.js';\nimport {scaffold as scaffoldYarn} from './yarn/index.js';\n\nconst scaffolders = {\n npm: scaffoldNpm,\n yarn: scaffoldYarn\n};\n\nexport default function scaffoldPackageManager({projectRoot, packageManager}) {\n return scaffolders[packageManager]({projectRoot});\n}\n","import {promises as fs} from 'node:fs';\nimport {packageManagers} from '@form8ion/javascript-core';\n\nimport {test as npmIsUsed} from './npm/index.js';\nimport {test as yarnIsUsed} from './yarn/index.js';\n\nexport default async function resolveCurrentPackageManager({projectRoot, packageManager}) {\n if (packageManager) return packageManager;\n\n const {packageManager: pinnedPackageManager} = JSON.parse(await fs.readFile(`${projectRoot}/package.json`, 'utf-8'));\n\n if (await npmIsUsed({projectRoot, pinnedPackageManager})) {\n return packageManagers.NPM;\n }\n\n if (await yarnIsUsed({projectRoot, pinnedPackageManager})) {\n return packageManagers.YARN;\n }\n\n throw new Error('Package-manager could not be determined');\n}\n","import {packageManagers} from '@form8ion/javascript-core';\n\nexport default function scaffoldGenerationCommand(packageManager) {\n if (packageManagers.NPM === packageManager) return 'npm run generate:md';\n if (packageManagers.YARN === packageManager) return 'yarn generate:md';\n\n throw new Error(\n `The ${packageManager} package manager is currently not supported. `\n + `Only ${Object.values(packageManagers).join(' and ')} are currently supported.`\n );\n}\n","import buildGenerationCommand from './generation-command.js';\n\nexport default function scaffoldDocumentation({projectTypeResults, packageManager}) {\n return {\n toc: `Run \\`${buildGenerationCommand(packageManager)}\\` to generate a table of contents`,\n ...projectTypeResults.documentation,\n contributing: `### Dependencies\n\n\\`\\`\\`sh\n$ nvm install\n$ ${packageManager} install\n\\`\\`\\`\n\n### Verification\n\n\\`\\`\\`sh\n$ ${packageManager} test\n\\`\\`\\``\n };\n}\n","import {info} from '@travi/cli-messages';\n\nimport {execa} from 'execa';\n\nexport async function determineLatestVersionOf(nodeVersionCategory) {\n info('Determining version of node', {level: 'secondary'});\n\n const {stdout: nvmLsOutput} = await execa(\n `. ~/.nvm/nvm.sh && nvm ls-remote${('LTS' === nodeVersionCategory) ? ' --lts' : ''}`,\n {shell: true}\n );\n\n const lsLines = nvmLsOutput.split('\\n');\n const lsLine = lsLines[lsLines.length - 2];\n\n return lsLine.match(/(v[0-9]+)\\.[0-9]+\\.[0-9]+/)[1];\n}\n\nexport function install(nodeVersionCategory) {\n info(`Installing ${nodeVersionCategory} version of node using nvm`, {level: 'secondary'});\n\n const subprocess = execa('. ~/.nvm/nvm.sh && nvm install', {shell: true});\n subprocess.stdout.pipe(process.stdout);\n return subprocess;\n}\n","import {promises as fs} from 'node:fs';\nimport {info} from '@travi/cli-messages';\n\nimport {determineLatestVersionOf, install as installNodeVersion} from './tasks.js';\n\nexport default async function scaffoldNodeVersion({projectRoot, nodeVersionCategory}) {\n if (!nodeVersionCategory) return undefined;\n\n const lowerCaseCategory = nodeVersionCategory.toLowerCase();\n info(`Configuring ${lowerCaseCategory} version of node`);\n\n const version = await determineLatestVersionOf(nodeVersionCategory);\n\n await fs.writeFile(`${projectRoot}/.nvmrc`, version);\n\n await installNodeVersion(nodeVersionCategory);\n\n return version;\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function nodeVersionMangerInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.nvmrc`);\n}\n","export default function buildIgnoreLists(vcsIgnoreLists = {}) {\n return {\n files: vcsIgnoreLists.files || [],\n directories: ['/node_modules/', ...vcsIgnoreLists.directories || []]\n };\n}\n","import {EOL} from 'os';\nimport validatePackageName from '../../thirdparty-wrappers/validate-npm-package-name.js';\n\nexport default function determinePackageName(projectName, scope) {\n const name = `${scope ? `@${scope}/` : ''}${projectName}`;\n\n const {validForNewPackages, errors} = validatePackageName(name);\n\n if (validForNewPackages) return name;\n if (1 === errors.length && errors.includes('name cannot start with a period')) return projectName.slice(1);\n\n throw new Error(`The package name ${name} is invalid:${EOL}\\t* ${errors.join(`${EOL}\\t* `)}`);\n}\n","import {dialects} from '@form8ion/javascript-core';\n\nexport default function scaffoldPackageJsonDetails({\n packageName,\n dialect,\n license,\n author,\n description\n}) {\n return {\n name: packageName,\n description,\n license,\n type: dialects.ESM === dialect ? 'module' : 'commonjs',\n author: `${author.name}${author.email ? ` <${author.email}>` : ''}${author.url ? ` (${author.url})` : ''}`,\n scripts: {}\n };\n}\n","import {info} from '@travi/cli-messages';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nimport buildPackageName from './package-name.js';\nimport buildPackageDetails from './details.js';\n\nexport default async function scaffoldPackage({\n projectRoot,\n projectName,\n scope,\n dialect,\n license,\n author,\n description\n}) {\n info('Configuring package.json');\n\n const packageName = buildPackageName(projectName, scope);\n\n await writePackageJson({\n projectRoot,\n config: await buildPackageDetails({\n packageName,\n dialect,\n license,\n author,\n description\n })\n });\n\n return {packageName};\n}\n","import sortObjectKeys from 'sort-object-keys';\n\nexport default function sortProperties(packageContents) {\n return sortObjectKeys(\n packageContents,\n [\n 'name',\n 'description',\n 'license',\n 'version',\n 'private',\n 'type',\n 'engines',\n 'author',\n 'contributors',\n 'repository',\n 'bugs',\n 'homepage',\n 'funding',\n 'keywords',\n 'runkitExampleFilename',\n 'exports',\n 'bin',\n 'main',\n 'module',\n 'types',\n 'sideEffects',\n 'scripts',\n 'files',\n 'publishConfig',\n 'packageManager',\n 'config',\n 'dependencies',\n 'devDependencies',\n 'peerDependencies'\n ]\n );\n}\n","export default function scaffoldVcsHostDetails(vcs, pathWithinParent) {\n return vcs && 'github' === vcs.host && {\n repository: pathWithinParent\n ? {\n type: 'git',\n url: `https://github.com/${vcs.owner}/${vcs.name}.git`,\n directory: pathWithinParent\n }\n : `${vcs.owner}/${vcs.name}`,\n bugs: `https://github.com/${vcs.owner}/${vcs.name}/issues`\n };\n}\n","import {DEV_DEPENDENCY_TYPE, PROD_DEPENDENCY_TYPE, packageManagers} from '@form8ion/javascript-core';\n\nexport const details = {\n [packageManagers.NPM]: {\n installationCommand: 'install',\n installationFlags: {\n [DEV_DEPENDENCY_TYPE]: `save-${DEV_DEPENDENCY_TYPE}`,\n [PROD_DEPENDENCY_TYPE]: `save-${PROD_DEPENDENCY_TYPE}`,\n exact: 'save-exact'\n }\n },\n [packageManagers.YARN]: {\n installationCommand: 'add',\n installationFlags: {\n [DEV_DEPENDENCY_TYPE]: DEV_DEPENDENCY_TYPE,\n [PROD_DEPENDENCY_TYPE]: PROD_DEPENDENCY_TYPE,\n exact: 'exact'\n }\n }\n};\n\nexport function getInstallationCommandFor(manager) {\n return details[manager].installationCommand;\n}\n\nexport function getDependencyTypeFlag(manager, type) {\n return details[manager].installationFlags[type];\n}\n\nexport function getExactFlag(manager) {\n return details[manager].installationFlags.exact;\n}\n","import {info, warn} from '@travi/cli-messages';\nimport {DEV_DEPENDENCY_TYPE, packageManagers} from '@form8ion/javascript-core';\n\nimport {execa} from 'execa';\nimport {getDependencyTypeFlag, getExactFlag, getInstallationCommandFor} from './package-managers.js';\n\nexport default async function installDependencies(\n dependencies,\n dependenciesType,\n projectRoot,\n packageManager = packageManagers.NPM\n) {\n if (dependencies.length) {\n info(`Installing ${dependenciesType} dependencies`, {level: 'secondary'});\n\n await execa(\n `. ~/.nvm/nvm.sh && nvm use && ${packageManager} ${\n getInstallationCommandFor(packageManager)\n } ${[...new Set(dependencies)].join(' ')} --${getDependencyTypeFlag(packageManager, dependenciesType)}${\n DEV_DEPENDENCY_TYPE === dependenciesType ? ` --${getExactFlag(packageManager)}` : ''\n }`,\n {shell: true, cwd: projectRoot}\n );\n } else warn(`No ${dependenciesType} dependencies to install`);\n}\n","import {execa} from 'execa';\nimport {info} from '@travi/cli-messages';\n\nexport default async function removeDependencies({packageManager, dependencies}) {\n if (dependencies.length) {\n info('Removing dependencies dependencies', {level: 'secondary'});\n\n await execa(packageManager, ['remove', ...dependencies]);\n }\n}\n","import {error, info} from '@travi/cli-messages';\nimport {DEV_DEPENDENCY_TYPE, PROD_DEPENDENCY_TYPE} from '@form8ion/javascript-core';\n\nimport install from './installer.js';\nimport remove from './remover.js';\n\nexport default async function processDependencies({dependencies = {}, devDependencies, projectRoot, packageManager}) {\n info('Processing dependencies');\n\n if (Array.isArray(devDependencies)) {\n throw new Error(\n `devDependencies provided as: ${devDependencies}. Instead, provide under dependencies.javascript.development`\n );\n }\n\n if (Array.isArray(dependencies)) {\n throw new Error(`Expected dependencies to be an object. Instead received: ${dependencies}`);\n }\n\n const {javascript: {production = [], development = [], remove: dependenciesToRemove = []} = {}} = dependencies;\n\n try {\n await install(production, PROD_DEPENDENCY_TYPE, projectRoot, packageManager);\n await install(development, DEV_DEPENDENCY_TYPE, projectRoot, packageManager);\n await remove({packageManager, dependencies: dependenciesToRemove});\n } catch (e) {\n error('Failed to update dependencies');\n error(e, {level: 'secondary'});\n }\n}\n","function projectWillBeTested(scripts) {\n return Object.keys(scripts).find(scriptName => scriptName.startsWith('test:'));\n}\n\nfunction projectShouldBeBuiltForVerification(scripts) {\n return 'run-s build' === scripts['pregenerate:md'];\n}\n\nexport default function updateTestScript(scripts) {\n return {\n ...scripts,\n ...projectShouldBeBuiltForVerification(scripts) && {pretest: 'run-s build'},\n test: `npm-run-all --print-label --parallel lint:*${projectWillBeTested(scripts) ? ' --parallel test:*' : ''}`\n };\n}\n","function isRelatedScript(a, b, prefix) {\n return a.startsWith(prefix) && a.slice(prefix.length) === b;\n}\n\nfunction isPreScriptFor(a, b) {\n return isRelatedScript(a, b, 'pre');\n}\n\nfunction isPostScriptFor(a, b) {\n return isRelatedScript(a, b, 'post');\n}\n\nfunction stripPrefix(script) {\n if (script.startsWith('pre')) return script.slice(3);\n if (script.startsWith('post')) return script.slice(4);\n return script;\n}\n\nfunction getCategoryOrder(script) {\n const base = stripPrefix(script);\n if ('test' === base) return 0;\n if (base.startsWith('lint:')) return 1;\n if (base.startsWith('test:unit')) return 2;\n if (base.startsWith('test:integration')) return 3;\n if (base.startsWith('test:')) return 2;\n\n return 4;\n}\n\nexport default function compareScriptNames(a, b) {\n if (isPreScriptFor(a, b)) return -1;\n if (isPreScriptFor(b, a)) return 1;\n if (isPostScriptFor(a, b)) return 1;\n if (isPostScriptFor(b, a)) return -1;\n\n const categoryDiff = getCategoryOrder(a) - getCategoryOrder(b);\n if (0 !== categoryDiff) return 0 > categoryDiff ? -1 : 1;\n\n const aStripped = stripPrefix(a);\n const bStripped = stripPrefix(b);\n\n const aKey = aStripped !== a ? aStripped : a;\n const bKey = bStripped !== b ? bStripped : b;\n\n return aKey.localeCompare(bKey);\n}\n","import sortObjectKeys from 'sort-object-keys';\n\nimport compareScriptNames from './script-comparator.js';\n\nexport default function sortScripts(scripts) {\n return sortObjectKeys(scripts, compareScriptNames);\n}\n","import updateTestScript from './test-script-updater.js';\nimport sortScripts from './scripts-sorter.js';\n\nexport default function liftScripts({existingScripts, scripts}) {\n return {\n scripts: sortScripts(updateTestScript({...existingScripts, ...scripts})),\n dependencies: {\n javascript: {\n development: ['npm-run-all2'],\n remove: ['npm-run-all']\n }\n }\n };\n}\n","import {promises as fs} from 'node:fs';\nimport deepmerge from 'deepmerge';\nimport {info} from '@travi/cli-messages';\nimport {writePackageJson} from '@form8ion/javascript-core';\n\nimport sortPackageProperties from './property-sorter.js';\nimport defineVcsHostDetails from './vcs-host-details.js';\nimport {process as processDependencies} from '../dependencies/index.js';\nimport {lift as liftScripts} from './scripts/index.js';\n\nexport default async function liftPackageJson({\n projectRoot,\n scripts,\n tags,\n dependencies,\n devDependencies,\n packageManager,\n vcs,\n pathWithinParent\n}) {\n info('Updating `package.json`', {level: 'secondary'});\n\n const existingPackageJsonContents = JSON.parse(await fs.readFile(`${projectRoot}/package.json`, 'utf-8'));\n const {scripts: liftedScripts, dependencies: scriptDependencies} = liftScripts({\n existingScripts: existingPackageJsonContents.scripts,\n scripts\n });\n\n await writePackageJson({\n projectRoot,\n config: sortPackageProperties({\n ...existingPackageJsonContents,\n ...defineVcsHostDetails(vcs, pathWithinParent),\n scripts: liftedScripts,\n ...tags && {\n keywords: existingPackageJsonContents.keywords ? [...existingPackageJsonContents.keywords, ...tags] : tags\n }\n })\n });\n\n await processDependencies({\n dependencies: deepmerge(dependencies, scriptDependencies),\n devDependencies,\n projectRoot,\n packageManager\n });\n}\n","export default function mapProjectVisibility({projectVisibility}) {\n return 'Public' === projectVisibility ? 'public' : 'restricted';\n}\n","function isScope(firstPart) {\n return firstPart.startsWith('@');\n}\n\nexport default function resolveRegistry(packageName, registries = {}) {\n if (registries.publish) return registries.publish;\n\n const [firstPart] = packageName.split('/');\n if (isScope(firstPart)) {\n const scopedRegistry = registries[firstPart.slice(1)];\n if (scopedRegistry) return scopedRegistry;\n }\n\n return registries.registry;\n}\n","function buildNpmBadgeImageUrl(packageName, customRegistry) {\n const params = new URLSearchParams({logo: 'npm', ...customRegistry && {registry_uri: customRegistry}});\n\n return `https://img.shields.io/npm/v/${packageName}?${params}`;\n}\n\nexport default function scaffoldPublishableBadges({packageName, accessLevel, customRegistry}) {\n return {\n consumer: {\n ...'public' === accessLevel && {\n npm: {\n img: buildNpmBadgeImageUrl(packageName, customRegistry),\n text: 'npm',\n link: `https://www.npmjs.com/package/${packageName}`\n }\n }\n },\n status: {}\n };\n}\n","export default function scaffoldSlsa({provenance}) {\n if (provenance) {\n return {\n badges: {\n status: {\n slsa: {\n img: 'https://slsa.dev/images/gh-badge-level2.svg',\n url: 'https://slsa.dev',\n text: 'SLSA Level 2'\n }\n }\n }\n };\n }\n\n return {};\n}\n","import {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\n\nimport enhanceSlsa from './slsa.js';\n\nexport default async function liftProvenance({projectRoot, packageDetails, customRegistry}) {\n const {publishConfig: {access} = {}} = packageDetails;\n\n if ('public' === access && !customRegistry) {\n await mergeIntoExistingPackageJson({projectRoot, config: {publishConfig: {provenance: true}}});\n\n return enhanceSlsa({provenance: true});\n }\n\n return {};\n}\n","import deepmerge from 'deepmerge';\nimport {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\n\nimport resolveRegistry from './registry-resolver.js';\nimport defineBadges from './badges.js';\nimport {lift as liftProvenance} from './provenance/index.js';\n\nexport default async function liftPublishable({projectRoot, packageDetails, configs}) {\n const {name: packageName, publishConfig: {access: packageAccessLevel}} = packageDetails;\n const homepage = `https://npm.im/${packageName}`;\n const customRegistry = resolveRegistry(packageName, configs.registries);\n\n await mergeIntoExistingPackageJson({projectRoot, config: {homepage}});\n\n return deepmerge(\n await liftProvenance({packageDetails, projectRoot, customRegistry}),\n {\n homepage,\n dependencies: {javascript: {development: ['publint']}},\n scripts: {'lint:publish': 'publint --strict'},\n badges: defineBadges({packageName, accessLevel: packageAccessLevel, customRegistry})\n }\n );\n}\n","import defineBadges from './badges.js';\n\nexport default async function scaffoldPublishable({packageName, packageAccessLevel}) {\n return {\n badges: await defineBadges(packageName, packageAccessLevel)\n };\n}\n","import {packageManagers} from '@form8ion/javascript-core';\n\nimport buildGenerationCommand from '../../documentation/generation-command.js';\n\nfunction getInstallationCommand(packageManager) {\n if (packageManagers.NPM === packageManager) return 'npm install';\n if (packageManagers.YARN === packageManager) return 'yarn add';\n\n throw new Error(\n `The ${packageManager} package manager is currently not supported. `\n + `Only ${Object.values(packageManagers).join(' and ')} are currently supported.`\n );\n}\n\nexport default function scaffoldPackageDocumentation({scope, packageName, packageManager, visibility, provideExample}) {\n return {\n usage: `### Installation\n${'Private' === visibility ? `\n:warning: this is a private package, so you will need to use an npm token with\naccess to private packages under \\`@${scope}\\`\n` : ''\n}\n\\`\\`\\`sh\n$ ${getInstallationCommand(packageManager)} ${packageName}\n\\`\\`\\`${provideExample\n ? `\n\n### Example\n\nrun \\`${buildGenerationCommand(packageManager)}\\` to inject the usage example`\n : ''\n}`\n };\n}\n","import {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../../../prompts/question-names.js';\n\nexport default async function gatherBundlerInput({bundlers, decisions}) {\n if (!Object.keys(bundlers).length) return 'Other';\n\n const answers = await prompt([{\n name: questionNames.PACKAGE_BUNDLER,\n type: 'list',\n message: 'Which bundler should be used?',\n choices: [...Object.keys(bundlers), 'Other']\n }], decisions);\n\n return answers[questionNames.PACKAGE_BUNDLER];\n}\n","import {scaffoldChoice as scaffoldChosenBundler} from '@form8ion/javascript-core';\nimport chooseBundler from './prompt.js';\n\nexport default async function scaffoldBundler({projectRoot, projectType, bundlers, dialect, decisions}) {\n const chosenBundler = await chooseBundler({bundlers, decisions});\n\n return scaffoldChosenBundler(bundlers, chosenBundler, {projectRoot, projectType, dialect});\n}\n","import {promises as fs} from 'node:fs';\nimport deepmerge from 'deepmerge';\nimport touch from 'touch';\nimport {dialects, projectTypes} from '@form8ion/javascript-core';\nimport {scaffold as scaffoldBundler} from '../publishable/bundler/index.js';\n\nconst defaultBuildDirectory = 'lib';\n\nasync function createExample(projectRoot) {\n return fs.writeFile(`${projectRoot}/example.js`, \"import {} from './lib/index.js';\\n\");\n}\n\nasync function buildDetailsForCommonJsProject({projectRoot, provideExample}) {\n await Promise.all([\n touch(`${projectRoot}/index.js`),\n provideExample\n ? fs.writeFile(`${projectRoot}/example.js`, \"const {} = require('.');\\n\")\n : Promise.resolve()\n ]);\n\n return {};\n}\n\nexport default async function buildDetails({\n projectRoot,\n projectName,\n packageBundlers,\n dialect,\n provideExample,\n decisions\n}) {\n if (dialects.COMMON_JS === dialect) return buildDetailsForCommonJsProject({projectRoot, provideExample});\n\n await fs.mkdir(`${projectRoot}/src`, {recursive: true});\n const [bundlerResults] = await Promise.all([\n scaffoldBundler({bundlers: packageBundlers, projectRoot, dialect, decisions, projectType: projectTypes.PACKAGE}),\n provideExample ? await createExample(projectRoot, projectName, dialect) : Promise.resolve,\n touch(`${projectRoot}/src/index.js`)\n ]);\n\n return deepmerge(\n bundlerResults,\n {\n dependencies: {javascript: {development: ['rimraf']}},\n scripts: {\n clean: `rimraf ./${defaultBuildDirectory}`,\n prebuild: 'run-s clean',\n build: 'npm-run-all --print-label --parallel build:*',\n prepack: 'run-s build',\n ...provideExample && {'pregenerate:md': 'run-s build'}\n },\n vcsIgnore: {directories: [`/${defaultBuildDirectory}/`]},\n buildDirectory: defaultBuildDirectory\n }\n );\n}\n","import deepmerge from 'deepmerge';\nimport {info} from '@travi/cli-messages';\nimport {dialects, mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\n\nimport determinePackageAccessLevelFromProjectVisibility from '../publishable/access-level.js';\nimport {scaffold as scaffoldPublishable} from '../publishable/index.js';\nimport scaffoldPackageDocumentation from './documentation.js';\nimport buildDetails from './build-details.js';\n\nexport default async function scaffoldPackageProjectType({\n projectRoot,\n projectName,\n packageName,\n packageManager,\n visibility,\n scope,\n packageBundlers,\n decisions,\n dialect,\n provideExample,\n publishRegistry\n}) {\n info('Scaffolding Package Details');\n\n const packageAccessLevel = determinePackageAccessLevelFromProjectVisibility({projectVisibility: visibility});\n const [detailsForBuild, publishableResults] = await Promise.all([\n buildDetails({\n projectRoot,\n projectName,\n packageBundlers,\n dialect,\n provideExample,\n decisions\n }),\n scaffoldPublishable({packageName, packageAccessLevel}),\n mergeIntoExistingPackageJson({\n projectRoot,\n config: {\n files: ['example.js', ...dialects.COMMON_JS === dialect ? ['index.js'] : ['lib/', 'src/']],\n publishConfig: {\n access: packageAccessLevel,\n ...publishRegistry && {registry: publishRegistry}\n },\n sideEffects: false,\n ...dialects.BABEL === dialect && {\n main: './lib/index.js',\n module: './lib/index.mjs',\n exports: {\n module: './lib/index.mjs',\n require: './lib/index.js',\n import: './lib/index.mjs'\n }\n },\n ...dialects.ESM === dialect && {\n main: './lib/index.js',\n exports: './lib/index.js'\n },\n ...dialects.TYPESCRIPT === dialect && {\n main: './lib/index.js',\n module: './lib/index.mjs',\n types: './lib/index.d.ts',\n exports: {\n types: './lib/index.d.ts',\n require: './lib/index.js',\n import: './lib/index.mjs'\n }\n }\n }\n })\n ]);\n\n return deepmerge.all([\n publishableResults,\n {\n documentation: scaffoldPackageDocumentation({packageName, visibility, scope, packageManager, provideExample}),\n nextSteps: [\n {summary: 'Add the appropriate `save` flag to the installation instructions in the README'},\n {summary: 'Define supported node.js versions as `engines.node` in the `package.json` file'},\n {summary: 'Publish pre-release versions to npm until package is stable enough to publish v1.0.0'}\n ]\n },\n detailsForBuild\n ]);\n}\n","import {lift as liftPublishable} from '../publishable/index.js';\n\nexport default function liftPackage({projectRoot, packageDetails, configs}) {\n return liftPublishable({projectRoot, packageDetails, configs});\n}\n","export default async function projectIsPackage({\n packageDetails: {exports, publishConfig, bin, private: projectMarkedPrivate}\n}) {\n return !projectMarkedPrivate && (!!exports || (!!publishConfig && !bin));\n}\n","import {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\nimport {info} from '@travi/cli-messages';\n\nconst defaultBuildDirectory = 'public';\n\nexport default async function scaffoldApplication({projectRoot}) {\n info('Scaffolding Application Details');\n\n await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});\n\n const buildDirectory = defaultBuildDirectory;\n\n return {\n scripts: {\n clean: `rimraf ./${buildDirectory}`,\n start: `node ./${buildDirectory}/index.js`,\n prebuild: 'run-s clean'\n },\n dependencies: {javascript: {development: ['rimraf']}},\n vcsIgnore: {files: ['.env'], directories: [`/${buildDirectory}/`]},\n buildDirectory,\n nextSteps: []\n };\n}\n","export default function projectIsApplication({packageDetails}) {\n return !!packageDetails.private;\n}\n","import {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\nimport {info} from '@travi/cli-messages';\n\nexport default async function scaffoldMonorepo({projectRoot}) {\n info('Scaffolding Monorepo Details');\n\n await mergeIntoExistingPackageJson({projectRoot, config: {private: true}});\n\n return {\n nextSteps: [{\n summary: 'Add packages to your new monorepo',\n description: 'Leverage [@form8ion/add-package-to-monorepo](https://npm.im/@form8ion/add-package-to-monorepo)'\n + ' to scaffold new packages into your new monorepo'\n }]\n };\n}\n","import deepmerge from 'deepmerge';\nimport {mergeIntoExistingPackageJson, projectTypes} from '@form8ion/javascript-core';\n\nimport determinePackageAccessLevelFromProjectVisibility from '../publishable/access-level.js';\nimport {scaffold as scaffoldPublishable} from '../publishable/index.js';\nimport {scaffold as scaffoldBundler} from '../publishable/bundler/index.js';\n\nconst defaultBuildDirectory = 'bin';\n\nexport default async function scaffoldCli({\n packageName,\n visibility,\n projectRoot,\n dialect,\n publishRegistry,\n decisions,\n packageBundlers\n}) {\n const packageAccessLevel = determinePackageAccessLevelFromProjectVisibility({projectVisibility: visibility});\n const [bundlerResults, publishableResults] = await Promise.all([\n scaffoldBundler({bundlers: packageBundlers, projectRoot, dialect, decisions, projectType: projectTypes.CLI}),\n scaffoldPublishable({packageName, packageAccessLevel}),\n mergeIntoExistingPackageJson({\n projectRoot,\n config: {\n bin: {},\n files: [`${defaultBuildDirectory}/`, 'src/'],\n publishConfig: {\n access: packageAccessLevel,\n ...publishRegistry && {registry: publishRegistry}\n }\n }\n })\n ]);\n\n return deepmerge.all([\n publishableResults,\n bundlerResults,\n {\n scripts: {\n clean: `rimraf ./${defaultBuildDirectory}`,\n prebuild: 'run-s clean',\n build: 'npm-run-all --print-label --parallel build:*',\n prepack: 'run-s build'\n },\n dependencies: {javascript: {production: ['update-notifier'], development: ['rimraf']}},\n vcsIgnore: {files: [], directories: [`/${defaultBuildDirectory}/`]},\n buildDirectory: defaultBuildDirectory,\n nextSteps: [{summary: 'Define supported node.js versions as `engines.node` in the `package.json` file'}]\n }\n ]);\n}\n","export default async function projectIsCli({packageDetails: {bin}}) {\n return !!bin;\n}\n","import {lift as liftPublishable} from '../publishable/index.js';\n\nexport default function liftCli({projectRoot, packageDetails, configs}) {\n return liftPublishable({projectRoot, packageDetails, configs});\n}\n","import {projectTypes} from '@form8ion/javascript-core';\n\nimport {scaffold as scaffoldPackageType} from './package/index.js';\nimport {scaffold as scaffoldApplicationType} from './application/index.js';\nimport {scaffold as scaffoldMonorepoType} from './monorepo/index.js';\nimport {scaffold as scaffoldCliType} from './cli/index.js';\n\nexport default async function scaffoldProjectType({\n projectType,\n projectRoot,\n projectName,\n packageName,\n packageManager,\n visibility,\n packageBundlers,\n scope,\n decisions,\n dialect,\n provideExample,\n publishRegistry\n}) {\n switch (projectType) {\n case projectTypes.PACKAGE:\n return scaffoldPackageType({\n projectRoot,\n projectName,\n packageName,\n packageManager,\n visibility,\n scope,\n packageBundlers,\n decisions,\n dialect,\n provideExample,\n publishRegistry\n });\n case projectTypes.APPLICATION:\n return scaffoldApplicationType({projectRoot});\n case projectTypes.CLI:\n return scaffoldCliType({\n packageName,\n visibility,\n projectRoot,\n dialect,\n publishRegistry,\n decisions,\n packageBundlers\n });\n case projectTypes.MONOREPO:\n return scaffoldMonorepoType({projectRoot});\n case 'Other':\n return {};\n default:\n throw new Error(`The project-type of ${projectType} is invalid`);\n }\n}\n","import {test as isPackage} from './package/index.js';\nimport {test as isCli} from './cli/index.js';\nimport {test as isApplication} from './application/index.js';\n\nexport default async function isProjectType({projectRoot, packageDetails}) {\n return await isPackage({projectRoot, packageDetails})\n || await isCli({projectRoot, packageDetails})\n || isApplication({projectRoot, packageDetails});\n}\n","import {mergeIntoExistingPackageJson} from '@form8ion/javascript-core';\n\nimport {test as isPackage, lift as liftPackage} from './package/index.js';\nimport {test as isCli, lift as liftCli} from './cli/index.js';\n\nfunction vcsRepositoryHostedOnGithub(vcs) {\n return vcs && 'github' === vcs.host;\n}\n\nexport default async function liftProjectType({projectRoot, packageDetails, vcs, configs}) {\n if (await isPackage({projectRoot, packageDetails})) return liftPackage({projectRoot, packageDetails, configs});\n if (await isCli({projectRoot, packageDetails})) return liftCli({projectRoot, packageDetails, configs});\n\n let homepage;\n\n if (vcsRepositoryHostedOnGithub(vcs)) {\n homepage = `https://github.com/${vcs.owner}/${vcs.name}#readme`;\n\n await mergeIntoExistingPackageJson({projectRoot, config: {homepage}});\n }\n\n return {homepage};\n}\n","import {prompt} from '@form8ion/overridable-prompts';\n\nimport {questionNames} from '../prompts/question-names.js';\n\nexport default async function gatherProjectTypePluginInput({types, projectType, decisions}) {\n if (!Object.keys(types).length) return 'Other';\n\n const answers = await prompt([{\n name: questionNames.PROJECT_TYPE_CHOICE,\n type: 'list',\n message: `What type of ${projectType} is this?`,\n choices: [...Object.keys(types), 'Other']\n }], decisions);\n\n return answers[questionNames.PROJECT_TYPE_CHOICE];\n}\n","import {scaffoldChoice} from '@form8ion/javascript-core';\n\nimport chooseProjectTypePlugin from './prompt.js';\n\nexport default async function scaffoldProjectTypePlugin({\n projectRoot,\n projectType,\n projectName,\n packageName,\n packageManager,\n scope,\n dialect,\n tests,\n decisions,\n plugins\n}) {\n const pluginsForProjectType = plugins[projectType];\n\n if (!pluginsForProjectType) return {};\n\n const chosenType = await chooseProjectTypePlugin({types: pluginsForProjectType, decisions, projectType});\n\n return scaffoldChoice(\n pluginsForProjectType,\n chosenType,\n {projectRoot, projectName, packageName, packageManager, scope, tests, dialect}\n );\n}\n","export default function scaffoldIntegrationTesting() {\n return {};\n}\n","import deepmerge from 'deepmerge';\n\nimport {scaffold as scaffoldUnitTesting} from './unit/index.js';\nimport {scaffold as scaffoldIntegrationTesting} from './integration/index.js';\n\nexport default async function scaffoldTesting({\n projectRoot,\n tests: {unit, integration},\n unitTestFrameworks,\n integrationTestFrameworks,\n decisions,\n dialect\n}) {\n const [unitResults, integrationResults] = await Promise.all([\n unit ? scaffoldUnitTesting({projectRoot, frameworks: unitTestFrameworks, decisions, dialect}) : {},\n integration\n ? scaffoldIntegrationTesting({projectRoot, frameworks: integrationTestFrameworks, decisions, dialect})\n : {}\n ]);\n\n return deepmerge.all([\n {dependencies: {javascript: {development: [...(unit || integration) ? ['@travi/any'] : []]}}, eslint: {}},\n unitResults,\n integrationResults\n ]);\n}\n","export default function buildAllowedHosts({packageManager, registries = {}}) {\n return [\n ...!registries.registry ? [packageManager] : [],\n ...Object.values(Object.fromEntries(Object.entries(registries).filter(([scope]) => 'publish' !== scope)))\n ];\n}\n","import {fileTypes} from '@form8ion/core';\nimport {packageManagers} from '@form8ion/javascript-core';\nimport {write} from '@form8ion/config-file';\n\nimport buildAllowedHostsList from './allowed-hosts-builder.js';\nimport {defineLockfilePath as determineLockfilePathFor} from '../package-managers/index.js';\n\nconst lockfileLintSupportedPackageManagers = [packageManagers.NPM, packageManagers.YARN];\n\nfunction lockfileLintSupports(packageManager) {\n return lockfileLintSupportedPackageManagers.includes(packageManager);\n}\n\nexport default async function scaffoldLockfileLint({projectRoot, packageManager, registries}) {\n if (!lockfileLintSupports(packageManager)) {\n throw new Error(\n `The ${packageManager} package manager is currently not supported by lockfile-lint. `\n + `Only ${lockfileLintSupportedPackageManagers.join(' and ')} are currently supported.`\n );\n }\n\n await write({\n name: 'lockfile-lint',\n format: fileTypes.JSON,\n path: projectRoot,\n config: {\n path: determineLockfilePathFor(packageManager),\n type: packageManager,\n 'validate-https': true,\n 'allowed-hosts': buildAllowedHostsList({packageManager, registries})\n }\n });\n\n return {\n dependencies: {javascript: {development: ['lockfile-lint']}},\n scripts: {'lint:lockfile': 'lockfile-lint'}\n };\n}\n","import {fileExists} from '@form8ion/core';\n\nexport default function lockfileLintInUse({projectRoot}) {\n return fileExists(`${projectRoot}/.lockfile-lintrc.json`);\n}\n","import {fileTypes, loadConfigFile} from '@form8ion/core';\nimport {write as writeConfig} from '@form8ion/config-file';\n\nconst configName = 'lockfile-lint';\n\nexport function read({projectRoot}) {\n return loadConfigFile({name: `.${configName}rc`, format: fileTypes.JSON, path: projectRoot});\n}\n\nexport function write({projectRoot, config}) {\n return writeConfig({name: configName, format: fileTypes.JSON, path: projectRoot, config});\n}\n","import {scaffold as scaffoldLockfileLint} from '../lockfile-lint/index.js';\n\nexport default async function scaffoldLinting({projectRoot, packageManager, registries}) {\n return scaffoldLockfileLint({projectRoot, packageManager, registries});\n}\n","import deepmerge from 'deepmerge';\nimport {scaffold as scaffoldHusky} from '@form8ion/husky';\n\nimport {scaffold as scaffoldTesting} from '../testing/index.js';\nimport {scaffold as scaffoldLinting} from '../linting/index.js';\n\nexport async function scaffoldVerification({\n projectRoot,\n dialect,\n packageManager,\n vcs,\n registries,\n tests,\n unitTestFrameworks,\n integrationTestFrameworks,\n decisions,\n pathWithinParent\n}) {\n const [testingResults, lintingResults, huskyResults] = await Promise.all([\n scaffoldTesting({projectRoot, tests, unitTestFrameworks, integrationTestFrameworks, decisions, dialect}),\n scaffoldLinting({projectRoot, packageManager, registries, vcs, pathWithinParent}),\n scaffoldHusky({projectRoot, packageManager, pathWithinParent})\n ]);\n\n return deepmerge.all([testingResults, lintingResults, huskyResults]);\n}\n","import deepmerge from 'deepmerge';\nimport {fileTypes} from '@form8ion/core';\nimport {projectTypes} from '@form8ion/javascript-core';\nimport {write} from '@form8ion/config-file';\n\nexport default async function scaffoldRemark({config, projectRoot, projectType, vcs}) {\n await write({\n format: fileTypes.JSON,\n path: projectRoot,\n name: 'remark',\n config: {\n settings: {\n listItemIndent: 'one',\n emphasis: '_',\n strong: '_',\n bullet: '*',\n incrementListMarker: false\n },\n plugins: [\n config,\n ['remark-toc', {tight: true}],\n ...projectTypes.PACKAGE === projectType ? [['remark-usage', {heading: 'example'}]] : [],\n ...!vcs ? [['validate-links', {repository: false}]] : []\n ]\n }\n });\n\n return deepmerge(\n {\n dependencies: {javascript: {development: [config, 'remark-cli', 'remark-toc']}},\n scripts: {\n 'lint:md': 'remark . --frail',\n 'generate:md': 'remark . --output'\n }\n },\n {...projectTypes.PACKAGE === projectType && {dependencies: {javascript: {development: ['remark-usage']}}}}\n );\n}\n","import deepmerge from 'deepmerge';\nimport {scaffold as scaffoldPrettier} from '@form8ion/prettier';\nimport {scaffold as scaffoldEslint} from '@form8ion/eslint';\n\nimport {scaffold as scaffoldRemark} from './remark/index.js';\n\nexport default async function scaffoldCodeStyle({\n projectRoot,\n projectType,\n configs,\n vcs,\n configureLinting\n}) {\n return deepmerge.all(await Promise.all([\n configs.eslint\n && configureLinting\n && scaffoldEslint({projectRoot, config: configs.eslint}),\n scaffoldRemark({\n projectRoot,\n projectType,\n vcs,\n config: configs.remark || '@form8ion/remark-lint-preset'\n }),\n scaffoldPrettier({projectRoot, config: configs.prettier})\n ].filter(Boolean)));\n}\n","import {applyEnhancers} from '@form8ion/core';\nimport * as eslintPlugin from '@form8ion/eslint';\n\nexport default function liftCodeStyle(options) {\n return applyEnhancers({options, enhancers: [eslintPlugin]});\n}\n","import {test as testForEslint} from '@form8ion/eslint';\n\nexport default function codeStyleConfigured(options) {\n return testForEslint(options);\n}\n","import deepmerge from 'deepmerge';\nimport {info} from '@travi/cli-messages';\nimport {projectTypes, scaffoldChoice} from '@form8ion/javascript-core';\nimport {scaffold as scaffoldCommitConvention} from '@form8ion/commit-convention';\n\nimport {validate} from './options/validator.js';\nimport {prompt} from './prompts/questions.js';\nimport {scaffold as scaffoldDialect} from './dialects/index.js';\nimport {scaffold as scaffoldNpmConfig} from './npm-config/index.js';\nimport {scaffold as scaffoldPackageManager} from './package-managers/index.js';\nimport scaffoldDocumentation from './documentation/index.js';\nimport {scaffold as scaffoldNodeVersion} from './node-version/index.js';\nimport buildVcsIgnoreLists from './vcs/ignore-lists-builder.js';\nimport {scaffold as scaffoldPackage} from './package/index.js';\nimport {scaffold as scaffoldProjectType} from './project-type/index.js';\nimport {scaffold as scaffoldProjectTypePlugin} from './project-type-plugin/index.js';\nimport buildDocumentationCommand from './documentation/generation-command.js';\nimport {scaffold as scaffoldVerification} from './verification/index.js';\nimport {scaffold as scaffoldCodeStyle} from './code-style/index.js';\n\nexport default async function scaffoldJavascript(options) {\n info('Initializing JavaScript project');\n\n const {\n projectRoot,\n projectName,\n visibility,\n license,\n vcs,\n description,\n configs,\n decisions,\n pathWithinParent,\n plugins: {\n applicationTypes,\n packageTypes,\n monorepoTypes,\n packageBundlers,\n unitTestFrameworks,\n integrationTestFrameworks,\n hosts,\n ciServices\n }\n } = validate(options);\n\n const {\n tests,\n projectType,\n ci,\n chosenHost,\n scope,\n nodeVersionCategory,\n author,\n configureLinting,\n provideExample,\n packageManager,\n dialect\n } = await prompt(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent);\n\n info('Writing project files', {level: 'secondary'});\n\n const {packageName} = await scaffoldPackage({\n projectRoot,\n projectName,\n scope,\n dialect,\n license,\n author,\n description\n });\n const projectTypeResults = await scaffoldProjectType({\n projectType,\n projectRoot,\n projectName,\n packageName,\n packageManager,\n visibility,\n applicationTypes,\n packageTypes,\n monorepoTypes,\n packageBundlers,\n scope,\n tests,\n vcs,\n decisions,\n dialect,\n provideExample,\n publishRegistry: configs.registries.publish\n });\n const verificationResults = await scaffoldVerification({\n projectRoot,\n dialect,\n packageManager,\n vcs,\n registries: configs.registries,\n tests,\n unitTestFrameworks,\n integrationTestFrameworks,\n decisions,\n pathWithinParent\n });\n const [nodeVersion, npmResults, dialectResults, codeStyleResults] = await Promise.all([\n scaffoldNodeVersion({projectRoot, nodeVersionCategory}),\n scaffoldNpmConfig({projectType, projectRoot}),\n scaffoldDialect({\n dialect,\n configs,\n projectRoot,\n projectType,\n testFilenamePattern: verificationResults.testFilenamePattern\n }),\n scaffoldCodeStyle({projectRoot, projectType, configs, vcs, configureLinting}),\n scaffoldPackageManager({projectRoot, packageManager})\n ]);\n const projectTypePluginResults = await scaffoldProjectTypePlugin({\n projectRoot,\n projectType,\n projectName,\n packageName,\n packageManager,\n scope,\n dialect,\n tests,\n decisions,\n plugins: {\n [projectTypes.PACKAGE]: packageTypes,\n [projectTypes.APPLICATION]: applicationTypes,\n [projectTypes.MONOREPO]: monorepoTypes\n }\n });\n const mergedContributions = deepmerge.all([\n ...(await Promise.all([\n scaffoldChoice(\n hosts,\n chosenHost,\n {buildDirectory: `./${projectTypeResults.buildDirectory}`, projectRoot, projectName, nodeVersion}\n ),\n scaffoldChoice(ciServices, ci, {projectRoot, vcs, visibility, projectType, projectName, nodeVersion, tests}),\n scaffoldCommitConvention({projectRoot, projectType, configs, pathWithinParent})\n ])),\n projectTypeResults,\n verificationResults,\n codeStyleResults,\n npmResults,\n dialectResults,\n projectTypePluginResults\n ]);\n\n return {\n ...mergedContributions,\n documentation: scaffoldDocumentation({projectTypeResults, packageManager}),\n tags: projectTypeResults.tags,\n vcsIgnore: buildVcsIgnoreLists(mergedContributions.vcsIgnore),\n verificationCommand: `${buildDocumentationCommand(packageManager)} && ${packageManager} test`\n };\n}\n","export default function registriesAreInUse() {\n return true;\n}\n","export default function buildRegistriesList(registries = {}) {\n return Object.entries(registries)\n .filter(([scope]) => 'publish' !== scope)\n .reduce((acc, [scope, url]) => {\n if ('registry' === scope) return {...acc, registry: url};\n\n return {...acc, [`@${scope}:registry`]: url};\n }, {registry: 'https://registry.npmjs.org'});\n}\n","import {\n scaffold as scaffoldLockfileLint,\n test as lockfileLintIsAlreadyConfigured,\n read as readLockfileLintConfig,\n write as writeLockfileLintConfig\n} from '../lockfile-lint/index.js';\nimport {read as readNpmConfig, write as writeNpmConfig} from '../npm-config/index.js';\nimport buildRegistriesConfig from './npm-config/list-builder.js';\nimport buildAllowedHostsList from '../lockfile-lint/allowed-hosts-builder.js';\n\nasync function updateRegistriesInNpmConfig(registries, projectRoot) {\n const registriesForNpmConfig = buildRegistriesConfig(registries);\n\n await writeNpmConfig({\n projectRoot,\n config: {\n ...(await readNpmConfig({projectRoot})),\n ...registriesForNpmConfig\n }\n });\n}\n\nasync function updateRegistriesInLockfileLintConfig(projectRoot, packageManager, registries) {\n await writeLockfileLintConfig({\n projectRoot,\n config: {\n ...await readLockfileLintConfig({projectRoot}),\n 'allowed-hosts': buildAllowedHostsList({packageManager, registries})\n }\n });\n}\n\nexport default async function liftRegistries({projectRoot, packageManager, configs: {registries}}) {\n await updateRegistriesInNpmConfig(registries, projectRoot);\n\n if (!(await lockfileLintIsAlreadyConfigured({projectRoot}))) {\n return scaffoldLockfileLint({projectRoot, packageManager, registries});\n }\n\n await updateRegistriesInLockfileLintConfig(projectRoot, packageManager, registries);\n\n return {};\n}\n","import {promises as fs} from 'fs';\n\nexport default async function testEngines({projectRoot}) {\n const {engines} = JSON.parse(await fs.readFile(`${projectRoot}/package.json`, 'utf8'));\n\n return !!engines?.node;\n}\n","export default async function liftEngines({packageDetails: {name}}) {\n return {\n dependencies: {javascript: {development: ['ls-engines']}},\n scripts: {'lint:engines': 'ls-engines'},\n badges: {consumer: {node: {img: `https://img.shields.io/node/v/${name}?logo=node.js`, text: 'node'}}}\n };\n}\n","import {promises as fs} from 'node:fs';\nimport deepmerge from 'deepmerge';\nimport {info} from '@travi/cli-messages';\nimport {applyEnhancers} from '@form8ion/core';\nimport * as huskyPlugin from '@form8ion/husky';\nimport * as commitConventionPlugin from '@form8ion/commit-convention';\n\nimport * as registriesPlugin from './registries/index.js';\nimport * as coveragePlugin from './coverage/index.js';\nimport * as codeStylePlugin from './code-style/index.js';\nimport * as npmConfigPlugin from './npm-config/index.js';\nimport * as enginesEnhancer from './engines/index.js';\nimport * as projectTypes from './project-type/index.js';\nimport * as dialects from './dialects/index.js';\nimport {lift as liftPackage} from './package/index.js';\nimport * as packageManagers from './package-managers/index.js';\nimport {determineCurrent as resolvePackageManager} from './package-managers/index.js';\n\nexport default async function liftJavaScript({\n projectRoot,\n vcs,\n results,\n pathWithinParent,\n enhancers = {},\n configs = {}\n}) {\n info('Lifting JavaScript-specific details');\n\n const [packageManager, packageContents] = await Promise.all([\n resolvePackageManager({projectRoot, packageManager: results.packageManager}),\n fs.readFile(`${projectRoot}/package.json`, 'utf8')\n ]);\n\n const enhancerResults = await applyEnhancers({\n results,\n enhancers: {\n ...enhancers,\n huskyPlugin,\n enginesEnhancer,\n coveragePlugin,\n commitConventionPlugin,\n dialects,\n codeStylePlugin,\n npmConfigPlugin,\n projectTypes,\n packageManagers,\n registriesPlugin\n },\n options: {packageManager, projectRoot, vcs, packageDetails: JSON.parse(packageContents), configs}\n });\n\n await liftPackage(deepmerge.all([{projectRoot, packageManager, vcs, pathWithinParent}, enhancerResults]));\n\n return enhancerResults;\n}\n","import {info} from '@travi/cli-messages';\n\nimport {test as nvmIsUsed} from './node-version/index.js';\nimport {test as jsPackageManagerIsUsed} from './package-managers/index.js';\n\nexport default async function projectUsesJavaScript({projectRoot}) {\n const [nvmFound, jsPackageManagerFound] = await Promise.all([\n nvmIsUsed({projectRoot}),\n jsPackageManagerIsUsed({projectRoot})\n ]);\n\n const jsProjectFound = nvmFound || jsPackageManagerFound;\n\n if (jsProjectFound) info('JavaScript Project Detected');\n\n return jsProjectFound;\n}\n","import {questionNames as languageScaffolderPromptsQuestionNames} from '@travi/language-scaffolder-prompts';\n\nimport {questionNames as jsScaffolderQuestionNames} from './prompts/question-names.js';\n\nexport {scaffold as scaffoldUnitTesting} from './testing/unit/index.js';\nexport {default as scaffold} from './scaffolder.js';\nexport {default as lift} from './lifter.js';\nexport {default as test} from './tester.js';\nexport const questionNames = {...languageScaffolderPromptsQuestionNames, ...jsScaffolderQuestionNames};\n"],"names":["questionNames","scaffoldC8","scaffoldCodecov","fs","liftCodecov","nycIsConfigured","c8IsConfigured","prompt","chooseFramework","scaffoldFrameworkChoice","dialects","projectTypes","projectIsPackage","projectIsApplication","commonQuestionNames","npmConf","npmConfFactory","scope","promptWithInquirer","buildDialectChoices","packageManagers","validateScope","commonQuestions","write","loadConfig","writeConfig","addIgnore","read","determineLockfilePath","npmIsUsed","yarnIsUsed","scaffoldNpm","buildGenerationCommand","installNodeVersion","buildPackageName","buildPackageDetails","install","remove","sortPackageProperties","defineVcsHostDetails","enhanceSlsa","defineBadges","chooseBundler","scaffoldChosenBundler","defaultBuildDirectory","determinePackageAccessLevelFromProjectVisibility","exports","scaffoldPackageType","scaffoldApplicationType","scaffoldCliType","scaffoldMonorepoType","isPackage","isCli","isApplication","chooseProjectTypePlugin","determineLockfilePathFor","buildAllowedHostsList","scaffoldHusky","scaffoldEslint","scaffoldPrettier","testForEslint","scaffoldNpmConfig","scaffoldCommitConvention","buildVcsIgnoreLists","buildDocumentationCommand","buildRegistriesConfig","writeLockfileLintConfig","readLockfileLintConfig","lockfileLintIsAlreadyConfigured","resolvePackageManager","liftPackage","nvmIsUsed","jsPackageManagerIsUsed","languageScaffolderPromptsQuestionNames","jsScaffolderQuestionNames"],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@form8ion/javascript",
3
3
  "description": "JavaScript language plugin for the @form8ion toolset",
4
4
  "license": "MIT",
5
- "version": "15.6.2",
5
+ "version": "15.7.0",
6
6
  "type": "module",
7
7
  "engines": {
8
8
  "node": "^20.19.0 || >=22.14.0"
@@ -94,7 +94,7 @@
94
94
  "@form8ion/remark-lint-preset": "6.0.7",
95
95
  "@rollup/plugin-node-resolve": "16.0.3",
96
96
  "@travi/any": "3.1.3",
97
- "@vitest/coverage-v8": "4.1.0",
97
+ "@vitest/coverage-v8": "4.1.1",
98
98
  "ban-sensitive-files": "1.10.11",
99
99
  "chai": "6.2.2",
100
100
  "cz-conventional-changelog": "3.3.0",
@@ -110,10 +110,10 @@
110
110
  "remark-toc": "9.0.0",
111
111
  "remark-usage": "11.0.1",
112
112
  "rimraf": "6.1.3",
113
- "rollup": "4.59.0",
113
+ "rollup": "4.60.0",
114
114
  "rollup-plugin-auto-external": "2.0.0",
115
115
  "testdouble": "3.20.2",
116
- "vitest": "4.1.0",
116
+ "vitest": "4.1.1",
117
117
  "vitest-when": "0.10.0"
118
118
  }
119
119
  }
@@ -32,6 +32,7 @@ export function validate(options) {
32
32
  }).default({registries: {}}),
33
33
  plugins: {
34
34
  unitTestFrameworks: pluginsSchema,
35
+ integrationTestFrameworks: pluginsSchema,
35
36
  packageBundlers: pluginsSchema,
36
37
  applicationTypes: pluginsSchema,
37
38
  packageTypes: pluginsSchema,
@@ -62,6 +62,7 @@ describe('options validator', () => {
62
62
  configs,
63
63
  plugins: {
64
64
  unitTestFrameworks: pluginsSchema,
65
+ integrationTestFrameworks: pluginsSchema,
65
66
  packageBundlers: pluginsSchema,
66
67
  applicationTypes: pluginsSchema,
67
68
  packageTypes: pluginsSchema,
package/src/scaffolder.js CHANGED
@@ -37,6 +37,7 @@ export default async function scaffoldJavascript(options) {
37
37
  monorepoTypes,
38
38
  packageBundlers,
39
39
  unitTestFrameworks,
40
+ integrationTestFrameworks,
40
41
  hosts,
41
42
  ciServices
42
43
  }
@@ -94,6 +95,7 @@ export default async function scaffoldJavascript(options) {
94
95
  registries: configs.registries,
95
96
  tests,
96
97
  unitTestFrameworks,
98
+ integrationTestFrameworks,
97
99
  decisions,
98
100
  pathWithinParent
99
101
  });
@@ -82,6 +82,7 @@ describe('javascript project scaffolder', () => {
82
82
  const monorepoTypes = any.simpleObject();
83
83
  const packageBundlers = any.simpleObject();
84
84
  const unitTestFrameworks = any.simpleObject();
85
+ const integrationTestFrameworks = any.simpleObject();
85
86
  const testFilenamePattern = any.string();
86
87
  const buildDirectory = any.string();
87
88
  const packageResults = {...any.simpleObject(), packageName};
@@ -108,7 +109,16 @@ describe('javascript project scaffolder', () => {
108
109
  visibility,
109
110
  license,
110
111
  decisions,
111
- plugins: {ciServices, hosts, applicationTypes, packageTypes, monorepoTypes, packageBundlers, unitTestFrameworks}
112
+ plugins: {
113
+ ciServices,
114
+ hosts,
115
+ applicationTypes,
116
+ packageTypes,
117
+ monorepoTypes,
118
+ packageBundlers,
119
+ unitTestFrameworks,
120
+ integrationTestFrameworks
121
+ }
112
122
  });
113
123
  when(prompt)
114
124
  .calledWith(ciServices, hosts, visibility, vcs, decisions, configs, pathWithinParent)
@@ -161,7 +171,8 @@ describe('javascript project scaffolder', () => {
161
171
  tests,
162
172
  decisions,
163
173
  pathWithinParent,
164
- unitTestFrameworks
174
+ unitTestFrameworks,
175
+ integrationTestFrameworks
165
176
  })
166
177
  .thenResolve(verificationResults);
167
178
  when(scaffoldNodeVersion).calledWith({projectRoot, nodeVersionCategory}).thenResolve(nodeVersionResults);
@@ -0,0 +1 @@
1
+ export {default as scaffold} from './scaffolder.js';
@@ -0,0 +1,3 @@
1
+ export default function scaffoldIntegrationTesting() {
2
+ return {};
3
+ }
@@ -0,0 +1,9 @@
1
+ import {describe, it, expect} from 'vitest';
2
+
3
+ import scaffoldIntegrationTesting from './scaffolder.js';
4
+
5
+ describe('integration testing scaffolder', () => {
6
+ it('should scaffold the chosen framework', async () => {
7
+ expect(scaffoldIntegrationTesting()).toEqual({});
8
+ });
9
+ });
@@ -1,20 +1,26 @@
1
1
  import deepmerge from 'deepmerge';
2
2
 
3
3
  import {scaffold as scaffoldUnitTesting} from './unit/index.js';
4
+ import {scaffold as scaffoldIntegrationTesting} from './integration/index.js';
4
5
 
5
6
  export default async function scaffoldTesting({
6
7
  projectRoot,
7
8
  tests: {unit, integration},
8
9
  unitTestFrameworks,
10
+ integrationTestFrameworks,
9
11
  decisions,
10
12
  dialect
11
13
  }) {
12
- const unitResults = unit
13
- ? await scaffoldUnitTesting({projectRoot, frameworks: unitTestFrameworks, decisions, dialect})
14
- : {};
14
+ const [unitResults, integrationResults] = await Promise.all([
15
+ unit ? scaffoldUnitTesting({projectRoot, frameworks: unitTestFrameworks, decisions, dialect}) : {},
16
+ integration
17
+ ? scaffoldIntegrationTesting({projectRoot, frameworks: integrationTestFrameworks, decisions, dialect})
18
+ : {}
19
+ ]);
15
20
 
16
- return deepmerge(
21
+ return deepmerge.all([
17
22
  {dependencies: {javascript: {development: [...(unit || integration) ? ['@travi/any'] : []]}}, eslint: {}},
18
- unitResults
19
- );
23
+ unitResults,
24
+ integrationResults
25
+ ]);
20
26
  }
@@ -1,57 +1,99 @@
1
+ import deepmerge from 'deepmerge';
2
+
1
3
  import any from '@travi/any';
2
4
  import {it, expect, describe, vi, beforeEach} from 'vitest';
3
5
  import {when} from 'vitest-when';
4
6
 
5
7
  import {scaffold as scaffoldUnitTesting} from './unit/index.js';
8
+ import {scaffold as scaffoldIntegrationTesting} from './integration/index.js';
6
9
  import scaffoldTesting from './scaffolder.js';
7
10
 
11
+ vi.mock('deepmerge');
8
12
  vi.mock('./unit/index.js');
13
+ vi.mock('./integration/index.js');
9
14
 
10
15
  describe('testing scaffolder', () => {
11
16
  const projectRoot = any.string();
12
17
  const dialect = any.word();
13
- const unitTestingDevDependencies = any.listOf(any.string);
14
- const unitTestNextSteps = any.listOf(any.simpleObject);
15
- const unitTestScripts = any.simpleObject();
16
- const unitTestFilesToIgnoreFromVcs = any.listOf(any.string);
17
- const unitTestDirectoriesToIgnoreFromVcs = any.listOf(any.string);
18
18
  const unitTestFrameworks = any.simpleObject();
19
+ const integrationTestFrameworks = any.simpleObject();
19
20
  const decisions = any.simpleObject();
21
+ const unitTestScaffoldResults = any.simpleObject();
22
+ const integrationTestScaffoldResults = any.simpleObject();
23
+ const mergedResults = any.simpleObject();
20
24
 
21
25
  beforeEach(() => {
22
26
  when(scaffoldUnitTesting)
23
27
  .calledWith({projectRoot, frameworks: unitTestFrameworks, decisions, dialect})
24
- .thenResolve({
25
- dependencies: {javascript: {development: unitTestingDevDependencies}},
26
- scripts: unitTestScripts,
27
- vcsIgnore: {files: unitTestFilesToIgnoreFromVcs, directories: unitTestDirectoriesToIgnoreFromVcs},
28
- nextSteps: unitTestNextSteps
29
- });
28
+ .thenResolve(unitTestScaffoldResults);
29
+ when(scaffoldIntegrationTesting)
30
+ .calledWith({projectRoot, frameworks: integrationTestFrameworks, decisions, dialect})
31
+ .thenResolve(integrationTestScaffoldResults);
30
32
  });
31
33
 
32
34
  it('should scaffold unit testing if the project will be unit test', async () => {
35
+ when(deepmerge.all)
36
+ .calledWith([
37
+ {dependencies: {javascript: {development: ['@travi/any']}}, eslint: {}},
38
+ unitTestScaffoldResults,
39
+ {}
40
+ ])
41
+ .thenReturn(mergedResults);
42
+
33
43
  expect(await scaffoldTesting({
34
44
  projectRoot,
35
- tests: {unit: true},
45
+ tests: {unit: true, integration: false},
36
46
  unitTestFrameworks,
47
+ integrationTestFrameworks,
37
48
  decisions,
38
49
  dialect
39
- })).toEqual({
40
- dependencies: {javascript: {development: ['@travi/any', ...unitTestingDevDependencies]}},
41
- scripts: unitTestScripts,
42
- vcsIgnore: {files: unitTestFilesToIgnoreFromVcs, directories: unitTestDirectoriesToIgnoreFromVcs},
43
- eslint: {},
44
- nextSteps: unitTestNextSteps
45
- });
50
+ })).toEqual(mergedResults);
46
51
  });
47
52
 
48
- it('should not scaffold unit testing if the project will not be unit tested', async () => {
49
- expect(await scaffoldTesting({projectRoot, tests: {unit: false, integration: true}}))
50
- .toEqual({dependencies: {javascript: {development: ['@travi/any']}}, eslint: {}});
53
+ it('should scaffold integration testing if the project will be integration tested', async () => {
54
+ when(deepmerge.all)
55
+ .calledWith([
56
+ {dependencies: {javascript: {development: ['@travi/any']}}, eslint: {}},
57
+ {},
58
+ integrationTestScaffoldResults
59
+ ])
60
+ .thenReturn(mergedResults);
61
+
62
+ expect(await scaffoldTesting({
63
+ projectRoot,
64
+ tests: {unit: false, integration: true},
65
+ unitTestFrameworks,
66
+ integrationTestFrameworks,
67
+ decisions,
68
+ dialect
69
+ })).toEqual(mergedResults);
70
+ });
71
+
72
+ it('should scaffold both unit testing and integration testing if both layers are planned', async () => {
73
+ when(deepmerge.all)
74
+ .calledWith([
75
+ {dependencies: {javascript: {development: ['@travi/any']}}, eslint: {}},
76
+ unitTestScaffoldResults,
77
+ integrationTestScaffoldResults
78
+ ])
79
+ .thenReturn(mergedResults);
80
+
81
+ expect(await scaffoldTesting({
82
+ projectRoot,
83
+ tests: {unit: true, integration: true},
84
+ unitTestFrameworks,
85
+ integrationTestFrameworks,
86
+ decisions,
87
+ dialect
88
+ })).toEqual(mergedResults);
51
89
  });
52
90
 
53
91
  it('should not scaffold testing if the project will not be tested', async () => {
92
+ when(deepmerge.all)
93
+ .calledWith([{dependencies: {javascript: {development: []}}, eslint: {}}, {}, {}])
94
+ .thenReturn(mergedResults);
95
+
54
96
  expect(await scaffoldTesting({projectRoot, tests: {unit: false, integration: false}}))
55
- .toEqual({dependencies: {javascript: {development: []}}, eslint: {}});
97
+ .toEqual(mergedResults);
56
98
  });
57
99
  });
@@ -12,11 +12,12 @@ export async function scaffoldVerification({
12
12
  registries,
13
13
  tests,
14
14
  unitTestFrameworks,
15
+ integrationTestFrameworks,
15
16
  decisions,
16
17
  pathWithinParent
17
18
  }) {
18
19
  const [testingResults, lintingResults, huskyResults] = await Promise.all([
19
- scaffoldTesting({projectRoot, tests, unitTestFrameworks, decisions, dialect}),
20
+ scaffoldTesting({projectRoot, tests, unitTestFrameworks, integrationTestFrameworks, decisions, dialect}),
20
21
  scaffoldLinting({projectRoot, packageManager, registries, vcs, pathWithinParent}),
21
22
  scaffoldHusky({projectRoot, packageManager, pathWithinParent})
22
23
  ]);
@@ -22,6 +22,7 @@ describe('verification scaffolder', () => {
22
22
  const vcs = any.simpleObject();
23
23
  const tests = any.simpleObject();
24
24
  const unitTestFrameworks = any.simpleObject();
25
+ const integrationTestFrameworks = any.simpleObject();
25
26
  const decisions = any.simpleObject();
26
27
  const lintingResults = any.simpleObject();
27
28
  const huskyResults = any.simpleObject();
@@ -34,7 +35,7 @@ describe('verification scaffolder', () => {
34
35
  .calledWith({projectRoot, vcs, packageManager, registries, pathWithinParent})
35
36
  .thenResolve(lintingResults);
36
37
  when(scaffoldTesting)
37
- .calledWith({projectRoot, tests, unitTestFrameworks, decisions, dialect})
38
+ .calledWith({projectRoot, tests, unitTestFrameworks, integrationTestFrameworks, decisions, dialect})
38
39
  .thenResolve(testingResults);
39
40
  when(scaffoldHusky).calledWith({projectRoot, packageManager, pathWithinParent}).thenResolve(huskyResults);
40
41
  when(deepmerge.all).calledWith([testingResults, lintingResults, huskyResults]).thenReturn(mergedResults);
@@ -46,6 +47,7 @@ describe('verification scaffolder', () => {
46
47
  tests,
47
48
  decisions,
48
49
  unitTestFrameworks,
50
+ integrationTestFrameworks,
49
51
  packageManager,
50
52
  registries,
51
53
  pathWithinParent