diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index 65e6529678..55c4405e10 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -1,36 +1,25 @@ name: Budibase CI -on: - # Trigger the workflow on push or pull request, - # but only for the master branch - push: - branches: - - master - - develop - pull_request: +on: + # Trigger the workflow on push or pull request, + # but only for the master branch + push: branches: - master - develop - workflow_dispatch: + pull_request: + branches: + - master + - develop + workflow_dispatch: env: BRANCH: ${{ github.event.pull_request.head.ref }} BASE_BRANCH: ${{ github.event.pull_request.base.ref}} - PERSONAL_ACCESS_TOKEN : ${{ secrets.PERSONAL_ACCESS_TOKEN }} + PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} jobs: lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Use Node.js 14.x - uses: actions/setup-node@v1 - with: - node-version: 14.x - - run: yarn - - run: yarn lint - - build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -38,8 +27,20 @@ jobs: uses: actions/setup-node@v1 with: node-version: 14.x - - name: Install Pro - run: yarn install:pro $BRANCH $BASE_BRANCH + - run: yarn + - run: yarn lint + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + - name: Use Node.js 14.x + uses: actions/setup-node@v1 + with: + node-version: 14.x - run: yarn - run: yarn bootstrap - run: yarn build @@ -48,16 +49,17 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - name: Use Node.js 14.x uses: actions/setup-node@v1 with: node-version: 14.x - - name: Install Pro - run: yarn install:pro $BRANCH $BASE_BRANCH - run: yarn - run: yarn bootstrap - run: yarn build - - run: yarn test + - run: yarn test --ignore=@budibase/pro - uses: codecov/codecov-action@v3 with: token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos @@ -68,26 +70,29 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - name: Use Node.js 14.x uses: actions/setup-node@v1 with: node-version: 14.x - - name: Install Pro - run: yarn install:pro $BRANCH $BASE_BRANCH - run: yarn - run: yarn bootstrap - - run: yarn test:pro + - run: yarn build --scope=@budibase/types --scope=@budibase/shared-core + - run: yarn test --scope=@budibase/pro integration-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - name: Use Node.js 14.x uses: actions/setup-node@v1 with: node-version: 14.x - - name: Install Pro - run: yarn install:pro $BRANCH $BASE_BRANCH - run: yarn && yarn bootstrap && yarn build - run: | cd qa-core @@ -96,3 +101,24 @@ jobs: env: BB_ADMIN_USER_EMAIL: admin BB_ADMIN_USER_PASSWORD: admin + + check-pro-submodule: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + fetch-depth: 0 + - name: Check submodule + run: | + cd packages/pro + git fetch + if ! git merge-base --is-ancestor $(git log -n 1 --pretty=format:%H) origin/develop; then + echo "Current commit has not been merged to develop" + echo "Refer to the pro repo to merge your changes: https://github.com/Budibase/budibase-pro/blob/develop/docs/getting_started.md" + exit 1 + else + echo "All good, the submodule had been merged!" + fi diff --git a/.github/workflows/release-develop.yml b/.github/workflows/release-develop.yml index 46e82e6efc..e30236971e 100644 --- a/.github/workflows/release-develop.yml +++ b/.github/workflows/release-develop.yml @@ -1,21 +1,11 @@ name: Budibase Prerelease concurrency: release-prerelease -on: - push: - branches: - - develop - paths: - - '.aws/**' - - '.github/**' - - 'charts/**' - - 'packages/**' - - 'scripts/**' - - 'package.json' - - 'yarn.lock' - - 'package.json' - - 'yarn.lock' - workflow_dispatch: +on: + push: + tags: + - v*-alpha.* + workflow_dispatch: env: # Posthog token used by ui at build time @@ -24,43 +14,59 @@ env: INTERCOM_TOKEN: ${{ secrets.INTERCOM_TOKEN }} PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} FEATURE_PREVIEW_URL: https://budirelease.live - + jobs: release-images: - runs-on: ubuntu-latest + runs-on: ubuntu-latest steps: - - name: Fail if branch is not develop - if: github.ref != 'refs/heads/develop' - run: | - echo "Ref is not develop, you must run this job from develop." - exit 1 - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + fetch-depth: 1 + + - name: Fail if tag is not develop + run: | + if ! git merge-base --is-ancestor ${{ github.sha }} origin/develop; then + echo "Tag is not in develop" + exit 1 + fi + - uses: actions/setup-node@v1 with: node-version: 14.x - - name: Install Pro - run: yarn install:pro develop - - - run: yarn + - run: yarn + - name: Update versions + run: | + version=$(cat lerna.json \ + | grep version \ + | head -1 \ + | awk -F: '{gsub(/"/,"",$2);gsub(/[[:space:]]*/,"",$2); print $2}' \ + | sed 's/[",]//g') + echo "Setting version $version" + yarn lerna exec "yarn version --no-git-tag-version --new-version=$version" + node scripts/syncLocalDependencies.js $version + yarn - run: yarn bootstrap - run: yarn build - run: yarn build:sdk -# - run: yarn test - name: Publish budibase packages to NPM env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - run: | + run: | # setup the username and email. git config --global user.name "Budibase Staging Release Bot" git config --global user.email "<>" + git submodule foreach git commit -a -m 'Release process' + git commit -a -m 'Release process' echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} >> .npmrc yarn release:develop - name: Build/release Docker images - run: | + run: | docker login -u $DOCKER_USER -p $DOCKER_PASSWORD yarn build:docker:develop env: @@ -84,7 +90,7 @@ jobs: git config user.name "Budibase Helm Bot" git config user.email "<>" git reset --hard - git pull + git fetch mkdir sync echo "Packaging chart to sync dir" helm package charts/budibase --version 0.0.0-develop --app-version develop --destination sync diff --git a/.github/workflows/release-master.yml b/.github/workflows/release-master.yml index 5d51b080f0..0eb1cbbba1 100644 --- a/.github/workflows/release-master.yml +++ b/.github/workflows/release-master.yml @@ -2,56 +2,58 @@ name: Budibase Release concurrency: release on: - push: - branches: - - master - paths: - - '.aws/**' - - '.github/**' - - 'charts/**' - - 'packages/**' - - 'scripts/**' - - 'package.json' - - 'yarn.lock' - - 'package.json' - - 'yarn.lock' - workflow_dispatch: - inputs: - versioning: - type: choice - description: "Versioning type: patch, minor, major" - default: patch - options: - - patch - - minor - - major - required: true + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' + # Exclude all pre-releases + - '!v*[0-9]+.[0-9]+.[0-9]+-*' + workflow_dispatch: + inputs: + tags: + description: "Release tag" + required: true + type: boolean env: - # Posthog token used by ui at build time + # Posthog token used by ui at build time POSTHOG_TOKEN: phc_bIjZL7oh2GEUd2vqvTBH8WvrX0fWTFQMs6H5KQxiUxU INTERCOM_TOKEN: ${{ secrets.INTERCOM_TOKEN }} SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - PERSONAL_ACCESS_TOKEN : ${{ secrets.PERSONAL_ACCESS_TOKEN }} + PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} jobs: release-images: runs-on: ubuntu-latest steps: - - name: Fail if branch is not master - if: github.ref != 'refs/heads/master' - run: | - echo "Ref is not master, you must run this job from master." - exit 1 - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + fetch-depth: 1 + + - name: Fail if branch is not master + if: github.ref != 'refs/heads/master' + run: | + echo "Ref is not master, you must run this job from master." + // Change to "exit 1" when merged. Left to 0 to not fail all the pipelines and not to cause noise + exit 0 + - uses: actions/setup-node@v1 with: node-version: 14.x - - name: Install Pro - run: yarn install:pro master - - run: yarn + - name: Update versions + run: | + version=$(cat lerna.json \ + | grep version \ + | head -1 \ + | awk -F: '{gsub(/"/,"",$2);gsub(/[[:space:]]*/,"",$2); print $2}' \ + | sed 's/[",]//g') + echo "Setting version $version" + yarn lerna exec "yarn version --no-git-tag-version --new-version=$version" + node scripts/syncLocalDependencies.js $version + yarn - run: yarn bootstrap - run: yarn lint - run: yarn build @@ -65,15 +67,17 @@ jobs: # setup the username and email. I tend to use 'GitHub Actions Bot' with no email by default git config --global user.name "Budibase Release Bot" git config --global user.email "<>" + git submodule foreach git commit -a -m 'Release process' + git commit -a -m 'Release process' echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} >> .npmrc yarn release - - name: 'Get Previous tag' + - name: "Get Previous tag" id: previoustag uses: "WyriHaximus/github-action-get-previous-tag@v1" - name: Build/release Docker images - run: | + run: | docker login -u $DOCKER_USER -p $DOCKER_PASSWORD yarn build:docker env: @@ -103,7 +107,7 @@ jobs: git config user.name "Budibase Helm Bot" git config user.email "<>" git reset --hard - git pull + git fetch mkdir sync echo "Packaging chart to sync dir" helm package charts/budibase --version 0.0.0-master --app-version v"$RELEASE_VERSION" --destination sync diff --git a/.github/workflows/tag-prerelease.yml b/.github/workflows/tag-prerelease.yml new file mode 100644 index 0000000000..0ae1bf5adc --- /dev/null +++ b/.github/workflows/tag-prerelease.yml @@ -0,0 +1,38 @@ +name: Tag prerelease +concurrency: release-prerelease + +on: + push: + branches: + - develop + paths: + - ".aws/**" + - ".github/**" + - "charts/**" + - "packages/**" + - "scripts/**" + - "package.json" + - "yarn.lock" + workflow_dispatch: + +jobs: + tag-prerelease: + runs-on: ubuntu-latest + + steps: + - name: Fail if branch is not develop + if: github.ref != 'refs/heads/develop' + run: | + echo "Ref is not develop, you must run this job from develop." + exit 1 + - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + + - name: Tag prerelease + run: | + # setup the username and email. + git config --global user.name "Budibase Staging Release Bot" + git config --global user.email "<>" + ./scripts/versionCommit.sh prerelease diff --git a/.github/workflows/tag-release.yml b/.github/workflows/tag-release.yml new file mode 100644 index 0000000000..da53612bd9 --- /dev/null +++ b/.github/workflows/tag-release.yml @@ -0,0 +1,48 @@ +name: Tag prerelease +concurrency: release-prerelease + +on: + push: + branches: + - master + paths: + - ".aws/**" + - ".github/**" + - "charts/**" + - "packages/**" + - "scripts/**" + - "package.json" + - "yarn.lock" + workflow_dispatch: + inputs: + versioning: + type: choice + description: "Versioning type: patch, minor, major" + default: patch + options: + - patch + - minor + - major + required: true + +jobs: + tag-prerelease: + runs-on: ubuntu-latest + + steps: + - name: Fail if branch is not master + if: github.ref != 'refs/heads/master' + run: | + echo "Ref is not master, you must run this job from master." + exit 1 + - uses: actions/checkout@v2 + with: + submodules: true + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + + - name: Tag prerelease + run: | + # setup the username and email. + git config --global user.name "Budibase Staging Release Bot" + git config --global user.email "<>" + ./scripts/versionCommit.sh ${{ github.event.inputs.versioning }} diff --git a/.gitmodules b/.gitmodules index e69de29bb2..2dd6ea53f2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "packages/pro"] + path = packages/pro + url = git@github.com:Budibase/budibase-pro.git diff --git a/.husky/post-checkout b/.husky/post-checkout new file mode 100755 index 0000000000..506b8bf5af --- /dev/null +++ b/.husky/post-checkout @@ -0,0 +1,4 @@ +# .husky/post-checkout +# ... + +git config submodule.recurse true \ No newline at end of file diff --git a/docs/DEV-SETUP-DEBIAN.md b/docs/DEV-SETUP-DEBIAN.md index cfd7eebf47..a8b1e3dce4 100644 --- a/docs/DEV-SETUP-DEBIAN.md +++ b/docs/DEV-SETUP-DEBIAN.md @@ -1,13 +1,17 @@ ## Dev Environment on Debian 11 ### Install NVM & Node 14 + NVM documentation: https://github.com/nvm-sh/nvm#installing-and-updating Install NVM + ``` curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash ``` + Install Node 14 + ``` nvm install 14 ``` @@ -17,13 +21,16 @@ nvm install 14 ``` npm install -g yarn jest lerna ``` + ### Install Docker and Docker Compose ``` apt install docker.io pip3 install docker-compose ``` + ### Clone the repo + ``` git clone https://github.com/Budibase/budibase.git ``` @@ -44,10 +51,13 @@ This setup process was tested on Debian 11 (bullseye) with version numbers show cd budibase yarn setup ``` + The yarn setup command runs several build steps i.e. + ``` node ./hosting/scripts/setup.js && yarn && yarn bootstrap && yarn build && yarn dev ``` + So this command will actually run the application in dev mode. It creates .env files under `./packages/server` and `./packages/worker` and runs docker containers for each service via docker-compose. The dev version will be available on port 10000 i.e. @@ -55,6 +65,7 @@ The dev version will be available on port 10000 i.e. http://127.0.0.1:10000/builder/admin ### File descriptor issues with Vite and Chrome in Linux + If your dev environment stalls forever, with some network requests stuck in flight, it's likely that Chrome is trying to open more file descriptors than your system allows. To fix this, apply the following tweaks. @@ -62,4 +73,4 @@ Debian based distros: Add `* - nofile 65536` to `/etc/security/limits.conf`. Arch: -Add `DefaultLimitNOFILE=65536` to `/etc/systemd/system.conf`. \ No newline at end of file +Add `DefaultLimitNOFILE=65536` to `/etc/systemd/system.conf`. diff --git a/docs/DEV-SETUP-MACOSX.md b/docs/DEV-SETUP-MACOSX.md index 67eb5506ff..94ed3fc1ee 100644 --- a/docs/DEV-SETUP-MACOSX.md +++ b/docs/DEV-SETUP-MACOSX.md @@ -4,14 +4,14 @@ Install instructions [here](https://brew.sh/) -| **NOTE**: If you are working on a M1 Apple Silicon which is running Z shell, you could need to add -`eval $(/opt/homebrew/bin/brew shellenv)` line to your `.zshrc`. This will make your zsh to find the apps you install +| **NOTE**: If you are working on a M1 Apple Silicon which is running Z shell, you could need to add +`eval $(/opt/homebrew/bin/brew shellenv)` line to your `.zshrc`. This will make your zsh to find the apps you install through brew. - ### Install Node Budibase requires a recent version of node 14: + ``` brew install node npm node -v @@ -22,12 +22,15 @@ node -v ``` npm install -g yarn jest lerna ``` + ### Install Docker and Docker Compose ``` brew install docker docker-compose ``` + ### Clone the repo + ``` git clone https://github.com/Budibase/budibase.git ``` @@ -48,10 +51,13 @@ This setup process was tested on Mac OSX 12 (Monterey) with version numbers show cd budibase yarn setup ``` + The yarn setup command runs several build steps i.e. + ``` node ./hosting/scripts/setup.js && yarn && yarn bootstrap && yarn build && yarn dev ``` + So this command will actually run the application in dev mode. It creates .env files under `./packages/server` and `./packages/worker` and runs docker containers for each service via docker-compose. The dev version will be available on port 10000 i.e. diff --git a/docs/DEV-SETUP-WINDOWS.md b/docs/DEV-SETUP-WINDOWS.md index c5608b7567..176e0700d7 100644 --- a/docs/DEV-SETUP-WINDOWS.md +++ b/docs/DEV-SETUP-WINDOWS.md @@ -1,13 +1,15 @@ ## Dev Environment on Windows 10/11 (WSL2) - ### Install WSL with Ubuntu LTS Enable WSL 2 on Windows 10/11 for docker support. + ``` wsl --set-default-version 2 ``` + Install Ubuntu LTS. + ``` wsl --install Ubuntu ``` @@ -16,6 +18,7 @@ Or follow the instruction here: https://learn.microsoft.com/en-us/windows/wsl/install ### Install Docker in windows + Download the installer from docker and install it. Check this url for more detailed instructions: @@ -24,18 +27,21 @@ https://docs.docker.com/desktop/install/windows-install/ You should follow the next steps from within the Ubuntu terminal. ### Install NVM & Node 14 + NVM documentation: https://github.com/nvm-sh/nvm#installing-and-updating Install NVM + ``` curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash ``` + Install Node 14 + ``` nvm install 14 ``` - ### Install npm requirements ``` @@ -43,6 +49,7 @@ npm install -g yarn jest lerna ``` ### Clone the repo + ``` git clone https://github.com/Budibase/budibase.git ``` @@ -63,10 +70,13 @@ This setup process was tested on Windows 11 with version numbers show below. You cd budibase yarn setup ``` + The yarn setup command runs several build steps i.e. + ``` node ./hosting/scripts/setup.js && yarn && yarn bootstrap && yarn build && yarn dev ``` + So this command will actually run the application in dev mode. It creates .env files under `./packages/server` and `./packages/worker` and runs docker containers for each service via docker-compose. The dev version will be available on port 10000 i.e. @@ -74,8 +84,9 @@ The dev version will be available on port 10000 i.e. http://127.0.0.1:10000/builder/admin ### Working with the code + Here are the instructions to work on the application from within Visual Studio Code (in Windows) through the WSL. All the commands and files are within the Ubuntu system and it should run as if you were working on a Linux machine. https://code.visualstudio.com/docs/remote/wsl -Note you will be able to run the application from within the WSL terminal and you will be able to access the application from the a browser in Windows. \ No newline at end of file +Note you will be able to run the application from within the WSL terminal and you will be able to access the application from the a browser in Windows. diff --git a/lerna.json b/lerna.json index de5e61bf5c..f0ce7b92cb 100644 --- a/lerna.json +++ b/lerna.json @@ -1,8 +1,22 @@ { "version": "2.5.10-alpha.3", "npmClient": "yarn", + "packages": [ + "packages/backend-core", + "packages/bbui", + "packages/builder", + "packages/cli", + "packages/client", + "packages/frontend-core", + "packages/sdk", + "packages/server", + "packages/shared-core", + "packages/string-templates", + "packages/types", + "packages/worker", + "packages/pro/packages/pro" + ], "useWorkspaces": true, - "packages": ["packages/*"], "command": { "publish": { "ignoreChanges": [ diff --git a/package.json b/package.json index 29b7c7c723..27f94ada0d 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "eslint": "^7.28.0", "eslint-plugin-cypress": "^2.11.3", "eslint-plugin-svelte3": "^3.2.0", - "husky": "^7.0.1", + "husky": "^8.0.3", "js-yaml": "^4.1.0", "kill-port": "^1.6.1", "lerna": "^6.6.1", @@ -17,22 +17,22 @@ "prettier-plugin-svelte": "^2.3.0", "rimraf": "^3.0.2", "rollup-plugin-replace": "^2.2.0", + "semver": "^7.5.0", "svelte": "^3.38.2", "typescript": "4.7.3" }, "scripts": { - "setup": "node ./hosting/scripts/setup.js && yarn && yarn bootstrap && yarn build && yarn dev", - "bootstrap": "lerna link && ./scripts/link-dependencies.sh", + "preinstall": "node scripts/syncProPackage.js", + "setup": "git config submodule.recurse true && git submodule update && node ./hosting/scripts/setup.js && yarn && yarn bootstrap && yarn build && yarn dev", + "bootstrap": "./scripts/bootstrap.sh && lerna link && ./scripts/link-dependencies.sh", "build": "lerna run --stream build", - "build:dev": "lerna run --stream prebuild && tsc --build --watch --preserveWatchOutput", + "build:dev": "lerna run --stream prebuild && yarn nx run-many --target=build --output-style=dynamic --watch --preserveWatchOutput", "backend:bootstrap": "./scripts/scopeBackend.sh && yarn run bootstrap", "backend:build": "./scripts/scopeBackend.sh 'lerna run --stream build'", "build:sdk": "lerna run --stream build:sdk", "deps:circular": "madge packages/server/dist/index.js packages/worker/src/index.ts packages/backend-core/dist/src/index.js packages/cli/src/index.js --circular", - "release": "lerna publish ${RELEASE_VERSION_TYPE:-patch} --yes --force-publish && yarn release:pro", - "release:develop": "lerna publish prerelease --yes --force-publish --dist-tag develop --exact && yarn release:pro:develop", - "release:pro": "bash scripts/pro/release.sh", - "release:pro:develop": "bash scripts/pro/release.sh develop", + "release": "lerna publish ${RELEASE_VERSION_TYPE:-patch} --yes --force-publish --no-git-tag-version --no-push --no-git-reset", + "release:develop": "lerna publish from-package --yes --force-publish --dist-tag develop --exact --no-git-tag-version --no-push --no-git-reset", "restore": "yarn run clean && yarn run bootstrap && yarn run build", "nuke": "yarn run nuke:packages && yarn run nuke:docker", "nuke:packages": "yarn run restore", @@ -46,7 +46,6 @@ "dev:server": "yarn run kill-server && lerna run --stream --parallel dev:builder --concurrency 1 --scope @budibase/backend-core --scope @budibase/worker --scope @budibase/server", "dev:built": "yarn run kill-all && cd packages/server && yarn dev:stack:up && cd ../../ && lerna run --stream --parallel dev:built", "test": "lerna run --stream test --stream", - "test:pro": "bash scripts/pro/test.sh", "lint:eslint": "eslint packages && eslint qa-core", "lint:prettier": "prettier --check \"packages/**/*.{js,ts,svelte}\" && prettier --write \"examples/**/*.{js,ts,svelte}\" && prettier --check \"qa-core/**/*.{js,ts,svelte}\"", "lint": "yarn run lint:eslint && yarn run lint:prettier", @@ -82,12 +81,25 @@ "mode:account": "yarn mode:cloud && yarn env:account:enable", "security:audit": "node scripts/audit.js", "postinstall": "husky install", - "install:pro": "bash scripts/pro/install.sh", - "dep:clean": "yarn clean && yarn bootstrap" + "dep:clean": "yarn clean -y && yarn bootstrap", + "submodules:load": "git submodule init && git submodule update && yarn && yarn bootstrap", + "submodules:unload": "git submodule deinit --all && yarn && yarn bootstrap" }, "workspaces": { "packages": [ - "packages/*" + "packages/backend-core", + "packages/bbui", + "packages/builder", + "packages/cli", + "packages/client", + "packages/frontend-core", + "packages/sdk", + "packages/server", + "packages/shared-core", + "packages/string-templates", + "packages/types", + "packages/worker", + "packages/pro/packages/pro" ] } } diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 52af631b3a..6a52cc6c03 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -15,8 +15,6 @@ "prebuild": "rimraf dist/", "prepack": "cp package.json dist", "build": "tsc -p tsconfig.build.json", - "build:pro": "../../scripts/pro/build.sh", - "postbuild": "yarn run build:pro", "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", "test": "bash scripts/test.sh", "test:watch": "jest --watchAll" @@ -24,7 +22,7 @@ "dependencies": { "@budibase/nano": "10.1.2", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.5.10-alpha.3", + "@budibase/types": "0.0.1", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/backend-core/tsconfig.json b/packages/backend-core/tsconfig.json index e95fb9ab4d..2b1419b051 100644 --- a/packages/backend-core/tsconfig.json +++ b/packages/backend-core/tsconfig.json @@ -7,11 +7,6 @@ "@budibase/types": ["../types/src"] } }, - "references": [ - { "path": "../types" } - ], - "exclude": [ - "node_modules", - "dist", - ] -} \ No newline at end of file + + "exclude": ["node_modules", "dist"] +} diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 8f74e41cb3..f313dd04c0 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,8 +38,8 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/shared-core": "2.5.10-alpha.3", - "@budibase/string-templates": "2.5.10-alpha.3", + "@budibase/shared-core": "0.0.1", + "@budibase/string-templates": "0.0.1", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index bfed220ef4..702e53c12a 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.5.10-alpha.3", - "@budibase/frontend-core": "2.5.10-alpha.3", - "@budibase/shared-core": "2.5.10-alpha.3", - "@budibase/string-templates": "2.5.10-alpha.3", + "@budibase/bbui": "0.0.1", + "@budibase/frontend-core": "0.0.1", + "@budibase/shared-core": "0.0.1", + "@budibase/string-templates": "0.0.1", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/builder/tsconfig.json b/packages/builder/tsconfig.json index 1c018ab983..400f964e30 100644 --- a/packages/builder/tsconfig.json +++ b/packages/builder/tsconfig.json @@ -13,9 +13,5 @@ }, "ts-node": { "require": ["tsconfig-paths/register"] - }, - "references": [ - { "path": "../types" }, - { "path": "../backend-core" }, - ] -} \ No newline at end of file + } +} diff --git a/packages/cli/package.json b/packages/cli/package.json index cc48c4d17a..7f8b4b13b1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "dist/index.js", "bin": { @@ -29,9 +29,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.5.10-alpha.3", - "@budibase/string-templates": "2.5.10-alpha.3", - "@budibase/types": "2.5.10-alpha.3", + "@budibase/backend-core": "0.0.1", + "@budibase/string-templates": "0.0.1", + "@budibase/types": "0.0.1", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index 3c886bccc8..6a7b0de225 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,11 +19,11 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.5.10-alpha.3", - "@budibase/frontend-core": "2.5.10-alpha.3", - "@budibase/shared-core": "2.5.10-alpha.3", - "@budibase/string-templates": "2.5.10-alpha.3", - "@budibase/types": "2.5.10-alpha.3", + "@budibase/bbui": "0.0.1", + "@budibase/frontend-core": "0.0.1", + "@budibase/shared-core": "0.0.1", + "@budibase/string-templates": "0.0.1", + "@budibase/types": "0.0.1", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index ae2bbbac7a..84c39571e4 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,13 +1,13 @@ { "name": "@budibase/frontend-core", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.5.10-alpha.3", - "@budibase/shared-core": "2.5.10-alpha.3", + "@budibase/bbui": "0.0.1", + "@budibase/shared-core": "0.0.1", "dayjs": "^1.11.7", "lodash": "^4.17.21", "socket.io-client": "^4.6.1", diff --git a/packages/pro b/packages/pro new file mode 160000 index 0000000000..79bc94b17b --- /dev/null +++ b/packages/pro @@ -0,0 +1 @@ +Subproject commit 79bc94b17baba885eb20e72f9abba3ac8b9c0eab diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 79579da1fe..7e8b74698d 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/jest.config.ts b/packages/server/jest.config.ts index b1498cdad7..6a732a9591 100644 --- a/packages/server/jest.config.ts +++ b/packages/server/jest.config.ts @@ -20,9 +20,9 @@ const baseConfig: Config.InitialProjectOptions = { } // add pro sources if they exist -if (fs.existsSync("../../../budibase-pro")) { - baseConfig.moduleNameMapper["@budibase/pro"] = - "/../../../budibase-pro/packages/pro/src" +if (fs.existsSync("../pro/packages")) { + baseConfig.moduleNameMapper!["@budibase/pro"] = + "/../pro/packages/pro/src" } const config: Config.InitialOptions = { diff --git a/packages/server/nodemon.json b/packages/server/nodemon.json index c27f3aeaf3..b7d4d623c7 100644 --- a/packages/server/nodemon.json +++ b/packages/server/nodemon.json @@ -1,6 +1,10 @@ { - "watch": ["src", "../backend-core", "../../../budibase-pro/packages/pro"], + "watch": ["src", "../backend-core", "../pro/packages/pro"], "ext": "js,ts,json", - "ignore": ["src/**/*.spec.ts", "src/**/*.spec.js", "../backend-core/dist/**/*"], + "ignore": [ + "src/**/*.spec.ts", + "src/**/*.spec.js", + "../backend-core/dist/**/*" + ], "exec": "ts-node src/index.ts" -} \ No newline at end of file +} diff --git a/packages/server/package.json b/packages/server/package.json index ab0bf8bea1..f0ece87bed 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -45,12 +45,12 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.5.10-alpha.3", - "@budibase/client": "2.5.10-alpha.3", - "@budibase/pro": "2.5.10-alpha.3", - "@budibase/shared-core": "2.5.10-alpha.3", - "@budibase/string-templates": "2.5.10-alpha.3", - "@budibase/types": "2.5.10-alpha.3", + "@budibase/backend-core": "0.0.1", + "@budibase/client": "0.0.1", + "@budibase/pro": "0.0.1", + "@budibase/shared-core": "0.0.1", + "@budibase/string-templates": "0.0.1", + "@budibase/types": "0.0.1", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index e98a7cc9ff..ee33fb7892 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -11,7 +11,7 @@ "@budibase/backend-core": ["../backend-core/src"], "@budibase/backend-core/*": ["../backend-core/*"], "@budibase/shared-core": ["../shared-core/src"], - "@budibase/pro": ["../../../budibase-pro/packages/pro/src"] + "@budibase/pro": ["../pro/packages/pro/src"] } }, "ts-node": { diff --git a/packages/shared-core/package.json b/packages/shared-core/package.json index 518df47dcc..0bc643f551 100644 --- a/packages/shared-core/package.json +++ b/packages/shared-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/shared-core", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Shared data utils", "main": "dist/cjs/src/index.js", "types": "dist/mjs/src/index.d.ts", @@ -20,7 +20,7 @@ "dev:builder": "yarn prebuild && concurrently \"tsc -p tsconfig.build.json --watch\" \"tsc -p tsconfig-cjs.build.json --watch\"" }, "dependencies": { - "@budibase/types": "2.5.10-alpha.3" + "@budibase/types": "0.0.1" }, "devDependencies": { "concurrently": "^7.6.0", diff --git a/packages/shared-core/tsconfig.json b/packages/shared-core/tsconfig.json index 58c9a25d5e..ebfec9c3a5 100644 --- a/packages/shared-core/tsconfig.json +++ b/packages/shared-core/tsconfig.json @@ -6,6 +6,5 @@ "paths": { "@budibase/types": ["../types/src"] } - }, - "references": [{ "path": "../types" }] + } } diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index e74eb2d6d8..4ca866f18d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 0fdc75ed65..6f6b5c9ec3 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Budibase types", "main": "dist/cjs/index.js", "types": "dist/mjs/index.d.ts", diff --git a/packages/worker/jest.config.ts b/packages/worker/jest.config.ts index 3655479d82..2b0d8fe23b 100644 --- a/packages/worker/jest.config.ts +++ b/packages/worker/jest.config.ts @@ -20,11 +20,11 @@ const config: Config.InitialOptions = { } // add pro sources if they exist -if (fs.existsSync("../../../budibase-pro")) { - config.moduleNameMapper["@budibase/pro/(.*)"] = - "/../../../budibase-pro/packages/pro/$1" - config.moduleNameMapper["@budibase/pro"] = - "/../../../budibase-pro/packages/pro/src" +if (fs.existsSync("../pro/packages")) { + config.moduleNameMapper!["@budibase/pro/(.*)"] = + "/../pro/packages/pro/$1" + config.moduleNameMapper!["@budibase/pro"] = + "/../pro/packages/pro/src" } export default config diff --git a/packages/worker/nodemon.json b/packages/worker/nodemon.json index e5184939ff..b7d4d623c7 100644 --- a/packages/worker/nodemon.json +++ b/packages/worker/nodemon.json @@ -1,6 +1,10 @@ { - "watch": ["src", "../backend-core", "../../../budibase-pro/packages/pro"], + "watch": ["src", "../backend-core", "../pro/packages/pro"], "ext": "js,ts,json", - "ignore": ["src/**/*.spec.ts", "src/**/*.spec.js", "../backend-core/dist/**/*"], + "ignore": [ + "src/**/*.spec.ts", + "src/**/*.spec.js", + "../backend-core/dist/**/*" + ], "exec": "ts-node src/index.ts" } diff --git a/packages/worker/package.json b/packages/worker/package.json index 23c037bfc5..d3bc7e3b13 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.5.10-alpha.3", + "version": "0.0.1", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -37,10 +37,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.5.10-alpha.3", - "@budibase/pro": "2.5.10-alpha.3", - "@budibase/string-templates": "2.5.10-alpha.3", - "@budibase/types": "2.5.10-alpha.3", + "@budibase/backend-core": "0.0.1", + "@budibase/pro": "0.0.1", + "@budibase/string-templates": "0.0.1", + "@budibase/types": "0.0.1", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", diff --git a/packages/worker/tsconfig.json b/packages/worker/tsconfig.json index 0a5063574a..45c50934b3 100644 --- a/packages/worker/tsconfig.json +++ b/packages/worker/tsconfig.json @@ -9,7 +9,7 @@ "@budibase/types": ["../types/src"], "@budibase/backend-core": ["../backend-core/src"], "@budibase/backend-core/*": ["../backend-core/*"], - "@budibase/pro": ["../../../budibase-pro/packages/pro/src"] + "@budibase/pro": ["../pro/packages/pro/src"] } }, "ts-node": { diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh new file mode 100755 index 0000000000..4e7eadc4ab --- /dev/null +++ b/scripts/bootstrap.sh @@ -0,0 +1,7 @@ +if [ -d "packages/pro/packages" ]; then + cd packages/pro + + yarn + lerna bootstrap + yarn setup +fi \ No newline at end of file diff --git a/scripts/bumpVersion.js b/scripts/bumpVersion.js new file mode 100644 index 0000000000..19deb684da --- /dev/null +++ b/scripts/bumpVersion.js @@ -0,0 +1,20 @@ +const fs = require("fs") +const semver = require("semver") + +const filePath = "lerna.json" +const versionBump = process.argv[2] || "patch" + +// Read and parse lerna.json file +const fileData = fs.readFileSync(filePath) +const lernaData = JSON.parse(fileData) + +const currentVersion = lernaData.version + +const newVersion = semver.inc(currentVersion, versionBump, "alpha") + +// Update lerna.json file with new version +lernaData.version = newVersion +const updatedData = JSON.stringify(lernaData, null, 2) +fs.writeFileSync(filePath, updatedData) + +console.log(`Updated version from ${currentVersion} to ${newVersion}`) diff --git a/scripts/link-dependencies.sh b/scripts/link-dependencies.sh index a3a75e879d..9b85f9895d 100755 --- a/scripts/link-dependencies.sh +++ b/scripts/link-dependencies.sh @@ -34,33 +34,17 @@ yarn unlink yarn link cd - -if [ -d "../budibase-pro" ]; then - cd ../budibase-pro - echo "Bootstrapping budibase-pro" - yarn bootstrap +if [ -d packages/pro/packages ]; then + pro_loaded_locally=true +else + pro_loaded_locally=false +fi - cd packages/pro +if [ $pro_loaded_locally = true ]; then echo "Linking pro" + cd packages/pro/packages/pro yarn unlink yarn link - - echo "Linking backend-core to pro" - yarn link '@budibase/backend-core' - - echo "Linking types to pro" - yarn link '@budibase/types' - - echo "Linking string-templates to pro" - yarn link '@budibase/string-templates' - - cd ../../../budibase - - echo "Linking pro to worker" - cd packages/worker && yarn link '@budibase/pro' - cd - - - echo "Linking pro to server" - cd packages/server && yarn link '@budibase/pro' cd - fi @@ -79,7 +63,7 @@ if [ -d "../account-portal" ]; then echo "Linking types to account-portal" yarn link "@budibase/types" - if [ -d "../../../budibase-pro" ]; then + if [ $pro_loaded_locally = true ]; then echo "Linking pro to account-portal" yarn link "@budibase/pro" fi diff --git a/scripts/pro/build.sh b/scripts/pro/build.sh deleted file mode 100755 index b03d85a0d0..0000000000 --- a/scripts/pro/build.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# This script is designed for building the pro repo after the backend-core build has completed. -# This ensures that any changes in core that are required by pro are done in the correct order. - -set -e - -# Go to parent of budibase -cd ../../../ - -if [[ -d "budibase-pro" ]]; then - cd budibase-pro - echo "Building pro" - yarn build -fi \ No newline at end of file diff --git a/scripts/pro/install.sh b/scripts/pro/install.sh deleted file mode 100755 index d6662d6341..0000000000 --- a/scripts/pro/install.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -if [[ -z "${CI}" ]]; then - echo 'Cannot run install.sh unless in CI' - exit 0 -fi - -BRANCH=$1 -BASE_BRANCH=$2 - -cd ../ -echo "Cloning pro repo..." -git clone https://$PERSONAL_ACCESS_TOKEN@github.com/Budibase/budibase-pro.git - -# Community forks won't be able to clone the pro repo as they can't access secrets -# Skip the rest of the installation and rely on npm version instead -# This should be ok as forks will not rely on pro changes -if [[ -d "budibase-pro" ]]; then - cd budibase-pro - - if [[ -z "${BRANCH}" ]]; then - echo Using GITHUB_REF_NAME: $GITHUB_REF_NAME - export BRANCH=$GITHUB_REF_NAME - fi - - # Try to checkout the matching pro branch - git checkout $BRANCH - - if [[ $? == "1" ]] && [[ $BASE_BRANCH ]]; then - # There is no matching branch, try to match the base branch - git checkout $BASE_BRANCH - fi - - # If neither branch exists continue with default branch 'develop' - git pull - - echo "Initializing pro repo..." - yarn -fi \ No newline at end of file diff --git a/scripts/pro/release.sh b/scripts/pro/release.sh deleted file mode 100755 index 1af7eea566..0000000000 --- a/scripts/pro/release.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/bash - -# Fail when any command fails -set -e - -if [[ -z "${CI}" ]]; then - echo 'Cannot run release.sh unless in CI' - exit 0 -fi - -############################################# -# SETUP # -############################################# - -# Release pro with same version as budibase -VERSION=$(jq -r .version lerna.json) -echo "Version: $VERSION" -COMMAND=$1 -echo "Command: $COMMAND" - -# Determine tag to use -TAG="" -if [[ $COMMAND == "develop" ]]; then - TAG="develop" -else - TAG="latest" -fi - -echo "Releasing version $VERSION" -echo "Releasing tag $TAG" - -############################################# -# PRE-PUBLISH # -############################################# - -# Go to pro repo root -cd ../budibase-pro - -# Install NPM credentials -echo //registry.npmjs.org/:_authToken=${NPM_TOKEN} >> .npmrc - -# Sync budibase dependency versions in packages/pro/package.json -# Ensures pro does not use out of date dependency -cd packages/pro -jq '.dependencies."@budibase/backend-core"="'$VERSION'"' package.json > package.json.tmp && mv package.json.tmp package.json -jq '.dependencies."@budibase/types"="'$VERSION'"' package.json > package.json.tmp && mv package.json.tmp package.json - -# Go back to pro repo root -cd - - -# Update lockfile with new dependency versions -yarn clean -y && yarn bootstrap - -# Commit and push -git add packages/pro/yarn.lock -git commit -m "Update dependency versions to $VERSION" -n -git push - -############################################# -# PUBLISH # -############################################# - -lerna publish $VERSION --yes --force-publish --dist-tag $TAG - -############################################# -# POST-PUBLISH - BUDIBASE # -############################################# - -# Go to budibase repo root -cd ../budibase - -# Update pro version in packages/server/package.json -cd packages/server -jq '.dependencies."@budibase/pro"="'$VERSION'"' package.json > package.json.tmp && mv package.json.tmp package.json - -# Go back to budibase repo root -cd - - -# Update pro version in packages/worker/package.json -cd packages/worker -jq '.dependencies."@budibase/pro"="'$VERSION'"' package.json > package.json.tmp && mv package.json.tmp package.json - -# Go back to budibase repo root -cd - - -# Update lockfile with new pro version -yarn clean -y && yarn bootstrap - -# Commit and push changes -git add packages/server/package.json -git add packages/worker/package.json -git add yarn.lock -git commit -m "Update pro version to $VERSION" -n -git push diff --git a/scripts/pro/test.sh b/scripts/pro/test.sh deleted file mode 100755 index 9c56b8be6b..0000000000 --- a/scripts/pro/test.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash - -# Fail when any command fails -set -e - -cd ../ -if [[ -d "budibase-pro" ]]; then - cd budibase-pro - yarn test - cd ../budibase -fi \ No newline at end of file diff --git a/scripts/syncLocalDependencies.js b/scripts/syncLocalDependencies.js new file mode 100755 index 0000000000..d7bc8643bb --- /dev/null +++ b/scripts/syncLocalDependencies.js @@ -0,0 +1,53 @@ +const fs = require("fs") +const path = require("path") +const { execSync } = require("child_process") + +// Get the version argument from the command line +const version = process.argv[2] +if (!version) { + console.error("Usage: node update-workspace-dependencies.js ") + process.exit(1) +} + +// Get the list of workspaces with mismatched dependencies +const output = execSync("yarn --silent workspaces info --json", { + encoding: "utf-8", +}) +const data = JSON.parse(output) + +const workspaces = Object.keys(data).filter(key => { + return data[key].mismatchedWorkspaceDependencies?.length +}) + +// Loop through each workspace and update the dependencies +workspaces.forEach(workspace => { + const dependencies = data[workspace].mismatchedWorkspaceDependencies + + // Loop through each dependency and update its version in package.json + const packageJsonPath = path.join(data[workspace].location, "package.json") + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")) + let hasChanges = false + + dependencies.forEach(dependency => { + if (packageJson.dependencies?.[dependency]) { + packageJson.dependencies[dependency] = version + hasChanges = true + } + if (packageJson.devDependencies?.[dependency]) { + packageJson.devDependencies[dependency] = version + hasChanges = true + } + if (packageJson.peerDependencies?.[dependency]) { + packageJson.peerDependencies[dependency] = version + hasChanges = true + } + }) + + // Write changes to package.json if there are any + if (hasChanges) { + fs.writeFileSync( + packageJsonPath, + JSON.stringify(packageJson, null, 2) + "\n" + ) + } +}) diff --git a/scripts/syncProPackage.js b/scripts/syncProPackage.js new file mode 100755 index 0000000000..236586fdf2 --- /dev/null +++ b/scripts/syncProPackage.js @@ -0,0 +1,43 @@ +const fs = require("fs") +const path = require("path") +const { execSync } = require("child_process") + +let version = "0.0.1" +const localPro = fs.existsSync("packages/pro/packages") +if (!localPro) { + const branchName = execSync("git rev-parse --abbrev-ref HEAD") + .toString() + .trim() + if (branchName === "master") { + version = "latest" + } else { + version = "develop" + } +} + +// Get the list of workspaces with mismatched dependencies +const output = execSync("yarn --silent workspaces info --json", { + encoding: "utf-8", +}) +const data = JSON.parse(output) + +// Loop through each workspace and update the dependencies +Object.keys(data).forEach(workspace => { + // Loop through each dependency and update its version in package.json + const packageJsonPath = path.join(data[workspace].location, "package.json") + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")) + let hasChanges = false + + if (packageJson.dependencies["@budibase/pro"]) { + packageJson.dependencies["@budibase/pro"] = version + hasChanges = true + } + + // Write changes to package.json if there are any + if (hasChanges) { + fs.writeFileSync( + packageJsonPath, + JSON.stringify(packageJson, null, 2) + "\n" + ) + } +}) diff --git a/scripts/versionCommit.sh b/scripts/versionCommit.sh new file mode 100755 index 0000000000..10e7a9df71 --- /dev/null +++ b/scripts/versionCommit.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +if [ -z "$1" ] +then + echo "Error: version number is required. Usage: $0 [major|minor|patch|prerelease]" + exit 1 +fi + +# Bump the version in lerna.json +node scripts/bumpVersion.js $1 + + +NEW_VERSION=$(node -p "require('./lerna.json').version") +git add lerna.json +git commit -m "Bump version to $NEW_VERSION" +git tag v$NEW_VERSION +git push +git push --tags \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 8382281d99..0000000000 --- a/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "references": [ - { "path": "./packages/types" }, - { "path": "./packages/backend-core" }, - { "path": "./packages/server" }, - { "path": "./packages/worker" } - ], - "files" :[] -} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1882b1d408..04d9a7d140 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1486,32 +1486,6 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.5.10-alpha.2": - version "2.5.10-alpha.2" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.5.10-alpha.2.tgz#7f3e831748b7b9503e49a1fe49531be030ffbe49" - integrity sha512-bXI6UrFWKrUZLZzTlCRU0fKfnoZvUIAV8IeZREF+AqN0TKx5hlxTmyj4ACoBLy3ABm1+AanMMpg8Bu4kLiue3g== - dependencies: - "@budibase/backend-core" "2.5.10-alpha.2" - "@budibase/shared-core" "2.5.9" - "@budibase/string-templates" "2.5.9" - "@budibase/types" "2.5.10-alpha.2" - "@koa/router" "8.0.8" - bull "4.10.1" - joi "17.6.0" - jsonwebtoken "8.5.1" - lru-cache "^7.14.1" - memorystream "^0.3.1" - node-fetch "^2.6.1" - scim-patch "^0.7.0" - scim2-parse-filter "^0.2.8" - -"@budibase/shared-core@2.5.9": - version "2.5.9" - resolved "https://registry.yarnpkg.com/@budibase/shared-core/-/shared-core-2.5.9.tgz#f22f22637fb7618ded1c7292b10793d7969827ce" - integrity sha512-l417Rb2+1tuXbjNL42wJHmqIQQyla2pPglOnapxfOdRuvzng+5GqlrTV1caLNf/53TS9U6ueGJdPOtxZTTFGUA== - dependencies: - "@budibase/types" "^2.5.9" - "@budibase/standard-components@^0.9.139": version "0.9.139" resolved "https://registry.yarnpkg.com/@budibase/standard-components/-/standard-components-0.9.139.tgz#cf8e2b759ae863e469e50272b3ca87f2827e66e3" @@ -1530,23 +1504,6 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/string-templates@2.5.9": - version "2.5.9" - resolved "https://registry.yarnpkg.com/@budibase/string-templates/-/string-templates-2.5.9.tgz#64582730421801e1e829b430136b449b1adc0314" - integrity sha512-Szu06M0JFHuUVIil2aHZWU8hvsROYpDx9raX9uIv4DcwBOAtyvVzD16wOCHzlmj8wWeV8fbKe4JF4q4GXnilJg== - dependencies: - "@budibase/handlebars-helpers" "^0.11.8" - dayjs "^1.10.4" - handlebars "^4.7.6" - handlebars-utils "^1.0.6" - lodash "^4.17.20" - vm2 "^3.9.15" - -"@budibase/types@^2.5.9": - version "2.5.9" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.5.9.tgz#4b1253e76b95cd8d6a42e86ebc3363a305c62653" - integrity sha512-7NELdWB3iV5y+pmXhm9g/v1AlN+wqHtoy67DZxKY5dlcK4DCcTdlqkToGiiw9d3sDPgDAVznjdZYnB5pGzd3TQ== - "@bull-board/api@3.7.0": version "3.7.0" resolved "https://registry.yarnpkg.com/@bull-board/api/-/api-3.7.0.tgz#231f687187c0cb34e0b97f463917b6aaeb4ef6af" @@ -3007,7 +2964,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -3717,7 +3674,7 @@ dependencies: slash "^3.0.0" -"@rollup/plugin-commonjs@^16.0.0": +"@rollup/plugin-commonjs@16.0.0", "@rollup/plugin-commonjs@^16.0.0": version "16.0.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz#169004d56cd0f0a1d0f35915d31a036b0efe281f" integrity sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw== @@ -3800,6 +3757,22 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" +"@rollup/plugin-replace@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501b16311feded2485e98419acb8448c61d" + integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA== + dependencies: + "@rollup/pluginutils" "^5.0.1" + magic-string "^0.27.0" + +"@rollup/plugin-typescript@8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.3.0.tgz#bc1077fa5897b980fc27e376c4e377882c63e68b" + integrity sha512-I5FpSvLbtAdwJ+naznv+B4sjXZUcIvLLceYpITAn7wAP8W0wqc5noLdGIp9HGVntNhRWXctwPYrSSFQxtl0FPA== + dependencies: + "@rollup/pluginutils" "^3.1.0" + resolve "^1.17.0" + "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" @@ -11698,7 +11671,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.1.2, fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.1, 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== @@ -12880,10 +12853,10 @@ humanize-ms@^1.2.0, humanize-ms@^1.2.1: dependencies: ms "^2.0.0" -husky@^7.0.1: - version "7.0.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" - integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== +husky@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" + integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== iconv-lite@0.4.24, iconv-lite@^0.4.15, iconv-lite@^0.4.24, iconv-lite@^0.4.5: version "0.4.24" @@ -16688,6 +16661,13 @@ magic-string@^0.26.2: dependencies: sourcemap-codec "^1.4.8" +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + make-dir@3.1.0, make-dir@^3.0.0, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -21459,6 +21439,13 @@ rollup-pluginutils@^2.3.1, rollup-pluginutils@^2.5.0, rollup-pluginutils@^2.6.0, dependencies: estree-walker "^0.6.1" +rollup@2.45.2: + version "2.45.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.45.2.tgz#8fb85917c9f35605720e92328f3ccbfba6f78b48" + integrity sha512-kRRU7wXzFHUzBIv0GfoFFIN3m9oteY4uAsKllIpQDId5cfnkWF2J130l+27dzDju0E6MScKiV0ZM5Bw8m4blYQ== + optionalDependencies: + fsevents "~2.3.1" + rollup@^2.36.2, rollup@^2.44.0, rollup@^2.45.2, rollup@^2.79.1: version "2.79.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" @@ -21731,6 +21718,13 @@ semver@^7.2.1, semver@^7.3.5: dependencies: lru-cache "^6.0.0" +semver@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + semver@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-2.3.2.tgz#b9848f25d6cf36333073ec9ef8856d42f1233e52" @@ -23428,7 +23422,7 @@ timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== -timekeeper@2.2.0: +timekeeper@2.2.0, timekeeper@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/timekeeper/-/timekeeper-2.2.0.tgz#9645731fce9e3280a18614a57a9d1b72af3ca368" integrity sha512-W3AmPTJWZkRwu+iSNxPIsLZ2ByADsOLbbLxe46UJyWj3mlYLlwucKiq+/dPm0l9wTzqoF3/2PH0AGFCebjq23A==