diff --git a/.agents/migration_plan_autocomplete.md b/.agents/migration_plan_autocomplete.md index f1baa4fa36..0d258f7650 100644 --- a/.agents/migration_plan_autocomplete.md +++ b/.agents/migration_plan_autocomplete.md @@ -249,7 +249,7 @@ --- -### Step 9: 移除旧库和 Polyfill +### Step 9: 移除旧库和 Polyfill ✅ 完成 **文件变更:** - `apps/client/package.json` — 移除 `"autocomplete.js": "0.38.1"` - `apps/client/src/desktop.ts` — 移除 `import "autocomplete.js/index_jquery.js";` @@ -261,6 +261,13 @@ - 完整回归测试 - 构建无错误 +**当前完成情况:** +- ✅ 代码中的 `autocomplete.js` 入口 import 与仅为旧库保留的 jQuery 4 polyfill 已移除。 +- ✅ `apps/client/package.json` 已删除 `autocomplete.js` 依赖声明。 +- ✅ `pnpm install` 已执行完成,lockfile / 安装状态已同步。 +- ✅ `pnpm exec tsc -p apps/client/tsconfig.app.json --noEmit` 已通过。 +- ✅ `pnpm run --filter @triliumnext/client build` 已通过。 + --- ### Step 10: 更新 E2E 测试 diff --git a/apps/client/package.json b/apps/client/package.json index b842a0c654..3c687c8084 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -45,7 +45,6 @@ "@univerjs/preset-sheets-sort": "0.16.1", "@univerjs/presets": "0.16.1", "@zumer/snapdom": "2.0.2", - "autocomplete.js": "0.38.1", "bootstrap": "5.3.8", "boxicons": "2.1.4", "clsx": "2.1.1", @@ -94,4 +93,4 @@ "script-loader": "0.7.2", "vite-plugin-static-copy": "3.2.0" } -} \ No newline at end of file +} diff --git a/apps/client/src/desktop.ts b/apps/client/src/desktop.ts index 6f22d3fc7b..b183452491 100644 --- a/apps/client/src/desktop.ts +++ b/apps/client/src/desktop.ts @@ -1,5 +1,3 @@ -import "autocomplete.js/index_jquery.js"; - import type ElectronRemote from "@electron/remote"; import type Electron from "electron"; diff --git a/apps/client/src/index.ts b/apps/client/src/index.ts index fba6e17d7e..c5fae97d4c 100644 --- a/apps/client/src/index.ts +++ b/apps/client/src/index.ts @@ -16,17 +16,6 @@ async function initJQuery() { const $ = (await import("jquery")).default; window.$ = $; window.jQuery = $; - - // Polyfill removed jQuery methods for autocomplete.js compatibility - ($ as any).isArray = Array.isArray; - ($ as any).isFunction = function(obj: any) { return typeof obj === 'function'; }; - ($ as any).isPlainObject = function(obj: any) { - if (obj == null || typeof obj !== 'object') { return false; } - const proto = Object.getPrototypeOf(obj); - if (proto === null) { return true; } - const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor === 'function' && Ctor === Object; - }; } async function setupGlob() { diff --git a/apps/client/src/mobile.ts b/apps/client/src/mobile.ts index ed84fa3706..e08750373b 100644 --- a/apps/client/src/mobile.ts +++ b/apps/client/src/mobile.ts @@ -1,5 +1,3 @@ -import "autocomplete.js/index_jquery.js"; - import appContext from "./components/app_context.js"; import glob from "./services/glob.js"; import noteAutocompleteService from "./services/note_autocomplete.js"; diff --git a/apps/client/src/runtime.ts b/apps/client/src/runtime.ts index cab174a76d..4c82481b17 100644 --- a/apps/client/src/runtime.ts +++ b/apps/client/src/runtime.ts @@ -8,17 +8,6 @@ async function loadBootstrap() { } } -// Polyfill removed jQuery methods for autocomplete.js compatibility -($ as any).isArray = Array.isArray; -($ as any).isFunction = function(obj: any) { return typeof obj === 'function'; }; -($ as any).isPlainObject = function(obj: any) { - if (obj == null || typeof obj !== 'object') { return false; } - const proto = Object.getPrototypeOf(obj); - if (proto === null) { return true; } - const Ctor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor === 'function' && Ctor === Object; -}; - (window as any).$ = $; (window as any).jQuery = $; await loadBootstrap(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63ce1f4de1..68fd29e3ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -269,9 +269,6 @@ importers: '@zumer/snapdom': specifier: 2.0.2 version: 2.0.2 - autocomplete.js: - specifier: 0.38.1 - version: 0.38.1 bootstrap: specifier: 5.3.8 version: 5.3.8(@popperjs/core@2.11.8) @@ -7811,9 +7808,6 @@ packages: resolution: {integrity: sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g==} engines: {node: '>=0.8'} - autocomplete.js@0.38.1: - resolution: {integrity: sha512-6pSJzuRMY3pqpozt+SXThl2DmJfma8Bi3SVFbZHS0PW/N72bOUv+Db0jAh2cWOhTsA4X+GNmKvIl8wExJTnN9w==} - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -10766,9 +10760,6 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - immediate@3.3.0: - resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} - immutable@4.3.7: resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} @@ -17360,6 +17351,8 @@ snapshots: '@ckeditor/ckeditor5-core': 47.4.0 '@ckeditor/ckeditor5-upload': 47.4.0 ckeditor5: 47.4.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-ai@47.4.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)': dependencies: @@ -17573,6 +17566,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.4.0 '@ckeditor/ckeditor5-watchdog': 47.4.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-dev-build-tools@54.3.3(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: @@ -25592,10 +25587,6 @@ snapshots: author-regex@1.0.0: {} - autocomplete.js@0.38.1: - dependencies: - immediate: 3.3.0 - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.1.0 @@ -29469,8 +29460,6 @@ snapshots: immediate@3.0.6: {} - immediate@3.3.0: {} - immutable@4.3.7: {} immutable@5.1.4: