diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..e73456f --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,17 @@ +{ + "name": "form-designer-adapter", + "dockerComposeFile": [ + "../docker-compose.yml" + ], + "settings": { + "terminal.integrated.shell.linux": "/bin/bash" + }, + "service": "fsd-self-serve", + "shutdownAction": "none", + "extensions": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode" + ], + "workspaceFolder": "/self-serve", + "initializeCommand": "sh delete_node_dir.sh && sh .devcontainer/setup.sh" +} diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh new file mode 100644 index 0000000..082da72 --- /dev/null +++ b/.devcontainer/setup.sh @@ -0,0 +1,14 @@ +#!/bin/bash +apt install git-all +git pull --recurse-submodules +# shellcheck disable=SC2164 +cd digital-form-builder +yarn +# shellcheck disable=SC2103 +cd .. +pwd +cp -r digital-form-builder/node_modules . +cp -r digital-form-builder/designer/node_modules . +cp -r digital-form-builder/model/node_modules . +cp -r digital-form-builder/runner/node_modules . +pwd diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f40d7ee --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +############################################################################### +# +# Self Service Dev Image +# +############################################################################### + +FROM node:20-alpine3.20 as self-serve-dev diff --git a/compose.override.yml b/compose.override.yml new file mode 100644 index 0000000..d00b302 --- /dev/null +++ b/compose.override.yml @@ -0,0 +1,4 @@ +# services: +# fund-store-db: +# ports: +# - 5433:5432 diff --git a/delete_node_dir.sh b/delete_node_dir.sh new file mode 100644 index 0000000..a61c161 --- /dev/null +++ b/delete_node_dir.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# Function to recursively find and delete node_modules directories +delete_node_modules() { + local dir="$1" + local node_modules_dirs=$(find "$dir" -type d -name "node_modules") + for dir_to_delete in $node_modules_dirs; do + echo "Deleting $dir_to_delete" + rm -rf "$dir_to_delete" + done +} +# Check if a directory is provided as an argument, otherwise use the current directory +if [ $# -eq 1 ]; then + directory="$1" +else + directory="." +fi +delete_node_modules "$directory" diff --git a/designer/package.json b/designer/package.json index a14d048..34f2f31 100644 --- a/designer/package.json +++ b/designer/package.json @@ -4,52 +4,13 @@ "main": "server/index.ts", "scripts": { "build": "NODE_ENV=production webpack", - "start:local": "NODE_ENV=development PERSISTENT_BACKEND=preview ts-node-dev --inspect --respawn --transpile-only server/index.ts" + "start:local": "NODE_ENV=development PERSISTENT_BACKEND=preview ts-node-dev --inspect --respawn --transpile-only server/index.ts", + "init-submodule": "cd ../digital-form-builder && pwd && yarn", + "install": "yarn install && init-submodule" }, "author": "", "license": "ISC", "description": "", - "dependencies": { - "@xgovformbuilder/govuk-react-jsx": "7.1.2", - "govuk-frontend": "^4.8.0", - "typescript": "4.9.5" - }, - "devDependencies": { - "@babel/core": "^7.23.3", - "@babel/node": "^7.22.19", - "@babel/plugin-proposal-export-default-from": "^7.23.3", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-runtime": "^7.23.3", - "@babel/preset-env": "^7.23.3", - "@babel/preset-react": "^7.23.3", - "@babel/preset-typescript": "^7.23.3", - "@tsconfig/recommended": "^1.0.6", - "@types/node": "^20.14.8", - "autoprefixer": "^10.4.2", - "babel-loader": "^8.3.0", - "babel-plugin-module-resolver": "^4.1.0", - "babel-preset-env": "^1.7.0", - "clean-webpack-plugin": "^4.0.0", - "copy-webpack-plugin": "^6.1.1", - "css-loader": "^4.3.0", - "file-loader": "^6.2.0", - "html-webpack-plugin": "^4.5.2", - "mini-css-extract-plugin": "^0.11.2", - "nodemon": "^2.0.20", - "postcss": "^8.2.4", - "postcss-loader": "^4.1.0", - "sass": "^1.26.11", - "sass-loader": "^10.0.2", - "ts-node-dev": "^1.1.8", - "webpack": "^4.44.2", - "webpack-bundle-analyzer": "^4.3.0", - "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0", - "webpack-node-externals": "^2.5.2" - } + "dependencies": {}, + "devDependencies": {} } diff --git a/designer/webpack.config.js b/designer/webpack.config.js index 765e2ed..fd0ba49 100644 --- a/designer/webpack.config.js +++ b/designer/webpack.config.js @@ -160,7 +160,7 @@ const server = { }, externals: [ nodeExternals({ - modulesDir: path.resolve(__dirname, "../digital-form-builder/node_modules"), + modulesDir: path.resolve(__dirname, "../digital-form-builder/node_modules") }), ], }; diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..296cc38 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +services: + fsd-self-serve: + build: + context: . + target: self-serve-dev + volumes: + - .:/self-serve:cached + command: sleep infinity diff --git a/package.json b/package.json index e0c4d22..c5cd4c8 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ "version": "1.0.0", "description": "", "scripts": { + "preinstall": "node update-package.js", + "revertinstall": "node revert-package.js", "setup": "yarn && yarn build" }, "author": "", diff --git a/revert-package.js b/revert-package.js new file mode 100644 index 0000000..1de8d79 --- /dev/null +++ b/revert-package.js @@ -0,0 +1,13 @@ +const fs = require('fs'); +const packagePath = 'digital-form-builder/runner/package.json'; +// Read package.json +const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8')); +// Modify package.json +packageJson.devDependencies = { + ...packageJson.devDependencies, + '@xgovformbuilder/model': 'workspace:model', + '@xgovformbuilder/queue-model': 'workspace:queue-model' +}; +// Write package.json back to file +fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2)); +console.log('package.json updated successfully'); diff --git a/update-package.js b/update-package.js new file mode 100644 index 0000000..aff3db1 --- /dev/null +++ b/update-package.js @@ -0,0 +1,13 @@ +const fs = require('fs'); +const packagePath = 'digital-form-builder/runner/package.json'; +// Read package.json +const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8')); +// Modify package.json +packageJson.devDependencies = { + ...packageJson.devDependencies, + '@xgovformbuilder/model': 'workspace:digital-form-builder/model', + '@xgovformbuilder/queue-model': 'workspace:digital-form-builder/queue-model' +}; +// Write package.json back to file +fs.writeFileSync(packagePath, JSON.stringify(packageJson, null, 2)); +console.log('package.json updated successfully');