diff --git a/package.json b/package.json index 1759fa5be..b7754f378 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "prerelease": "yarn run clean && yarn run setup && yarn run pack && yarn run check", "release": "yarn prerelease && beemo run-script lerna-release", "version": "yarn install && git add yarn.lock", - "pack": "NODE_ENV=production yarn run packemon build --addEngines --addExports --declaration=standard", + "pack": "NODE_ENV=production yarn run packemon build --addEngines --addExports --declaration", "packemon": "node ./packages/packemon/lib/bin.js" }, "workspaces": [ diff --git a/packages/packemon/CHANGELOG.md b/packages/packemon/CHANGELOG.md index 78da57b58..a210996ff 100644 --- a/packages/packemon/CHANGELOG.md +++ b/packages/packemon/CHANGELOG.md @@ -20,21 +20,16 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package packemon +## 1.14.1 - 2022-03-19 +#### 📦 Dependencies - -## 1.14.1 (2022-03-19) - -* deps: Update internals. ([3aba5ac](https://github.com/milesj/packemon/commit/3aba5ac)) -* deps(beemo): Update to v2 latest. ([d6aeac1](https://github.com/milesj/packemon/commit/d6aeac1)) -* deps(magic-string): Update to v0.26. ([dde44a1](https://github.com/milesj/packemon/commit/dde44a1)) -* deps(npm-packlist): Update to v4. ([263013e](https://github.com/milesj/packemon/commit/263013e)) -* deps(rollup-plugin-visualizer): Update to v5.6. ([0ed1404](https://github.com/milesj/packemon/commit/0ed1404)) -* deps(rollup): Update to v2.70. (#103) ([a1af6ef](https://github.com/milesj/packemon/commit/a1af6ef)), closes [#103](https://github.com/milesj/packemon/issues/103) -* tests: Fix failing visualizer test. ([828ea38](https://github.com/milesj/packemon/commit/828ea38)) - - - +- Update internals. ([3aba5ac](https://github.com/milesj/packemon/commit/3aba5ac)) +- **[beemo]** Update to v2 latest. ([d6aeac1](https://github.com/milesj/packemon/commit/d6aeac1)) +- **[magic-string]** Update to v0.26. ([dde44a1](https://github.com/milesj/packemon/commit/dde44a1)) +- **[npm-packlist]** Update to v4. ([263013e](https://github.com/milesj/packemon/commit/263013e)) +- **[rollup-plugin-visualizer]** Update to v5.6. ([0ed1404](https://github.com/milesj/packemon/commit/0ed1404)) +- **[rollup]** Update to v2.70. (#103) ([a1af6ef](https://github.com/milesj/packemon/commit/a1af6ef)), closes [#103](https://github.com/milesj/packemon/issues/103) ## 1.14.0 - 2022-02-23 diff --git a/packages/packemon/package.json b/packages/packemon/package.json index 302df76bc..7432bf44f 100644 --- a/packages/packemon/package.json +++ b/packages/packemon/package.json @@ -64,7 +64,6 @@ "@boost/event": "^3.0.1", "@boost/pipeline": "^3.2.2", "@boost/terminal": "^3.0.0", - "@microsoft/api-extractor": "^7.19.5", "@rollup/plugin-babel": "^5.3.1", "@rollup/plugin-commonjs": "^21.0.2", "@rollup/plugin-json": "^4.1.0", diff --git a/packages/packemon/src/Packemon.ts b/packages/packemon/src/Packemon.ts index 0b3fc409c..79a7473d2 100644 --- a/packages/packemon/src/Packemon.ts +++ b/packages/packemon/src/Packemon.ts @@ -244,7 +244,7 @@ export class Packemon { */ generateArtifacts( packages: Package[], - { declaration = 'none', filterFormats, filterPlatforms }: BuildOptions = {}, + { declaration, filterFormats, filterPlatforms }: BuildOptions = {}, ): Package[] { this.debug('Generating artifacts for packages'); @@ -294,10 +294,9 @@ export class Packemon { }); }); - if (declaration !== 'none') { + if (declaration) { const artifact = new TypesArtifact(pkg, Object.values(typesBuilds)); artifact.api = apiType; - artifact.declarationType = declaration; pkg.addArtifact(artifact); } diff --git a/packages/packemon/src/Project.ts b/packages/packemon/src/Project.ts index db64d5934..74c70d615 100644 --- a/packages/packemon/src/Project.ts +++ b/packages/packemon/src/Project.ts @@ -5,7 +5,6 @@ import semver from 'semver'; import { Memoize, Path, Project as BaseProject, VirtualPath } from '@boost/common'; import { getVersion } from './helpers/getVersion'; import { Package } from './Package'; -import { DeclarationType } from './types'; export class Project extends BaseProject { workspaces: string[] = []; @@ -39,11 +38,7 @@ export class Project extends BaseProject { return this.workspaces.length > 0; } - async generateDeclarations( - declarationType: DeclarationType, - pkgPath?: Path, - declarationConfig?: string, - ): Promise { + async generateDeclarations(pkgPath?: Path, declarationConfig?: string): Promise { if (this.buildPromise) { return this.buildPromise; } @@ -55,14 +50,6 @@ export class Project extends BaseProject { if (this.isWorkspacesEnabled()) { args.push('--build'); - // Since we collapse all DTS into a single file, - // we need to force build to overwrite the types, - // since they're not what the TS build expects. - if (declarationType) { - // TODO: This seems to always be required?? - args.push('--force'); - } - // Only build the specific project when applicable if (pkgPath) { let projectPath = this.root.relativeTo(pkgPath); diff --git a/packages/packemon/src/TypesArtifact.ts b/packages/packemon/src/TypesArtifact.ts index 57a816f5a..a5fb5f222 100644 --- a/packages/packemon/src/TypesArtifact.ts +++ b/packages/packemon/src/TypesArtifact.ts @@ -1,76 +1,20 @@ -import glob from 'fast-glob'; -import fs from 'fs-extra'; -import { Path, VirtualPath } from '@boost/common'; +import { VirtualPath } from '@boost/common'; import { createDebugger, Debugger } from '@boost/debug'; -import { Extractor, ExtractorConfig } from '@microsoft/api-extractor'; import { Artifact } from './Artifact'; import { removeSourcePath } from './helpers/removeSourcePath'; -import { - APIExtractorStructure, - BuildOptions, - DeclarationType, - PackageExports, - TSConfigStructure, - TypesBuild, -} from './types'; -import { apiExtractorConfig } from './typescript/apiExtractorConfig'; +import { BuildOptions, PackageExports, TSConfigStructure, TypesBuild } from './types'; export class TypesArtifact extends Artifact { - declarationType: DeclarationType = 'standard'; - protected debug!: Debugger; override startup() { this.debug = createDebugger(['packemon', 'types', this.package.getSlug(), this.getLabel()]); } - override async cleanup(): Promise { - // API extractor config files - await this.removeFiles( - this.builds.map(({ outputName }) => this.getApiExtractorConfigPath(outputName)), - ); - } - async build(options: BuildOptions): Promise { - this.debug('Building "%s" types artifact with TypeScript', this.declarationType); - - const tsConfig = this.loadTsconfigJson(); - - // Compile the current projects declarations - this.debug('Generating declarations at the root using `tsc`'); - - await this.package.project.generateDeclarations( - this.declarationType, - this.package.path, - options.declarationConfig, - ); - - // Combine all DTS files into a single file for each input - if (this.declarationType === 'api') { - this.debug('Combining declarations into a single API declaration file'); - - // Resolved compiler options use absolute paths, so we should match - let dtsBuildPath = this.package.path.append('dts'); - - // Workspaces use the tsconfig setting, while non-workspaces is hard-coded to "dts" - if (tsConfig && this.package.project.isWorkspacesEnabled()) { - dtsBuildPath = new Path( - tsConfig.options.declarationDir ?? tsConfig.options.outDir ?? dtsBuildPath, - ); - } + this.debug('Building types artifact with TypeScript'); - await Promise.all( - this.builds.map(({ inputFile, outputName }) => - this.generateApiDeclaration(outputName, inputFile, dtsBuildPath), - ), - ); - - // Remove the TS output directory to reduce package size. - // We do this in the background to speed up the CLI process! - this.debug('Removing old and unnecessary declarations in the background'); - - void this.removeDeclarationBuild(dtsBuildPath); - } + await this.package.project.generateDeclarations(this.package.path, options.declarationConfig); } findEntryPoint(outputName: string): string { @@ -80,11 +24,7 @@ export class TypesArtifact extends Artifact { return ''; } - // When not generating individual API declarations, we need to mirror the source structure - const entry = - this.declarationType === 'standard' ? removeSourcePath(output.inputFile) : outputName; - - return `./${new VirtualPath('dts', entry)}.d.ts`; + return `./${new VirtualPath('dts', removeSourcePath(output.inputFile))}.d.ts`; } getLabel(): string { @@ -98,7 +38,7 @@ export class TypesArtifact extends Artifact { getPackageExports(): PackageExports { const exportMap: PackageExports = {}; - if (this.api === 'private' || this.declarationType === 'api') { + if (this.api === 'private') { this.builds.forEach(({ outputName }) => { exportMap[outputName === 'index' ? '.' : `./${outputName}`] = { types: this.findEntryPoint(outputName), @@ -116,117 +56,9 @@ export class TypesArtifact extends Artifact { return `types (${this.getLabel()})`; } - protected async generateApiDeclaration( - outputName: string, - inputFile: string, - dtsBuildPath: Path, - ): Promise { - const dtsEntryPoint = dtsBuildPath.append(`${removeSourcePath(inputFile)}.d.ts`); - - if (!dtsEntryPoint.exists()) { - console.warn( - `Unable to generate declaration for "${outputName}". Declaration entry point "${dtsEntryPoint}" does not exist.`, - ); - - return; - } - - // Create a fake config file - const configPath = this.getApiExtractorConfigPath(outputName).path(); - const config: APIExtractorStructure = { - ...apiExtractorConfig, - projectFolder: VirtualPath.create(this.package.path).path(), - mainEntryPointFilePath: VirtualPath.create(dtsEntryPoint).path(), - dtsRollup: { - ...apiExtractorConfig.dtsRollup, - untrimmedFilePath: `/dts/${outputName}.d.ts`, - }, - }; - - // Create the config file within the package - await fs.writeJson(configPath, config); - - // Extract all DTS into a single file - const result = Extractor.invoke(ExtractorConfig.loadFileAndPrepare(configPath), { - localBuild: __DEV__, - messageCallback: /* istanbul ignore next */ (warn) => { - // eslint-disable-next-line no-param-reassign - warn.handled = true; - - if ( - warn.messageId === 'ae-missing-release-tag' || - warn.messageId === 'console-preamble' || - warn.logLevel === 'verbose' - ) { - return; - } - - let level = 'info'; - - if (warn.logLevel === 'error') { - level = 'error'; - } else if (warn.logLevel === 'warning') { - level = 'warn'; - } - - this.logWithSource(warn.text, level as 'info', { - id: warn.messageId, - output: `${this.package.getSlug()}:${outputName}`, - sourceColumn: warn.sourceFileColumn, - sourceFile: warn.sourceFilePath, - sourceLine: warn.sourceFileLine, - }); - }, - }); - - if (!result.succeeded) { - console.error( - `Generated "${outputName}" types completed with ${result.errorCount} errors and ${result.warningCount} warnings!`, - ); - } - } - - protected getApiExtractorConfigPath(outputName: string): Path { - return this.package.path.append(`api-extractor-${outputName}.json`); - } - // This method only exists so that we can mock in tests. // istanbul ignore next protected loadTsconfigJson(): TSConfigStructure | undefined { return this.package.tsconfigJson; } - - /** - * This method is unfortunate but necessary if TypeScript is using project references. - * When using references, TS uses the `types` (or `typings`) field to determine types - * across packages. But since we set that field to "dts/index.d.ts" for distributing - * only the types necessary, it breaks the `tsc --build` unless the `outDir` is "dts". - * - * But when this happens, we have all the generated `*.d.ts` and `*.js` files in the "dts" - * folder, which we do not want to distribute. So we need to manually delete all of them - * except for the output files we created above. - * - * Not sure of a workaround or better solution :( - */ - protected async removeDeclarationBuild(dtsBuildPath: Path) { - const outputs = new Set(this.builds.map(({ outputName }) => `${outputName}.d.ts`)); - - // Remove all non-output files - const files = await glob('*', { - cwd: dtsBuildPath.path(), - onlyFiles: true, - }); - - // Remove all folders - const folders = await glob('*', { - cwd: dtsBuildPath.path(), - onlyDirectories: true, - }); - - await Promise.all( - [...files, ...folders] - .filter((file) => !outputs.has(file)) - .map((file) => fs.remove(dtsBuildPath.append(file).path())), - ); - } } diff --git a/packages/packemon/src/commands/Build.tsx b/packages/packemon/src/commands/Build.tsx index 3436bd823..1ec6c5f7b 100644 --- a/packages/packemon/src/commands/Build.tsx +++ b/packages/packemon/src/commands/Build.tsx @@ -1,6 +1,6 @@ import os from 'os'; import { Arg, Config } from '@boost/cli'; -import { AnalyzeType, BuildOptions, DeclarationType } from '../types'; +import { AnalyzeType, BuildOptions } from '../types'; import { BaseCommand } from './Base'; @Config('build', 'Build standardized packages for distribution') @@ -22,10 +22,8 @@ export class BuildCommand extends BaseCommand> { @Arg.Number('Number of builds to run in parallel') concurrency: number = os.cpus().length; - @Arg.String('Generate TypeScript declarations for each package', { - choices: ['none', 'standard', 'api'], - }) - declaration: DeclarationType = 'none'; + @Arg.Flag('Generate TypeScript declarations for each package') + declaration: boolean = false; @Arg.String('Path to a custom `tsconfig` for declaration building') declarationConfig: string = 'tsconfig.json'; diff --git a/packages/packemon/src/schemas.ts b/packages/packemon/src/schemas.ts index 3320da55a..c93c791d4 100644 --- a/packages/packemon/src/schemas.ts +++ b/packages/packemon/src/schemas.ts @@ -16,7 +16,6 @@ import { ApiType, BrowserFormat, BuildOptions, - DeclarationType, Format, NativeFormat, NodeFormat, @@ -76,7 +75,7 @@ export const buildBlueprint: Blueprint = { addFiles: bool(), analyze: string('none').oneOf(['none', 'sunburst', 'treemap', 'network']), concurrency: number(1).gte(1), - declaration: string('none').oneOf(['none', 'standard', 'api']), + declaration: bool(), declarationConfig: string(), filter: string(), filterFormats: string(), diff --git a/packages/packemon/src/types.ts b/packages/packemon/src/types.ts index 3025f22ba..7a3a94004 100644 --- a/packages/packemon/src/types.ts +++ b/packages/packemon/src/types.ts @@ -54,8 +54,6 @@ export type ApiType = 'private' | 'public'; export type AnalyzeType = 'network' | 'none' | 'sunburst' | 'treemap'; -export type DeclarationType = 'api' | 'none' | 'standard'; - // PACKAGES export type InputMap = Record; @@ -123,7 +121,7 @@ export interface BuildOptions extends FilterOptions { addFiles?: boolean; analyze?: AnalyzeType; concurrency?: number; - declaration?: DeclarationType; + declaration?: boolean; declarationConfig?: string; loadConfigs?: boolean; stamp?: boolean; @@ -233,11 +231,3 @@ export interface TSConfigStructure { strict?: boolean; }; } - -export interface APIExtractorStructure { - projectFolder: string; - mainEntryPointFilePath: string; - dtsRollup: { - untrimmedFilePath: string; - }; -} diff --git a/packages/packemon/src/typescript/apiExtractorConfig.ts b/packages/packemon/src/typescript/apiExtractorConfig.ts deleted file mode 100644 index 573037782..000000000 --- a/packages/packemon/src/typescript/apiExtractorConfig.ts +++ /dev/null @@ -1,44 +0,0 @@ -export const apiExtractorConfig = { - $schema: - 'https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json', - projectFolder: '.', - mainEntryPointFilePath: '/dts/index.d.ts', - bundledPackages: [], - compiler: { - tsconfigFilePath: '/tsconfig.json', - }, - apiReport: { - enabled: false, - }, - docModel: { - enabled: false, - }, - dtsRollup: { - enabled: true, - untrimmedFilePath: '/dts/index.d.ts', - omitTrimmingComments: false, - }, - tsdocMetadata: { - enabled: false, - }, - messages: { - compilerMessageReporting: { - default: { - logLevel: 'warning', - }, - }, - extractorMessageReporting: { - default: { - logLevel: 'warning', - }, - 'ae-missing-release-tag': { - logLevel: 'none', - }, - }, - tsdocMessageReporting: { - default: { - logLevel: 'warning', - }, - }, - }, -}; diff --git a/packages/packemon/templates/monorepo/package.json b/packages/packemon/templates/monorepo/package.json index c926ae842..f5f68ee23 100644 --- a/packages/packemon/templates/monorepo/package.json +++ b/packages/packemon/templates/monorepo/package.json @@ -9,7 +9,7 @@ "coverage": "yarn run test --coverage", "format": "prettier --write ./", "lint": "eslint --cache --fix ./", - "pack": "NODE_ENV=production packemon pack --addEngines --declaration=standard", + "pack": "NODE_ENV=production packemon pack --addEngines --declaration", "prelease": "yarn run pack && yarn run check", "release": "echo 'Customize your own release script!'", "test": "jest", diff --git a/packages/packemon/templates/polyrepo/package.json b/packages/packemon/templates/polyrepo/package.json index 539c8d9db..72cb6b461 100644 --- a/packages/packemon/templates/polyrepo/package.json +++ b/packages/packemon/templates/polyrepo/package.json @@ -8,7 +8,7 @@ "coverage": "yarn run test --coverage", "format": "prettier --write ./src ./tests", "lint": "eslint --cache --fix ./src ./tests", - "pack": "NODE_ENV=production packemon pack --addEngines --declaration=standard", + "pack": "NODE_ENV=production packemon pack --addEngines --declaration", "prelease": "yarn run pack && yarn run check", "release": "echo 'Customize your own release script!'", "test": "jest", diff --git a/packages/packemon/tests/Packemon.test.ts b/packages/packemon/tests/Packemon.test.ts index 505d5cf4f..ff5ca4496 100644 --- a/packages/packemon/tests/Packemon.test.ts +++ b/packages/packemon/tests/Packemon.test.ts @@ -59,7 +59,7 @@ describe('Packemon', () => { addFiles: false, analyze: 'none', concurrency: 3, - declaration: 'none', + declaration: false, declarationConfig: '', filter: '', filterFormats: '', @@ -362,13 +362,12 @@ describe('Packemon', () => { ]); }); - it('generates "standard" type artifacts for each config in a package', async () => { + it('generates type artifacts for each config in a package', async () => { const packages = await packemon.loadConfiguredPackages(); - packemon.generateArtifacts(packages, { declaration: 'standard' }); + packemon.generateArtifacts(packages, { declaration: true }); expect(packages[0].artifacts).toHaveLength(3); - expect((packages[0].artifacts[2] as TypesArtifact).declarationType).toBe('standard'); expect((packages[0].artifacts[2] as TypesArtifact).builds).toEqual([ { inputFile: 'src/index.ts', @@ -377,7 +376,6 @@ describe('Packemon', () => { ]); expect(packages[1].artifacts).toHaveLength(2); - expect((packages[1].artifacts[1] as TypesArtifact).declarationType).toBe('standard'); expect((packages[1].artifacts[1] as TypesArtifact).builds).toEqual([ { inputFile: './src/core.ts', @@ -386,40 +384,6 @@ describe('Packemon', () => { ]); expect(packages[2].artifacts).toHaveLength(2); - expect((packages[2].artifacts[1] as TypesArtifact).declarationType).toBe('standard'); - expect((packages[2].artifacts[1] as TypesArtifact).builds).toEqual([ - { - inputFile: 'src/index.ts', - outputName: 'index', - }, - ]); - }); - - it('generates "api" type artifacts for each config in a package', async () => { - const packages = await packemon.loadConfiguredPackages(); - - packemon.generateArtifacts(packages, { declaration: 'api' }); - - expect(packages[0].artifacts).toHaveLength(3); - expect((packages[0].artifacts[2] as TypesArtifact).declarationType).toBe('api'); - expect((packages[0].artifacts[2] as TypesArtifact).builds).toEqual([ - { - inputFile: 'src/index.ts', - outputName: 'index', - }, - ]); - - expect(packages[1].artifacts).toHaveLength(2); - expect((packages[1].artifacts[1] as TypesArtifact).declarationType).toBe('api'); - expect((packages[1].artifacts[1] as TypesArtifact).builds).toEqual([ - { - inputFile: './src/core.ts', - outputName: 'core', - }, - ]); - - expect(packages[2].artifacts).toHaveLength(2); - expect((packages[2].artifacts[1] as TypesArtifact).declarationType).toBe('api'); expect((packages[2].artifacts[1] as TypesArtifact).builds).toEqual([ { inputFile: 'src/index.ts', diff --git a/packages/packemon/tests/Project.test.ts b/packages/packemon/tests/Project.test.ts index 10719ab70..a4d17675d 100644 --- a/packages/packemon/tests/Project.test.ts +++ b/packages/packemon/tests/Project.test.ts @@ -64,7 +64,7 @@ describe('Project', () => { it('generates declarations with `tsc`', async () => { const project = new Project(getFixturePath('workspace-private')); - await project.generateDeclarations('standard'); + await project.generateDeclarations(); expect(execa).toHaveBeenCalledWith( 'tsc', @@ -80,9 +80,9 @@ describe('Project', () => { const project = new Project(getFixturePath('workspaces')); project.workspaces = ['packages/*']; - await project.generateDeclarations('standard'); + await project.generateDeclarations(); - expect(execa).toHaveBeenCalledWith('tsc', ['--build', '--force'], { + expect(execa).toHaveBeenCalledWith('tsc', ['--build'], { cwd: project.root.path(), preferLocal: true, }); @@ -92,9 +92,9 @@ describe('Project', () => { const project = new Project(getFixturePath('workspaces')); project.workspaces = ['packages/*']; - await project.generateDeclarations('standard', project.root.append('packages/foo')); + await project.generateDeclarations(project.root.append('packages/foo')); - expect(execa).toHaveBeenCalledWith('tsc', ['--build', '--force', 'packages/foo'], { + expect(execa).toHaveBeenCalledWith('tsc', ['--build', 'packages/foo'], { cwd: project.root.path(), preferLocal: true, }); @@ -108,9 +108,9 @@ describe('Project', () => { const project = new Project(getFixturePath('workspace-private')); await Promise.all([ - project.generateDeclarations('standard'), - project.generateDeclarations('standard'), - project.generateDeclarations('standard'), + project.generateDeclarations(), + project.generateDeclarations(), + project.generateDeclarations(), ]); expect(execa).toHaveBeenCalledTimes(1); @@ -119,7 +119,7 @@ describe('Project', () => { it('can pass a custom tsconfig', async () => { const project = new Project(getFixturePath('workspace-private')); - await project.generateDeclarations('standard', undefined, 'tsconfig.custom.json'); + await project.generateDeclarations(undefined, 'tsconfig.custom.json'); expect(execa).toHaveBeenCalledWith( 'tsc', @@ -144,40 +144,23 @@ describe('Project', () => { project.workspaces = ['packages/*']; await project.generateDeclarations( - 'standard', project.root.append('packages/foo'), 'tsconfig.custom.json', ); - expect(execa).toHaveBeenCalledWith( - 'tsc', - ['--build', '--force', 'packages/foo/tsconfig.custom.json'], - { - cwd: project.root.path(), - preferLocal: true, - }, - ); - }); - - it('does not pass custom tsconfig when using workspaces and no package', async () => { - const project = new Project(getFixturePath('workspaces')); - project.workspaces = ['packages/*']; - - await project.generateDeclarations('standard', undefined, 'tsconfig.custom.json'); - - expect(execa).toHaveBeenCalledWith('tsc', ['--build', '--force'], { + expect(execa).toHaveBeenCalledWith('tsc', ['--build', 'packages/foo/tsconfig.custom.json'], { cwd: project.root.path(), preferLocal: true, }); }); - it('force builds when type is api', async () => { + it('does not pass custom tsconfig when using workspaces and no package', async () => { const project = new Project(getFixturePath('workspaces')); project.workspaces = ['packages/*']; - await project.generateDeclarations('api'); + await project.generateDeclarations(undefined, 'tsconfig.custom.json'); - expect(execa).toHaveBeenCalledWith('tsc', ['--build', '--force'], { + expect(execa).toHaveBeenCalledWith('tsc', ['--build'], { cwd: project.root.path(), preferLocal: true, }); diff --git a/packages/packemon/tests/TypesArtifact.test.ts b/packages/packemon/tests/TypesArtifact.test.ts index f7a7a990d..4f9670a88 100644 --- a/packages/packemon/tests/TypesArtifact.test.ts +++ b/packages/packemon/tests/TypesArtifact.test.ts @@ -1,15 +1,10 @@ -import fs from 'fs-extra'; import { Path } from '@boost/common'; -import { mockNormalizedFilePath } from '@boost/common/test'; import { getFixturePath } from '@boost/test-utils'; -import { Extractor } from '@microsoft/api-extractor'; import { Package } from '../src/Package'; import { Project } from '../src/Project'; import { TypesArtifact } from '../src/TypesArtifact'; -import { delay, mockSpy } from './helpers'; jest.mock('fs-extra'); -jest.mock('@microsoft/api-extractor'); describe('TypesArtifact', () => { const fixturePath = new Path(getFixturePath('project')); @@ -50,237 +45,38 @@ describe('TypesArtifact', () => { expect(artifact.toString()).toBe('types (dts)'); }); - describe('cleanup()', () => { - it('deletes API config files for each build', async () => { - await artifact.cleanup(); - - expect(fs.remove).toHaveBeenCalledWith(fixturePath.append('api-extractor-index.json').path()); - expect(fs.remove).toHaveBeenCalledWith(fixturePath.append('api-extractor-test.json').path()); - }); - }); - describe('build()', () => { let declSpy: jest.SpyInstance; - let apiSpy: jest.SpyInstance; beforeEach(() => { declSpy = jest .spyOn(artifact.package.project, 'generateDeclarations') .mockImplementation(() => Promise.resolve()); - - // @ts-expect-error Allow access - apiSpy = jest.spyOn(artifact, 'generateApiDeclaration'); - - mockSpy(Extractor.invoke).mockImplementation(() => ({ succeeded: true })); }); afterEach(() => { declSpy.mockRestore(); - apiSpy.mockRestore(); }); - describe('standard types', () => { - it('generates types using `tsc`', async () => { - await artifact.build({}); + it('generates types using `tsc`', async () => { + await artifact.build({}); - expect(declSpy).toHaveBeenCalled(); - expect(apiSpy).not.toHaveBeenCalled(); - }); - - it('runs the same `tsc` when using workspaces', async () => { - artifact.package.project.workspaces = ['packages/*']; - - await artifact.build({}); - - expect(declSpy).toHaveBeenCalled(); - expect(apiSpy).not.toHaveBeenCalled(); - }); + expect(declSpy).toHaveBeenCalled(); }); - describe('api types', () => { - beforeEach(() => { - artifact.declarationType = 'api'; - }); - - it('generates a single file using api extractor', async () => { - await artifact.build({}); - - expect(declSpy).toHaveBeenCalled(); - expect(apiSpy).toHaveBeenCalledWith( - 'index', - 'src/index.ts', - mockNormalizedFilePath(fixturePath.append('dts')), - ); - expect(apiSpy).toHaveBeenCalledWith( - 'test', - 'src/sub/test.ts', - mockNormalizedFilePath(fixturePath.append('dts')), - ); - expect(Extractor.invoke).toHaveBeenCalledTimes(2); - }); - - it('logs a warning if dts file does not exist', async () => { - artifact.builds.push({ - inputFile: 'src/missing.ts', - outputName: 'missing', - }); - - await artifact.build({}); - - expect(warnSpy).toHaveBeenCalledWith( - `Unable to generate declaration for "missing". Declaration entry point "${fixturePath - .append('dts/missing.d.ts') - .path()}" does not exist.`, - ); - expect(fs.writeJson).not.toHaveBeenCalledWith( - fixturePath.append('api-extractor-missing.json').path(), - expect.any(Object), - ); - expect(Extractor.invoke).not.toHaveBeenCalledTimes(3); - }); - - it('creates api extractor config files for each output', async () => { - await artifact.build({}); - - expect(fs.writeJson).toHaveBeenCalledWith( - fixturePath.append('api-extractor-index.json').path(), - expect.objectContaining({ - projectFolder: artifact.package.path.path(), - mainEntryPointFilePath: fixturePath.append('dts/index.d.ts').path(), - dtsRollup: expect.objectContaining({ - untrimmedFilePath: '/dts/index.d.ts', - }), - }), - ); - expect(fs.writeJson).toHaveBeenCalledWith( - fixturePath.append('api-extractor-test.json').path(), - expect.objectContaining({ - projectFolder: artifact.package.path.path(), - mainEntryPointFilePath: fixturePath.append('dts/sub/test.d.ts').path(), - dtsRollup: expect.objectContaining({ - untrimmedFilePath: '/dts/test.d.ts', - }), - }), - ); - }); - - it('removes generated declarations that arent the output files', async () => { - await artifact.build({}); + it('runs the same `tsc` when using workspaces', async () => { + artifact.package.project.workspaces = ['packages/*']; - // Remove happens in the background so we must wait manually - await delay(250); + await artifact.build({}); - expect(fs.remove).not.toHaveBeenCalledWith(fixturePath.append('dts/index.d.ts').path()); - expect(fs.remove).toHaveBeenCalledWith(fixturePath.append('dts/extra.d.ts').path()); - expect(fs.remove).not.toHaveBeenCalledWith(fixturePath.append('dts/test.d.ts').path()); - }); - - it('logs an error if extractor fails', async () => { - const spy = jest.spyOn(console, 'error').mockImplementation(); - - mockSpy(Extractor.invoke).mockImplementation(() => ({ - succeeded: false, - errorCount: 1, - warningCount: 3, - })); - - await artifact.build({}); - - expect(spy).toHaveBeenCalledWith( - 'Generated "index" types completed with 1 errors and 3 warnings!', - ); - spy.mockRestore(); - }); - - describe('workspaces', () => { - beforeEach(() => { - artifact.package.project.workspaces = ['packages/*']; - }); - - it('uses `declarationDir` from compiler options', async () => { - tsconfigSpy.mockImplementation( - () => - ({ - options: { - declarationDir: 'declarationDir', - outDir: 'outDir', - }, - } as any), - ); - - await artifact.build({}); - - expect(apiSpy).toHaveBeenCalledWith( - 'index', - 'src/index.ts', - mockNormalizedFilePath('declarationDir'), - ); - expect(apiSpy).toHaveBeenCalledWith( - 'test', - 'src/sub/test.ts', - mockNormalizedFilePath('declarationDir'), - ); - }); - - it('uses `outDir` from compiler options if `declarationDir` is not defined', async () => { - tsconfigSpy.mockImplementation( - () => - ({ - options: { - outDir: 'outDir', - }, - } as any), - ); - - await artifact.build({}); - - expect(apiSpy).toHaveBeenCalledWith( - 'index', - 'src/index.ts', - mockNormalizedFilePath('outDir'), - ); - expect(apiSpy).toHaveBeenCalledWith( - 'test', - 'src/sub/test.ts', - mockNormalizedFilePath('outDir'), - ); - }); - - it('uses hard-coded dts folder if neither compiler option is defined', async () => { - await artifact.build({}); - - expect(apiSpy).toHaveBeenCalledWith( - 'index', - 'src/index.ts', - mockNormalizedFilePath(fixturePath.append('dts')), - ); - expect(apiSpy).toHaveBeenCalledWith( - 'test', - 'src/sub/test.ts', - mockNormalizedFilePath(fixturePath.append('dts')), - ); - }); - }); + expect(declSpy).toHaveBeenCalled(); }); }); describe('findEntryPoint()', () => { - describe('standard types', () => { - it('returns mirrored source path', () => { - artifact.declarationType = 'standard'; - - expect(artifact.findEntryPoint('index')).toBe('./dts/index.d.ts'); - expect(artifact.findEntryPoint('test')).toBe('./dts/sub/test.d.ts'); - }); - }); - - describe('api types', () => { - it('returns top level output file', () => { - artifact.declarationType = 'api'; - - expect(artifact.findEntryPoint('index')).toBe('./dts/index.d.ts'); - expect(artifact.findEntryPoint('test')).toBe('./dts/test.d.ts'); - }); + it('returns mirrored source path', () => { + expect(artifact.findEntryPoint('index')).toBe('./dts/index.d.ts'); + expect(artifact.findEntryPoint('test')).toBe('./dts/sub/test.d.ts'); }); }); diff --git a/website/docs/build.md b/website/docs/build.md index a60eac56b..4cc1079af 100644 --- a/website/docs/build.md +++ b/website/docs/build.md @@ -35,12 +35,7 @@ Build supports the following command line options. - `treemap` - Displays hierarchy levels as top-level and nested rectangles of varying size. - `network` - Displays files as nodes with the relationship between files. - `--concurrency` - Number of builds to run in parallel. Defaults to operating system CPU count. -- `--declaration` - Generate TypeScript declarations for each package. Accepts one of the following - values. - - `standard` - Generates multiple `d.ts` files with `tsc`. - - `api` - Generates a single `d.ts` file for each input. Uses - [@microsoft/api-extractor](https://www.npmjs.com/package/@microsoft/api-extractor) to _only_ - generate the public API. _(NOTE: this is quite slow)_ +- `--declaration` - Generate TypeScript declarations for each package. - `--declarationConfig` - Path to a custom `tsconfig` for declaration building. - `--filter` - Filter packages to build based on their name in `package.json`. - `--formats`, `-f` - Only generate specific output `format`s. diff --git a/website/docs/install.mdx b/website/docs/install.mdx index eb6995893..2871a6716 100644 --- a/website/docs/install.mdx +++ b/website/docs/install.mdx @@ -101,7 +101,7 @@ the following `build` (for development) and `pack` (for production) scripts. "name": "package", "scripts": { "build": "packemon build", - "pack": "NODE_ENV=production packemon pack --addEngines --addFiles --declaration=standard" + "pack": "NODE_ENV=production packemon pack --addEngines --addFiles --declaration" } } ``` diff --git a/website/docs/migrate/2.0.md b/website/docs/migrate/2.0.md new file mode 100644 index 000000000..97831df03 --- /dev/null +++ b/website/docs/migrate/2.0.md @@ -0,0 +1,22 @@ +--- +title: 2.0 migration +sidebar_label: '2.0' +--- + +## Removed `api` support from `--declaration` + +We removed support for the `api` option, which uses +[@microsoft/api-extractor](https://api-extractor.com/) to generate a single `.d.ts` file. This +feature was rarely used, overcomplicated the implementation, and had weird edge cases that we +couldn't solve on our end. + +Because of this change, the `--declaration` option on the command line is now a flag with no value. + +```shell +# Before +--declaration standard +--declaration api + +# After +--declaration +``` diff --git a/website/docs/pack.md b/website/docs/pack.md index ea56ab1d4..820035778 100644 --- a/website/docs/pack.md +++ b/website/docs/pack.md @@ -13,7 +13,7 @@ aborted. ```json title="package.json" { "scripts": { - "pack": "NODE_ENV=production packemon pack --addEngines --declaration=api", + "pack": "NODE_ENV=production packemon pack --addEngines --declaration", "release": "yarn run pack && yarn publish" } } diff --git a/website/sidebars.js b/website/sidebars.js index 9a9433f6e..8a9207e6a 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -15,11 +15,15 @@ module.exports = { items: ['build', 'clean', 'files', 'init', 'pack', 'scaffold', 'validate', 'watch'], }, 'advanced', + { + type: 'category', + label: 'Migration', + items: ['migrate/2.0'], + }, { type: 'link', label: 'Changelog', href: 'https://github.com/milesj/packemon/releases', - // href: 'https://github.com/milesj/packemon/blob/master/CHANGELOG.md', }, ], }; diff --git a/yarn.lock b/yarn.lock index 167b9a268..8b1eca979 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3822,58 +3822,6 @@ __metadata: languageName: node linkType: hard -"@microsoft/api-extractor-model@npm:7.15.4": - version: 7.15.4 - resolution: "@microsoft/api-extractor-model@npm:7.15.4" - dependencies: - "@microsoft/tsdoc": 0.13.2 - "@microsoft/tsdoc-config": ~0.15.2 - "@rushstack/node-core-library": 3.45.1 - checksum: 9e4cce0d2575da97413c7df8a26da39ed1d73e654035f811cbc001d231650647dd0692881f46cdfd3a08b53c89589960464347050953a8dfe8f4172367104273 - languageName: node - linkType: hard - -"@microsoft/api-extractor@npm:^7.19.5": - version: 7.19.5 - resolution: "@microsoft/api-extractor@npm:7.19.5" - dependencies: - "@microsoft/api-extractor-model": 7.15.4 - "@microsoft/tsdoc": 0.13.2 - "@microsoft/tsdoc-config": ~0.15.2 - "@rushstack/node-core-library": 3.45.1 - "@rushstack/rig-package": 0.3.8 - "@rushstack/ts-command-line": 4.10.7 - colors: ~1.2.1 - lodash: ~4.17.15 - resolve: ~1.17.0 - semver: ~7.3.0 - source-map: ~0.6.1 - typescript: ~4.5.2 - bin: - api-extractor: bin/api-extractor - checksum: 96fa1cff560f3e8c86db89389eb7a966657164b29532d0d8973ad5313dd375d1271b1eacec66e6a449b761e79df874be96cf7dd508dc19a5a3bd30c31e5f68aa - languageName: node - linkType: hard - -"@microsoft/tsdoc-config@npm:~0.15.2": - version: 0.15.2 - resolution: "@microsoft/tsdoc-config@npm:0.15.2" - dependencies: - "@microsoft/tsdoc": 0.13.2 - ajv: ~6.12.6 - jju: ~1.4.0 - resolve: ~1.19.0 - checksum: 85eb7808d4e4541199437f39e6aed235aaece0a6d0fd05c0b923067d494d20baca483fc6871880d09630f6d4e62b8bb99af0fde503eb2b2ded1b7ae5f74dfaf3 - languageName: node - linkType: hard - -"@microsoft/tsdoc@npm:0.13.2": - version: 0.13.2 - resolution: "@microsoft/tsdoc@npm:0.13.2" - checksum: 70948c5647495ef99752ff500e0f612c1fcf3476ea663ace19937e4d2f86fd78f0ad92ea5876d67e06b421f347d571b3d9e49c444935dc267768d5afd15581f8 - languageName: node - linkType: hard - "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": version: 2.1.8-no-fsevents.3 resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" @@ -5109,45 +5057,6 @@ __metadata: languageName: node linkType: hard -"@rushstack/node-core-library@npm:3.45.1": - version: 3.45.1 - resolution: "@rushstack/node-core-library@npm:3.45.1" - dependencies: - "@types/node": 12.20.24 - colors: ~1.2.1 - fs-extra: ~7.0.1 - import-lazy: ~4.0.0 - jju: ~1.4.0 - resolve: ~1.17.0 - semver: ~7.3.0 - timsort: ~0.3.0 - z-schema: ~5.0.2 - checksum: 2001e1acda14e75dc3cc4aa988c2ec9609c2ed7a59ef27a5b97ce9a0380c534ad9eb96074821a52e52e34c06cc1f4a011c15f6e5d17bbf830430e739c6d185ce - languageName: node - linkType: hard - -"@rushstack/rig-package@npm:0.3.8": - version: 0.3.8 - resolution: "@rushstack/rig-package@npm:0.3.8" - dependencies: - resolve: ~1.17.0 - strip-json-comments: ~3.1.1 - checksum: 375788eae1c18fa4807bbe96541ebddc65bcc44113f186fae2cfbf0b355deb376e20fa8a014f40a6babdcde86d446234dcbaf5d3df4fdca5bf196ec5d4c41f0b - languageName: node - linkType: hard - -"@rushstack/ts-command-line@npm:4.10.7": - version: 4.10.7 - resolution: "@rushstack/ts-command-line@npm:4.10.7" - dependencies: - "@types/argparse": 1.0.38 - argparse: ~1.0.9 - colors: ~1.2.1 - string-argv: ~0.3.1 - checksum: 0c57867e5ea14b9296db403c2979995fe4bdeae3787331fc2d8faa18ee612b5fbcf989afcf5e30bc7f01cfe62003d451b29fc65fdda0790b95f3aacd72d41918 - languageName: node - linkType: hard - "@sideway/address@npm:^4.1.3": version: 4.1.3 resolution: "@sideway/address@npm:4.1.3" @@ -5417,13 +5326,6 @@ __metadata: languageName: node linkType: hard -"@types/argparse@npm:1.0.38": - version: 1.0.38 - resolution: "@types/argparse@npm:1.0.38" - checksum: 26ed7e3f1e3595efdb883a852f5205f971b798e4c28b7e30a32c5298eee596e8b45834ce831f014d250b9730819ab05acff5b31229666d3af4ba465b4697d0eb - languageName: node - linkType: hard - "@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": version: 7.1.15 resolution: "@types/babel__core@npm:7.1.15" @@ -5773,13 +5675,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:12.20.24": - version: 12.20.24 - resolution: "@types/node@npm:12.20.24" - checksum: e7a13460e2f5b0b5a32c0f3af7daf1a05201552a66d542d3cc3b1ea8b52d4730250f9eb1961d755e31cfe5d03c78340911a6242657a0a9a17d6f7e341fc9f366 - languageName: node - linkType: hard - "@types/node@npm:^16.11.26": version: 16.11.26 resolution: "@types/node@npm:16.11.26" @@ -6521,7 +6416,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.10.0, ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:~6.12.6": +"ajv@npm:^6.10.0, ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -6713,7 +6608,7 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^1.0.7, argparse@npm:~1.0.9": +"argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" dependencies: @@ -8121,13 +8016,6 @@ __metadata: languageName: node linkType: hard -"colors@npm:~1.2.1": - version: 1.2.5 - resolution: "colors@npm:1.2.5" - checksum: b6e23de735f68b72d5cdf6fd854ca43d1b66d82dcf54bda0b788083b910164a040f2c4edf23c670d36a7a2d8f1b7d6e62e3292703e4642691e6ccaa1c62d8f74 - languageName: node - linkType: hard - "columnify@npm:^1.5.4": version: 1.5.4 resolution: "columnify@npm:1.5.4" @@ -8161,7 +8049,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^2.20.0, commander@npm:^2.7.1": +"commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" checksum: ab8c07884e42c3a8dbc5dd9592c606176c7eb5c1ca5ff274bcf907039b2c41de3626f684ea75ccf4d361ba004bbaff1f577d5384c155f3871e456bdf27becf9e @@ -11098,17 +10986,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:~7.0.1": - version: 7.0.1 - resolution: "fs-extra@npm:7.0.1" - dependencies: - graceful-fs: ^4.1.2 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf - languageName: node - linkType: hard - "fs-minipass@npm:^1.2.5": version: 1.2.7 resolution: "fs-minipass@npm:1.2.7" @@ -12296,13 +12173,6 @@ __metadata: languageName: node linkType: hard -"import-lazy@npm:~4.0.0": - version: 4.0.0 - resolution: "import-lazy@npm:4.0.0" - checksum: 22f5e51702134aef78890156738454f620e5fe7044b204ebc057c614888a1dd6fdf2ede0fdcca44d5c173fd64f65c985f19a51775b06967ef58cc3d26898df07 - languageName: node - linkType: hard - "import-local@npm:^3.0.2": version: 3.0.2 resolution: "import-local@npm:3.0.2" @@ -12664,7 +12534,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.2.0, is-core-module@npm:^2.8.0, is-core-module@npm:^2.8.1": +"is-core-module@npm:^2.2.0, is-core-module@npm:^2.8.0, is-core-module@npm:^2.8.1": version: 2.8.1 resolution: "is-core-module@npm:2.8.1" dependencies: @@ -13653,13 +13523,6 @@ __metadata: languageName: node linkType: hard -"jju@npm:~1.4.0": - version: 1.4.0 - resolution: "jju@npm:1.4.0" - checksum: 3790481bd2b7827dd6336e6e3dc2dcc6d425679ba7ebde7b679f61dceb4457ea0cda330972494de608571f4973c6dfb5f70fab6f3c5037dbab19ac449a60424f - languageName: node - linkType: hard - "joi@npm:^17.6.0": version: 17.6.0 resolution: "joi@npm:17.6.0" @@ -13874,18 +13737,6 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: ^4.1.6 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e - languageName: node - linkType: hard - "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -14311,20 +14162,6 @@ __metadata: languageName: node linkType: hard -"lodash.get@npm:^4.4.2": - version: 4.4.2 - resolution: "lodash.get@npm:4.4.2" - checksum: e403047ddb03181c9d0e92df9556570e2b67e0f0a930fcbbbd779370972368f5568e914f913e93f3b08f6d492abc71e14d4e9b7a18916c31fa04bd2306efe545 - languageName: node - linkType: hard - -"lodash.isequal@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.isequal@npm:4.5.0" - checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 - languageName: node - linkType: hard - "lodash.ismatch@npm:^4.4.0": version: 4.4.0 resolution: "lodash.ismatch@npm:4.4.0" @@ -14414,7 +14251,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0, lodash@npm:~4.17.15": +"lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -16162,7 +15999,6 @@ __metadata: "@boost/event": ^3.0.1 "@boost/pipeline": ^3.2.2 "@boost/terminal": ^3.0.0 - "@microsoft/api-extractor": ^7.19.5 "@rollup/plugin-babel": ^5.3.1 "@rollup/plugin-commonjs": ^21.0.2 "@rollup/plugin-json": ^4.1.0 @@ -18314,44 +18150,6 @@ resolve@^2.0.0-next.3: languageName: node linkType: hard -"resolve@patch:resolve@~1.17.0#~builtin": - version: 1.17.0 - resolution: "resolve@patch:resolve@npm%3A1.17.0#~builtin::version=1.17.0&hash=07638b" - dependencies: - path-parse: ^1.0.6 - checksum: 6fd799f282ddf078c4bc20ce863e3af01fa8cb218f0658d9162c57161a2dbafe092b13015b9a4c58d0e1e801cf7aa7a4f13115fea9db98c3f9a0c43e429bad6f - languageName: node - linkType: hard - -"resolve@patch:resolve@~1.19.0#~builtin": - version: 1.19.0 - resolution: "resolve@patch:resolve@npm%3A1.19.0#~builtin::version=1.19.0&hash=07638b" - dependencies: - is-core-module: ^2.1.0 - path-parse: ^1.0.6 - checksum: 2443b94d347e6946c87c85faf13071f605e609e0b54784829b0ed2b917d050bfc1cbaf4ecc6453f224cfa7d0c5dcd97cbb273454cd210bee68e4af15c1a5abc9 - languageName: node - linkType: hard - -resolve@~1.17.0: - version: 1.17.0 - resolution: "resolve@npm:1.17.0" - dependencies: - path-parse: ^1.0.6 - checksum: 9ceaf83b3429f2d7ff5d0281b8d8f18a1f05b6ca86efea7633e76b8f76547f33800799dfdd24434942dec4fbd9e651ed3aef577d9a6b5ec87ad89c1060e24759 - languageName: node - linkType: hard - -resolve@~1.19.0: - version: 1.19.0 - resolution: "resolve@npm:1.19.0" - dependencies: - is-core-module: ^2.1.0 - path-parse: ^1.0.6 - checksum: a05b356e47b85ad3613d9e2a39a824f3c27f4fcad9c9ff6c7cc71a2e314c5904a90ab37481ad0069d03cab9eaaac6eb68aca1bc3355fdb05f1045cd50e2aacea - languageName: node - linkType: hard - "responselike@npm:^1.0.2": version: 1.0.2 resolution: "responselike@npm:1.0.2" @@ -18707,7 +18505,7 @@ resolve@~1.19.0: languageName: node linkType: hard -"semver@npm:7.3.5, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:~7.3.0": +"semver@npm:7.3.5, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": version: 7.3.5 resolution: "semver@npm:7.3.5" dependencies: @@ -19401,13 +19199,6 @@ resolve@~1.19.0: languageName: node linkType: hard -"string-argv@npm:~0.3.1": - version: 0.3.1 - resolution: "string-argv@npm:0.3.1" - checksum: efbd0289b599bee808ce80820dfe49c9635610715429c6b7cc50750f0437e3c2f697c81e5c390208c13b5d5d12d904a1546172a88579f6ee5cbaaaa4dc9ec5cf - languageName: node - linkType: hard - "string-hash@npm:^1.1.1": version: 1.1.3 resolution: "string-hash@npm:1.1.3" @@ -19613,7 +19404,7 @@ resolve@~1.19.0: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": +"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -19927,7 +19718,7 @@ resolve@~1.19.0: languageName: node linkType: hard -"timsort@npm:^0.3.0, timsort@npm:~0.3.0": +"timsort@npm:^0.3.0": version: 0.3.0 resolution: "timsort@npm:0.3.0" checksum: 1a66cb897dacabd7dd7c91b7e2301498ca9e224de2edb9e42d19f5b17c4b6dc62a8d4cbc64f28be82aaf1541cb5a78ab49aa818f42a2989ebe049a64af731e2a @@ -20291,16 +20082,6 @@ resolve@~1.19.0: languageName: node linkType: hard -"typescript@npm:~4.5.2": - version: 4.5.5 - resolution: "typescript@npm:4.5.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 506f4c919dc8aeaafa92068c997f1d213b9df4d9756d0fae1a1e7ab66b585ab3498050e236113a1c9e57ee08c21ec6814ca7a7f61378c058d79af50a4b1f5a5e - languageName: node - linkType: hard - "typescript@patch:typescript@^4.6.3#~builtin": version: 4.6.3 resolution: "typescript@patch:typescript@npm%3A4.6.3#~builtin::version=4.6.3&hash=bda367" @@ -20311,16 +20092,6 @@ resolve@~1.19.0: languageName: node linkType: hard -"typescript@patch:typescript@~4.5.2#~builtin": - version: 4.5.5 - resolution: "typescript@patch:typescript@npm%3A4.5.5#~builtin::version=4.5.5&hash=bda367" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 858c61fa63f7274ca4aaaffeced854d550bf416cff6e558c4884041b3311fb662f476f167cf5c9f8680c607239797e26a2ee0bcc6467fbc05bfcb218e1c6c671 - languageName: node - linkType: hard - "ua-parser-js@npm:^0.7.18": version: 0.7.28 resolution: "ua-parser-js@npm:0.7.28" @@ -20541,7 +20312,7 @@ resolve@~1.19.0: languageName: node linkType: hard -"universalify@npm:^0.1.0, universalify@npm:^0.1.2": +"universalify@npm:^0.1.2": version: 0.1.2 resolution: "universalify@npm:0.1.2" checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff @@ -20796,13 +20567,6 @@ resolve@~1.19.0: languageName: node linkType: hard -"validator@npm:^13.7.0": - version: 13.7.0 - resolution: "validator@npm:13.7.0" - checksum: 2b83283de1222ca549a7ef57f46e8d49c6669213348db78b7045bce36a3b5843ff1e9f709ebf74574e06223461ee1f264f8cc9a26a0060a79a27de079d8286ef - languageName: node - linkType: hard - "value-equal@npm:^1.0.1": version: 1.0.1 resolution: "value-equal@npm:1.0.1" @@ -21650,23 +21414,6 @@ resolve@~1.19.0: languageName: node linkType: hard -"z-schema@npm:~5.0.2": - version: 5.0.2 - resolution: "z-schema@npm:5.0.2" - dependencies: - commander: ^2.7.1 - lodash.get: ^4.4.2 - lodash.isequal: ^4.5.0 - validator: ^13.7.0 - dependenciesMeta: - commander: - optional: true - bin: - z-schema: bin/z-schema - checksum: 084b2f16043ac0a892914ee29cc0b4fafd9338133eec0345cd6ced25e814f647fa67be1090ad5f606759c2c1f2f8c28127960ba187f437f1caf6fb8cd45d7336 - languageName: node - linkType: hard - "zwitch@npm:^1.0.0": version: 1.0.5 resolution: "zwitch@npm:1.0.5"