diff --git a/.gitignore b/.gitignore index 5431dd3d9..4ab687ed5 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,6 @@ dist/ .DS_STORE browserstack.err -local.log \ No newline at end of file +local.log + +**/*.gen.ts diff --git a/message_generator.ts b/message_generator.ts new file mode 100644 index 000000000..2c7cd53b1 --- /dev/null +++ b/message_generator.ts @@ -0,0 +1,36 @@ +import path from 'path'; +import { writeFile } from 'fs/promises'; + +const generate = async () => { + const inp = process.argv.slice(2); + for(const filePath of inp) { + console.log('generating messages for: ', filePath); + const parsedPath = path.parse(filePath); + const fileName = parsedPath.name; + const dirName = parsedPath.dir; + const ext = parsedPath.ext; + + const genFilePath = path.join(dirName, `${fileName}.gen${ext}`); + console.log('generated file path: ', genFilePath); + const exports = await import(filePath); + const messages : Array = []; + + let genOut = ''; + + Object.keys(exports).forEach((key, i) => { + const msg = exports[key]; + genOut += `export const ${key} = '${i}';\n`; + messages.push(exports[key]) + }); + + genOut += `export const messages = ${JSON.stringify(messages, null, 2)};` + await writeFile(genFilePath, genOut, 'utf-8'); + }; +} + +generate().then(() => { + console.log('successfully generated messages'); +}).catch((e) => { + console.error(e); + process.exit(1); +}); diff --git a/package-lock.json b/package-lock.json index a1588ec80..e37a742e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,6 +35,7 @@ "eslint-config-prettier": "^6.10.0", "eslint-plugin-prettier": "^3.1.2", "happy-dom": "^14.12.3", + "jiti": "^2.4.1", "json-loader": "^0.5.4", "karma": "^6.4.0", "karma-browserstack-launcher": "^1.5.1", @@ -10958,6 +10959,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jiti": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.1.tgz", + "integrity": "sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==", + "dev": true, + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/joi": { "version": "17.13.3", "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", diff --git a/package.json b/package.json index 2d2e09618..dbb2bf109 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,8 @@ "coveralls": "nyc --reporter=lcov npm test", "prepare": "npm run build", "prepublishOnly": "npm test && npm run test-ci", - "postbuild:win": "@powershell copy \"dist/index.lite.d.ts\" \"dist/optimizely.lite.es.d.ts\" && @powershell copy \"dist/index.lite.d.ts\" \"dist/optimizely.lite.es.min.d.ts\" && @powershell copy \"dist/index.lite.d.ts\" \"dist/optimizely.lite.min.d.ts\"" + "postbuild:win": "@powershell copy \"dist/index.lite.d.ts\" \"dist/optimizely.lite.es.d.ts\" && @powershell copy \"dist/index.lite.d.ts\" \"dist/optimizely.lite.es.min.d.ts\" && @powershell copy \"dist/index.lite.d.ts\" \"dist/optimizely.lite.min.d.ts\"", + "genmsg": "jiti message_generator ./lib/error_messages.ts" }, "repository": { "type": "git", @@ -132,6 +133,7 @@ "eslint-config-prettier": "^6.10.0", "eslint-plugin-prettier": "^3.1.2", "happy-dom": "^14.12.3", + "jiti": "^2.4.1", "json-loader": "^0.5.4", "karma": "^6.4.0", "karma-browserstack-launcher": "^1.5.1",