From d5263643219de84c7ed6d6ee98680d443f2b9d29 Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Sun, 10 Oct 2021 13:29:00 +0900 Subject: [PATCH 1/3] support node native es modules --- packages/core-base/index.mjs | 1 + packages/core-base/package.json | 13 +++++++++++++ packages/core/index.mjs | 1 + packages/core/package.json | 13 +++++++++++++ packages/devtools-if/index.mjs | 1 + packages/devtools-if/package.json | 12 ++++++++++++ packages/message-compiler/index.mjs | 1 + packages/message-compiler/package.json | 13 +++++++++++++ packages/petite-vue-i18n/index.mjs | 1 + packages/petite-vue-i18n/package.json | 13 +++++++++++++ packages/shared/index.mjs | 1 + packages/shared/package.json | 12 ++++++++++++ packages/vue-devtools/index.mjs | 1 + packages/vue-devtools/package.json | 12 ++++++++++++ packages/vue-i18n-bridge/index.mjs | 1 + packages/vue-i18n-bridge/package.json | 13 +++++++++++++ packages/vue-i18n-core/index.mjs | 1 + packages/vue-i18n-core/package.json | 13 +++++++++++++ packages/vue-i18n/index.mjs | 1 + packages/vue-i18n/package.json | 13 +++++++++++++ 20 files changed, 137 insertions(+) create mode 100644 packages/core-base/index.mjs create mode 100644 packages/core/index.mjs create mode 100644 packages/devtools-if/index.mjs create mode 100644 packages/message-compiler/index.mjs create mode 100644 packages/petite-vue-i18n/index.mjs create mode 100644 packages/shared/index.mjs create mode 100644 packages/vue-devtools/index.mjs create mode 100644 packages/vue-i18n-bridge/index.mjs create mode 100644 packages/vue-i18n-core/index.mjs create mode 100644 packages/vue-i18n/index.mjs diff --git a/packages/core-base/index.mjs b/packages/core-base/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/core-base/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/core-base/package.json b/packages/core-base/package.json index e489d88c6..9b4321739 100644 --- a/packages/core-base/package.json +++ b/packages/core-base/package.json @@ -25,6 +25,7 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", @@ -32,6 +33,18 @@ "unpkg": "dist/core-base.global.js", "jsdelivr": "dist/core-base.global.js", "types": "dist/core-base.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/core-base.esm-browser.prod.js", + "default": "./dist/core-base.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/devtools-if": "9.2.0-beta.11", "@intlify/message-compiler": "9.2.0-beta.11", diff --git a/packages/core/index.mjs b/packages/core/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/core/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/core/package.json b/packages/core/package.json index 84eecb01c..e625a1ba6 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -25,6 +25,7 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", @@ -32,6 +33,18 @@ "unpkg": "dist/core.global.js", "jsdelivr": "dist/core.global.js", "types": "dist/core.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/core.runtime.esm-browser.prod.js", + "default": "./dist/core.runtime.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11" }, diff --git a/packages/devtools-if/index.mjs b/packages/devtools-if/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/devtools-if/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/devtools-if/package.json b/packages/devtools-if/package.json index 3eac78542..ed4c4a5f2 100644 --- a/packages/devtools-if/package.json +++ b/packages/devtools-if/package.json @@ -24,11 +24,23 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", "module": "dist/devtools-if.esm-bundler.js", "types": "dist/devtools-if.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "default": "./dist/devtools-if.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/shared": "9.2.0-beta.11" }, diff --git a/packages/message-compiler/index.mjs b/packages/message-compiler/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/message-compiler/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/message-compiler/package.json b/packages/message-compiler/package.json index d5b3fb3ae..a4c8764a9 100644 --- a/packages/message-compiler/package.json +++ b/packages/message-compiler/package.json @@ -25,6 +25,7 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", @@ -32,6 +33,18 @@ "unpkg": "dist/message-compiler.global.js", "jsdelivr": "dist/message-compiler.global.js", "types": "dist/message-compiler.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/message-compiler.esm-browser.prod.js", + "default": "./dist/message-compiler.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/shared": "9.2.0-beta.11", "source-map": "0.6.1" diff --git a/packages/petite-vue-i18n/index.mjs b/packages/petite-vue-i18n/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/petite-vue-i18n/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/petite-vue-i18n/package.json b/packages/petite-vue-i18n/package.json index e569ca3af..d5c7ee1e4 100644 --- a/packages/petite-vue-i18n/package.json +++ b/packages/petite-vue-i18n/package.json @@ -27,6 +27,7 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", @@ -34,6 +35,18 @@ "unpkg": "dist/petite-vue-i18n.global.js", "jsdelivr": "dist/petite-vue-i18n.global.js", "types": "dist/petite-vue-i18n.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/petite-vue-i18n.runtime.esm-browser.prod.js", + "default": "./dist/petite-vue-i18n.runtime.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11", diff --git a/packages/shared/index.mjs b/packages/shared/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/shared/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/shared/package.json b/packages/shared/package.json index 62c163809..1c62b881d 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -24,11 +24,23 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", "module": "dist/shared.esm-bundler.js", "types": "dist/shared.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "default": "./dist/shared.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "engines": { "node": ">= 12" }, diff --git a/packages/vue-devtools/index.mjs b/packages/vue-devtools/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/vue-devtools/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/vue-devtools/package.json b/packages/vue-devtools/package.json index 9abbc8539..ba9b3835f 100644 --- a/packages/vue-devtools/package.json +++ b/packages/vue-devtools/package.json @@ -24,11 +24,23 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", "module": "dist/vue-devtools.esm-bundler.js", "types": "dist/vue-devtools.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "default": "./dist/vue-devtools.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11" diff --git a/packages/vue-i18n-bridge/index.mjs b/packages/vue-i18n-bridge/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/vue-i18n-bridge/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/vue-i18n-bridge/package.json b/packages/vue-i18n-bridge/package.json index cf3e4703a..f2c7d4738 100644 --- a/packages/vue-i18n-bridge/package.json +++ b/packages/vue-i18n-bridge/package.json @@ -28,6 +28,7 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", @@ -35,6 +36,18 @@ "unpkg": "dist/vue-i18n-bridge.global.js", "jsdelivr": "dist/vue-i18n-bridge.global.js", "types": "dist/vue-i18n-bridge.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/vue-i18n-bridge.runtime.esm-browser.prod.js", + "default": "./dist/vue-i18n-bridge.runtime.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11", diff --git a/packages/vue-i18n-core/index.mjs b/packages/vue-i18n-core/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/vue-i18n-core/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/vue-i18n-core/package.json b/packages/vue-i18n-core/package.json index 0beee381b..64f070b4f 100644 --- a/packages/vue-i18n-core/package.json +++ b/packages/vue-i18n-core/package.json @@ -27,6 +27,7 @@ }, "files": [ "index.js", + "index.mjs", "dist" ], "main": "index.js", @@ -34,6 +35,18 @@ "unpkg": "dist/vue-i18n-core.global.js", "jsdelivr": "dist/vue-i18n-core.global.js", "types": "dist/vue-i18n-core.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/vue-i18n-core.esm-browser.prod.js", + "default": "./dist/vue-i18n-core.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11", diff --git a/packages/vue-i18n/index.mjs b/packages/vue-i18n/index.mjs new file mode 100644 index 000000000..fcb9204cb --- /dev/null +++ b/packages/vue-i18n/index.mjs @@ -0,0 +1 @@ +export * from './index.js' diff --git a/packages/vue-i18n/package.json b/packages/vue-i18n/package.json index 566e8041a..be0fd84ac 100644 --- a/packages/vue-i18n/package.json +++ b/packages/vue-i18n/package.json @@ -26,6 +26,7 @@ }, "files": [ "index.js", + "index.mjs", "dist", "vetur" ], @@ -34,6 +35,18 @@ "unpkg": "dist/vue-i18n.global.js", "jsdelivr": "dist/vue-i18n.global.js", "types": "dist/vue-i18n.d.ts", + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/vue-i18n.runtime.esm-browser.prod.js", + "default": "./dist/vue-i18n.runtime.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11", From f0bae815609327f96d1de0f864bd20f44c699c1a Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Sun, 10 Oct 2021 14:19:32 +0900 Subject: [PATCH 2/3] update benchmark --- benchmark/complex.js | 70 --------------------------- benchmark/complex.mjs | 84 +++++++++++++++++++++++++++++++++ benchmark/index.js | 29 ------------ benchmark/index.mjs | 37 +++++++++++++++ benchmark/simple.js | 64 ------------------------- benchmark/simple.mjs | 80 +++++++++++++++++++++++++++++++ benchmark/utils.mjs | 6 +++ package.json | 5 +- packages/core-base/src/index.ts | 2 + pnpm-lock.yaml | 6 +++ 10 files changed, 219 insertions(+), 164 deletions(-) delete mode 100644 benchmark/complex.js create mode 100644 benchmark/complex.mjs delete mode 100644 benchmark/index.js create mode 100644 benchmark/index.mjs delete mode 100644 benchmark/simple.js create mode 100644 benchmark/simple.mjs create mode 100644 benchmark/utils.mjs diff --git a/benchmark/complex.js b/benchmark/complex.js deleted file mode 100644 index cc46df6c2..000000000 --- a/benchmark/complex.js +++ /dev/null @@ -1,70 +0,0 @@ -const { baseCompile } = require('../packages/message-compiler') -const { - translate, - createCoreContext, - clearCompileCache -} = require('../packages/core') -const { createI18n } = require('../packages/vue-i18n') -const convertHrtime = require('convert-hrtime') - -const data = require('./complex.json') -const len = Object.keys(data).length - -console.log('complex pattern ...') - -console.log(`compile time: ${len} resources`) -let start = convertHrtime(process.hrtime()) -for (const [, source] of Object.entries(data)) { - baseCompile(source) -} -let end = convertHrtime(process.hrtime()) -console.log(`ms: ${end.milliseconds - start.milliseconds}`) - -console.log() - -console.log(`resolve time with core: ${len} resources`) -const ctx = createCoreContext({ - locale: 'en', - modifiers: { - caml: val => val - }, - messages: { - en: data - } -}) -start = convertHrtime(process.hrtime()) -for (const [key] of Object.entries(data)) { - translate(ctx, key, 2) -} -end = convertHrtime(process.hrtime()) -console.log(`sec: ${end.seconds - start.seconds}`) -console.log(`ms: ${end.milliseconds - start.milliseconds}`) - -clearCompileCache() -console.log() - -console.log(`resolve time on composition: ${len} resources`) -const i18n = createI18n({ - legacy: false, - locale: 'en', - modifiers: { - caml: val => val - }, - messages: { - en: data - } -}) -start = convertHrtime(process.hrtime()) -for (const [key] of Object.entries(data)) { - i18n.global.t(key, 2) -} -end = convertHrtime(process.hrtime()) -console.log(`ms: ${end.milliseconds - start.milliseconds}`) - -console.log(`resolve time on composition with compile cache: ${len} resources`) -start = convertHrtime(process.hrtime()) -for (const [key] of Object.entries(data)) { - i18n.global.t(key, 2) -} -end = convertHrtime(process.hrtime()) -console.log(`ms: ${end.milliseconds - start.milliseconds}`) diff --git a/benchmark/complex.mjs b/benchmark/complex.mjs new file mode 100644 index 000000000..05e9a8ade --- /dev/null +++ b/benchmark/complex.mjs @@ -0,0 +1,84 @@ +import { baseCompile } from '@intlify/message-compiler' +import { + translate, + createCoreContext, + clearCompileCache +} from '@intlify/core-base' +import { createI18n } from 'vue-i18n' +import convertHrtime from 'convert-hrtime' +import { resolve, dirname } from 'pathe' +import { readJson } from './utils.mjs' + +async function run() { + const data = await readJson(resolve(dirname('.'), './benchmark/complex.json')) + const len = Object.keys(data).length + + console.log('complex pattern ...') + + console.log(`compile time: ${len} resources`) + let start = convertHrtime(process.hrtime.bigint()) + for (const [, source] of Object.entries(data)) { + baseCompile(source) + } + let end = convertHrtime(process.hrtime.bigint()) + console.log(`ms: ${end.milliseconds - start.milliseconds}`) + + console.log() + + console.log(`resolve time with core: ${len} resources`) + const ctx = createCoreContext({ + locale: 'en', + modifiers: { + caml: val => val + }, + messages: { + en: data + } + }) + start = convertHrtime(process.hrtime.bigint()) + for (const [key] of Object.entries(data)) { + translate(ctx, key, 2) + } + end = convertHrtime(process.hrtime.bigint()) + console.log(`sec: ${end.seconds - start.seconds}`) + console.log(`ms: ${end.milliseconds - start.milliseconds}`) + + clearCompileCache() + console.log() + + console.log(`resolve time on composition: ${len} resources`) + const i18n = createI18n({ + legacy: false, + locale: 'en', + modifiers: { + caml: val => val + }, + messages: { + en: data + } + }) + start = convertHrtime(process.hrtime.bigint()) + for (const [key] of Object.entries(data)) { + i18n.global.t(key, 2) + } + end = convertHrtime(process.hrtime.bigint()) + console.log(`ms: ${end.milliseconds - start.milliseconds}`) + + console.log( + `resolve time on composition with compile cache: ${len} resources` + ) + start = convertHrtime(process.hrtime.bigint()) + for (const [key] of Object.entries(data)) { + i18n.global.t(key, 2) + } + end = convertHrtime(process.hrtime.bigint()) + console.log(`ms: ${end.milliseconds - start.milliseconds}`) +} + +;(async () => { + try { + await run() + } catch (e) { + console.error(e) + } +})() diff --git a/benchmark/index.js b/benchmark/index.js deleted file mode 100644 index ec3a77289..000000000 --- a/benchmark/index.js +++ /dev/null @@ -1,29 +0,0 @@ -const exec = require('child_process').exec - -function run(pattner) { - return new Promise((resolve, reject) => { - exec(`node ./${pattner}.js`, { cwd: __dirname }, (error, stdout) => { - if (error) { - return reject(error) - } - console.log(stdout) - resolve() - }) - }) -} - -const asyncForEach = async (array, callback) => { - for (let index = 0; index < array.length; index++) { - await callback(array[index], index, array) - } -} - -;(async () => { - try { - await asyncForEach(['simple', 'complex'], async p => { - await run(p) - }) - } catch (e) { - console.error(e) - } -})() diff --git a/benchmark/index.mjs b/benchmark/index.mjs new file mode 100644 index 000000000..ce0fdb42b --- /dev/null +++ b/benchmark/index.mjs @@ -0,0 +1,37 @@ +import { exec } from 'child_process' +import { dirname } from 'pathe' + +function run(pattner) { + return new Promise((resolve, reject) => { + exec( + `node ./benchmark/${pattner}.mjs`, + { cwd: dirname('.') }, + (error, stdout) => { + if (error) { + return reject(error) + } + console.log(stdout) + resolve() + } + ) + }) +} + +const asyncForEach = async (array, callback) => { + for (let index = 0; index < array.length; index++) { + await callback(array[index], index, array) + } +} + +;(async () => { + try { + for (const p of ['simple', 'complex']) { + await run(p) + } + // await asyncForEach(['simple', 'complex'], async p => { + // await run(p) + // }) + } catch (e) { + console.error(e) + } +})() diff --git a/benchmark/simple.js b/benchmark/simple.js deleted file mode 100644 index 6dd44d642..000000000 --- a/benchmark/simple.js +++ /dev/null @@ -1,64 +0,0 @@ -const { baseCompile } = require('../packages/message-compiler') -const { - translate, - createCoreContext, - clearCompileCache -} = require('../packages/core') -const { createI18n } = require('../packages/vue-i18n') -const convertHrtime = require('convert-hrtime') - -const simpleData = require('./simple.json') -const len = Object.keys(simpleData).length - -console.log('simple pattern ...') - -console.log(`compile time: ${len} resources`) -let start = convertHrtime(process.hrtime()) -for (const [, source] of Object.entries(simpleData)) { - baseCompile(source) -} -let end = convertHrtime(process.hrtime()) -console.log(`sec: ${end.seconds - start.seconds}`) -console.log(`ms: ${end.milliseconds - start.milliseconds}`) - -console.log() - -console.log(`resolve time with core: ${len} resources`) -const ctx = createCoreContext({ - locale: 'en', - messages: { - en: simpleData - } -}) -start = convertHrtime(process.hrtime()) -for (const [key] of Object.entries(simpleData)) { - translate(ctx, key) -} -end = convertHrtime(process.hrtime()) -console.log(`ms: ${end.milliseconds - start.milliseconds}`) - -clearCompileCache() -console.log() - -console.log(`resolve time on composition: ${len} resources`) -const i18n = createI18n({ - legacy: false, - locale: 'en', - messages: { - en: simpleData - } -}) -start = convertHrtime(process.hrtime()) -for (const [key] of Object.entries(simpleData)) { - i18n.global.t(key) -} -end = convertHrtime(process.hrtime()) -console.log(`ms: ${end.milliseconds - start.milliseconds}`) - -console.log(`resolve time on composition with compile cache: ${len} resources`) -start = convertHrtime(process.hrtime()) -for (const [key] of Object.entries(simpleData)) { - i18n.global.t(key) -} -end = convertHrtime(process.hrtime()) -console.log(`ms: ${end.milliseconds - start.milliseconds}`) diff --git a/benchmark/simple.mjs b/benchmark/simple.mjs new file mode 100644 index 000000000..b420569ce --- /dev/null +++ b/benchmark/simple.mjs @@ -0,0 +1,80 @@ +import { baseCompile } from '@intlify/message-compiler' +import { + translate, + createCoreContext, + clearCompileCache +} from '@intlify/core-base' +import { createI18n } from 'vue-i18n' +import convertHrtime from 'convert-hrtime' +import { resolve, dirname } from 'pathe' +import { readJson } from './utils.mjs' + +async function run() { + const simpleData = await readJson( + resolve(dirname('.'), './benchmark/simple.json') + ) + const len = Object.keys(simpleData).length + + console.log('simple pattern ...') + + console.log(`compile time: ${len} resources`) + let start = convertHrtime(process.hrtime.bigint()) + for (const [, source] of Object.entries(simpleData)) { + baseCompile(source) + } + let end = convertHrtime(process.hrtime.bigint()) + console.log(`sec: ${end.seconds - start.seconds}`) + console.log(`ms: ${end.milliseconds - start.milliseconds}`) + + console.log() + + console.log(`resolve time with core: ${len} resources`) + const ctx = createCoreContext({ + locale: 'en', + messages: { + en: simpleData + } + }) + start = convertHrtime(process.hrtime.bigint()) + for (const [key] of Object.entries(simpleData)) { + translate(ctx, key) + } + end = convertHrtime(process.hrtime.bigint()) + console.log(`ms: ${end.milliseconds - start.milliseconds}`) + + clearCompileCache() + console.log() + + console.log(`resolve time on composition: ${len} resources`) + const i18n = createI18n({ + legacy: false, + locale: 'en', + messages: { + en: simpleData + } + }) + start = convertHrtime(process.hrtime.bigint()) + for (const [key] of Object.entries(simpleData)) { + i18n.global.t(key) + } + end = convertHrtime(process.hrtime.bigint()) + console.log(`ms: ${end.milliseconds - start.milliseconds}`) + + console.log( + `resolve time on composition with compile cache: ${len} resources` + ) + start = convertHrtime(process.hrtime.bigint()) + for (const [key] of Object.entries(simpleData)) { + i18n.global.t(key) + } + end = convertHrtime(process.hrtime.bigint()) + console.log(`ms: ${end.milliseconds - start.milliseconds}`) +} + +;(async () => { + try { + await run() + } catch (e) { + console.error(e) + } +})() diff --git a/benchmark/utils.mjs b/benchmark/utils.mjs new file mode 100644 index 000000000..710627d74 --- /dev/null +++ b/benchmark/utils.mjs @@ -0,0 +1,6 @@ +import fs from 'fs/promises' + +export async function readJson(path) { + const data = await fs.readFile(path, 'utf8') + return JSON.parse(data) +} diff --git a/package.json b/package.json index da8d5794b..d566664f0 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "url": "https://github.com/inlitify/vue-i18n-next/issues" }, "scripts": { - "benchmark": "node ./benchmark/index.js", + "benchmark": "node ./benchmark/index.mjs", "build": "node -r esbuild-register scripts/build.ts", "build:explorer": "cd packages/format-explorer && vite build", "build:size": "npm run build && run-p build:size-*", @@ -63,6 +63,8 @@ "test:unit": "npm run clean:cache:jest && cross-env NODE_ICU_DATA=./node_modules/full-icu jest --env node" }, "devDependencies": { + "@intlify/core-base": "workspace:*", + "@intlify/message-compiler": "workspace:*", "@kazupon/lerna-changelog": "^4.3.0", "@microsoft/api-extractor": "7.15.2", "@rollup/plugin-commonjs": "^21.0.0", @@ -136,6 +138,7 @@ "typescript-eslint-language-service": "^4.1.3", "vitepress": "^0.18.0", "vue": "^3.2.4", + "vue-i18n": "workspace:*", "yorkie": "^2.0.0" }, "peerDependencies": { diff --git a/packages/core-base/src/index.ts b/packages/core-base/src/index.ts index a28b8bcde..2c141e85a 100644 --- a/packages/core-base/src/index.ts +++ b/packages/core-base/src/index.ts @@ -18,6 +18,8 @@ export { CoreError, CoreErrorCodes, createCoreError } from './errors' export * from './types' export * from './devtools' +// TODO: we could not exports for Node native ES Moudles yet... + if (__ESM_BUNDLER__ && !__TEST__) { if (typeof __FEATURE_PROD_INTLIFY_DEVTOOLS__ !== 'boolean') { getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2eaa5c4ad..1d17f3291 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,8 @@ importers: .: specifiers: + '@intlify/core-base': workspace:* + '@intlify/message-compiler': workspace:* '@kazupon/lerna-changelog': ^4.3.0 '@microsoft/api-extractor': 7.15.2 '@rollup/plugin-commonjs': ^21.0.0 @@ -77,8 +79,11 @@ importers: typescript-eslint-language-service: ^4.1.3 vitepress: ^0.18.0 vue: ^3.2.4 + vue-i18n: workspace:* yorkie: ^2.0.0 devDependencies: + '@intlify/core-base': link:packages/core-base + '@intlify/message-compiler': link:packages/message-compiler '@kazupon/lerna-changelog': 4.3.0 '@microsoft/api-extractor': 7.15.2 '@rollup/plugin-commonjs': 21.0.0_rollup@2.58.0 @@ -152,6 +157,7 @@ importers: typescript-eslint-language-service: 4.1.5_306256632336565c0eecc451c0425529 vitepress: 0.18.1 vue: 3.2.20 + vue-i18n: link:packages/vue-i18n yorkie: 2.0.0 examples/lazy-loading/vite: From b167580f36737d109bf5aa9fd5e82c87efaf37ac Mon Sep 17 00:00:00 2001 From: kazuya kawaguchi Date: Sun, 10 Oct 2021 14:24:01 +0900 Subject: [PATCH 3/3] formatting --- benchmark/index.mjs | 6 ------ benchmark/utils.mjs | 1 + package.json | 2 +- packages/core-base/package.json | 24 ++++++++++++------------ packages/core/package.json | 24 ++++++++++++------------ packages/devtools-if/package.json | 22 +++++++++++----------- packages/message-compiler/package.json | 24 ++++++++++++------------ packages/petite-vue-i18n/package.json | 24 ++++++++++++------------ packages/shared/package.json | 20 ++++++++++---------- packages/vue-devtools/package.json | 22 +++++++++++----------- packages/vue-i18n-bridge/package.json | 24 ++++++++++++------------ packages/vue-i18n-core/package.json | 24 ++++++++++++------------ packages/vue-i18n/package.json | 24 ++++++++++++------------ 13 files changed, 118 insertions(+), 123 deletions(-) diff --git a/benchmark/index.mjs b/benchmark/index.mjs index ce0fdb42b..a834592c6 100644 --- a/benchmark/index.mjs +++ b/benchmark/index.mjs @@ -17,12 +17,6 @@ function run(pattner) { }) } -const asyncForEach = async (array, callback) => { - for (let index = 0; index < array.length; index++) { - await callback(array[index], index, array) - } -} - ;(async () => { try { for (const p of ['simple', 'complex']) { diff --git a/benchmark/utils.mjs b/benchmark/utils.mjs index 710627d74..0b17e5fc6 100644 --- a/benchmark/utils.mjs +++ b/benchmark/utils.mjs @@ -1,5 +1,6 @@ import fs from 'fs/promises' +// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export async function readJson(path) { const data = await fs.readFile(path, 'utf8') return JSON.parse(data) diff --git a/package.json b/package.json index d566664f0..3f31bf124 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "format:package": "node -r esbuild-register ./scripts/fixpack.ts", "format:prettier": "prettier --config .prettierrc --ignore-path .prettierignore '**/*.{js,json,html}'", "lint": "run-p lint:secret lint:codes lint:docs", - "lint:codes": "eslint ./packages ./test-d ./e2e ./benchmark --ext .js,.ts,.vue", + "lint:codes": "eslint ./packages ./test-d ./e2e ./benchmark --ext .js,.mjs,.ts,.vue", "lint:docs": "textlint --config .textlintrc.js docs/*.md docs/advanced/**/*.md docs/essentials/**/*.md docs/migration/**/*.md docs/api/injection.md packages/**/*.md", "lint:fix": "run-p \"lint:codes -- --fix\" \"lint:docs -- --fix\"", "lint:secret": "npx secretlint \"**/*\"", diff --git a/packages/core-base/package.json b/packages/core-base/package.json index 9b4321739..1aa3bba46 100644 --- a/packages/core-base/package.json +++ b/packages/core-base/package.json @@ -33,18 +33,6 @@ "unpkg": "dist/core-base.global.js", "jsdelivr": "dist/core-base.global.js", "types": "dist/core-base.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "browser": "./dist/core-base.esm-browser.prod.js", - "default": "./dist/core-base.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/devtools-if": "9.2.0-beta.11", "@intlify/message-compiler": "9.2.0-beta.11", @@ -63,6 +51,18 @@ "global" ] }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/core-base.esm-browser.prod.js", + "default": "./dist/core-base.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "publishConfig": { "access": "public" }, diff --git a/packages/core/package.json b/packages/core/package.json index e625a1ba6..3df394d32 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -33,18 +33,6 @@ "unpkg": "dist/core.global.js", "jsdelivr": "dist/core.global.js", "types": "dist/core.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "browser": "./dist/core.runtime.esm-browser.prod.js", - "default": "./dist/core.runtime.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11" }, @@ -63,6 +51,18 @@ "global-runtime" ] }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/core.runtime.esm-browser.prod.js", + "default": "./dist/core.runtime.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "publishConfig": { "access": "public" }, diff --git a/packages/devtools-if/package.json b/packages/devtools-if/package.json index ed4c4a5f2..ae629b2f0 100644 --- a/packages/devtools-if/package.json +++ b/packages/devtools-if/package.json @@ -30,17 +30,6 @@ "main": "index.js", "module": "dist/devtools-if.esm-bundler.js", "types": "dist/devtools-if.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "default": "./dist/devtools-if.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/shared": "9.2.0-beta.11" }, @@ -54,6 +43,17 @@ "cjs" ] }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "default": "./dist/devtools-if.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "publishConfig": { "access": "public" }, diff --git a/packages/message-compiler/package.json b/packages/message-compiler/package.json index a4c8764a9..492bb91ab 100644 --- a/packages/message-compiler/package.json +++ b/packages/message-compiler/package.json @@ -33,18 +33,6 @@ "unpkg": "dist/message-compiler.global.js", "jsdelivr": "dist/message-compiler.global.js", "types": "dist/message-compiler.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "browser": "./dist/message-compiler.esm-browser.prod.js", - "default": "./dist/message-compiler.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/shared": "9.2.0-beta.11", "source-map": "0.6.1" @@ -62,6 +50,18 @@ ], "enableFullBundleForEsmBrowser": true }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/message-compiler.esm-browser.prod.js", + "default": "./dist/message-compiler.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "publishConfig": { "access": "public" }, diff --git a/packages/petite-vue-i18n/package.json b/packages/petite-vue-i18n/package.json index d5c7ee1e4..d9fb4291d 100644 --- a/packages/petite-vue-i18n/package.json +++ b/packages/petite-vue-i18n/package.json @@ -35,18 +35,6 @@ "unpkg": "dist/petite-vue-i18n.global.js", "jsdelivr": "dist/petite-vue-i18n.global.js", "types": "dist/petite-vue-i18n.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "browser": "./dist/petite-vue-i18n.runtime.esm-browser.prod.js", - "default": "./dist/petite-vue-i18n.runtime.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11", @@ -74,5 +62,17 @@ "global-runtime" ] }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/petite-vue-i18n.runtime.esm-browser.prod.js", + "default": "./dist/petite-vue-i18n.runtime.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "sideEffects": false } diff --git a/packages/shared/package.json b/packages/shared/package.json index 1c62b881d..b3ed372bd 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -30,6 +30,16 @@ "main": "index.js", "module": "dist/shared.esm-bundler.js", "types": "dist/shared.d.ts", + "engines": { + "node": ">= 12" + }, + "buildOptions": { + "name": "IntlifyShared", + "formats": [ + "esm-bundler", + "cjs" + ] + }, "exports": { ".": { "import": { @@ -41,16 +51,6 @@ "./dist/*": "./dist/*", "./package.json": "./package.json" }, - "engines": { - "node": ">= 12" - }, - "buildOptions": { - "name": "IntlifyShared", - "formats": [ - "esm-bundler", - "cjs" - ] - }, "publishConfig": { "access": "public" }, diff --git a/packages/vue-devtools/package.json b/packages/vue-devtools/package.json index ba9b3835f..9d7e6c4d0 100644 --- a/packages/vue-devtools/package.json +++ b/packages/vue-devtools/package.json @@ -30,17 +30,6 @@ "main": "index.js", "module": "dist/vue-devtools.esm-bundler.js", "types": "dist/vue-devtools.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "default": "./dist/vue-devtools.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11" @@ -55,6 +44,17 @@ "cjs" ] }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "default": "./dist/vue-devtools.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "publishConfig": { "access": "public" }, diff --git a/packages/vue-i18n-bridge/package.json b/packages/vue-i18n-bridge/package.json index f2c7d4738..42f955e0d 100644 --- a/packages/vue-i18n-bridge/package.json +++ b/packages/vue-i18n-bridge/package.json @@ -36,18 +36,6 @@ "unpkg": "dist/vue-i18n-bridge.global.js", "jsdelivr": "dist/vue-i18n-bridge.global.js", "types": "dist/vue-i18n-bridge.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "browser": "./dist/vue-i18n-bridge.runtime.esm-browser.prod.js", - "default": "./dist/vue-i18n-bridge.runtime.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11", @@ -76,6 +64,18 @@ "global-runtime" ] }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/vue-i18n-bridge.runtime.esm-browser.prod.js", + "default": "./dist/vue-i18n-bridge.runtime.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "publishConfig": { "access": "public" }, diff --git a/packages/vue-i18n-core/package.json b/packages/vue-i18n-core/package.json index 64f070b4f..2c15fe00d 100644 --- a/packages/vue-i18n-core/package.json +++ b/packages/vue-i18n-core/package.json @@ -35,18 +35,6 @@ "unpkg": "dist/vue-i18n-core.global.js", "jsdelivr": "dist/vue-i18n-core.global.js", "types": "dist/vue-i18n-core.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "browser": "./dist/vue-i18n-core.esm-browser.prod.js", - "default": "./dist/vue-i18n-core.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11", @@ -71,6 +59,18 @@ "global" ] }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/vue-i18n-core.esm-browser.prod.js", + "default": "./dist/vue-i18n-core.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "publishConfig": { "access": "public" }, diff --git a/packages/vue-i18n/package.json b/packages/vue-i18n/package.json index be0fd84ac..c1de7ba9e 100644 --- a/packages/vue-i18n/package.json +++ b/packages/vue-i18n/package.json @@ -35,18 +35,6 @@ "unpkg": "dist/vue-i18n.global.js", "jsdelivr": "dist/vue-i18n.global.js", "types": "dist/vue-i18n.d.ts", - "exports": { - ".": { - "import": { - "node": "./index.mjs", - "browser": "./dist/vue-i18n.runtime.esm-browser.prod.js", - "default": "./dist/vue-i18n.runtime.esm-bundler.js" - }, - "require": "./index.js" - }, - "./dist/*": "./dist/*", - "./package.json": "./package.json" - }, "dependencies": { "@intlify/core-base": "9.2.0-beta.11", "@intlify/shared": "9.2.0-beta.11", @@ -74,6 +62,18 @@ "global-runtime" ] }, + "exports": { + ".": { + "import": { + "node": "./index.mjs", + "browser": "./dist/vue-i18n.runtime.esm-browser.prod.js", + "default": "./dist/vue-i18n.runtime.esm-bundler.js" + }, + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./package.json": "./package.json" + }, "sideEffects": false, "vetur": { "tags": "vetur/tags.json",