diff --git a/.changeset/nice-roses-occur.md b/.changeset/nice-roses-occur.md new file mode 100644 index 0000000..da5ef80 --- /dev/null +++ b/.changeset/nice-roses-occur.md @@ -0,0 +1,6 @@ +--- +"@eventcatalog/generator-asyncapi": patch +"@eventcatalog/generator-openapi": patch +--- + +chore(project): sharing files between plugins diff --git a/configs/generator-tsconfig.json b/configs/generator-tsconfig.json new file mode 100644 index 0000000..37b1b50 --- /dev/null +++ b/configs/generator-tsconfig.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Default", + "compilerOptions": { + "target": "es2016", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": false, + "resolveJsonModule": true + }, + "module": "ESNext", + "moduleResolution": "node" +} diff --git a/configs/package.json b/configs/package.json new file mode 100644 index 0000000..9737b8b --- /dev/null +++ b/configs/package.json @@ -0,0 +1,16 @@ +{ + "name": "config", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "devDependencies": { + "tsup": "^8.1.0", + "vitest": "^2.0.2" + } +} diff --git a/configs/tsup/base.ts b/configs/tsup/base.ts new file mode 100644 index 0000000..5e3736d --- /dev/null +++ b/configs/tsup/base.ts @@ -0,0 +1,13 @@ +import { Options, defineConfig } from 'tsup'; + +export function createTsupConfig(options?: Partial) { + return defineConfig({ + target: 'es2020', + format: ['cjs', 'esm'], + splitting: false, + sourcemap: true, + clean: true, + dts: true, + ...options, + }); +} diff --git a/packages/generator-asyncapi/vitest.setup.ts b/configs/vitest/matchers.ts similarity index 100% rename from packages/generator-asyncapi/vitest.setup.ts rename to configs/vitest/matchers.ts diff --git a/configs/vitest/setup.ts b/configs/vitest/setup.ts new file mode 100644 index 0000000..029fd3a --- /dev/null +++ b/configs/vitest/setup.ts @@ -0,0 +1 @@ +import './matchers'; diff --git a/packages/generator-asyncapi/tsconfig.json b/packages/generator-asyncapi/tsconfig.json index 952c488..c122193 100644 --- a/packages/generator-asyncapi/tsconfig.json +++ b/packages/generator-asyncapi/tsconfig.json @@ -1,13 +1,3 @@ { - "compilerOptions": { - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - "module": "commonjs" /* Specify what module code is generated. */, - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - "strict": true /* Enable all strict type-checking options. */, - "skipLibCheck": false /* Skip type checking all .d.ts files. */, - "resolveJsonModule": true - }, - "module": "ESNext", - "moduleResolution": "node" + "extends": "../../configs/generator-tsconfig.json" } diff --git a/packages/generator-asyncapi/tsup.config.ts b/packages/generator-asyncapi/tsup.config.ts index d0159e5..e6a996e 100644 --- a/packages/generator-asyncapi/tsup.config.ts +++ b/packages/generator-asyncapi/tsup.config.ts @@ -1,11 +1,5 @@ -import { defineConfig } from 'tsup'; +import { createTsupConfig } from '../../configs/tsup/base'; -export default defineConfig({ - target: 'es2020', - format: ['cjs', 'esm'], - splitting: false, - sourcemap: true, - clean: true, - dts: true, +export default createTsupConfig({ entry: ['src/*', '!src/test/*', '!src/docs.ts'], }); diff --git a/packages/generator-asyncapi/vitest.config.ts b/packages/generator-asyncapi/vitest.config.ts index ff845b8..e5ff312 100644 --- a/packages/generator-asyncapi/vitest.config.ts +++ b/packages/generator-asyncapi/vitest.config.ts @@ -3,10 +3,6 @@ import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { - setupFiles: ['./vitest.setup.ts'], - deps: { - inline: ['@eventcatalog/sdk'], - }, - // ... Specify options here. + setupFiles: ['../../configs/vitest/setup.ts'], }, }); diff --git a/packages/generator-openapi/.prettierignore b/packages/generator-openapi/.prettierignore deleted file mode 100644 index b07a2c5..0000000 --- a/packages/generator-openapi/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -dist -node_modules -pnpm-lock.yaml -.changeset/* \ No newline at end of file diff --git a/packages/generator-openapi/.prettierrc b/packages/generator-openapi/.prettierrc deleted file mode 100644 index 2fbe55c..0000000 --- a/packages/generator-openapi/.prettierrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "semi": true, - "singleQuote": true, - "printWidth": 130, - "tabWidth": 2, - "useTabs": false, - "trailingComma": "es5", - "bracketSpacing": true -} diff --git a/packages/generator-openapi/tsconfig.json b/packages/generator-openapi/tsconfig.json index 952c488..c122193 100644 --- a/packages/generator-openapi/tsconfig.json +++ b/packages/generator-openapi/tsconfig.json @@ -1,13 +1,3 @@ { - "compilerOptions": { - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - "module": "commonjs" /* Specify what module code is generated. */, - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - "strict": true /* Enable all strict type-checking options. */, - "skipLibCheck": false /* Skip type checking all .d.ts files. */, - "resolveJsonModule": true - }, - "module": "ESNext", - "moduleResolution": "node" + "extends": "../../configs/generator-tsconfig.json" } diff --git a/packages/generator-openapi/tsup.config.ts b/packages/generator-openapi/tsup.config.ts index d0159e5..e6a996e 100644 --- a/packages/generator-openapi/tsup.config.ts +++ b/packages/generator-openapi/tsup.config.ts @@ -1,11 +1,5 @@ -import { defineConfig } from 'tsup'; +import { createTsupConfig } from '../../configs/tsup/base'; -export default defineConfig({ - target: 'es2020', - format: ['cjs', 'esm'], - splitting: false, - sourcemap: true, - clean: true, - dts: true, +export default createTsupConfig({ entry: ['src/*', '!src/test/*', '!src/docs.ts'], }); diff --git a/packages/generator-openapi/vitest.config.ts b/packages/generator-openapi/vitest.config.ts index ff845b8..e5ff312 100644 --- a/packages/generator-openapi/vitest.config.ts +++ b/packages/generator-openapi/vitest.config.ts @@ -3,10 +3,6 @@ import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { - setupFiles: ['./vitest.setup.ts'], - deps: { - inline: ['@eventcatalog/sdk'], - }, - // ... Specify options here. + setupFiles: ['../../configs/vitest/setup.ts'], }, }); diff --git a/packages/generator-openapi/vitest.setup.ts b/packages/generator-openapi/vitest.setup.ts deleted file mode 100644 index b067523..0000000 --- a/packages/generator-openapi/vitest.setup.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { expect, Assertion, AsymmetricMatchersContaining } from 'vitest'; - -interface CustomMatchers { - toMatchMarkdown: (str: string) => R; -} - -declare module 'vitest' { - interface Assertion extends CustomMatchers {} - interface AsymmetricMatchersContaining extends CustomMatchers {} -} - -// Function to normalize whitespace -const normalizeWhitespace = (str: string) => str.replace(/\s+/g, ' ').trim(); - -declare global { - namespace vitest { - interface Assertion { - toMatchMarkdown(expected: string): void; - } - } -} - -// Custom matcher to compare Markdown strings ignoring whitespace differences -expect.extend({ - toMatchMarkdown(received, expected) { - const normalizedReceived = normalizeWhitespace(received); - const normalizedExpected = normalizeWhitespace(expected); - - if (normalizedReceived === normalizedExpected) { - return { - message: () => `expected ${received} not to match Markdown ${expected} ignoring whitespace`, - pass: true, - }; - } else { - return { - message: () => `expected ${received} to match Markdown ${expected} ignoring whitespace`, - pass: false, - }; - } - }, -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 667a204..f79b96e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,15 @@ importers: specifier: 5.7.3 version: 5.7.3 + packages/config: + devDependencies: + tsup: + specifier: ^8.1.0 + version: 8.3.6(postcss@8.5.1)(typescript@5.7.3) + vitest: + specifier: ^2.0.2 + version: 2.1.9(@types/node@20.17.17) + packages/generator-asyncapi: dependencies: '@asyncapi/avro-schema-parser':