diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 87e2b9c22..e9bb29fef 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -27,7 +27,6 @@ jobs: - name: Copy configuration files run: | cp configuration/dist/github/developer-roadmap.env .env - git ls-remote https://${{ secrets.GITHUB_TOKEN }}@github.com/roadmapsh/web-draw.git # ----------------- # Prepare the Build @@ -38,9 +37,8 @@ jobs: - name: Generate Production Build run: | - LATEST_COMMIT_HASH=$(git ls-remote https://${{ secrets.GH_PAT }}@github.com/roadmapsh/web-draw.git refs/heads/main | awk '{print $1}') - echo "Using commit hash: $LATEST_COMMIT_HASH" - pnpm add "github:roadmapsh/web-draw#${LATEST_COMMIT_HASH}&path:packages/editor" + git clone https://${{ secrets.GH_PAT }}@github.com/roadmapsh/web-draw.git .temp/web-draw --depth 1 + npm run generate-renderer npm run compress:images npm run build diff --git a/.gitignore b/.gitignore index e960d248e..ccb5a8c1e 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,6 @@ pnpm-debug.log* /playwright-report/ /playwright/.cache/ tests-examples -*.csv \ No newline at end of file +*.csveditor/ + +editor/ \ No newline at end of file diff --git a/package.json b/package.json index 018eda3a1..ba53083d4 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "editor-roadmap-content": "tsx scripts/editor-roadmap-content.ts", "roadmap-content": "node scripts/roadmap-content.cjs", "generate-renderer": "sh scripts/generate-renderer.sh", + "generate-renderer-dummy": "sh scripts/generate-renderer-dummy.sh", "best-practice-dirs": "node scripts/best-practice-dirs.cjs", "best-practice-content": "node scripts/best-practice-content.cjs", "generate:og": "node ./scripts/generate-og-images.mjs", @@ -39,7 +40,7 @@ "@nanostores/react": "^0.8.0", "@napi-rs/image": "^1.9.2", "@resvg/resvg-js": "^2.6.2", - "@roadmapsh/editor": "npm:@roadmapsh/dummy-editor@^0.0.5", + "@roadmapsh/editor": "file:editor", "@tanstack/react-query": "^5.59.16", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 006ac7f02..ff45cc423 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,8 +36,8 @@ importers: specifier: ^2.6.2 version: 2.6.2 '@roadmapsh/editor': - specifier: npm:@roadmapsh/dummy-editor@^0.0.5 - version: '@roadmapsh/dummy-editor@0.0.5' + specifier: file:editor + version: file:editor(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(use-sync-external-store@1.5.0(react@18.3.1)) '@tanstack/react-query': specifier: ^5.59.16 version: 5.59.16(react@18.3.1) @@ -1127,8 +1127,8 @@ packages: resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==} engines: {node: '>= 10'} - '@roadmapsh/dummy-editor@0.0.5': - resolution: {integrity: sha512-Ob+8ZcsxvpRC5IZvbfancRkFx3XxzsawtdCZHph0ioTv6e57MMX+hlyKWu6rkxPuD4CJMNQX5GPbKQlo9YbWVQ==} + '@roadmapsh/editor@file:editor': + resolution: {directory: editor, type: directory} '@rollup/pluginutils@5.1.2': resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} @@ -1299,6 +1299,24 @@ packages: '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -1398,6 +1416,15 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 + '@xyflow/react@12.5.4': + resolution: {integrity: sha512-ITCW3h/pXVKwb0j3w8CxPyfmmxIqToctE55R+BcfTAe9j+qr/6Uc+NUsbIgnvEyiziJKq/sS0ovVfZ4482txww==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + + '@xyflow/system@0.0.54': + resolution: {integrity: sha512-DBoQTcSQ2620WMfakCcjRLrlqalWcZBPgMNrfSAybnVeyZm73rT1592GAXPcC3eoVmWcvGfBgqwAmmNtlrowdw==} + abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -1576,6 +1603,9 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} + classcat@5.0.5: + resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -1687,6 +1717,44 @@ packages: engines: {node: '>= 10'} hasBin: true + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} @@ -2283,6 +2351,11 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + lucide-react@0.474.0: + resolution: {integrity: sha512-CmghgHkh0OJNmxGKWc0qfPJCYHASPMVSyGY8fj3xgk4v84ItqDg64JNKFZn5hC6E0vHi6gxnbCgwhyVB09wQtA==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + luxon@3.5.0: resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} engines: {node: '>=12'} @@ -2503,6 +2576,11 @@ packages: engines: {node: ^18 || >=20} hasBin: true + nanoid@5.1.5: + resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} + engines: {node: ^18 || >=20} + hasBin: true + nanostores@0.11.3: resolution: {integrity: sha512-TUes3xKIX33re4QzdxwZ6tdbodjmn3tWXCEc1uokiEmo14sI1EaGYNs2k3bU2pyyGNmBqFGAVl6jAGWd06AVIg==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3513,6 +3591,21 @@ packages: zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zustand@4.5.6: + resolution: {integrity: sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + zustand@5.0.1: resolution: {integrity: sha512-pRET7Lao2z+n5R/HduXMio35TncTlSW68WsYBq2Lg1ASspsNGjpwLAsij3RpouyV6+kHMwwwzP0bZPD70/Jx/w==} engines: {node: '>=12.20.0'} @@ -3531,6 +3624,24 @@ packages: use-sync-external-store: optional: true + zustand@5.0.3: + resolution: {integrity: sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -4336,11 +4447,23 @@ snapshots: '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 '@resvg/resvg-js-win32-x64-msvc': 2.6.2 - '@roadmapsh/dummy-editor@0.0.5': + '@roadmapsh/editor@file:editor(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(use-sync-external-store@1.5.0(react@18.3.1))': dependencies: + '@xyflow/react': 12.5.4(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@19.0.0) clsx: 2.1.1 + lucide-react: 0.474.0(react@19.0.0) + nanoid: 5.1.5 react: 19.0.0 + remark-parse: 11.0.0 tailwind-merge: 3.0.2 + unified: 11.0.5 + zustand: 5.0.3(@types/react@18.3.11)(react@19.0.0)(use-sync-external-store@1.5.0(react@18.3.1)) + transitivePeerDependencies: + - '@types/react' + - immer + - react-dom + - supports-color + - use-sync-external-store '@rollup/pluginutils@5.1.2(rollup@4.22.4)': dependencies: @@ -4531,6 +4654,27 @@ snapshots: '@types/cookie@0.6.0': {} + '@types/d3-color@3.1.3': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 @@ -4636,6 +4780,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@xyflow/react@12.5.4(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@19.0.0)': + dependencies: + '@xyflow/system': 0.0.54 + classcat: 5.0.5 + react: 19.0.0 + react-dom: 18.3.1(react@18.3.1) + zustand: 4.5.6(@types/react@18.3.11)(react@19.0.0) + transitivePeerDependencies: + - '@types/react' + - immer + + '@xyflow/system@0.0.54': + dependencies: + '@types/d3-drag': 3.0.7 + '@types/d3-selection': 3.0.11 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + d3-drag: 3.0.0 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -4875,6 +5040,8 @@ snapshots: ci-info@4.0.0: {} + classcat@5.0.5: {} + classnames@2.5.1: {} cli-boxes@3.0.0: {} @@ -4967,6 +5134,42 @@ snapshots: dependencies: minimist: 1.2.8 + d3-color@3.1.0: {} + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-ease@3.0.1: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-selection@3.0.0: {} + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + dayjs@1.11.13: {} debug@2.6.9: @@ -5581,6 +5784,10 @@ snapshots: dependencies: react: 18.3.1 + lucide-react@0.474.0(react@19.0.0): + dependencies: + react: 19.0.0 + luxon@3.5.0: {} magic-string@0.30.11: @@ -5972,6 +6179,8 @@ snapshots: nanoid@5.0.7: {} + nanoid@5.1.5: {} + nanostores@0.11.3: {} neotraverse@0.6.18: {} @@ -6961,6 +7170,10 @@ snapshots: dependencies: react: 18.3.1 + use-sync-external-store@1.5.0(react@19.0.0): + dependencies: + react: 19.0.0 + util-deprecate@1.0.2: {} vfile-location@5.0.3: @@ -7063,10 +7276,23 @@ snapshots: zod@3.23.8: {} + zustand@4.5.6(@types/react@18.3.11)(react@19.0.0): + dependencies: + use-sync-external-store: 1.5.0(react@19.0.0) + optionalDependencies: + '@types/react': 18.3.11 + react: 19.0.0 + zustand@5.0.1(@types/react@18.3.11)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1)): optionalDependencies: '@types/react': 18.3.11 react: 18.3.1 use-sync-external-store: 1.5.0(react@18.3.1) + zustand@5.0.3(@types/react@18.3.11)(react@19.0.0)(use-sync-external-store@1.5.0(react@18.3.1)): + optionalDependencies: + '@types/react': 18.3.11 + react: 19.0.0 + use-sync-external-store: 1.5.0(react@18.3.1) + zwitch@2.0.4: {} diff --git a/scripts/generate-renderer.sh b/scripts/generate-renderer.sh index a22270323..e2f01d8ed 100644 --- a/scripts/generate-renderer.sh +++ b/scripts/generate-renderer.sh @@ -2,7 +2,36 @@ set -e -LATEST_COMMIT_HASH=$(git ls-remote git@github.com:roadmapsh/web-draw.git refs/heads/main | awk '{print $1}') +if [ ! -d ".temp/web-draw" ]; then + git clone ssh://git@github.com/roadmapsh/web-draw.git .temp/web-draw --depth 1 +fi -echo "Using commit hash: $LATEST_COMMIT_HASH" -pnpm add "github:roadmapsh/web-draw#${LATEST_COMMIT_HASH}&path:packages/editor" \ No newline at end of file +cd .temp/web-draw +pnpm install +npm run build -- --filter=@roadmapsh/editor + +# Remove old editor +rm -rf editor + +# Copy new editor +cp -rf packages/editor ../../editor + +cd ../../ + +editor_changed_files=$(git ls-files -m editor) + +echo $editor_changed_files + +# for each of the changed files, assume they are unchanged +for file in $editor_changed_files; do + echo "Assuming $file is unchanged" + git update-index --assume-unchanged $file +done + +# Remove temp directory +rm -rf .temp + +# Reinstall so that the editor which was setup gets used +pnpm install + +git checkout -- pnpm-lock.yaml \ No newline at end of file