Skip to content

Commit

Permalink
Add multi-module build configs (for new packages) (#1197)
Browse files Browse the repository at this point in the history
  • Loading branch information
SBoudrias committed Mar 11, 2023
1 parent 3313d38 commit f908b73
Show file tree
Hide file tree
Showing 70 changed files with 701 additions and 112 deletions.
1 change: 1 addition & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ dist
.nyc_output
packages/*/node_modules
packages/*/__snapshots__
jest
5 changes: 3 additions & 2 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,17 @@
},
"overrides": [
{
"files": ["*.ts"],
"files": ["*.ts", "*.mts"],
"rules": {
// Disabled per typescript-eslint recommendation: https://github.com/typescript-eslint/typescript-eslint/blob/e26e43ffba96f6d46198b22f1c8dd5c814db2652/docs/getting-started/linting/FAQ.md#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors
"no-undef": "off",
"no-unused-vars": "off",
"n/no-missing-import": "off",
"@typescript-eslint/no-unused-vars": "error"
}
},
{
"files": ["test.js", "*.test.js", "**/test/**"],
"files": ["test.m?[tj]s", "*.test.m?[tj]s", "**/test/**"],
"env": {
"mocha": true,
"jest": true
Expand Down
25 changes: 25 additions & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import type { Config } from 'jest';

const config: Config = {
preset: 'ts-jest/presets/default-esm',
coverageDirectory: './coverage/',
collectCoverage: true,
resolver: '<rootDir>/jest/mjs-resolver.ts',
transform: {
'^.+\\.m?tsx?$': [
'ts-jest',
{
useESM: true,
},
],
},
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(jsx|js|tsx|ts|mts)$',
moduleNameMapper: {
'#ansi-styles': 'ansi-styles',
'#supports-color': 'supports-color',
},
extensionsToTreatAsEsm: ['.ts', '.mts'],
moduleFileExtensions: ['js', 'jsx', 'mjs', 'mts'],
};

export default config;
15 changes: 15 additions & 0 deletions jest/mjs-resolver.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
const mjsResolver = (path, options) => {
const mjsExtRegex = /\.mjs$/i;
const resolver = options.defaultResolver;
if (mjsExtRegex.test(path)) {
try {
return resolver(path.replace(mjsExtRegex, '.mts'), options);
} catch {
// Use default resolver
}
}

return resolver(path, options);
};

module.exports = mjsResolver;
27 changes: 3 additions & 24 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,9 @@
"scripts": {
"bootstrap": "lerna bootstrap --no-ci",
"publish": "lerna run tsc && lerna publish",
"pretest": "lerna run tsc && eslint . --ext .js --ext .ts",
"pretest": "lerna run tsc && eslint . --ext .js --ext .ts --ext .mts",
"jest": "NODE_OPTIONS=--experimental-vm-modules jest",
"test": "yarn jest && lerna exec npm test --scope inquirer",
"ts-node": "lerna run tsc && ts-node"
"test": "yarn jest && lerna exec npm test --scope inquirer"
},
"repository": {
"type": "git",
Expand All @@ -95,29 +94,9 @@
"prettier --write",
"git add"
],
"*.[jt]sx?": [
"*.m?[jt]sx?": [
"eslint --fix",
"git add"
]
},
"jest": {
"coverageDirectory": "./coverage/",
"collectCoverage": true,
"transform": {
"\\.[jt]sx?$": [
"ts-jest",
{
"useESM": true
}
]
},
"moduleNameMapper": {
"(.+)\\.js": "$1",
"#ansi-styles": "ansi-styles",
"#supports-color": "supports-color"
},
"extensionsToTreatAsEsm": [
".ts"
]
}
}
2 changes: 1 addition & 1 deletion packages/checkbox/demo.ts → packages/checkbox/demo.mts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import checkbox from './src/index.js';
import checkbox from './src/index.mjs';

(async () => {
let answer;
Expand Down
25 changes: 20 additions & 5 deletions packages/checkbox/package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
{
"name": "@inquirer/checkbox",
"version": "0.0.30-alpha.0",
"type": "module",
"engines": {
"node": ">=14.18.0"
},
"description": "Inquirer checkbox prompt",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"main": "./dist/cjs/index.js",
"typings": "./dist/cjs/types/index.d.mts",
"files": [
"dist/"
"dist/**/*"
],
"repository": {
"type": "git",
Expand Down Expand Up @@ -65,9 +64,25 @@
"figures": "^5.0.0"
},
"scripts": {
"tsc": "tsc"
"tsc": "yarn run clean && yarn run tsc:esm && yarn run tsc:cjs",
"clean": "rm -rf dist",
"tsc:esm": "tsc -p ./tsconfig.esm.json",
"tsc:cjs": "tsc -p ./tsconfig.cjs.json && yarn run fix-ext",
"fix-ext": "ts-node ../../tools/rename-ext.ts"
},
"publishConfig": {
"access": "public"
},
"exports": {
".": {
"import": {
"types": "./dist/esm/types/index.d.mts",
"default": "./dist/esm/index.mjs"
},
"require": {
"types": "./dist/cjs/types/index.d.mts",
"default": "./dist/cjs/index.js"
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ type Config<Value> = {
};

export default createPrompt(
<Value>(config: Config<Value>, done: (value: Array<Value>) => void): string => {
<Value extends unknown>(
config: Config<Value>,
done: (value: Array<Value>) => void
): string => {
const { prefix = usePrefix(), instructions } = config;
const paginator = useRef(new Paginator()).current;

Expand Down
15 changes: 15 additions & 0 deletions packages/checkbox/tsconfig.cjs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"extends": "../../tsconfig.json",
"include": [
"./src"
],
"compilerOptions": {
"lib": [
"ES6"
],
"target": "es6",
"moduleResolution": "node",
"outDir": "dist/cjs",
"declarationDir": "dist/cjs/types"
}
}
15 changes: 15 additions & 0 deletions packages/checkbox/tsconfig.esm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"extends": "../../tsconfig.json",
"include": [
"./src"
],
"compilerOptions": {
"lib": [
"ESNext"
],
"target": "es2022",
"moduleResolution": "nodenext",
"outDir": "dist/esm",
"declarationDir": "dist/esm/types"
}
}
2 changes: 1 addition & 1 deletion packages/confirm/demo.ts → packages/confirm/demo.mts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import confirm from './src/index.js';
import confirm from './src/index.mjs';

(async () => {
console.log(
Expand Down
25 changes: 20 additions & 5 deletions packages/confirm/package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
{
"name": "@inquirer/confirm",
"type": "module",
"version": "0.0.28-alpha.0",
"description": "Inquirer confirm prompt",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"main": "./dist/cjs/index.js",
"typings": "./dist/cjs/types/index.d.mts",
"files": [
"dist/"
"dist/**/*"
],
"repository": {
"type": "git",
Expand Down Expand Up @@ -61,12 +60,28 @@
"chalk": "^5.2.0"
},
"scripts": {
"tsc": "tsc"
"tsc": "yarn run clean && yarn run tsc:esm && yarn run tsc:cjs",
"clean": "rm -rf dist",
"tsc:esm": "tsc -p ./tsconfig.esm.json",
"tsc:cjs": "tsc -p ./tsconfig.cjs.json && yarn run fix-ext",
"fix-ext": "ts-node ../../tools/rename-ext.ts"
},
"publishConfig": {
"access": "public"
},
"engines": {
"node": ">=14.18.0"
},
"exports": {
".": {
"import": {
"types": "./dist/esm/types/index.d.mts",
"default": "./dist/esm/index.mjs"
},
"require": {
"types": "./dist/cjs/types/index.d.mts",
"default": "./dist/cjs/index.js"
}
}
}
}
File renamed without changes.
15 changes: 15 additions & 0 deletions packages/confirm/tsconfig.cjs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"extends": "../../tsconfig.json",
"include": [
"./src"
],
"compilerOptions": {
"lib": [
"ES6"
],
"target": "es6",
"moduleResolution": "node",
"outDir": "dist/cjs",
"declarationDir": "dist/cjs/types"
}
}
15 changes: 15 additions & 0 deletions packages/confirm/tsconfig.esm.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"extends": "../../tsconfig.json",
"include": [
"./src"
],
"compilerOptions": {
"lib": [
"ESNext"
],
"target": "es2022",
"moduleResolution": "nodenext",
"outDir": "dist/esm",
"declarationDir": "dist/esm/types"
}
}
27 changes: 21 additions & 6 deletions packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
{
"name": "@inquirer/core",
"type": "module",
"version": "0.0.30-alpha.0",
"engines": {
"node": ">=14.18.0"
},
"description": "Core Inquirer prompt API",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"main": "./dist/cjs/index.js",
"typings": "./dist/cjs/types/index.d.mts",
"files": [
"dist/"
"dist/**/*"
],
"repository": {
"type": "git",
Expand Down Expand Up @@ -75,9 +74,25 @@
"@jest/globals": "^29.5.0"
},
"scripts": {
"tsc": "tsc"
"tsc": "yarn run clean && yarn run tsc:esm && yarn run tsc:cjs",
"clean": "rm -rf dist",
"tsc:esm": "tsc -p ./tsconfig.esm.json",
"tsc:cjs": "tsc -p ./tsconfig.cjs.json && yarn run fix-ext",
"fix-ext": "ts-node ../../tools/rename-ext.ts"
},
"publishConfig": {
"access": "public"
},
"exports": {
".": {
"import": {
"types": "./dist/esm/types/index.d.mts",
"default": "./dist/esm/index.mjs"
},
"require": {
"types": "./dist/cjs/types/index.d.mts",
"default": "./dist/cjs/index.js"
}
}
}
}
}
10 changes: 5 additions & 5 deletions packages/core/src/index.ts → packages/core/src/index.mts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import readline from 'node:readline';
import type { Prompt } from '@inquirer/type';
import MuteStream from 'mute-stream';
import ScreenManager from './lib/screen-manager.js';
import { getPromptConfig } from './lib/options.js';
import ScreenManager from './lib/screen-manager.mjs';
import { getPromptConfig } from './lib/options.mjs';

export { usePrefix } from './lib/prefix.js';
export * from './lib/key.js';
export * from './lib/Paginator.js';
export { usePrefix } from './lib/prefix.mjs';
export * from './lib/key.mjs';
export * from './lib/Paginator.mjs';

export type InquirerReadline = readline.ReadLine & {
output: MuteStream;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import chalk from 'chalk';
import cliWidth from 'cli-width';
import { breakLines } from './utils.js';
import { breakLines } from './utils.mjs';

/**
* The paginator keeps track of a pointer index in a list and returns
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { AsyncPromptConfig, ResolvedPromptConfig } from '../index.js';
import type { AsyncPromptConfig, ResolvedPromptConfig } from '../index.mjs';

export async function getPromptConfig<In extends AsyncPromptConfig>(
option: In
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import chalk from 'chalk';
import spinners from 'cli-spinners';
import { useState, useEffect } from '../index.js';
import { useState, useEffect } from '../index.mjs';

const spinner = spinners.dots;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import ansiEscapes from 'ansi-escapes';
import type { InquirerReadline } from '../index.js';
import type { InquirerReadline } from '../index.mjs';

/**
* Move cursor left by `x`
Expand Down
Loading

0 comments on commit f908b73

Please sign in to comment.