From e0d98aaef9fccdcbbe635542713b7a17946265b3 Mon Sep 17 00:00:00 2001
From: Dan Jones <dan.jones@noc.ac.uk>
Date: Thu, 12 Jan 2023 09:19:31 +0000
Subject: [PATCH] refactor: move src and build dist files

Implement rollup to build importable modules
---
 .gitignore                                    |  5 ++-
 README.md                                     |  5 +++
 package.json                                  |  8 +++-
 rollup.config.js                              | 28 ++++++++++++
 {comms-adapter => src/adapter}/index.js       |  0
 .../protocol/example-client.js                |  4 +-
 .../generic.js => src/protocol/index.js       |  0
 yarn.lock                                     | 45 ++++++++++++++++++-
 8 files changed, 88 insertions(+), 7 deletions(-)
 create mode 100644 rollup.config.js
 rename {comms-adapter => src/adapter}/index.js (100%)
 rename {comms-adapter => src}/protocol/example-client.js (96%)
 rename comms-adapter/protocol/generic.js => src/protocol/index.js (100%)

diff --git a/.gitignore b/.gitignore
index 753d962..d5a9aeb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
 # Created by .ignore support plugin (hsz.mobi)
-soar-config.json
+
 ### Node template
 # Logs
 /logs
@@ -26,6 +26,9 @@ coverage
 # Dependency directories
 node_modules/
 
+# Build files 
+dist/
+
 # Optional npm cache directory
 .npm
 
diff --git a/README.md b/README.md
index e3ef52e..ddfa8c1 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,11 @@ yarn add ssh://git@git.noc.ac.uk:communications-backbone-system/backbone-adapter
 npm install git+https://git.noc.ac.uk/communications-backbone-system/backbone-adapter-javascript.git
 ```
 
+## Schema 
+
+The example code uses a mock schema with some example messages. The intention is the message 
+protocol schema is retreived from an external source. 
+
 ## Config 
 
 To run the adapter you need a credentials file called `soar-config.json`. 
diff --git a/package.json b/package.json
index 3aecb6b..4545242 100644
--- a/package.json
+++ b/package.json
@@ -23,7 +23,8 @@
     "lint": "yarn lint:js && yarn lint:prettier",
     "lintfix": "prettier --write --list-different . && yarn lint:js --fix",
     "prepare": "husky install",
-    "test": "jest"
+    "test": "jest",
+    "build": "cross-env NODE_ENV=production rollup -c"
   },
   "lint-staged": {
     "*.{js,vue}": "eslint --cache",
@@ -38,7 +39,9 @@
     "@babel/eslint-parser": "^7.0.0",
     "@commitlint/cli": "^15.0.0",
     "@commitlint/config-conventional": "^15.0.0",
+    "@rollup/plugin-babel": "^6.0.3",
     "babel-jest": "^27.4.4",
+    "cross-env": "^7.0.3",
     "cucumber": "^6.0.7",
     "eslint": "^8.4.1",
     "eslint-config-prettier": "^8.3.0",
@@ -46,6 +49,7 @@
     "husky": "^7.0.4",
     "jest": "^27.4.4",
     "lint-staged": "^12.1.2",
-    "prettier": "^2.5.1"
+    "prettier": "^2.5.1",
+    "rollup": "^3.9.1"
   }
 }
diff --git a/rollup.config.js b/rollup.config.js
new file mode 100644
index 0000000..5a1292b
--- /dev/null
+++ b/rollup.config.js
@@ -0,0 +1,28 @@
+exports.default = [
+  {
+    input: 'src/adapter/index.js',
+    output: [
+      {
+        file: 'dist/adapter.esm.js',
+        format: 'es',
+      },
+      {
+        file: 'dist/adapter.js',
+        format: 'cjs',
+      },
+    ],
+  },
+  {
+    input: 'src/protocol/index.js',
+    output: [
+      {
+        file: 'dist/protocol.esm.js',
+        format: 'es',
+      },
+      {
+        file: 'dist/protocol.js',
+        format: 'cjs',
+      },
+    ],
+  },
+];
diff --git a/comms-adapter/index.js b/src/adapter/index.js
similarity index 100%
rename from comms-adapter/index.js
rename to src/adapter/index.js
diff --git a/comms-adapter/protocol/example-client.js b/src/protocol/example-client.js
similarity index 96%
rename from comms-adapter/protocol/example-client.js
rename to src/protocol/example-client.js
index 74aab22..bbbb3b2 100644
--- a/comms-adapter/protocol/example-client.js
+++ b/src/protocol/example-client.js
@@ -1,9 +1,9 @@
-import { GenericProtocol } from '~/modules/comms-adapter/protocol/generic';
+import { GenericProtocol } from '~/modules/comms-adapter/protocol';
 
 /**
  * 
  */
-export class SoarWebClientProtocol extends GenericProtocol {
+export class ExampleClientProtocol extends GenericProtocol {
   
   constructor(schema, services) {
     super(schema, services);
diff --git a/comms-adapter/protocol/generic.js b/src/protocol/index.js
similarity index 100%
rename from comms-adapter/protocol/generic.js
rename to src/protocol/index.js
diff --git a/yarn.lock b/yarn.lock
index 731d282..193e894 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -745,6 +745,23 @@
     "@nodelib/fs.scandir" "2.1.5"
     fastq "^1.6.0"
 
+"@rollup/plugin-babel@^6.0.3":
+  version "6.0.3"
+  resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-6.0.3.tgz#07ccde15de278c581673034ad6accdb4a153dfeb"
+  integrity sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==
+  dependencies:
+    "@babel/helper-module-imports" "^7.18.6"
+    "@rollup/pluginutils" "^5.0.1"
+
+"@rollup/pluginutils@^5.0.1":
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
+  integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
+  dependencies:
+    "@types/estree" "^1.0.0"
+    estree-walker "^2.0.2"
+    picomatch "^2.3.1"
+
 "@sinonjs/commons@^1.7.0":
   version "1.8.6"
   resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9"
@@ -797,6 +814,11 @@
   dependencies:
     "@babel/types" "^7.3.0"
 
+"@types/estree@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
+  integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
+
 "@types/graceful-fs@^4.1.2":
   version "4.1.6"
   resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae"
@@ -1410,7 +1432,14 @@ create-require@^1.1.0:
   resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
   integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
 
-cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+cross-env@^7.0.3:
+  version "7.0.3"
+  resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+  integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
+  dependencies:
+    cross-spawn "^7.0.1"
+
+cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
   version "7.0.3"
   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
   integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -1818,6 +1847,11 @@ estraverse@^5.1.0, estraverse@^5.2.0:
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
   integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
 
+estree-walker@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+  integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
 esutils@^2.0.2:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -1979,7 +2013,7 @@ fs.realpath@^1.0.0:
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
   integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 
-fsevents@^2.3.2:
+fsevents@^2.3.2, fsevents@~2.3.2:
   version "2.3.2"
   resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
   integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
@@ -3539,6 +3573,13 @@ rimraf@^3.0.0, rimraf@^3.0.2:
   dependencies:
     glob "^7.1.3"
 
+rollup@^3.9.1:
+  version "3.9.1"
+  resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.9.1.tgz#27501d3d026418765fe379d5620d25954ff2a011"
+  integrity sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==
+  optionalDependencies:
+    fsevents "~2.3.2"
+
 run-parallel@^1.1.9:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
-- 
GitLab