From da6153ec8c340d282ad20c5f4f2d8d7e05a3d2e8 Mon Sep 17 00:00:00 2001 From: kemley76 Date: Thu, 20 Jun 2024 11:00:23 -0400 Subject: [PATCH] setup webpack for hdf-converters Signed-off-by: kemley76 --- libs/hdf-converters/.gitignore | 3 +- libs/hdf-converters/package.json | 18 +-- .../html/reverse-html-mapper.ts | 5 +- libs/hdf-converters/tsconfig.json | 3 +- libs/hdf-converters/types/templates.d.ts | 8 ++ libs/hdf-converters/webpack.config.js | 35 ++++++ webpack.config.js | 27 ++++ yarn.lock | 119 +++++++++++++++++- 8 files changed, 202 insertions(+), 16 deletions(-) create mode 100644 libs/hdf-converters/types/templates.d.ts create mode 100644 libs/hdf-converters/webpack.config.js create mode 100644 webpack.config.js diff --git a/libs/hdf-converters/.gitignore b/libs/hdf-converters/.gitignore index e017057ae0..68c63ea292 100644 --- a/libs/hdf-converters/.gitignore +++ b/libs/hdf-converters/.gitignore @@ -2,4 +2,5 @@ outputs converted_jsons lib mitre-hdf-converters-v*.tgz -sample_jsons/*/output_report/*.xml \ No newline at end of file +sample_jsons/*/output_report/*.xml +*.css \ No newline at end of file diff --git a/libs/hdf-converters/package.json b/libs/hdf-converters/package.json index bb3a13d48a..4d6ff1aeda 100644 --- a/libs/hdf-converters/package.json +++ b/libs/hdf-converters/package.json @@ -6,19 +6,19 @@ "files": [ "lib" ], - "main": "src/index.ts", + "main": "index.ts", "publishConfig": { - "main": "lib/index.js" + "main": "lib/bundle.js" }, "scripts": { "prepack": "yarn build && node prepack.js", "postpack": "run-script-os", "postpack:darwin:linux": "mv package.json.orig package.json", "postpack:win32": "move package.json.orig package.json", - "build": "yarn build:tailwind && run-script-os", - "build:tailwind": "tailwindcss -i ./tailwind.css -o ./lib/src/converters-from-hdf/html/style.css --minify", - "build:darwin:linux": "../../node_modules/.bin/tsc -p ./tsconfig.build.json && cp -R ./data ./lib", - "build:win32": "../../node_modules/.bin/tsc -p ./tsconfig.build.json && xcopy data lib", + "build": "yarn build:tailwind && webpack --config ./webpack.config.js --mode production && run-script-os", + "build:tailwind": "tailwindcss -i ./tailwind.css -o ./src/converters-from-hdf/html/style.css --minify", + "build:darwin:linux": "cp -R ./data ./lib", + "build:win32": "xcopy data lib", "lint": "eslint \"**/*.ts\" --fix", "lint:ci": "eslint \"**/*.ts\" --max-warnings 0", "test": "jest", @@ -65,9 +65,13 @@ "@types/node": "^20.1.0", "jest": "^27.0.6", "quicktype": "^15.0.260", + "raw-loader": "^4.0.2", "ts-jest": "^29.1.0", + "ts-loader": "^9.5.1", "tsx": "^4.7.1", - "typedoc": "^0.25.0" + "typedoc": "^0.25.0", + "webpack": "^5.92.0", + "webpack-cli": "^5.1.4" }, "jest": { "moduleNameMapper": { diff --git a/libs/hdf-converters/src/converters-from-hdf/html/reverse-html-mapper.ts b/libs/hdf-converters/src/converters-from-hdf/html/reverse-html-mapper.ts index ed25c5c974..623c216fd2 100644 --- a/libs/hdf-converters/src/converters-from-hdf/html/reverse-html-mapper.ts +++ b/libs/hdf-converters/src/converters-from-hdf/html/reverse-html-mapper.ts @@ -26,6 +26,8 @@ import { } from './html-types'; import path from 'path'; import axios from 'axios'; +import myHtml from './template.html'; +import myCss from './style.css'; type InputData = { data: ContextualizedEvaluation | string; @@ -570,6 +572,7 @@ export class FromHDFToHTMLMapper { } // Render template and return generated HTML file - return Mustache.render(template, this.outputData); + //return Mustache.render(template, this.outputData); + return myHtml + myCss + " this came from here"; } } diff --git a/libs/hdf-converters/tsconfig.json b/libs/hdf-converters/tsconfig.json index 695c88c8e8..93fd6d8e42 100644 --- a/libs/hdf-converters/tsconfig.json +++ b/libs/hdf-converters/tsconfig.json @@ -10,6 +10,7 @@ "outDir": "./lib", "strict": true, "esModuleInterop": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "declaration": true } } diff --git a/libs/hdf-converters/types/templates.d.ts b/libs/hdf-converters/types/templates.d.ts new file mode 100644 index 0000000000..2f11f8e144 --- /dev/null +++ b/libs/hdf-converters/types/templates.d.ts @@ -0,0 +1,8 @@ +declare module '*.html' { + const value: string; + export default value; +} +declare module '*.css' { + const value: string; + export default value; +} diff --git a/libs/hdf-converters/webpack.config.js b/libs/hdf-converters/webpack.config.js new file mode 100644 index 0000000000..8099d1ac07 --- /dev/null +++ b/libs/hdf-converters/webpack.config.js @@ -0,0 +1,35 @@ +const path = require('path'); + +module.exports = { + target: 'node', + entry: './index.ts', + module: { + rules: [ + { + test: /\.ts$/, + use: [ + { + loader: 'ts-loader', + options: { + configFile: 'tsconfig.build.json' + } + } + ], + exclude: /node_modules/ + }, + { + test: /\.(html|css)$/, + type: 'asset/source', + exclude: /node_modules/, + } + ], + }, + resolve: { + extensions: ['.ts', '.js', '.html', '.css'] // might need .html to generate the file + //extensions: ['.html'] // might need .html to generate the file + }, + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'lib') + } +}; \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000000..24241f4ee2 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,27 @@ +const path = require("path"); + +module.exports = { + target: "node", + entry: './index.ts', + module: { + rules: [ + { + test: /\.html$/, + use: 'html-loader', + exclude: /node_modules/ + }, + { + test: /\.ts?$/, + use: 'ts-loader', + exclude: /node_modules/ + } + ], + }, + resolve: { + extensions: ['.ts', '.js', '.html'] + }, + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'lib') + } +}; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1d4cd4a78c..3dde6462af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1932,7 +1932,7 @@ enabled "2.0.x" kuler "^2.0.0" -"@discoveryjs/json-ext@0.5.7": +"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": version "0.5.7" resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== @@ -5587,6 +5587,21 @@ "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + "@xmldom/xmldom@^0.8.2": version "0.8.10" resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" @@ -5683,6 +5698,11 @@ acorn-import-assertions@^1.9.0: resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -7554,7 +7574,7 @@ colord@^2.9.1: resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^2.0.10, colorette@^2.0.16: +colorette@^2.0.10, colorette@^2.0.14, colorette@^2.0.16: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -7616,7 +7636,7 @@ commander@7, commander@^7.1.0, commander@^7.2.0: resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -commander@^10.0.0: +commander@^10.0.0, commander@^10.0.1: version "10.0.1" resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== @@ -9381,6 +9401,14 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.16.0, enh graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.17.0: + version "5.17.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" + integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.6: version "2.4.1" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" @@ -9416,6 +9444,11 @@ envinfo@7.8.1: resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +envinfo@^7.7.3: + version "7.13.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + envinfo@^7.7.4: version "7.11.1" resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" @@ -10313,6 +10346,11 @@ fast-xml-parser@^4.2.0: dependencies: strnum "^1.0.5" +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + fastq@^1.6.0: version "1.17.1" resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -11524,7 +11562,7 @@ html-escaper@^2.0.0, html-escaper@^2.0.2: html-loader@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/html-loader/-/html-loader-5.0.0.tgz#2bb3ed423e9ea10f24add5d1a563adc5a8fc7f00" + resolved "https://registry.yarnpkg.com/html-loader/-/html-loader-5.0.0.tgz#2bb3ed423e9ea10f24add5d1a563adc5a8fc7f00" integrity sha512-puaGKdjdVVIFRtgIC2n5dt5bt0N5j6heXlAQZ4Do1MLjHmOT1gCE1Ogg7XZNeJlnOVHHsrZKGs5dfh+XwZ3XPw== dependencies: html-minifier-terser "^7.2.0" @@ -11942,6 +11980,11 @@ interpret@^1.0.0: resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + into-stream@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" @@ -16953,7 +16996,7 @@ pretty@2.0.0, pretty@^2.0.0: extend-shallow "^2.0.1" js-beautify "^1.6.12" -prismjs@1.29.0, prismjs@^1.23.0, prismjs@^1.29.0: +prismjs@^1.23.0, prismjs@^1.29.0: version "1.29.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q== @@ -17265,6 +17308,14 @@ raw-body@2.5.2: iconv-lite "0.4.24" unpipe "1.0.0" +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + react-is@^17.0.1: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" @@ -17438,6 +17489,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + redent@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -19572,7 +19630,7 @@ ts-jest@^29.1.0: semver "^7.5.3" yargs-parser "^21.0.1" -ts-loader@^9.1.0, ts-loader@^9.2.5: +ts-loader@^9.1.0, ts-loader@^9.2.5, ts-loader@^9.5.1: version "9.5.1" resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== @@ -20503,6 +20561,25 @@ webpack-chain@^6.5.1: deepmerge "^1.5.2" javascript-stringify "^2.0.1" +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + webpack-dev-middleware@^5.3.4: version "5.3.4" resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" @@ -20634,6 +20711,36 @@ webpack@^5.54.0: watchpack "^2.4.1" webpack-sources "^3.2.3" +webpack@^5.92.0: + version "5.92.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.92.0.tgz#cc114c71e6851d220b1feaae90159ed52c876bdf" + integrity sha512-Bsw2X39MYIgxouNATyVpCNVWBCuUwDgWtN78g6lSdPJRLaQ/PUVm/oXcaRAyY/sMFoKFQrsPeqvTizWtq7QPCA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + acorn "^8.7.1" + acorn-import-attributes "^1.9.5" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"