diff --git a/packages/topsort/.eslintrc.json b/packages/topsort/.eslintrc.json new file mode 100644 index 000000000..a5d884455 --- /dev/null +++ b/packages/topsort/.eslintrc.json @@ -0,0 +1,28 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "parserOptions": { + "project": ["packages/topsort/tsconfig.*?.json"] + }, + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": "error" + } + } + ] +} diff --git a/packages/topsort/.npmignore b/packages/topsort/.npmignore deleted file mode 100644 index 2b29f2764..000000000 --- a/packages/topsort/.npmignore +++ /dev/null @@ -1 +0,0 @@ -tests diff --git a/packages/topsort/dist/.gitkeep b/packages/topsort/dist/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/topsort/dist/esm/package.json b/packages/topsort/dist/esm/package.json deleted file mode 100644 index 6990891ff..000000000 --- a/packages/topsort/dist/esm/package.json +++ /dev/null @@ -1 +0,0 @@ -{"type": "module"} diff --git a/packages/topsort/jest.config.ts b/packages/topsort/jest.config.ts new file mode 100644 index 000000000..98225cd16 --- /dev/null +++ b/packages/topsort/jest.config.ts @@ -0,0 +1,12 @@ +import type { Config } from 'jest'; + +export default { + displayName: 'topsort', + preset: '../../jest.preset.js', + testEnvironment: 'node', + transform: { + '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '/tsconfig.spec.json' }], + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../coverage/packages/topsort', +} as Config; diff --git a/packages/topsort/package.json b/packages/topsort/package.json index 1de7cf244..f8c137c05 100644 --- a/packages/topsort/package.json +++ b/packages/topsort/package.json @@ -3,37 +3,9 @@ "version": "1.0.1-alpha.89", "description": "High-Performance topological sort / dependency resolver with optional grouping algorithm for Typescript", "type": "commonjs", - "main": "./dist/cjs/index.js", - "module": "./dist/esm/index.js", - "types": "./dist/cjs/index.d.ts", - "exports": { - ".": { - "types": "./dist/cjs/index.d.ts", - "require": "./dist/cjs/index.js", - "default": "./dist/esm/index.js" - } - }, "sideEffects": false, "publishConfig": { "access": "public" }, - "scripts": { - "build": "echo '{\"type\": \"module\"}' > ./dist/esm/package.json" - }, - "repository": "https://github.com/deepkit/deepkit-framework", - "author": "Marc J. Schmidt ", - "license": "MIT", - "jest": { - "testEnvironment": "node", - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" - }, - "moduleNameMapper": { - "(.+)\\.js": "$1" - }, - "testMatch": [ - "**/tests/**/*.spec.ts" - ] - }, - "gitHead": "56081823b559bb68b77a8781957af5d9c2e019a7" + "types": "./src/index.d.ts" } diff --git a/packages/topsort/project.json b/packages/topsort/project.json new file mode 100644 index 000000000..954b3f505 --- /dev/null +++ b/packages/topsort/project.json @@ -0,0 +1,51 @@ +{ + "name": "topsort", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/topsort/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nx/rollup:rollup", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/{projectRoot}", + "main": "{projectRoot}/src/index.ts", + "tsConfig": "{projectRoot}/tsconfig.lib.json", + "rollupConfig": "packages/rollup.config.js", + "project": "{projectRoot}/package.json", + "format": ["esm", "cjs"], + "generateExportsField": true, + "external": "all", + "compiler": "tsc" + } + }, + "release": { + "command": "release-it --config={projectRoot}/.release-it.json" + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "packages/topsort/**/*.ts", + "packages/topsort/package.json" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "packages/topsort/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": ["topsort"] +} diff --git a/packages/topsort/index.ts b/packages/topsort/src/index.ts similarity index 71% rename from packages/topsort/index.ts rename to packages/topsort/src/index.ts index 331c61b53..8ae3672ab 100644 --- a/packages/topsort/index.ts +++ b/packages/topsort/src/index.ts @@ -8,6 +8,6 @@ * You should have received a copy of the MIT License along with this program. */ -export * from './src/array-sort.js'; -export * from './src/group-array-sort.js'; -export * from './src/base.js'; +export * from './lib/array-sort.js'; +export * from './lib/group-array-sort.js'; +export * from './lib/base.js'; diff --git a/packages/topsort/src/array-sort.ts b/packages/topsort/src/lib/array-sort.ts similarity index 100% rename from packages/topsort/src/array-sort.ts rename to packages/topsort/src/lib/array-sort.ts diff --git a/packages/topsort/src/base.ts b/packages/topsort/src/lib/base.ts similarity index 100% rename from packages/topsort/src/base.ts rename to packages/topsort/src/lib/base.ts diff --git a/packages/topsort/src/group-array-sort.ts b/packages/topsort/src/lib/group-array-sort.ts similarity index 100% rename from packages/topsort/src/group-array-sort.ts rename to packages/topsort/src/lib/group-array-sort.ts diff --git a/packages/topsort/tests/group-sort.spec.ts b/packages/topsort/tests/group-sort.spec.ts index 520ebb87a..8cb3fa429 100644 --- a/packages/topsort/tests/group-sort.spec.ts +++ b/packages/topsort/tests/group-sort.spec.ts @@ -1,6 +1,6 @@ import { expect, test } from '@jest/globals'; -import { GroupArraySort } from '../src/group-array-sort.js'; -import { CircularDependencyException, ElementNotFoundException } from '../src/base.js'; +import { GroupArraySort } from '../src/lib/group-array-sort.js'; +import { CircularDependencyException, ElementNotFoundException } from '../src/lib/base.js'; import { bench } from './utils.js'; import { fail } from 'assert'; diff --git a/packages/topsort/tests/sort.spec.ts b/packages/topsort/tests/sort.spec.ts index 538be2820..446d90e99 100644 --- a/packages/topsort/tests/sort.spec.ts +++ b/packages/topsort/tests/sort.spec.ts @@ -1,7 +1,7 @@ import { expect, test } from '@jest/globals'; -import { ArraySort } from '../src/array-sort.js'; +import { ArraySort } from '../src/lib/array-sort.js'; import { bench } from './utils.js'; -import { CircularDependencyException, ElementNotFoundException } from '../src/base.js'; +import { CircularDependencyException, ElementNotFoundException } from '../src/lib/base.js'; import { fail } from 'assert'; function getElementsFlat(count: number) { diff --git a/packages/topsort/tsconfig.esm.json b/packages/topsort/tsconfig.esm.json deleted file mode 100644 index ffac6ec56..000000000 --- a/packages/topsort/tsconfig.esm.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./dist/esm", - "module": "ES2020" - }, - "references": [] -} \ No newline at end of file diff --git a/packages/topsort/tsconfig.json b/packages/topsort/tsconfig.json index 8d626001c..23332504d 100644 --- a/packages/topsort/tsconfig.json +++ b/packages/topsort/tsconfig.json @@ -1,25 +1,14 @@ { - "compilerOptions": { - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "moduleResolution": "node", - "target": "es2018", - "module": "CommonJS", - "esModuleInterop": true, - "baseUrl": ".", - "outDir": "./dist/cjs", - "declaration": true, - "composite": true - }, - "include": [ - "src", - "tests", - "index.ts" + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } ], - "references": [] -} \ No newline at end of file + "reflection": true +} diff --git a/packages/topsort/tsconfig.lib.json b/packages/topsort/tsconfig.lib.json new file mode 100644 index 000000000..3b8173e63 --- /dev/null +++ b/packages/topsort/tsconfig.lib.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"], + "reflection": true +} diff --git a/packages/topsort/tsconfig.spec.json b/packages/topsort/tsconfig.spec.json new file mode 100644 index 000000000..36659485a --- /dev/null +++ b/packages/topsort/tsconfig.spec.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts", + "tests/**/*.test.ts", + "tests/**/*.spec.ts", + "tests/**/*.d.ts" + ], + "reflection": true +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 1d704b4c4..610681fa1 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -55,6 +55,7 @@ "@deepkit/sqlite": ["packages/sqlite/src/index.ts"], "@deepkit/stopwatch": ["packages/stopwatch/src/index.ts"], "@deepkit/template": ["packages/template/src/index.ts"], + "@deepkit/topsort": ["packages/topsort/src/index.ts"], "@deepkit/type": ["packages/type/src/index.ts"], "@deepkit/type-compiler": ["packages/type-compiler/src/index.ts"], "@deepkit/type-spec": ["packages/type-spec/src/index.ts"],