diff --git a/package-lock.json b/package-lock.json
index 72ea38556..ea04b65ab 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1476,9 +1476,9 @@
}
},
"ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"ansi-styles": {
"version": "4.3.0",
@@ -1535,11 +1535,11 @@
"integrity": "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ=="
},
"axios": {
- "version": "0.21.1",
- "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
- "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+ "version": "0.21.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"requires": {
- "follow-redirects": "^1.10.0"
+ "follow-redirects": "^1.14.0"
}
},
"babel-jest": {
@@ -2603,9 +2603,9 @@
}
},
"follow-redirects": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
- "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg=="
+ "version": "1.14.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
+ "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A=="
},
"form-data": {
"version": "3.0.1",
@@ -2860,9 +2860,9 @@
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ink": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/ink/-/ink-3.0.8.tgz",
- "integrity": "sha512-ubMFylXYaG4IkXQVhPautbhV/p6Lo0GlvAMI/jh8cGJQ39yeznJbaTTJP2CqZXezA4GOHzalpwCWqux/NEY38w==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ink/-/ink-3.2.0.tgz",
+ "integrity": "sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==",
"requires": {
"ansi-escapes": "^4.2.1",
"auto-bind": "4.0.0",
@@ -2875,17 +2875,17 @@
"is-ci": "^2.0.0",
"lodash": "^4.17.20",
"patch-console": "^1.0.0",
- "react-devtools-core": "^4.6.0",
- "react-reconciler": "^0.24.0",
- "scheduler": "^0.18.0",
+ "react-devtools-core": "^4.19.1",
+ "react-reconciler": "^0.26.2",
+ "scheduler": "^0.20.2",
"signal-exit": "^3.0.2",
"slice-ansi": "^3.0.0",
"stack-utils": "^2.0.2",
- "string-length": "^3.1.0",
+ "string-width": "^4.2.2",
"type-fest": "^0.12.0",
"widest-line": "^3.1.0",
"wrap-ansi": "^6.2.0",
- "ws": "^7.2.5",
+ "ws": "^7.5.5",
"yoga-layout-prebuilt": "^1.9.6"
},
"dependencies": {
@@ -2893,6 +2893,11 @@
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz",
"integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg=="
+ },
+ "ws": {
+ "version": "7.5.6",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz",
+ "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA=="
}
}
},
@@ -4506,20 +4511,20 @@
}
},
"localtunnel": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.1.tgz",
- "integrity": "sha512-LiaI5wZdz0xFkIQpXbNI62ZnNn8IMsVhwxHmhA+h4vj8R9JG/07bQHWwQlyy7b95/5fVOCHJfIHv+a5XnkvaJA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz",
+ "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==",
"requires": {
- "axios": "0.21.1",
- "debug": "4.3.1",
+ "axios": "0.21.4",
+ "debug": "4.3.2",
"openurl": "1.1.1",
- "yargs": "16.2.0"
+ "yargs": "17.1.1"
},
"dependencies": {
"debug": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
- "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"requires": {
"ms": "2.1.2"
}
@@ -4528,6 +4533,20 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "yargs": {
+ "version": "17.1.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz",
+ "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==",
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ }
}
}
},
@@ -5101,9 +5120,9 @@
}
},
"react-devtools-core": {
- "version": "4.13.5",
- "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.13.5.tgz",
- "integrity": "sha512-k+P5VSKM6P22Go9IQ8dJmjj9fbztvKt1iRDI/4wS5oTvd1EnytIJMYB59wZt+D3kgp64jklNX/MRmY42xAQ08g==",
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.22.1.tgz",
+ "integrity": "sha512-pvpNDHE7p0FtcCmIWGazoY8LLVfBI9sw0Kf10kdHhPI9Tzt3OG/qEt16GrAbE0keuna5WzX3r1qPKVjqOqsuUg==",
"requires": {
"shell-quote": "^1.6.1",
"ws": "^7"
@@ -5137,14 +5156,13 @@
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
"react-reconciler": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.24.0.tgz",
- "integrity": "sha512-gAGnwWkf+NOTig9oOowqid9O0HjTDC+XVGBCAmJYYJ2A2cN/O4gDdIuuUQjv8A4v6GDwVfJkagpBBLW5OW9HSw==",
+ "version": "0.26.2",
+ "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz",
+ "integrity": "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "scheduler": "^0.18.0"
+ "scheduler": "^0.20.2"
}
},
"readable-stream": {
@@ -5245,9 +5263,9 @@
}
},
"scheduler": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz",
- "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==",
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
+ "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1"
@@ -5343,9 +5361,9 @@
"dev": true
},
"shell-quote": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
- "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg=="
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
+ "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw=="
},
"shiki": {
"version": "0.9.15",
@@ -5489,35 +5507,6 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
},
- "string-length": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz",
- "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==",
- "requires": {
- "astral-regex": "^1.0.0",
- "strip-ansi": "^5.2.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
- },
- "astral-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
- "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg=="
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
"string-width": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
@@ -5704,9 +5693,9 @@
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"tmpl": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
- "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
"dev": true
},
"to-fast-properties": {
@@ -6350,6 +6339,7 @@
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
diff --git a/package.json b/package.json
index 8ab3a10a2..344a97139 100644
--- a/package.json
+++ b/package.json
@@ -39,10 +39,10 @@
"destroyable": "^0.5.0",
"everstorage": "^1.2.0",
"express": "^4.17.1",
- "ink": "^3.0.8",
+ "ink": "^3.2.0",
"ink-spinner": "^4.0.2",
"ink-table": "^3.0.0",
- "localtunnel": "^2.0.1",
+ "localtunnel": "^2.0.2",
"locate-app": "^1.2.0",
"node-gzip": "^1.1.2",
"puppeteer-core": "^10.1.0",
diff --git a/test-samples/programming-languages/TODO b/test-samples/programming-languages/TODO
new file mode 100644
index 000000000..a2bf4f4a1
--- /dev/null
+++ b/test-samples/programming-languages/TODO
@@ -0,0 +1,2 @@
+TODO: !!! Test modules in multiple programming langiages and make sure they work.
+TODO: Python modules
\ No newline at end of file
diff --git a/test-samples/programming-languages/javascript-esm/package.json b/test-samples/programming-languages/javascript-esm/package.json
new file mode 100644
index 000000000..72ed803b5
--- /dev/null
+++ b/test-samples/programming-languages/javascript-esm/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "@collboard/sample-colldev-module",
+ "version": "1.0.0",
+ "main": "./src/sampleModule.tsx"
+}
diff --git a/test-samples/programming-languages/javascript-esm/src/sampleModule.tsx b/test-samples/programming-languages/javascript-esm/src/sampleModule.tsx
new file mode 100644
index 000000000..de9424b14
--- /dev/null
+++ b/test-samples/programming-languages/javascript-esm/src/sampleModule.tsx
@@ -0,0 +1,27 @@
+import * as React from 'react';
+import { declareModule, ExtraJsxPlace, makeExtrajsxModule } from '../../../src/runtime/runtime';
+
+declareModule(
+ makeExtrajsxModule({
+ manifest: {
+ name: '@collboard/sample-colldev-module',
+ title: { en: 'Hello world' },
+ description: {
+ en: 'Simple sample hello world button for Collboard.com',
+ },
+ },
+ place: ExtraJsxPlace.EdgeRight,
+ createExtraJsx() {
+ return (
+
+ );
+ },
+ }),
+);
diff --git a/test-samples/programming-languages/javascript-esm/tsconfig.json b/test-samples/programming-languages/javascript-esm/tsconfig.json
new file mode 100644
index 000000000..3ce621da7
--- /dev/null
+++ b/test-samples/programming-languages/javascript-esm/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ "target": "es6",
+ "module": "commonjs",
+ "allowJs": true,
+ "moduleResolution": "node",
+ "jsx": "react",
+ "noEmit": false,
+ "downlevelIteration": true,
+ "esModuleInterop": true,
+ "strict": true
+ },
+ "include": ["src"],
+ "exclude": ["node_modules"]
+}
diff --git a/test-samples/programming-languages/javascript/package.json b/test-samples/programming-languages/javascript/package.json
new file mode 100644
index 000000000..72ed803b5
--- /dev/null
+++ b/test-samples/programming-languages/javascript/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "@collboard/sample-colldev-module",
+ "version": "1.0.0",
+ "main": "./src/sampleModule.tsx"
+}
diff --git a/test-samples/programming-languages/javascript/src/sampleModule.tsx b/test-samples/programming-languages/javascript/src/sampleModule.tsx
new file mode 100644
index 000000000..de9424b14
--- /dev/null
+++ b/test-samples/programming-languages/javascript/src/sampleModule.tsx
@@ -0,0 +1,27 @@
+import * as React from 'react';
+import { declareModule, ExtraJsxPlace, makeExtrajsxModule } from '../../../src/runtime/runtime';
+
+declareModule(
+ makeExtrajsxModule({
+ manifest: {
+ name: '@collboard/sample-colldev-module',
+ title: { en: 'Hello world' },
+ description: {
+ en: 'Simple sample hello world button for Collboard.com',
+ },
+ },
+ place: ExtraJsxPlace.EdgeRight,
+ createExtraJsx() {
+ return (
+
+ );
+ },
+ }),
+);
diff --git a/test-samples/programming-languages/javascript/tsconfig.json b/test-samples/programming-languages/javascript/tsconfig.json
new file mode 100644
index 000000000..3ce621da7
--- /dev/null
+++ b/test-samples/programming-languages/javascript/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ "target": "es6",
+ "module": "commonjs",
+ "allowJs": true,
+ "moduleResolution": "node",
+ "jsx": "react",
+ "noEmit": false,
+ "downlevelIteration": true,
+ "esModuleInterop": true,
+ "strict": true
+ },
+ "include": ["src"],
+ "exclude": ["node_modules"]
+}
diff --git a/test-samples/programming-languages/typescript/package.json b/test-samples/programming-languages/typescript/package.json
new file mode 100644
index 000000000..72ed803b5
--- /dev/null
+++ b/test-samples/programming-languages/typescript/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "@collboard/sample-colldev-module",
+ "version": "1.0.0",
+ "main": "./src/sampleModule.tsx"
+}
diff --git a/test-samples/programming-languages/typescript/src/sampleModule.tsx b/test-samples/programming-languages/typescript/src/sampleModule.tsx
new file mode 100644
index 000000000..de9424b14
--- /dev/null
+++ b/test-samples/programming-languages/typescript/src/sampleModule.tsx
@@ -0,0 +1,27 @@
+import * as React from 'react';
+import { declareModule, ExtraJsxPlace, makeExtrajsxModule } from '../../../src/runtime/runtime';
+
+declareModule(
+ makeExtrajsxModule({
+ manifest: {
+ name: '@collboard/sample-colldev-module',
+ title: { en: 'Hello world' },
+ description: {
+ en: 'Simple sample hello world button for Collboard.com',
+ },
+ },
+ place: ExtraJsxPlace.EdgeRight,
+ createExtraJsx() {
+ return (
+
+ );
+ },
+ }),
+);
diff --git a/test-samples/programming-languages/typescript/tsconfig.json b/test-samples/programming-languages/typescript/tsconfig.json
new file mode 100644
index 000000000..3ce621da7
--- /dev/null
+++ b/test-samples/programming-languages/typescript/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ "target": "es6",
+ "module": "commonjs",
+ "allowJs": true,
+ "moduleResolution": "node",
+ "jsx": "react",
+ "noEmit": false,
+ "downlevelIteration": true,
+ "esModuleInterop": true,
+ "strict": true
+ },
+ "include": ["src"],
+ "exclude": ["node_modules"]
+}