diff --git a/README.md b/README.md index bb2472a..097cede 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Cantos is in eperimental phase with regular breaking changes. Changelog will be added with `v0.1.0`. Until then, you can -- check the source code for documentation and commits for changelog, and +- check the [source code](packages/cantos/src) for documentation and commits for changelog, and - check [tests](packages/cantos/tests) for current working examples. # Cantos: Write Better Tests diff --git a/packages/cantos/package.json b/packages/cantos/package.json index 6302959..3b8b129 100644 --- a/packages/cantos/package.json +++ b/packages/cantos/package.json @@ -2,7 +2,7 @@ "name": "cantos", "private": false, "author": "Bo An", - "version": "0.0.3", + "version": "0.0.4", "keywords": [ "User Stories", "TDD", @@ -29,7 +29,7 @@ "type": "module", "main": "./dist/cantos.umd.cjs", "module": "./dist/cantos.js", - "types": "./dist/cantos.d.ts", + "types": "./dist/index.d.ts", "exports": { ".": { "import": "./dist/cantos.js", diff --git a/packages/mermaid-whisper/.eslintrc.cjs b/packages/mermaid-whisper/.eslintrc.cjs new file mode 100644 index 0000000..986818e --- /dev/null +++ b/packages/mermaid-whisper/.eslintrc.cjs @@ -0,0 +1,38 @@ +module.exports = { + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + ], + "overrides": [ + { + "env": { + "node": true + }, + "files": [ + ".eslintrc.{js,cjs}" + ], + "parserOptions": { + "sourceType": "script" + } + } + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint", + ], + "rules": { + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-explicit-any": "off", + }, + "settings": { + + } +} diff --git a/packages/mermaid-whisper/.idea/.gitignore b/packages/mermaid-whisper/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/packages/mermaid-whisper/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/packages/mermaid-whisper/design/mermaid-whisper-story.ts b/packages/mermaid-whisper/design/mermaid-whisper-story.ts new file mode 100644 index 0000000..4e1aa7d --- /dev/null +++ b/packages/mermaid-whisper/design/mermaid-whisper-story.ts @@ -0,0 +1,19 @@ +import {CastProfiles, loadCast, StoryScript} from "cantos"; + +const mwCastProfiles = { + MW: { + role: "Mermaid Whisper", + }, + diagramHeader: { + role: 'Header', + } + +} satisfies CastProfiles + + +const mwCast = loadCast(mwCastProfiles); + +const mwStoryScript = { + who: ['MW'], + story: 'Mermaid Whisper Tests', +} satisfies StoryScript diff --git a/packages/mermaid-whisper/package.json b/packages/mermaid-whisper/package.json new file mode 100644 index 0000000..8596bb5 --- /dev/null +++ b/packages/mermaid-whisper/package.json @@ -0,0 +1,54 @@ +{ + "name": "mermaid-whisper", + "private": false, + "author": "Bo An", + "version": "0.0.1", + "keywords": [ + "Mermaid" + ], + "type": "module", + "main": "./dist/mermaid-whisper.umd.cjs", + "module": "./dist/mermaid-whisper.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/mermaid-whisper.js", + "require": "./dist/mermaid-whisper.umd.cjs" + } + }, + "files": [ + "dist" + ], + "scripts": { + "dev": "vite", + "build:tsc": "tsc --project tsconfig.build.json", + "build": "yarn build:tsc && vite build", + "dry-run": "npm pack --dry-run", + "preview": "vite preview", + "test": "vitest", + "test:ui": "vitest --ui", + "mermaid": "^10.6.1" + }, + "devDependencies": { + "@types/node": "^20.9.0", + "@types/uuid": "^9.0.7", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@typescript-eslint/parser": "^6.10.0", + "@vitest/coverage-v8": "^0.34.6", + "@vitest/ui": "^1.0.0-beta.4", + "eslint": "^8.53.0", + "typescript": "^5", + "vite": "^4.4.5", + "vite-plugin-dts": "^3.6.3", + "vite-plugin-eslint": "^1.8.1", + "vitest": "^1.0.0-beta.4" + }, + "dependencies": { + "cantos": "^0.0.4", + "mermaid": "^10.6.1" + }, + "peerDependencies": { + "typescript": "^5" + }, + "license": "MIT" +} diff --git a/packages/mermaid-whisper/src/index.ts b/packages/mermaid-whisper/src/index.ts new file mode 100644 index 0000000..0dad7f8 --- /dev/null +++ b/packages/mermaid-whisper/src/index.ts @@ -0,0 +1,3 @@ +import * as MW from './mermaid-whisper.ts'; + +export {MW, MW as MermaidWhisper} diff --git a/packages/mermaid-whisper/src/mermaid-types/flowchart/flow-chart.ts b/packages/mermaid-whisper/src/mermaid-types/flowchart/flow-chart.ts new file mode 100644 index 0000000..7faad91 --- /dev/null +++ b/packages/mermaid-whisper/src/mermaid-types/flowchart/flow-chart.ts @@ -0,0 +1,17 @@ +const DIRECTIONS = { + // Left to right direction + LR: 'LR', + // Right to left direction + RL: 'RL', + // Left to right direction + TD: 'TD', + // Top to bottom direction + TB: 'TB', +} as const; + +export const FLOW_CHART_DEF = { + DIAGRAM_TYPE: 'flowchart', + DIRECTIONS +} as const; + + diff --git a/packages/mermaid-whisper/src/mermaid-whisper.ts b/packages/mermaid-whisper/src/mermaid-whisper.ts new file mode 100644 index 0000000..321bf79 --- /dev/null +++ b/packages/mermaid-whisper/src/mermaid-whisper.ts @@ -0,0 +1,5 @@ +class MermaidWhisper { + constructor() { + console.log('MermaidWhisper constructor'); + } +} diff --git a/packages/mermaid-whisper/tests/mermaid-whisper-smoke.test.ts b/packages/mermaid-whisper/tests/mermaid-whisper-smoke.test.ts new file mode 100644 index 0000000..f6cf39b --- /dev/null +++ b/packages/mermaid-whisper/tests/mermaid-whisper-smoke.test.ts @@ -0,0 +1,7 @@ +import {describe, expect, it} from "vitest"; + +describe('mermaid-whisper.ts', () => { + it('should be a thing', () => { + expect(true).toBe(true); + }); +}) diff --git a/packages/mermaid-whisper/tests/utils/setup.ts b/packages/mermaid-whisper/tests/utils/setup.ts new file mode 100644 index 0000000..e69de29 diff --git a/packages/mermaid-whisper/tsconfig.json b/packages/mermaid-whisper/tsconfig.json new file mode 100644 index 0000000..88ae1c7 --- /dev/null +++ b/packages/mermaid-whisper/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "outDir": "./dist/", + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "paths": { + "@src/*": ["./src/*"] + } + }, + "include": [ + "src", + "tests" + ] +} diff --git a/packages/mermaid-whisper/vite.config.ts b/packages/mermaid-whisper/vite.config.ts new file mode 100644 index 0000000..99d1726 --- /dev/null +++ b/packages/mermaid-whisper/vite.config.ts @@ -0,0 +1,36 @@ +import {defineConfig, UserConfig} from "vitest/config"; +import * as path from "path"; +import dts from 'vite-plugin-dts'; +import eslintPlugin from "vite-plugin-eslint"; +export const viteConfig: UserConfig = { + resolve: { + alias: { + '@src': path.resolve(__dirname, './src') + + } + }, + build: { + lib: { + entry: path.resolve(__dirname, './src/index.ts'), + name: 'mermaid-whisper.ts', + fileName: 'mermaid-whisper.ts', + }, + rollupOptions: { + external: ['./tests'] + } + }, + plugins: [dts({ + tsconfigPath: 'tsconfig.build.json' + }), eslintPlugin()], + test: { + include: ['**/*.test.ts'], + setupFiles: [ + 'tests/utils/setup.ts' + ], + coverage: { + provider: 'v8', + include: ['**/*.ts'], + } + }, +} +export default defineConfig(viteConfig);