diff --git a/package.json b/package.json index b265b427..b8c58f15 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "bootstrap:no-ci": "npm i && lerna bootstrap --no-ci", "bootstrap:clean": "npm i && lerna run clean --parallel && lerna bootstrap --no-ci", "start": "lerna run start --parallel", + "start:dev": "lerna run start:dev --parallel --no-bail", "build": "lerna run build --since HEAD", "build:all": "lerna run build", "lint": "lerna run lint --since HEAD --parallel", diff --git a/packages/semcom-components/package.json b/packages/semcom-components/package.json index 1c2f84ff..d6a94952 100644 --- a/packages/semcom-components/package.json +++ b/packages/semcom-components/package.json @@ -22,7 +22,7 @@ "scripts": { "clean": "rimraf ./dist && rimraf ./package-lock.json && rimraf ./node_modules", "start": "npm run start:watch", - "start:watch": "vite", + "start:dev": "vite", "build": "rimraf ./dist && npm run build:bundle && npm run build:ts", "build:bundle": "vite build", "build:ts": "tsc", diff --git a/packages/semcom-demo-app/.env.development b/packages/semcom-demo-app/.env.development new file mode 100644 index 00000000..05900860 --- /dev/null +++ b/packages/semcom-demo-app/.env.development @@ -0,0 +1 @@ +VITE_SEMCOM_NODE_URI=http://localhost:3000 \ No newline at end of file diff --git a/packages/semcom-demo-app/.env.production b/packages/semcom-demo-app/.env.production new file mode 100644 index 00000000..09f27fd4 --- /dev/null +++ b/packages/semcom-demo-app/.env.production @@ -0,0 +1 @@ +VITE_SEMCOM_NODE_URI=https://node.semcom.digita.ai diff --git a/packages/semcom-demo-app/package-lock.json b/packages/semcom-demo-app/package-lock.json index d2a781ce..914081ea 100644 --- a/packages/semcom-demo-app/package-lock.json +++ b/packages/semcom-demo-app/package-lock.json @@ -992,9 +992,9 @@ "dev": true }, "@types/babel__core": { - "version": "7.1.14", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", - "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", + "version": "7.1.15", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.15.tgz", + "integrity": "sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -1005,18 +1005,18 @@ } }, "@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", + "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -1024,9 +1024,9 @@ } }, "@types/babel__traverse": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.0.tgz", - "integrity": "sha512-IilJZ1hJBUZwMOVDNTdflOOLzJB/ZtljYVa7k3gEZN/jqIJIPkWHC6dvbX+DD2CwZDHB9wAKzZPzzqMIkW37/w==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.1.tgz", + "integrity": "sha512-DomsDK/nX3XXHs6jlQ8/YYE6jZAuhmoGAFfcYi1h1jbBNGS7Efdx74FKLTO3HCCyLqQyLlNbql87xqa7C3M/FQ==", "dev": true, "requires": { "@babel/types": "^7.3.0" @@ -1071,9 +1071,9 @@ } }, "@types/jest": { - "version": "26.0.23", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", - "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", + "version": "26.0.24", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.24.tgz", + "integrity": "sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==", "dev": true, "requires": { "jest-diff": "^26.0.0", @@ -1081,9 +1081,9 @@ } }, "@types/lodash": { - "version": "4.14.170", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.170.tgz", - "integrity": "sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q==" + "version": "4.14.171", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.171.tgz", + "integrity": "sha512-7eQ2xYLLI/LsicL2nejW9Wyko3lcpN6O/z0ZLHrEQsg280zIdCv1t/0m6UtBjUHokCGBQ3gYTbHzDkZ1xOBwwg==" }, "@types/lodash.clonedeep": { "version": "4.5.6", @@ -1727,9 +1727,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001242", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001242.tgz", - "integrity": "sha512-KvNuZ/duufelMB3w2xtf9gEWCSxJwUgoxOx5b6ScLXC4kPc9xsczUVCPrQU26j5kOsHM4pSUL54tAZt5THQKug==", + "version": "1.0.30001243", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz", + "integrity": "sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA==", "dev": true }, "capture-exit": { @@ -2216,9 +2216,9 @@ } }, "electron-to-chromium": { - "version": "1.3.766", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.766.tgz", - "integrity": "sha512-u2quJ862q9reRKh/je3GXis3w38+RoXH1J9N3XjtsS6NzmUAosNsyZgUVFZPN/ZlJ3v6T0rTyZR3q/J5c6Sy5w==", + "version": "1.3.769", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.769.tgz", + "integrity": "sha512-B+3hW8D76/uoTPSobWI3D/CFn2S4jPn88dVJ+BkD88Lz6LijQpL+hfdzIFJGTQK4KdE0XwmNbjUQFH1OQVwKdQ==", "dev": true }, "elliptic": { @@ -2320,9 +2320,9 @@ "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" }, "esbuild": { - "version": "0.12.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.14.tgz", - "integrity": "sha512-z8p+6FGiplR7a3pPonXREbm+8IeXjBGvDpVidZmGB/AJMsJSfGCU+n7KOMCazA9AwvagadRWBhiKorC0w9WJvw==", + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", + "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", "dev": true }, "escalade": { @@ -5446,9 +5446,9 @@ } }, "rollup": { - "version": "2.52.7", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.7.tgz", - "integrity": "sha512-55cSH4CCU6MaPr9TAOyrIC+7qFCHscL7tkNsm1MBfIJRRqRbCEY0mmeFn4Wg8FKsHtEH8r389Fz38r/o+kgXLg==", + "version": "2.52.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.8.tgz", + "integrity": "sha512-IjAB0C6KK5/lvqzJWAzsvOik+jV5Bt907QdkQ/gDP4j+R9KYNI1tjqdxiPitGPVrWC21Mf/ucXgowUjN/VemaQ==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -6535,15 +6535,15 @@ } }, "vite": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-2.4.0.tgz", - "integrity": "sha512-FR+1hCyGt8i+ijMe9z4tIfUQ7BQThxGevp3IlmdXDBSJEPjbeDznbuJa/QVzXw2Mpxh7KCmveVI082h8nzcCNw==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.2.3.tgz", + "integrity": "sha512-PtjyBL4GtACM+uT5q5hi2+AlMBbb6YI2b2bam6QI8ZdZt4FezseF0yZHQx0G+b3po9jIJ/GS5N9gc5Yq9Rue7g==", "dev": true, "requires": { - "esbuild": "^0.12.8", - "fsevents": "~2.3.2", - "postcss": "^8.3.5", - "resolve": "^1.20.0", + "esbuild": "^0.9.3", + "fsevents": "~2.3.1", + "postcss": "^8.2.1", + "resolve": "^1.19.0", "rollup": "^2.38.5" } }, @@ -6701,9 +6701,9 @@ "dev": true }, "xstate": { - "version": "4.20.2", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.20.2.tgz", - "integrity": "sha512-HvU+NCYffTOC1oiopNKve3IdLNRpuvNa3tv+fhM8mo9+TGCF35wIMQJON7bWG/2041ySBKw78PW2goV+Ug073w==" + "version": "4.22.0", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-4.22.0.tgz", + "integrity": "sha512-WBQS/XxmjCH6789fx5JXjct2pWA0ZI0a1Kx8PJMurzgytkJH3vC2+QganHWzK38vG9PyXHefyVG54UN5q6YVSw==" }, "y18n": { "version": "4.0.3", diff --git a/packages/semcom-demo-app/package.json b/packages/semcom-demo-app/package.json index bba1fe2f..7381f3f3 100644 --- a/packages/semcom-demo-app/package.json +++ b/packages/semcom-demo-app/package.json @@ -3,7 +3,7 @@ "version": "0.4.1", "scripts": { "start": "http-server -p 4200 --gzip --brotli --proxy http://localhost:4200? dist/", - "start:watch": "vite --config vite.config.ts", + "start:dev": "vite", "build": "rimraf ./dist && vite build --config vite.config.ts && tsc", "lint": "eslint .", "lint:fix": "eslint --fix .", @@ -41,7 +41,7 @@ "rollup-plugin-node-polyfills": "^0.2.1", "ts-node": "^9.1.1", "typescript": "^4.2.4", - "vite": "^2.2.3" + "vite": "2.2.3" }, "publishConfig": { "registry": "https://npm.pkg.github.com/" diff --git a/packages/semcom-demo-app/src/services/semcom.service.ts b/packages/semcom-demo-app/src/services/semcom.service.ts index fcbe33a1..e90d40a9 100644 --- a/packages/semcom-demo-app/src/services/semcom.service.ts +++ b/packages/semcom-demo-app/src/services/semcom.service.ts @@ -6,9 +6,15 @@ import { fetch } from '@digita-ai/inrupt-solid-client'; export class SemComService { - private registry: AbstractRegisterComponentService = new RegisterComponentService(); - // private repo: QueryComponentService = new QueryComponentRemoteService('http://localhost:3000'); - private repo: QueryComponentService = new QueryComponentRemoteService('http://localhost:3000'); + private registry: AbstractRegisterComponentService; + private repo: QueryComponentService; + + constructor() { + + this.registry = new RegisterComponentService(); + this.repo = new QueryComponentRemoteService(process.env.VITE_SEMCOM_NODE_URI); + + } detectShapes(uri: string): Observable { diff --git a/packages/semcom-demo-app/tsconfig.app.json b/packages/semcom-demo-app/tsconfig.app.json index 22a9d025..a09353f1 100644 --- a/packages/semcom-demo-app/tsconfig.app.json +++ b/packages/semcom-demo-app/tsconfig.app.json @@ -4,7 +4,6 @@ "baseUrl": "./", "outDir": "./dist", "strict": true, - "strictPropertyInitialization": false, // for angular decorators "target": "es2015", "module": "es2020", }, diff --git a/packages/semcom-demo-app/vite.config.ts b/packages/semcom-demo-app/vite.config.ts index 527dc0c7..322a8410 100644 --- a/packages/semcom-demo-app/vite.config.ts +++ b/packages/semcom-demo-app/vite.config.ts @@ -1,12 +1,43 @@ -import { defineConfig } from 'vite'; +import { defineConfig, loadEnv } from 'vite'; -export default defineConfig({ - root: 'src', - build: { - target: 'es2015', - outDir: '../dist', - }, - server: { - port: 4200, +export default defineConfig( ({ command, mode }) => { + const env = loadEnv(mode, process.cwd()); + + // expose .env as process.env instead of import.meta since jest does not import meta yet + const envWithProcessPrefix = Object.entries(env).reduce( + (prev, [key, val]) => { + return { + ...prev, + ['process.env.' + key]: `"${val}"`, + ['process.env.DEV']: `"${command === 'serve'}"`, + ['process.env.PROD']: `"${command === 'build'}"`, + ['process.env.MODE']: command === 'build' ? `"PROD"` : `"DEV"`, + } + }, + {}, + ); + + if (command === 'serve') { + return { + root: 'src', + server: { + port: 4200, + }, + mode: 'development', + define: envWithProcessPrefix, + } + } else if (command === 'build'){ + return { + root: 'src', + build: { + target: 'es2015', + outDir: '../dist', + }, + server: { + port: 4200, + }, + mode: 'production', + define: envWithProcessPrefix, + } } -}); +}); \ No newline at end of file diff --git a/packages/semcom-demo-pods/package.json b/packages/semcom-demo-pods/package.json index 4c28bfe9..ae4fc6c1 100644 --- a/packages/semcom-demo-pods/package.json +++ b/packages/semcom-demo-pods/package.json @@ -6,7 +6,8 @@ "license": "", "scripts": { "clean": "rimraf ./dist && rimraf ./package-lock.json && rimraf ./node_modules", - "start": "community-solid-server -p 9000 --rootFilePath /tmp/css -c config/config-file.json" + "start": "community-solid-server -p 9000 --rootFilePath /tmp/css -c config/config-file.json", + "start:dev": "npm run start" }, "dependencies": { "@solid/community-server": "0.8.1" diff --git a/packages/semcom-node/config/config-default.dev.json b/packages/semcom-node/config/config-default.dev.json new file mode 100644 index 00000000..531cc1dc --- /dev/null +++ b/packages/semcom-node/config/config-default.dev.json @@ -0,0 +1,54 @@ +{ + "@context": [ + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/semcom-node/^0.0.0/components/context.jsonld", + "https://linkedsoftwaredependencies.org/bundles/npm/@digita-ai/semcom-core/^0.0.0/components/context.jsonld" + ], + "import": [ + "files-dasn:config/presets/logger.json", + "files-dasn:config/presets/serializer.json", + "files-dasn:config/presets/component.json", + "files-dasn:config/presets/handlers.json", + "files-dasn:config/presets/server.json" + ], + "@graph": [ + { + "@id": "urn:semcom-node:default:ComponentStore", + "@type": "ComponentInMemoryStore", + "ComponentInMemoryStore:_components": [ + { + "@type": "ComponentMetadata", + "ComponentMetadata:_description": "Digita SemCom component for profile information.", + "ComponentMetadata:_label": "SemCom Profile Component", + "ComponentMetadata:_uri": "http://localhost:8080/components/profile.component.js", + "ComponentMetadata:_shapes": "http://xmlns.com/foaf/0.1/PersonalProfileDocument", + "ComponentMetadata:_author": "https://digita.ai", + "ComponentMetadata:_tag": "profile", + "ComponentMetadata:_version": "0.1.0", + "ComponentMetadata:_latest": true + }, + { + "@type": "ComponentMetadata", + "ComponentMetadata:_description": "Digita SemCom component with an input field.", + "ComponentMetadata:_label": "SemCom Input Component", + "ComponentMetadata:_uri": "http://localhost:8080/components/input.component.js", + "ComponentMetadata:_shapes": "http://digita.ai/voc/input#input", + "ComponentMetadata:_author": "https://digita.ai", + "ComponentMetadata:_tag": "input", + "ComponentMetadata:_version": "0.1.0", + "ComponentMetadata:_latest": true + }, + { + "@type": "ComponentMetadata", + "ComponentMetadata:_description": "Digita SemCom component for payslip information.", + "ComponentMetadata:_label": "SemCom Payslip Component", + "ComponentMetadata:_uri": "http://localhost:8080/components/payslip.component.js", + "ComponentMetadata:_shapes": "http://digita.ai/voc/payslip#payslip", + "ComponentMetadata:_author": "https://digita.ai", + "ComponentMetadata:_tag": "payslip", + "ComponentMetadata:_version": "0.1.0", + "ComponentMetadata:_latest": true + } + ] + } + ] +} diff --git a/packages/semcom-node/config/presets/store.json b/packages/semcom-node/config/presets/store.json index 0c2a87a1..fbca4426 100644 --- a/packages/semcom-node/config/presets/store.json +++ b/packages/semcom-node/config/presets/store.json @@ -12,18 +12,18 @@ "@type": "ComponentMetadata", "ComponentMetadata:_description": "Digita SemCom component for profile information.", "ComponentMetadata:_label": "SemCom Profile Component", - "ComponentMetadata:_uri": "https://components.semcom.digita.ai/components/profile.component.ts", + "ComponentMetadata:_uri": "https://components.semcom.digita.ai/components/profile.component.js", "ComponentMetadata:_shapes": "http://xmlns.com/foaf/0.1/PersonalProfileDocument", "ComponentMetadata:_author": "https://digita.ai", "ComponentMetadata:_tag": "profile", "ComponentMetadata:_version": "0.1.0", - "ComponentMetadata:_latest": false + "ComponentMetadata:_latest": true }, { "@type": "ComponentMetadata", "ComponentMetadata:_description": "Digita SemCom component with an input field.", "ComponentMetadata:_label": "SemCom Input Component", - "ComponentMetadata:_uri": "https://components.semcom.digita.ai/components/input.component.ts", + "ComponentMetadata:_uri": "https://components.semcom.digita.ai/components/input.component.js", "ComponentMetadata:_shapes": "http://digita.ai/voc/input#input", "ComponentMetadata:_author": "https://digita.ai", "ComponentMetadata:_tag": "input", @@ -34,7 +34,7 @@ "@type": "ComponentMetadata", "ComponentMetadata:_description": "Digita SemCom component for payslip information.", "ComponentMetadata:_label": "SemCom Payslip Component", - "ComponentMetadata:_uri": "https://components.semcom.digita.ai/components/payslip.component.ts", + "ComponentMetadata:_uri": "https://components.semcom.digita.ai/components/payslip.component.js", "ComponentMetadata:_shapes": "http://digita.ai/voc/payslip#payslip", "ComponentMetadata:_author": "https://digita.ai", "ComponentMetadata:_tag": "payslip", diff --git a/packages/semcom-node/package.json b/packages/semcom-node/package.json index de59d2ac..c5684589 100644 --- a/packages/semcom-node/package.json +++ b/packages/semcom-node/package.json @@ -36,6 +36,7 @@ "lint:fix": "eslint --fix .", "lint:staged": "lint-staged", "start": "node bin/server.js", + "start:dev": "node bin/server.js -c config/config-default.dev.json", "test": "jest", "test:ci": "jest --runInBand --silent", "posttest": "jest-coverage-thresholds-bumper --silent --coverage-summary-path coverage-summary.json"