diff --git a/.github/workflows/addon-sonar-analysis.yml b/.github/workflows/addon-sonar-analysis.yml index 6d8124092e..362e43fc72 100644 --- a/.github/workflows/addon-sonar-analysis.yml +++ b/.github/workflows/addon-sonar-analysis.yml @@ -1,7 +1,6 @@ name: Addon sonar analysis on: - workflow_dispatch: pull_request: paths: ['packages/addon/**'] types: [opened, synchronize, reopened] @@ -17,9 +16,6 @@ jobs: run: working-directory: packages/addon - env: - BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory - steps: - name: Checkout code uses: actions/checkout@v4 @@ -38,13 +34,12 @@ jobs: uses: SonarSource/sonarqube-scan-action/install-build-wrapper@1a6d90ebcb0e6a6b1d87e37ba693fe453195ae25 # v5.3.1 - name: Run build wrapper - run: build-wrapper-win-x86-64.exe --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmd /c "node-gyp configure build" - - - name: SonarQube Scan - uses: SonarSource/sonarqube-scan-action@1a6d90ebcb0e6a6b1d87e37ba693fe453195ae25 # v5.3.1 - env: - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - with: - args: > - --define sonar.cfamily.compile-commands=${{ env.BUILD_WRAPPER_OUT_DIR }}/compile_commands.json - + run: build-wrapper-win-x86-64.exe --out-dir build_wrapper_output_directory cmd /c "node-gyp configure build" + + # The sonar analysis does not work because the sonar project points to the node-win repo so it cannot find the PR + # - name: SonarQube Scan + # uses: SonarSource/sonarqube-scan-action@1a6d90ebcb0e6a6b1d87e37ba693fe453195ae25 # v5.3.1 + # env: + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # with: + # projectBaseDir: packages/addon diff --git a/.github/workflows/check-pr-size.yml b/.github/workflows/check-pr-size.yml index d4f93bd2f8..d77733b2df 100644 --- a/.github/workflows/check-pr-size.yml +++ b/.github/workflows/check-pr-size.yml @@ -7,9 +7,8 @@ on: jobs: check_pr_size: # Ignore PRs with name merge-X-X-X-release - if: false - # if: | - # !(startsWith(github.head_ref, 'merge-') && endsWith(github.head_ref, '-release') && github.base_ref == 'main') + if: | + !(startsWith(github.head_ref, 'merge-') && endsWith(github.head_ref, '-release') && github.base_ref == 'main') runs-on: ubuntu-latest timeout-minutes: 1 diff --git a/.github/workflows/core-publish.yml b/.github/workflows/core-publish.yml index d1e8f8e0f1..20e1314ed9 100644 --- a/.github/workflows/core-publish.yml +++ b/.github/workflows/core-publish.yml @@ -1,4 +1,4 @@ -name: Publish +name: Core publish on: workflow_dispatch: diff --git a/.github/workflows/core-sonar-analysis.yml b/.github/workflows/core-sonar-analysis.yml index 1b5bb65b24..51ee6163ac 100644 --- a/.github/workflows/core-sonar-analysis.yml +++ b/.github/workflows/core-sonar-analysis.yml @@ -33,7 +33,10 @@ jobs: - name: Run tests run: npm run test:cov + # The sonar analysis does not work because the sonar project points to the node-win repo so it cannot find the PR # - name: SonarQube Scan # uses: SonarSource/sonarqube-scan-action@1a6d90ebcb0e6a6b1d87e37ba693fe453195ae25 # v5.3.1 # env: # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + # with: + # projectBaseDir: packages/core diff --git a/package-lock.json b/package-lock.json index e7fcb3e15f..d892c07a76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@headlessui/react": "^1.4.2", "@iconscout/react-unicons": "^1.1.6", - "@internxt/drive-desktop-core": "^0.1.13", + "@internxt/drive-desktop-core": "file:packages/core/internxt-drive-desktop-core-0.1.13.tgz", "@internxt/inxt-js": "2.2.9", "@internxt/scan": "1.0.7", "@packages/addon": "file:packages/addon/packages-addon-1.0.0.tgz", @@ -3238,8 +3238,8 @@ }, "node_modules/@internxt/drive-desktop-core": { "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@internxt/drive-desktop-core/-/drive-desktop-core-0.1.13.tgz", - "integrity": "sha512-+tkI9FV+jcRC5sK3Znm1rVkx9ax9xWguSMh2GqyBKEtGNTZed4GQCDwcRY/7RH/2pXFIel3R0Ryqo+Kab+MhtA==", + "resolved": "file:packages/core/internxt-drive-desktop-core-0.1.13.tgz", + "integrity": "sha512-Jm2143Zx0LthHmjzCddmX2gj4zkXtBgJfBlYvuh391h5jxPzarpB1HOWG5qkASIgsBqPa3hnYgLd7YzEcxv1eg==", "license": "MIT", "dependencies": { "@internxt/sdk": "^1.11.10", @@ -4223,7 +4223,7 @@ "node_modules/@packages/addon": { "version": "1.0.0", "resolved": "file:packages/addon/packages-addon-1.0.0.tgz", - "integrity": "sha512-EdOrWr8Cb+mA0CJ3tLj9cfiyzC1Ja3QFONM1AklLMjs2PoZ1Sgts1w2hdJmqg9xz10MumUyMgvWoftu1mWsIJg==", + "integrity": "sha512-igIjPFTYe9Uv0HvCofAGmOpxoRJ5ZXS8aSFOlc7nPf7ovpuHw3iJ9WaO2i6heSaEwRDzmrarGHJX8WqWtCo6dw==", "license": "MIT" }, "node_modules/@phosphor-icons/react": { diff --git a/package.json b/package.json index e8cf26e98a..eacb3f55ef 100644 --- a/package.json +++ b/package.json @@ -160,7 +160,7 @@ "dependencies": { "@headlessui/react": "^1.4.2", "@iconscout/react-unicons": "^1.1.6", - "@internxt/drive-desktop-core": "^0.1.13", + "@internxt/drive-desktop-core": "file:packages/core/internxt-drive-desktop-core-0.1.13.tgz", "@internxt/inxt-js": "2.2.9", "@internxt/scan": "1.0.7", "@packages/addon": "file:packages/addon/packages-addon-1.0.0.tgz", diff --git a/packages/addon/binding.gyp b/packages/addon/binding.gyp index 20546961d6..90310f9cf3 100644 --- a/packages/addon/binding.gyp +++ b/packages/addon/binding.gyp @@ -26,15 +26,15 @@ "native-src/virtual_drive/create_folder_placeholder.cpp", "native-src/virtual_drive/dehydrate_file.cpp", "native-src/virtual_drive/disconnect_sync_root.cpp", - "native-src/virtual_drive/get_placeholder_state/get_placeholder_state_wrapper.cpp", + "native-src/virtual_drive/get_placeholder_state.cpp", "native-src/virtual_drive/get_registered_sync_roots/get_registered_sync_roots.cpp", "native-src/virtual_drive/get_registered_sync_roots/get_registered_sync_roots_wrapper.cpp", "native-src/virtual_drive/hydrate_file.cpp", - "native-src/virtual_drive/register_sync_root/register_sync_root.cpp", + "native-src/virtual_drive/register_sync_root.cpp", "native-src/virtual_drive/set_pin_state.cpp", - "native-src/virtual_drive/unregister_sync_root_wrapper.cpp", + "native-src/virtual_drive/unregister_sync_root.cpp", "native-src/virtual_drive/update_placeholder.cpp", - "native-src/virtual_drive/update_sync_status/update_sync_status_wrapper.cpp" + "native-src/virtual_drive/update_sync_status.cpp" ], "include_dirs": [ "include", @@ -44,10 +44,6 @@ "include/sync_root_interface", "include/sync_root_interface/callbacks", "include/virtual_drive", - "include/virtual_drive/get_placeholder_state", - "include/virtual_drive/get_registered_sync_roots", - "include/virtual_drive/register_sync_root", - "include/virtual_drive/update_sync_status", "include/virtual_drive/watcher" ], "libraries": [ diff --git a/packages/addon/dist/addon.node b/packages/addon/dist/addon.node index 5a0c018c34..9c510e9ca4 100644 Binary files a/packages/addon/dist/addon.node and b/packages/addon/dist/addon.node differ diff --git a/packages/addon/include/virtual_drive/connect_sync_root.h b/packages/addon/include/virtual_drive/connect_sync_root.h deleted file mode 100644 index 6688aa7342..0000000000 --- a/packages/addon/include/virtual_drive/connect_sync_root.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value connect_sync_root_impl(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/convert_to_placeholder.h b/packages/addon/include/virtual_drive/convert_to_placeholder.h deleted file mode 100644 index 3d4aa56748..0000000000 --- a/packages/addon/include/virtual_drive/convert_to_placeholder.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include - -void convert_to_placeholder(const std::wstring& path, const std::wstring& placeholderId); -napi_value convert_to_placeholder_wrapper(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/create_file_placeholder.h b/packages/addon/include/virtual_drive/create_file_placeholder.h deleted file mode 100644 index d220b8c5bb..0000000000 --- a/packages/addon/include/virtual_drive/create_file_placeholder.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value create_file_placeholder_wrapper(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/create_folder_placeholder.h b/packages/addon/include/virtual_drive/create_folder_placeholder.h deleted file mode 100644 index c6e718d28d..0000000000 --- a/packages/addon/include/virtual_drive/create_folder_placeholder.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value create_folder_placeholder_wrapper(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/dehydrate_file.h b/packages/addon/include/virtual_drive/dehydrate_file.h deleted file mode 100644 index b9a06e9b19..0000000000 --- a/packages/addon/include/virtual_drive/dehydrate_file.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value dehydrate_file_wrapper(napi_env env, napi_callback_info info); diff --git a/packages/addon/include/virtual_drive/disconnect_sync_root.h b/packages/addon/include/virtual_drive/disconnect_sync_root.h deleted file mode 100644 index bbadd715c1..0000000000 --- a/packages/addon/include/virtual_drive/disconnect_sync_root.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value disconnect_sync_root_wrapper(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/get_placeholder_state/get_placeholder_state_wrapper.h b/packages/addon/include/virtual_drive/get_placeholder_state/get_placeholder_state_wrapper.h deleted file mode 100644 index 633331279b..0000000000 --- a/packages/addon/include/virtual_drive/get_placeholder_state/get_placeholder_state_wrapper.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value get_placeholder_state_wrapper(napi_env env, napi_callback_info info); diff --git a/packages/addon/include/virtual_drive/get_registered_sync_roots/get_registered_sync_roots.h b/packages/addon/include/virtual_drive/get_registered_sync_roots.h similarity index 100% rename from packages/addon/include/virtual_drive/get_registered_sync_roots/get_registered_sync_roots.h rename to packages/addon/include/virtual_drive/get_registered_sync_roots.h diff --git a/packages/addon/include/virtual_drive/get_registered_sync_roots/get_registered_sync_roots_wrapper.h b/packages/addon/include/virtual_drive/get_registered_sync_roots/get_registered_sync_roots_wrapper.h deleted file mode 100644 index 78e15ed360..0000000000 --- a/packages/addon/include/virtual_drive/get_registered_sync_roots/get_registered_sync_roots_wrapper.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value get_registered_sync_roots_wrapper(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/hydrate_file.h b/packages/addon/include/virtual_drive/hydrate_file.h deleted file mode 100644 index 99cb101199..0000000000 --- a/packages/addon/include/virtual_drive/hydrate_file.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value hydrate_file_wrapper(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/register_sync_root/register_sync_root.h b/packages/addon/include/virtual_drive/register_sync_root/register_sync_root.h deleted file mode 100644 index 185014f4ee..0000000000 --- a/packages/addon/include/virtual_drive/register_sync_root/register_sync_root.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value register_sync_root_wrapper(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/unregister_sync_root_wrapper.h b/packages/addon/include/virtual_drive/unregister_sync_root_wrapper.h deleted file mode 100644 index 312b10d7de..0000000000 --- a/packages/addon/include/virtual_drive/unregister_sync_root_wrapper.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include - -napi_value unregister_sync_root_wrapper(napi_env env, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/update_sync_status/update_sync_status_wrapper.h b/packages/addon/include/virtual_drive/update_sync_status/update_sync_status_wrapper.h deleted file mode 100644 index dc3832be19..0000000000 --- a/packages/addon/include/virtual_drive/update_sync_status/update_sync_status_wrapper.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include - -void update_sync_status(const std::wstring& path); -napi_value update_sync_status_wrapper(napi_env info, napi_callback_info args); diff --git a/packages/addon/include/virtual_drive/virtual_drive.h b/packages/addon/include/virtual_drive/virtual_drive.h index 73112eb699..465406eba9 100644 --- a/packages/addon/include/virtual_drive/virtual_drive.h +++ b/packages/addon/include/virtual_drive/virtual_drive.h @@ -2,5 +2,18 @@ #include +napi_value connect_sync_root_impl(napi_env env, napi_callback_info args); +napi_value convert_to_placeholder_wrapper(napi_env env, napi_callback_info args); +napi_value create_file_placeholder_wrapper(napi_env env, napi_callback_info args); +napi_value create_folder_placeholder_wrapper(napi_env env, napi_callback_info args); +napi_value dehydrate_file_wrapper(napi_env env, napi_callback_info info); +napi_value disconnect_sync_root_wrapper(napi_env env, napi_callback_info args); +napi_value get_placeholder_state_wrapper(napi_env env, napi_callback_info info); +napi_value get_registered_sync_roots_wrapper(napi_env env, napi_callback_info args); +napi_value hydrate_file_wrapper(napi_env env, napi_callback_info args); +napi_value register_sync_root_wrapper(napi_env env, napi_callback_info args); napi_value set_pin_state_wrapper(napi_env env, napi_callback_info info); +napi_value unregister_sync_root_wrapper(napi_env env, napi_callback_info args); napi_value update_placeholder_wrapper(napi_env env, napi_callback_info info); +napi_value update_sync_status_wrapper(napi_env info, napi_callback_info args); +void convert_to_placeholder(const std::wstring& path, const std::wstring& placeholderId); diff --git a/packages/addon/native-src/placeholders_interface/Planceholders.cpp b/packages/addon/native-src/placeholders_interface/Planceholders.cpp index bb4fa16578..625c6cb138 100644 --- a/packages/addon/native-src/placeholders_interface/Planceholders.cpp +++ b/packages/addon/native-src/placeholders_interface/Planceholders.cpp @@ -1,10 +1,10 @@ #include #include #include -#include #include #include #include +#include #include #include #include diff --git a/packages/addon/native-src/virtual_drive/Wrappers.cpp b/packages/addon/native-src/virtual_drive/Wrappers.cpp index 6a905a717f..0e5873d593 100644 --- a/packages/addon/native-src/virtual_drive/Wrappers.cpp +++ b/packages/addon/native-src/virtual_drive/Wrappers.cpp @@ -1,17 +1,5 @@ #include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include #include napi_value CreateFilePlaceholderWrapper(napi_env env, napi_callback_info args) diff --git a/packages/addon/native-src/virtual_drive/create_file_placeholder.cpp b/packages/addon/native-src/virtual_drive/create_file_placeholder.cpp index c7e68bcfb0..c94a9e2b17 100644 --- a/packages/addon/native-src/virtual_drive/create_file_placeholder.cpp +++ b/packages/addon/native-src/virtual_drive/create_file_placeholder.cpp @@ -2,8 +2,8 @@ #include #include #include -#include #include +#include #include diff --git a/packages/addon/native-src/virtual_drive/create_folder_placeholder.cpp b/packages/addon/native-src/virtual_drive/create_folder_placeholder.cpp index 4dc603fd3c..9d18acacce 100644 --- a/packages/addon/native-src/virtual_drive/create_folder_placeholder.cpp +++ b/packages/addon/native-src/virtual_drive/create_folder_placeholder.cpp @@ -2,8 +2,8 @@ #include #include #include -#include #include +#include #include diff --git a/packages/addon/native-src/virtual_drive/get_placeholder_state/get_placeholder_state_wrapper.cpp b/packages/addon/native-src/virtual_drive/get_placeholder_state.cpp similarity index 100% rename from packages/addon/native-src/virtual_drive/get_placeholder_state/get_placeholder_state_wrapper.cpp rename to packages/addon/native-src/virtual_drive/get_placeholder_state.cpp diff --git a/packages/addon/native-src/virtual_drive/register_sync_root/register_sync_root.cpp b/packages/addon/native-src/virtual_drive/register_sync_root.cpp similarity index 98% rename from packages/addon/native-src/virtual_drive/register_sync_root/register_sync_root.cpp rename to packages/addon/native-src/virtual_drive/register_sync_root.cpp index c0fd09e4ea..625506d173 100644 --- a/packages/addon/native-src/virtual_drive/register_sync_root/register_sync_root.cpp +++ b/packages/addon/native-src/virtual_drive/register_sync_root.cpp @@ -1,7 +1,6 @@ #include #include #include -#include #include #include diff --git a/packages/addon/native-src/virtual_drive/unregister_sync_root_wrapper.cpp b/packages/addon/native-src/virtual_drive/unregister_sync_root.cpp similarity index 100% rename from packages/addon/native-src/virtual_drive/unregister_sync_root_wrapper.cpp rename to packages/addon/native-src/virtual_drive/unregister_sync_root.cpp diff --git a/packages/addon/native-src/virtual_drive/update_sync_status/update_sync_status_wrapper.cpp b/packages/addon/native-src/virtual_drive/update_sync_status.cpp similarity index 100% rename from packages/addon/native-src/virtual_drive/update_sync_status/update_sync_status_wrapper.cpp rename to packages/addon/native-src/virtual_drive/update_sync_status.cpp diff --git a/packages/addon/package.json b/packages/addon/package.json index 414436afd1..1c80f9bfd0 100644 --- a/packages/addon/package.json +++ b/packages/addon/package.json @@ -9,6 +9,7 @@ "dist" ], "scripts": { + "========== Build ==========": "", "compile": "node gyp.config.js && node-gyp clean && node-gyp configure build", "refresh": "npm pack && cd ../.. && npm update @packages/addon", "build": "npm run compile && npm run refresh" diff --git a/packages/addon/packages-addon-1.0.0.tgz b/packages/addon/packages-addon-1.0.0.tgz index 5c04eced72..aca0ffc287 100644 Binary files a/packages/addon/packages-addon-1.0.0.tgz and b/packages/addon/packages-addon-1.0.0.tgz differ diff --git a/packages/addon/sonar-project.properties b/packages/addon/sonar-project.properties index 5add11650e..ef5fef9409 100644 --- a/packages/addon/sonar-project.properties +++ b/packages/addon/sonar-project.properties @@ -1,2 +1,3 @@ sonar.projectKey=internxt_node-win sonar.organization=internxt +sonar.cfamily.compile-commands=build_wrapper_output_directory/compile_commands.json diff --git a/packages/core/internxt-drive-desktop-core-0.1.13.tgz b/packages/core/internxt-drive-desktop-core-0.1.13.tgz new file mode 100644 index 0000000000..7953978bdd Binary files /dev/null and b/packages/core/internxt-drive-desktop-core-0.1.13.tgz differ diff --git a/packages/core/package.json b/packages/core/package.json index 2586700244..5066bcec8b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -7,9 +7,12 @@ "build" ], "scripts": { - "build": "rimraf build && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json", "start": "nodemon", "init:dev": "npm install && node node_modules/electron/install.js", + "========== Build ==========": "", + "compile": "rimraf build && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json", + "refresh": "npm pack && cd ../.. && npm update @internxt/drive-desktop-core", + "build": "npm run compile && npm run refresh", "========== Code style ==========": "", "lint": "eslint . --ext .ts,.tsx", "lint:fix": "npm run lint -- --fix", diff --git a/src/infra/inxt-js/file-uploader/upload-file.ts b/src/infra/inxt-js/file-uploader/upload-file.ts index 3feeab56b1..8653e96e57 100644 --- a/src/infra/inxt-js/file-uploader/upload-file.ts +++ b/src/infra/inxt-js/file-uploader/upload-file.ts @@ -27,6 +27,7 @@ export function uploadFile({ ctx, fn, readable, size, path }: Props) { const state = fn(ctx.bucket, { source: readable, fileSize: size, + progressCallback: (progress) => void progressCallback(progress), finishedCallback: (error, contentsId) => { readable.close(); @@ -35,18 +36,19 @@ export function uploadFile({ ctx, fn, readable, size, path }: Props) { processError({ path, error }); return resolve(); }, - progressCallback: async (progress) => { - const { data: stats } = await fileSystem.stat({ absolutePath: path }); + }); - if (stats && stats.size !== size) { - logger.debug({ msg: 'Upload file aborted on change size', path, oldSize: size, newSize: stats.size }); - stopUpload(state); - return resolve(); - } + async function progressCallback(progress: number) { + const { data: stats } = await fileSystem.stat({ absolutePath: path }); - LocalSync.SyncState.addItem({ action: 'UPLOADING', path, progress }); - }, - }); + if (stats && stats.size !== size) { + logger.debug({ msg: 'Upload file aborted on change size', path, oldSize: size, newSize: stats.size }); + stopUpload(state); + return resolve(); + } + + LocalSync.SyncState.addItem({ action: 'UPLOADING', path, progress }); + } ctx.abortController.signal.addEventListener('abort', () => { logger.debug({ msg: 'Aborting upload', path });