From 0edd490a245bf50d1cac21645be905287081fae3 Mon Sep 17 00:00:00 2001 From: Long Nguyen Date: Tue, 19 Aug 2025 00:13:22 +0700 Subject: [PATCH] fix: proper module resolution in all cases (Node CJS, Node ESM, bundler) * Add extensions to all imports * Set module resolution to `bundler` to avoid Node specific behavior * Use `ts2mjs` to rename files to `mjs` * Add extensions to `@bbob/types` imports * Fix `package.json` for proper ESM extension and type separation * More module resolution stuff change (`node16` for everything, `node` for Vue 2 plugin) * Use `ts-jest-resolver` for `js` -> `ts` resolving in Jest * Add changeset * Add import extensions to frontend libs --- .changeset/gentle-guests-doubt.md | 21 ++++++++ jest.config.js | 1 + package.json | 6 ++- packages/bbob-cli/package.json | 15 ++++-- packages/bbob-cli/src/cli.ts | 2 +- packages/bbob-core/package.json | 15 ++++-- packages/bbob-core/src/index.ts | 4 +- packages/bbob-html/package.json | 15 ++++-- packages/bbob-parser/package.json | 59 +++++++++++++++------- packages/bbob-parser/src/index.ts | 6 +-- packages/bbob-parser/src/lexer.ts | 4 +- packages/bbob-parser/src/parse.ts | 4 +- packages/bbob-plugin-helper/package.json | 48 +++++++++++++----- packages/bbob-plugin-helper/src/TagNode.ts | 4 +- packages/bbob-plugin-helper/src/helpers.ts | 4 +- packages/bbob-plugin-helper/src/index.ts | 6 +-- packages/bbob-preset-html5/package.json | 15 ++++-- packages/bbob-preset-html5/src/index.ts | 2 +- packages/bbob-preset-react/package.json | 15 ++++-- packages/bbob-preset-vue/package.json | 15 ++++-- packages/bbob-preset/package.json | 15 ++++-- packages/bbob-preset/src/index.ts | 4 +- packages/bbob-react/package.json | 15 ++++-- packages/bbob-react/src/Component.ts | 2 +- packages/bbob-react/src/index.ts | 4 +- packages/bbob-types/package.json | 12 ++++- packages/bbob-types/src/core.ts | 4 +- packages/bbob-types/src/index.ts | 8 +-- packages/bbob-types/src/parser.ts | 2 +- packages/bbob-types/src/preset.ts | 4 +- packages/bbob-vue2/package.json | 15 ++++-- packages/bbob-vue2/src/Component.ts | 2 +- packages/bbob-vue2/src/index.ts | 4 +- packages/bbob-vue2/tsconfig.json | 3 +- packages/bbob-vue3/package.json | 15 ++++-- packages/bbob-vue3/src/Component.ts | 2 +- packages/bbob-vue3/src/index.ts | 2 +- pnpm-lock.yaml | 33 ++++++++++++ tsconfig.json | 4 +- 39 files changed, 287 insertions(+), 124 deletions(-) create mode 100644 .changeset/gentle-guests-doubt.md diff --git a/.changeset/gentle-guests-doubt.md b/.changeset/gentle-guests-doubt.md new file mode 100644 index 0000000..c5461c6 --- /dev/null +++ b/.changeset/gentle-guests-doubt.md @@ -0,0 +1,21 @@ +--- +"@bbob/cli": patch +"@bbob/core": patch +"@bbob/html": patch +"@bbob/parser": patch +"@bbob/plugin-helper": patch +"@bbob/preset-html5": patch +"@bbob/preset-react": patch +"@bbob/preset-vue": patch +"@bbob/preset": patch +"@bbob/react": patch +"@bbob/types": patch +"@bbob/vue2": patch +"@bbob/vue3": patch +--- + +fix: proper module resolution in all cases (Node CJS, Node ESM, bundler) + +Allow usages of this library in ESM scenarios (Vite SSR, pure Node using ESM) by fixing incorrect exports of the ESM output (use correct .mjs extension, separate types files for CJS and ESM output, package.json fixes) + +Fixes #232, #214, #135 diff --git a/jest.config.js b/jest.config.js index bd9ac47..3ed42a1 100644 --- a/jest.config.js +++ b/jest.config.js @@ -7,6 +7,7 @@ module.exports = { setupFilesAfterEnv: [`${__dirname}/jest.setup.js`], coverageDirectory: './coverage/', collectCoverage: true, + resolver: "ts-jest-resolver", transform: { '\\.[jt]sx?$': ['@swc/jest', { ...config }], }, diff --git a/package.json b/package.json index 6af6094..a76fcc5 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,8 @@ "rollup-plugin-gzip": "3.1.0", "rollup-plugin-swc3": "0.11.0", "size-limit": "11.0.1", + "ts-jest-resolver": "^2.0.1", + "ts2mjs": "^4.0.0", "typescript": "5.1.6" }, "publishConfig": { @@ -80,13 +82,13 @@ }, "pkgTasks": { "build:commonjs": "@/cross-env BABEL_ENV=commonjs NODE_ENV=production @/swc ./src/ --config-file ../../.swcrc-commonjs.json --out-dir lib --strip-leading-paths", - "build:es": "@/cross-env BABEL_ENV=es NODE_ENV=production @/swc ./src/ --config-file ../../.swcrc.json --out-dir es --strip-leading-paths", + "build:es": "@/cross-env BABEL_ENV=es NODE_ENV=production @/swc ./src/ --config-file ../../.swcrc.json --out-dir es --strip-leading-paths && @/ts2mjs es --remove-source", "build:umd": "@/cross-env BABEL_ENV=rollup NODE_ENV=production @/rollup --config ../../rollup.config.mjs", "build": "npm run build:es && npm run build:commonjs && npm run build:umd", "test": "@/jest", "cover": "@/jest --coverage .", "lint": "@/eslint .", - "types": "@/tsc", + "types": "@/tsc && @/ts2mjs types", "bundlesize": "npm run build && @/cross-env NODE_ENV=production @/bundlesize .", "size": "npm run build && @/cross-env NODE_ENV=production @/size-limit ." }, diff --git a/packages/bbob-cli/package.json b/packages/bbob-cli/package.json index 8855ce7..0b01e7f 100644 --- a/packages/bbob-cli/package.json +++ b/packages/bbob-cli/package.json @@ -6,16 +6,21 @@ "bbob": "lib/cli.js" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobCli", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-cli/src/cli.ts b/packages/bbob-cli/src/cli.ts index cd5b6bc..bb029df 100755 --- a/packages/bbob-cli/src/cli.ts +++ b/packages/bbob-cli/src/cli.ts @@ -1,4 +1,4 @@ #!/usr/bin/env node -import { run } from './index'; +import { run } from './index.js'; run(process.stdin, process.stdout); diff --git a/packages/bbob-core/package.json b/packages/bbob-core/package.json index 9f14e44..32812d9 100644 --- a/packages/bbob-core/package.json +++ b/packages/bbob-core/package.json @@ -25,16 +25,21 @@ "@bbob/types": "*" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobCore", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-core/src/index.ts b/packages/bbob-core/src/index.ts index 40d4150..122584e 100644 --- a/packages/bbob-core/src/index.ts +++ b/packages/bbob-core/src/index.ts @@ -9,8 +9,8 @@ import type { } from "@bbob/types"; import { parse } from '@bbob/parser'; -import { iterate, match } from './utils'; -import { C1, C2 } from './errors' +import { iterate, match } from './utils.js'; +import { C1, C2 } from './errors.js' export function createTree(tree: NodeContent[], options: Options) { const extendedTree = tree as BBobCoreTagNodeTree diff --git a/packages/bbob-html/package.json b/packages/bbob-html/package.json index 02a83d8..2911405 100644 --- a/packages/bbob-html/package.json +++ b/packages/bbob-html/package.json @@ -14,16 +14,21 @@ "@bbob/types": "*" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobHtml", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-parser/package.json b/packages/bbob-parser/package.json index a1cb968..7a6186f 100644 --- a/packages/bbob-parser/package.json +++ b/packages/bbob-parser/package.json @@ -24,44 +24,69 @@ "@bbob/types": "*" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobParser", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" }, "./lexer": { - "types": "./types/lexer.d.ts", - "import": "./es/lexer.js", - "require": "./lib/lexer.js", + "import": { + "types": "./types/lexer.d.mts", + "default": "./es/lexer.mjs" + }, + "require": { + "types": "./types/lexer.d.ts", + "default": "./lib/lexer.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" }, "./parse": { - "types": "./types/parse.d.ts", - "import": "./es/parse.js", - "require": "./lib/parse.js", + "import": { + "types": "./types/parse.d.mts", + "default": "./es/parse.mjs" + }, + "require": { + "types": "./types/parse.d.ts", + "default": "./lib/parse.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" }, "./Token": { - "types": "./types/Token.d.ts", - "import": "./es/Token.js", - "require": "./lib/Token.js", + "import": { + "types": "./types/Token.d.mts", + "default": "./es/Token.mjs" + }, + "require": { + "types": "./types/Token.d.ts", + "default": "./lib/Token.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" }, "./utils": { - "types": "./types/utils.d.ts", - "import": "./es/utils.js", - "require": "./lib/utils.js", + "import": { + "types": "./types/utils.d.mts", + "default": "./es/utils.mjs" + }, + "require": { + "types": "./types/utils.d.ts", + "default": "./lib/utils.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-parser/src/index.ts b/packages/bbob-parser/src/index.ts index 2c7f357..9ea2cd7 100644 --- a/packages/bbob-parser/src/index.ts +++ b/packages/bbob-parser/src/index.ts @@ -1,4 +1,4 @@ export { TagNode } from '@bbob/plugin-helper'; -export { default } from './parse'; -export * from './parse'; -export * from './lexer' +export { default } from './parse.js'; +export * from './parse.js'; +export * from './lexer.js' diff --git a/packages/bbob-parser/src/lexer.ts b/packages/bbob-parser/src/lexer.ts index d5d1ce7..c32a1df 100644 --- a/packages/bbob-parser/src/lexer.ts +++ b/packages/bbob-parser/src/lexer.ts @@ -14,8 +14,8 @@ import type { LexerOptions, LexerTokenizer } from "@bbob/types"; import { Token, TYPE_ATTR_NAME, TYPE_ATTR_VALUE, TYPE_NEW_LINE, TYPE_SPACE, TYPE_TAG, TYPE_WORD, -} from './Token'; -import { CharGrabber, createCharGrabber, trimChar, unquote } from './utils'; +} from './Token.js'; +import { CharGrabber, createCharGrabber, trimChar, unquote } from './utils.js'; // for cases const EM = '!'; diff --git a/packages/bbob-parser/src/parse.ts b/packages/bbob-parser/src/parse.ts index 7e77dbd..ace9aff 100644 --- a/packages/bbob-parser/src/parse.ts +++ b/packages/bbob-parser/src/parse.ts @@ -7,9 +7,9 @@ import { isTagNode, } from "@bbob/plugin-helper"; -import { createLexer } from "./lexer"; +import { createLexer } from "./lexer.js"; -import type { Token } from "./Token"; +import type { Token } from "./Token.js"; class NodeList { private n: Value[]; diff --git a/packages/bbob-plugin-helper/package.json b/packages/bbob-plugin-helper/package.json index a6686b8..39cde0a 100644 --- a/packages/bbob-plugin-helper/package.json +++ b/packages/bbob-plugin-helper/package.json @@ -15,8 +15,8 @@ "types" ], "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobPluginHelper", "types": "types/index.d.ts", @@ -25,30 +25,50 @@ }, "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" }, "./char": { - "types": "./types/char.d.ts", - "import": "./es/char.js", - "require": "./lib/char.js", + "import": { + "types": "./types/char.d.mts", + "default": "./es/char.mjs" + }, + "require": { + "types": "./types/char.d.ts", + "default": "./lib/char.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" }, "./helpers": { - "types": "./types/helpers.d.ts", - "import": "./es/helpers.js", - "require": "./lib/helpers.js", + "import": { + "types": "./types/helpers.d.mts", + "default": "./es/helpers.mjs" + }, + "require": { + "types": "./types/helpers.d.ts", + "default": "./lib/helpers.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" }, "./TagNode": { - "types": "./types/TagNode.d.ts", - "import": "./es/TagNode.js", - "require": "./lib/TagNode.js", + "import": { + "types": "./types/TagNode.d.mts", + "default": "./es/TagNode.mjs" + }, + "require": { + "types": "./types/TagNode.d.ts", + "default": "./lib/TagNode.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-plugin-helper/src/TagNode.ts b/packages/bbob-plugin-helper/src/TagNode.ts index f6323e4..1c0cc69 100644 --- a/packages/bbob-plugin-helper/src/TagNode.ts +++ b/packages/bbob-plugin-helper/src/TagNode.ts @@ -1,6 +1,6 @@ import type { NodeContent, TagNodeObject, TagNodeTree, TagPosition } from "@bbob/types"; -import { OPEN_BRAKET, CLOSE_BRAKET, SLASH } from './char'; +import { OPEN_BRAKET, CLOSE_BRAKET, SLASH } from './char.js'; import { getUniqAttr, getNodeLength, @@ -8,7 +8,7 @@ import { attrsToString, attrValue, isTagNode, -} from './helpers'; +} from './helpers.js'; const getTagAttrs = (tag: string, params: Record) => { const uniqAttr = getUniqAttr(params); diff --git a/packages/bbob-plugin-helper/src/helpers.ts b/packages/bbob-plugin-helper/src/helpers.ts index 63ceb08..ed1651c 100644 --- a/packages/bbob-plugin-helper/src/helpers.ts +++ b/packages/bbob-plugin-helper/src/helpers.ts @@ -1,7 +1,7 @@ import type { NodeContent, StringNode } from "@bbob/types"; -import { N } from './char'; -import type { TagNode } from "./TagNode"; +import { N } from './char.js'; +import type { TagNode } from "./TagNode.js"; function isTagNode(el: unknown): el is TagNode { return typeof el === 'object' && el !== null && 'tag' in el; diff --git a/packages/bbob-plugin-helper/src/index.ts b/packages/bbob-plugin-helper/src/index.ts index 3cfcb82..40253ef 100644 --- a/packages/bbob-plugin-helper/src/index.ts +++ b/packages/bbob-plugin-helper/src/index.ts @@ -1,3 +1,3 @@ -export * from "./helpers"; -export * from "./char"; -export * from "./TagNode"; +export * from "./helpers.js"; +export * from "./char.js"; +export * from "./TagNode.js"; diff --git a/packages/bbob-preset-html5/package.json b/packages/bbob-preset-html5/package.json index 68ac896..b850874 100644 --- a/packages/bbob-preset-html5/package.json +++ b/packages/bbob-preset-html5/package.json @@ -17,16 +17,21 @@ "@bbob/html": "*" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobPresetHTML5", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-preset-html5/src/index.ts b/packages/bbob-preset-html5/src/index.ts index 4f91926..64737d2 100644 --- a/packages/bbob-preset-html5/src/index.ts +++ b/packages/bbob-preset-html5/src/index.ts @@ -1,6 +1,6 @@ /* eslint-disable indent */ import { createPreset } from "@bbob/preset"; -import defaultTags from "./defaultTags"; +import defaultTags from "./defaultTags.js"; export type * from "@bbob/preset"; export default createPreset(defaultTags); diff --git a/packages/bbob-preset-react/package.json b/packages/bbob-preset-react/package.json index d6d01ed..0da701b 100644 --- a/packages/bbob-preset-react/package.json +++ b/packages/bbob-preset-react/package.json @@ -20,16 +20,21 @@ "@types/react": "18.x" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobPresetReact", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-preset-vue/package.json b/packages/bbob-preset-vue/package.json index 78f5375..2b8a55d 100644 --- a/packages/bbob-preset-vue/package.json +++ b/packages/bbob-preset-vue/package.json @@ -12,16 +12,21 @@ "@bbob/types": "*" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobPresetVue", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-preset/package.json b/packages/bbob-preset/package.json index cd3ab09..bde18e3 100644 --- a/packages/bbob-preset/package.json +++ b/packages/bbob-preset/package.json @@ -22,16 +22,21 @@ "@bbob/core": "*" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobPreset", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-preset/src/index.ts b/packages/bbob-preset/src/index.ts index 15a762c..53024b4 100644 --- a/packages/bbob-preset/src/index.ts +++ b/packages/bbob-preset/src/index.ts @@ -1,2 +1,2 @@ -export { default } from "./preset"; -export * from "./preset"; +export { default } from "./preset.js"; +export * from "./preset.js"; diff --git a/packages/bbob-react/package.json b/packages/bbob-react/package.json index e2ebac3..31b7147 100644 --- a/packages/bbob-react/package.json +++ b/packages/bbob-react/package.json @@ -26,16 +26,21 @@ "@types/react": "18.x" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobReact", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-react/src/Component.ts b/packages/bbob-react/src/Component.ts index 0ad7ed2..26a7abf 100644 --- a/packages/bbob-react/src/Component.ts +++ b/packages/bbob-react/src/Component.ts @@ -1,7 +1,7 @@ import React, { ReactNode } from 'react'; import type { BBobPlugins, BBobCoreOptions } from '@bbob/types'; -import { render } from './render'; +import { render } from './render.js'; const content = (children: ReactNode, plugins?: BBobPlugins, options?: BBobCoreOptions) => React.Children.map(children, diff --git a/packages/bbob-react/src/index.ts b/packages/bbob-react/src/index.ts index 5a4aadb..4e2ad52 100644 --- a/packages/bbob-react/src/index.ts +++ b/packages/bbob-react/src/index.ts @@ -1,2 +1,2 @@ -export { default } from './Component'; -export { render } from './render'; +export { default } from './Component.js'; +export { render } from './render.js'; diff --git a/packages/bbob-types/package.json b/packages/bbob-types/package.json index 9d2815c..862ea81 100644 --- a/packages/bbob-types/package.json +++ b/packages/bbob-types/package.json @@ -14,7 +14,17 @@ "types" ], "types": "types/index.d.ts", - "module": "types/index.d.ts", + "module": "types/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./types/index.d.mts" + }, + "require": { + "types": "./types/index.d.ts" + } + } + }, "homepage": "https://github.com/JiLiZART/bbob", "author": "Nikolay Kostyurin ", "license": "MIT", diff --git a/packages/bbob-types/src/core.ts b/packages/bbob-types/src/core.ts index a9e0ff2..f9b7d67 100644 --- a/packages/bbob-types/src/core.ts +++ b/packages/bbob-types/src/core.ts @@ -1,5 +1,5 @@ -import { ParseOptions } from "./parser"; -import { NodeContent, PartialNodeContent, TagNodeObject, TagNodeTree } from "./common"; +import { ParseOptions } from "./parser.js"; +import { NodeContent, PartialNodeContent, TagNodeObject, TagNodeTree } from "./common.js"; export interface BBobCoreOptions< Data = unknown | null, diff --git a/packages/bbob-types/src/index.ts b/packages/bbob-types/src/index.ts index 00c301d..dd1ed07 100644 --- a/packages/bbob-types/src/index.ts +++ b/packages/bbob-types/src/index.ts @@ -1,4 +1,4 @@ -export * from './common' -export * from './parser' -export * from './core' -export * from './preset' +export * from './common.js' +export * from './parser.js' +export * from './core.js' +export * from './preset.js' diff --git a/packages/bbob-types/src/parser.ts b/packages/bbob-types/src/parser.ts index 6c7463f..8258a76 100644 --- a/packages/bbob-types/src/parser.ts +++ b/packages/bbob-types/src/parser.ts @@ -1,4 +1,4 @@ -import { TagNodeTree, TagPosition } from "./common"; +import { TagNodeTree, TagPosition } from "./common.js"; export interface ParseError { tagName: string; diff --git a/packages/bbob-types/src/preset.ts b/packages/bbob-types/src/preset.ts index cef9dde..ebd4dfe 100644 --- a/packages/bbob-types/src/preset.ts +++ b/packages/bbob-types/src/preset.ts @@ -1,6 +1,6 @@ -import { BBobCoreTagNodeTree, BBobPluginFunction, BBobPluginOptions } from "./core"; -import { TagNodeObject } from "./common"; +import { BBobCoreTagNodeTree, BBobPluginFunction, BBobPluginOptions } from "./core.js"; +import { TagNodeObject } from "./common.js"; export type PartialRecord = Partial> diff --git a/packages/bbob-vue2/package.json b/packages/bbob-vue2/package.json index 79216bb..892275e 100644 --- a/packages/bbob-vue2/package.json +++ b/packages/bbob-vue2/package.json @@ -25,16 +25,21 @@ "vue-template-compiler": "2.7.16" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobVue", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-vue2/src/Component.ts b/packages/bbob-vue2/src/Component.ts index bf645f6..cf0a925 100644 --- a/packages/bbob-vue2/src/Component.ts +++ b/packages/bbob-vue2/src/Component.ts @@ -1,7 +1,7 @@ import { defineComponent } from 'vue'; import type { BBobCoreOptions, BBobPlugins } from '@bbob/types'; -import { render } from './render'; +import { render } from './render.js'; export type BBobVueComponentProps = { container: string diff --git a/packages/bbob-vue2/src/index.ts b/packages/bbob-vue2/src/index.ts index dded722..abeb21a 100644 --- a/packages/bbob-vue2/src/index.ts +++ b/packages/bbob-vue2/src/index.ts @@ -1,5 +1,5 @@ import type { VueConstructor } from 'vue'; -import Component from './Component'; +import Component from './Component.js'; function install(vue: VueConstructor) { vue.component("bbob-bbcode", Component); @@ -7,6 +7,6 @@ function install(vue: VueConstructor) { vue.component("BBCode", Component); } -export { render } from './render'; +export { render } from './render.js'; export { Component }; export default install; diff --git a/packages/bbob-vue2/tsconfig.json b/packages/bbob-vue2/tsconfig.json index 385f1a8..043d995 100644 --- a/packages/bbob-vue2/tsconfig.json +++ b/packages/bbob-vue2/tsconfig.json @@ -2,7 +2,8 @@ "extends": "../../tsconfig.json", "compilerOptions": { "baseUrl": ".", - "outDir": "./types" + "outDir": "./types", + "moduleResolution": "node" }, "include": [ "./src/**/*" diff --git a/packages/bbob-vue3/package.json b/packages/bbob-vue3/package.json index ed146ca..c3115f0 100644 --- a/packages/bbob-vue3/package.json +++ b/packages/bbob-vue3/package.json @@ -29,16 +29,21 @@ "vue": "*" }, "main": "lib/index.js", - "module": "es/index.js", - "jsnext:main": "es/index.js", + "module": "es/index.mjs", + "jsnext:main": "es/index.mjs", "browser": "dist/index.js", "browserName": "BbobVue3", "types": "types/index.d.ts", "exports": { ".": { - "types": "./types/index.d.ts", - "import": "./es/index.js", - "require": "./lib/index.js", + "import": { + "types": "./types/index.d.mts", + "default": "./es/index.mjs" + }, + "require": { + "types": "./types/index.d.ts", + "default": "./lib/index.js" + }, "browser": "./dist/index.min.js", "umd": "./dist/index.min.js" } diff --git a/packages/bbob-vue3/src/Component.ts b/packages/bbob-vue3/src/Component.ts index 21f3273..738e4e4 100644 --- a/packages/bbob-vue3/src/Component.ts +++ b/packages/bbob-vue3/src/Component.ts @@ -1,5 +1,5 @@ import { defineComponent, h, VNode } from "vue"; -import { render } from "./render"; +import { render } from "./render.js"; import type { BBobPlugins, BBobCoreOptions } from "@bbob/types"; diff --git a/packages/bbob-vue3/src/index.ts b/packages/bbob-vue3/src/index.ts index 3ba4dc4..cc2f40b 100644 --- a/packages/bbob-vue3/src/index.ts +++ b/packages/bbob-vue3/src/index.ts @@ -1,5 +1,5 @@ import type { Plugin } from "@vue/runtime-core"; -import Component from "./Component"; +import Component from "./Component.js"; const plugin = { install(app) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e0fda2b..e2be080 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -149,6 +149,12 @@ importers: size-limit: specifier: 11.0.1 version: 11.0.1 + ts-jest-resolver: + specifier: ^2.0.1 + version: 2.0.1 + ts2mjs: + specifier: ^4.0.0 + version: 4.0.0 typescript: specifier: 5.1.6 version: 5.1.6 @@ -7517,6 +7523,11 @@ packages: supports-color: 7.2.0 dev: true + /chalk@5.5.0: + resolution: {integrity: sha512-1tm8DTaJhPBG3bIkVeZt1iZM9GfSX2lzOeDVZH9R9ffRHpmHvxZ/QhgQH/aDTkswQVt+YHdXAdS/In/30OjCbg==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -7769,6 +7780,11 @@ packages: engines: {node: '>=14'} dev: true + /commander@14.0.0: + resolution: {integrity: sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==} + engines: {node: '>=20'} + dev: true + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true @@ -16730,6 +16746,12 @@ packages: typescript: 5.8.2 dev: true + /ts-jest-resolver@2.0.1: + resolution: {integrity: sha512-FolE73BqVZCs8/RbLKxC67iaAtKpBWx7PeLKFW2zJQlOf9j851I7JRxSDenri2NFvVH3QP7v3S8q1AmL24Zb9Q==} + dependencies: + jest-resolve: 29.7.0 + dev: true + /ts-node@10.9.1(@swc/core@1.3.107)(@types/node@20.4.5)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -16810,6 +16832,17 @@ packages: yn: 3.1.1 dev: true + /ts2mjs@4.0.0: + resolution: {integrity: sha512-k+mn9y/2kYNqV7dV9dP2NKw0VY6HfESPqEBwjop0M2AyE6rKd2N/y3DKLtWb0bRjJgFr8uoK8H1Tlr2CKe0oyw==} + engines: {node: '>=20.18.0'} + hasBin: true + dependencies: + chalk: 5.5.0 + commander: 14.0.0 + globby: 14.1.0 + magic-string: 0.30.17 + dev: true + /tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: diff --git a/tsconfig.json b/tsconfig.json index caef933..15157f5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,8 +15,8 @@ "forceConsistentCasingInFileNames": true, "emitDeclarationOnly": true, "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", + "module": "node16", + "moduleResolution": "node16", "resolveJsonModule": true, "downlevelIteration": true, "jsx": "preserve",