mirror of
https://github.com/zadam/trilium.git
synced 2026-03-09 18:03:42 +01:00
refactor: add plan and package
This commit is contained in:
parent
d652f67364
commit
2dfc4514b0
216
.agents/migration_plan_autocomplete.md
Normal file
216
.agents/migration_plan_autocomplete.md
Normal file
@ -0,0 +1,216 @@
|
||||
# Migration Plan: `autocomplete.js` → `@algolia/autocomplete-js`
|
||||
|
||||
> Issue: https://github.com/TriliumNext/Trilium/issues/5134
|
||||
>
|
||||
> 目标:将旧的 `autocomplete.js@0.38.1`(jQuery 插件)迁移到 `@algolia/autocomplete-js`(独立组件)
|
||||
|
||||
---
|
||||
|
||||
## 当前状态总览
|
||||
|
||||
### 两个库的架构差异
|
||||
| | 旧 `autocomplete.js` | 新 `@algolia/autocomplete-js` |
|
||||
|---|---|---|
|
||||
| 模式 | jQuery 插件,**增强已有 `<input>`** | 独立组件,**传入容器 `<div>`,自己创建 `<input>`** |
|
||||
| 初始化 | `$el.autocomplete(config, [datasets])` | `autocomplete({ container, getSources, ... })` 返回 `api` |
|
||||
| 操作 | `$el.autocomplete("open"/"close"/"val")` | `api.setIsOpen()`, `api.setQuery()`, `api.refresh()` |
|
||||
| 销毁 | `$el.autocomplete("destroy")` | `api.destroy()` |
|
||||
| 事件 | jQuery 事件 `autocomplete:selected` | `onSelect` 回调、`onStateChange` 回调 |
|
||||
| DOM | 增强已有 input,添加 `.aa-input` 类 | 替换容器内容为自己的 DOM(`.aa-Form`、`.aa-Panel` 等) |
|
||||
|
||||
### 关键迁移原则
|
||||
1. **不使用 wrapper/适配层**,直接在各 service 中调用 `autocomplete()` API
|
||||
2. 消费者代码需要适配:传入容器 `<div>` 而非 `<input>`,通过 API/回调读写值
|
||||
3. 增量迁移:每个使用点独立迁移,逐一验证
|
||||
|
||||
### 涉及的功能区域
|
||||
1. **属性名称自动补全** — `attribute_autocomplete.ts` → `attribute_detail.ts`、`RelationMap.tsx`
|
||||
2. **标签值自动补全** — `attribute_autocomplete.ts` → `attribute_detail.ts`
|
||||
3. **笔记搜索自动补全** — `note_autocomplete.ts` → `NoteAutocomplete.tsx`、`attribute_detail.ts`
|
||||
4. **关闭弹出窗口** — `dialog.ts`、`entrypoints.ts`、`tab_manager.ts`
|
||||
5. **CKEditor 提及** — 不使用 autocomplete.js,**无需迁移**
|
||||
|
||||
---
|
||||
|
||||
## 迁移步骤
|
||||
|
||||
### Step 0: 安装新依赖 ✅ 完成
|
||||
**文件变更:**
|
||||
- `apps/client/package.json` — 添加 `@algolia/autocomplete-js@1.19.6`,暂时保留 `autocomplete.js`
|
||||
|
||||
**验证方式:**
|
||||
- ✅ 新依赖安装成功
|
||||
|
||||
---
|
||||
|
||||
### Step 1: 迁移属性名称自动补全
|
||||
**文件变更:**
|
||||
- `apps/client/src/services/attribute_autocomplete.ts` — `initAttributeNameAutocomplete()` 改为直接调用 `autocomplete()`
|
||||
- `apps/client/src/widgets/attribute_widgets/attribute_detail.ts` — 属性名称输入框从 `<input>` 改为 `<div>` 容器,调整值读写
|
||||
- `apps/client/src/widgets/type_widgets/relation_map/RelationMap.tsx` — 关系名输入调整
|
||||
|
||||
**说明:**
|
||||
属性名称补全是最简单的场景。变更模式:
|
||||
1. HTML 模板中的 `<input class="attr-input-name">` → `<div class="attr-input-name-container"></div>`
|
||||
2. `initAttributeNameAutocomplete()` 接收容器元素,调用 `autocomplete({ container, getSources })`
|
||||
3. 消费者通过返回的 `api` 对象(或回调)获取选中的值
|
||||
4. 为 `autocomplete-js` 生成的 `<input>` 添加 `form-control` 等样式类
|
||||
|
||||
**验证方式:**
|
||||
- 打开一个笔记 → 点击属性面板 → 点击属性名称输入框 → 应能看到自动补全的属性名称列表
|
||||
- 选择一个名称后,值应正确填入
|
||||
|
||||
---
|
||||
|
||||
### Step 2: 迁移标签值自动补全
|
||||
**文件变更:**
|
||||
- `apps/client/src/services/attribute_autocomplete.ts` — `initLabelValueAutocomplete()` 改为直接调用 `autocomplete()`
|
||||
- `apps/client/src/widgets/attribute_widgets/attribute_detail.ts` — 标签值输入框同步调整
|
||||
|
||||
**说明:**
|
||||
与 Step 1 类似,但标签值补全有一个特殊点:每次 focus 都会重新初始化(因为属性名可能变了,需要重新获取可选值列表)。
|
||||
|
||||
**验证方式:**
|
||||
- 打开属性面板 → 输入一个标签名 → 切换到值输入框 → 应能看到该标签的已有值列表
|
||||
|
||||
---
|
||||
|
||||
### Step 3: 迁移笔记搜索自动补全核心
|
||||
**文件变更:**
|
||||
- `apps/client/src/services/note_autocomplete.ts` — `initNoteAutocomplete()` 改为直接调用 `autocomplete()`
|
||||
|
||||
**说明:**
|
||||
这是迁移中最复杂的部分,`initNoteAutocomplete()` 包含:
|
||||
- 复杂的 source 函数(带防抖、IME 处理)
|
||||
- 自定义 suggestion 模板(图标、路径高亮)
|
||||
- 多种选择类型分发(笔记、外部链接、命令)
|
||||
- `autocomplete("val", ...)` 等操作性 API 调用
|
||||
- 附带的辅助按钮(清除、最近笔记、全文搜索、跳转按钮)
|
||||
|
||||
消费者通过自定义 jQuery 事件(`autocomplete:noteselected` 等)接收结果,需要保持这些事件或改为回调。
|
||||
|
||||
**验证方式:**
|
||||
- 搜索栏 → 输入笔记名称 → 应能看到搜索结果
|
||||
- 选择结果 → 应正确跳转到对应笔记
|
||||
- 命令面板(`>` 前缀)正常工作
|
||||
- 中文输入法不应中途触发搜索
|
||||
- Shift+Enter 全文搜索、Ctrl+Enter 搜索笔记
|
||||
|
||||
---
|
||||
|
||||
### Step 4: 迁移辅助函数
|
||||
**文件变更:**
|
||||
- `apps/client/src/services/note_autocomplete.ts` — `clearText`, `setText`, `showRecentNotes` 等函数
|
||||
|
||||
**说明:**
|
||||
这些函数使用旧库的操作 API(`$el.autocomplete("val", value)` 等),需要改为新库的 `api.setQuery()` / `api.setIsOpen()` / `api.refresh()`。
|
||||
|
||||
**验证方式:**
|
||||
- 最近笔记按钮 → 下拉菜单正常打开
|
||||
- 清除按钮 → 输入框被清空
|
||||
- Shift+Enter → 触发全文搜索
|
||||
|
||||
---
|
||||
|
||||
### Step 5: 迁移 `NoteAutocomplete.tsx` (React/Preact 组件)
|
||||
**文件变更:**
|
||||
- `apps/client/src/widgets/react/NoteAutocomplete.tsx` — 传入容器 `<div>`,管理 `api` 生命周期
|
||||
|
||||
**验证方式:**
|
||||
- 关系属性的目标笔记选择正常工作
|
||||
- `noteId` 和 `text` props 的动态更新正确
|
||||
|
||||
---
|
||||
|
||||
### Step 6: 迁移"关闭弹窗"逻辑 + `attribute_detail.ts` 引用
|
||||
**文件变更:**
|
||||
- `apps/client/src/services/dialog.ts` — 替换 `$(".aa-input").autocomplete("close")`
|
||||
- `apps/client/src/components/entrypoints.ts` — 替换 `$(".aa-input").autocomplete("close")`
|
||||
- `apps/client/src/components/tab_manager.ts` — 替换 `$(".aa-input").autocomplete("close")`
|
||||
- `apps/client/src/widgets/attribute_widgets/attribute_detail.ts` — 更新 `.algolia-autocomplete` 选择器
|
||||
|
||||
**说明:**
|
||||
需要一个全局的"关闭所有 autocomplete"机制。方案:维护一个全局 `Set<AutocompleteApi>`,在各处调用时遍历关闭。可以放在 `note_autocomplete.ts` 中导出。
|
||||
|
||||
**验证方式:**
|
||||
- autocomplete 弹窗打开时切换标签页 → 弹窗自动关闭
|
||||
- autocomplete 弹窗打开时打开对话框 → 弹窗自动关闭
|
||||
- 点击 autocomplete 下拉菜单时属性面板不应关闭
|
||||
|
||||
---
|
||||
|
||||
### Step 7: 更新 CSS 样式
|
||||
**文件变更:**
|
||||
- `apps/client/src/stylesheets/style.css`(第 895-961 行)
|
||||
|
||||
**说明:**
|
||||
新库使用的 CSS 类名:
|
||||
- `.aa-Autocomplete` — 容器
|
||||
- `.aa-Form` — 搜索表单(含 input)
|
||||
- `.aa-Input` — 输入框
|
||||
- `.aa-Panel` — 下拉面板
|
||||
- `.aa-List` — 列表
|
||||
- `.aa-Item` — 列表项
|
||||
- `.aa-Item[aria-selected="true"]` — 选中项
|
||||
|
||||
**验证方式:**
|
||||
- 下拉菜单样式正常(亮色/暗色模式)
|
||||
- 选中项高亮正确
|
||||
|
||||
---
|
||||
|
||||
### Step 8: 更新类型声明
|
||||
**文件变更:**
|
||||
- `apps/client/src/types.d.ts` — 移除 `AutoCompleteConfig`、`AutoCompleteArg`、jQuery `.autocomplete()` 方法
|
||||
|
||||
**验证方式:**
|
||||
- TypeScript 编译无错误
|
||||
|
||||
---
|
||||
|
||||
### Step 9: 移除旧库和 Polyfill
|
||||
**文件变更:**
|
||||
- `apps/client/package.json` — 移除 `"autocomplete.js": "0.38.1"`
|
||||
- `apps/client/src/desktop.ts` — 移除 `import "autocomplete.js/index_jquery.js";`
|
||||
- `apps/client/src/mobile.ts` — 移除 `import "autocomplete.js/index_jquery.js";`
|
||||
- `apps/client/src/runtime.ts` — 移除 jQuery polyfill
|
||||
- `apps/client/src/index.ts` — 移除 jQuery polyfill
|
||||
|
||||
**验证方式:**
|
||||
- 完整回归测试
|
||||
- 构建无错误
|
||||
|
||||
---
|
||||
|
||||
### Step 10: 更新 E2E 测试
|
||||
**文件变更:**
|
||||
- `apps/server-e2e/src/support/app.ts`
|
||||
- `apps/server-e2e/src/layout/split_pane.spec.ts`
|
||||
|
||||
**验证方式:**
|
||||
- E2E 测试全部通过
|
||||
|
||||
---
|
||||
|
||||
## 依赖关系图
|
||||
|
||||
```
|
||||
Step 0 (安装新库) ✅
|
||||
├── Step 1 (属性名称 autocomplete) ← 最简单,优先迁移
|
||||
├── Step 2 (标签值 autocomplete)
|
||||
├── Step 3 (笔记搜索 autocomplete 核心) ← 最复杂
|
||||
│ ├── Step 4 (辅助函数)
|
||||
│ └── Step 5 (React 组件)
|
||||
├── Step 6 (关闭弹窗 + attribute_detail 引用)
|
||||
└── Step 7 (CSS 样式)
|
||||
└── Step 8 (类型声明)
|
||||
└── Step 9 (移除旧库) ← 最后执行
|
||||
└── Step 10 (E2E 测试)
|
||||
```
|
||||
|
||||
## 风险点
|
||||
1. **消费者代码需要改动**:新库要求传入容器而非 input,消费者需要调整 HTML 模板和值的读写方式。
|
||||
2. **自定义事件兼容性**:旧库通过 jQuery 事件与外部交互,新库使用回调,`attribute_detail.ts` 等消费者中的事件监听需要更新。
|
||||
3. **IME 输入处理**:新库原生支持 `ignoreCompositionEvents` 选项,但需要验证行为是否与旧的手动处理一致。
|
||||
4. **CSS 类名变化**:多处代码通过 `.aa-input`、`.algolia-autocomplete` 定位元素,需要统一更新为新的 `.aa-*` 类名。
|
||||
5. **全局关闭机制**:旧代码通过 `$(".aa-input").autocomplete("close")` 关闭所有实例,新库需要手动维护实例注册表。
|
||||
@ -16,6 +16,7 @@
|
||||
"circular-deps": "dpdm -T src/**/*.ts --tree=false --warning=false --skip-dynamic-imports=circular"
|
||||
},
|
||||
"dependencies": {
|
||||
"@algolia/autocomplete-js": "1.19.6",
|
||||
"@excalidraw/excalidraw": "0.18.0",
|
||||
"@fullcalendar/core": "6.1.20",
|
||||
"@fullcalendar/daygrid": "6.1.20",
|
||||
|
||||
278
pnpm-lock.yaml
generated
278
pnpm-lock.yaml
generated
@ -182,6 +182,9 @@ importers:
|
||||
|
||||
apps/client:
|
||||
dependencies:
|
||||
'@algolia/autocomplete-js':
|
||||
specifier: 1.19.6
|
||||
version: 1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)
|
||||
'@excalidraw/excalidraw':
|
||||
specifier: 0.18.0
|
||||
version: 0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||
@ -1530,6 +1533,88 @@ packages:
|
||||
rollup:
|
||||
optional: true
|
||||
|
||||
'@algolia/abtesting@1.15.1':
|
||||
resolution: {integrity: sha512-2yuIC48rUuHGhU1U5qJ9kJHaxYpJ0jpDHJVI5ekOxSMYXlH4+HP+pA31G820lsAznfmu2nzDV7n5RO44zIY1zw==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/autocomplete-core@1.19.6':
|
||||
resolution: {integrity: sha512-6EoD7PeM2WBq5GY1jm0gGonDW2JVU4BaHT9tAwDcaPkc6gYIRZeY7X7aFuwdRvk9R/jwsh8sz4flDao0+Kua6g==}
|
||||
|
||||
'@algolia/autocomplete-js@1.19.6':
|
||||
resolution: {integrity: sha512-rHYKT6P+2FZ1+7a1/JtWIuCmfioOt5eXsAcri6XTYsSutl3BIh8s2e98kbvjbhLfwEuuVDWtST1hdAY2pQdrKw==}
|
||||
peerDependencies:
|
||||
'@algolia/client-search': '>= 4.5.1 < 6'
|
||||
algoliasearch: '>= 4.9.1 < 6'
|
||||
|
||||
'@algolia/autocomplete-plugin-algolia-insights@1.19.6':
|
||||
resolution: {integrity: sha512-VD53DBixhEwDvOB00D03DtBVhh5crgb1N0oH3QTscfYk4TpBH+CKrwmN/XrN/VdJAdP+4K6SgwLii/3OwM9dHw==}
|
||||
peerDependencies:
|
||||
search-insights: '>= 1 < 3'
|
||||
|
||||
'@algolia/autocomplete-preset-algolia@1.19.6':
|
||||
resolution: {integrity: sha512-/uQlHGK5Q2x5Nvrp3W7JMg4YNGG/ygkHtQLTltDbkpd45wnhV9jUiQA6aCnBed9cq0BXhOJZRxh1zGVZ3yRhBg==}
|
||||
peerDependencies:
|
||||
'@algolia/client-search': '>= 4.9.1 < 6'
|
||||
algoliasearch: '>= 4.9.1 < 6'
|
||||
|
||||
'@algolia/autocomplete-shared@1.19.6':
|
||||
resolution: {integrity: sha512-DG1n2B6XQw6DWB5veO4RuzQ/N2oGNpG+sSzGT7gUbi7WhF+jN57abcv2QhB5flXZ0NgddE1i6h7dZuQmYBEorQ==}
|
||||
peerDependencies:
|
||||
'@algolia/client-search': '>= 4.9.1 < 6'
|
||||
algoliasearch: '>= 4.9.1 < 6'
|
||||
|
||||
'@algolia/client-abtesting@5.49.1':
|
||||
resolution: {integrity: sha512-h6M7HzPin+45/l09q0r2dYmocSSt2MMGOOk5c4O5K/bBBlEwf1BKfN6z+iX4b8WXcQQhf7rgQwC52kBZJt/ZZw==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/client-analytics@5.49.1':
|
||||
resolution: {integrity: sha512-048T9/Z8OeLmTk8h76QUqaNFp7Rq2VgS2Zm6Y2tNMYGQ1uNuzePY/udB5l5krlXll7ZGflyCjFvRiOtlPZpE9g==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/client-common@5.49.1':
|
||||
resolution: {integrity: sha512-vp5/a9ikqvf3mn9QvHN8PRekn8hW34aV9eX+O0J5mKPZXeA6Pd5OQEh2ZWf7gJY6yyfTlLp5LMFzQUAU+Fpqpg==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/client-insights@5.49.1':
|
||||
resolution: {integrity: sha512-B6N7PgkvYrul3bntTz/l6uXnhQ2bvP+M7NqTcayh681tSqPaA5cJCUBp/vrP7vpPRpej4Eeyx2qz5p0tE/2N2g==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/client-personalization@5.49.1':
|
||||
resolution: {integrity: sha512-v+4DN+lkYfBd01Hbnb9ZrCHe7l+mvihyx218INRX/kaCXROIWUDIT1cs3urQxfE7kXBFnLsqYeOflQALv/gA5w==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/client-query-suggestions@5.49.1':
|
||||
resolution: {integrity: sha512-Un11cab6ZCv0W+Jiak8UktGIqoa4+gSNgEZNfG8m8eTsXGqwIEr370H3Rqwj87zeNSlFpH2BslMXJ/cLNS1qtg==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/client-search@5.49.1':
|
||||
resolution: {integrity: sha512-Nt9hri7nbOo0RipAsGjIssHkpLMHHN/P7QqENywAq5TLsoYDzUyJGny8FEiD/9KJUxtGH8blGpMedilI6kK3rA==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/ingestion@1.49.1':
|
||||
resolution: {integrity: sha512-b5hUXwDqje0Y4CpU6VL481DXgPgxpTD5sYMnfQTHKgUispGnaCLCm2/T9WbJo1YNUbX3iHtYDArp804eD6CmRQ==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/monitoring@1.49.1':
|
||||
resolution: {integrity: sha512-bvrXwZ0WsL3rN6Q4m4QqxsXFCo6WAew7sAdrpMQMK4Efn4/W920r9ptOuckejOSSvyLr9pAWgC5rsHhR2FYuYw==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/recommend@5.49.1':
|
||||
resolution: {integrity: sha512-h2yz3AGeGkQwNgbLmoe3bxYs8fac4An1CprKTypYyTU/k3Q+9FbIvJ8aS1DoBKaTjSRZVoyQS7SZQio6GaHbZw==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/requester-browser-xhr@5.49.1':
|
||||
resolution: {integrity: sha512-2UPyRuUR/qpqSqH8mxFV5uBZWEpxhGPHLlx9Xf6OVxr79XO2ctzZQAhsmTZ6X22x+N8MBWpB9UEky7YU2HGFgA==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/requester-fetch@5.49.1':
|
||||
resolution: {integrity: sha512-N+xlE4lN+wpuT+4vhNEwPVlrfN+DWAZmSX9SYhbz986Oq8AMsqdntOqUyiOXVxYsQtfLwmiej24vbvJGYv1Qtw==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@algolia/requester-node-http@5.49.1':
|
||||
resolution: {integrity: sha512-zA5bkUOB5PPtTr182DJmajCiizHp0rCJQ0Chf96zNFvkdESKYlDeYA3tQ7r2oyHbu/8DiohAQ5PZ85edctzbXA==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
'@ampproject/remapping@2.3.0':
|
||||
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
@ -7518,6 +7603,10 @@ packages:
|
||||
ajv@8.17.1:
|
||||
resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
|
||||
|
||||
algoliasearch@5.49.1:
|
||||
resolution: {integrity: sha512-X3Pp2aRQhg4xUC6PQtkubn5NpRKuUPQ9FPDQlx36SmpFwwH2N0/tw4c+NXV3nw3PsgeUs+BuWGP0gjz3TvENLQ==}
|
||||
engines: {node: '>= 14.0.0'}
|
||||
|
||||
alien-signals@0.4.14:
|
||||
resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==}
|
||||
|
||||
@ -10462,6 +10551,9 @@ packages:
|
||||
hpack.js@2.1.6:
|
||||
resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==}
|
||||
|
||||
htm@3.1.1:
|
||||
resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==}
|
||||
|
||||
html-encoding-sniffer@2.0.1:
|
||||
resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==}
|
||||
engines: {node: '>=10'}
|
||||
@ -14406,6 +14498,9 @@ packages:
|
||||
scule@1.3.0:
|
||||
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
|
||||
|
||||
search-insights@2.17.3:
|
||||
resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==}
|
||||
|
||||
secure-compare@3.0.1:
|
||||
resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==}
|
||||
|
||||
@ -16489,6 +16584,130 @@ snapshots:
|
||||
optionalDependencies:
|
||||
rollup: 4.52.0
|
||||
|
||||
'@algolia/abtesting@1.15.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/autocomplete-core@1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)':
|
||||
dependencies:
|
||||
'@algolia/autocomplete-plugin-algolia-insights': 1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)
|
||||
'@algolia/autocomplete-shared': 1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)
|
||||
transitivePeerDependencies:
|
||||
- '@algolia/client-search'
|
||||
- algoliasearch
|
||||
- search-insights
|
||||
|
||||
'@algolia/autocomplete-js@1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)':
|
||||
dependencies:
|
||||
'@algolia/autocomplete-core': 1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)
|
||||
'@algolia/autocomplete-preset-algolia': 1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)
|
||||
'@algolia/autocomplete-shared': 1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)
|
||||
'@algolia/client-search': 5.49.1
|
||||
algoliasearch: 5.49.1
|
||||
htm: 3.1.1
|
||||
preact: 10.28.4
|
||||
transitivePeerDependencies:
|
||||
- search-insights
|
||||
|
||||
'@algolia/autocomplete-plugin-algolia-insights@1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)':
|
||||
dependencies:
|
||||
'@algolia/autocomplete-shared': 1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)
|
||||
search-insights: 2.17.3
|
||||
transitivePeerDependencies:
|
||||
- '@algolia/client-search'
|
||||
- algoliasearch
|
||||
|
||||
'@algolia/autocomplete-preset-algolia@1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)':
|
||||
dependencies:
|
||||
'@algolia/autocomplete-shared': 1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)
|
||||
'@algolia/client-search': 5.49.1
|
||||
algoliasearch: 5.49.1
|
||||
|
||||
'@algolia/autocomplete-shared@1.19.6(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)':
|
||||
dependencies:
|
||||
'@algolia/client-search': 5.49.1
|
||||
algoliasearch: 5.49.1
|
||||
|
||||
'@algolia/client-abtesting@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/client-analytics@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/client-common@5.49.1': {}
|
||||
|
||||
'@algolia/client-insights@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/client-personalization@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/client-query-suggestions@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/client-search@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/ingestion@1.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/monitoring@1.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/recommend@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
'@algolia/requester-browser-xhr@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
|
||||
'@algolia/requester-fetch@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
|
||||
'@algolia/requester-node-http@5.49.1':
|
||||
dependencies:
|
||||
'@algolia/client-common': 5.49.1
|
||||
|
||||
'@ampproject/remapping@2.3.0':
|
||||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.3.13
|
||||
@ -17281,6 +17500,8 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
'@ckeditor/ckeditor5-widget': 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-cloud-services@47.4.0':
|
||||
dependencies:
|
||||
@ -17300,8 +17521,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-ui': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-collaboration-core@47.4.0':
|
||||
dependencies:
|
||||
@ -17501,6 +17720,8 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-editor-inline@47.4.0':
|
||||
dependencies:
|
||||
@ -17534,8 +17755,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-table': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-emoji@47.4.0':
|
||||
dependencies:
|
||||
@ -17592,8 +17811,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-ui': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-export-word@47.4.0':
|
||||
dependencies:
|
||||
@ -17618,6 +17835,8 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-font@47.4.0':
|
||||
dependencies:
|
||||
@ -17753,8 +17972,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-ui': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-indent@47.4.0':
|
||||
dependencies:
|
||||
@ -17878,8 +18095,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-merge-fields@47.4.0':
|
||||
dependencies:
|
||||
@ -17892,8 +18107,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-widget': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-minimap@47.4.0':
|
||||
dependencies:
|
||||
@ -17902,8 +18115,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-ui': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-operations-compressor@47.4.0':
|
||||
dependencies:
|
||||
@ -17958,8 +18169,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
'@ckeditor/ckeditor5-widget': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-pagination@47.4.0':
|
||||
dependencies:
|
||||
@ -18023,8 +18232,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-ui': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-restricted-editing@47.4.0':
|
||||
dependencies:
|
||||
@ -18069,8 +18276,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-ui': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-slash-command@47.4.0':
|
||||
dependencies:
|
||||
@ -18083,8 +18288,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-ui': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-source-editing-enhanced@47.4.0':
|
||||
dependencies:
|
||||
@ -18111,8 +18314,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-ui': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-special-characters@47.4.0':
|
||||
dependencies:
|
||||
@ -18134,8 +18335,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-table@47.4.0':
|
||||
dependencies:
|
||||
@ -18148,8 +18347,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-widget': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-template@47.4.0':
|
||||
dependencies:
|
||||
@ -18260,8 +18457,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-engine': 47.4.0
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@ckeditor/ckeditor5-widget@47.4.0':
|
||||
dependencies:
|
||||
@ -18281,8 +18476,6 @@ snapshots:
|
||||
'@ckeditor/ckeditor5-utils': 47.4.0
|
||||
ckeditor5: 47.4.0
|
||||
es-toolkit: 1.39.5
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@codemirror/autocomplete@6.18.6':
|
||||
dependencies:
|
||||
@ -25148,6 +25341,23 @@ snapshots:
|
||||
json-schema-traverse: 1.0.0
|
||||
require-from-string: 2.0.2
|
||||
|
||||
algoliasearch@5.49.1:
|
||||
dependencies:
|
||||
'@algolia/abtesting': 1.15.1
|
||||
'@algolia/client-abtesting': 5.49.1
|
||||
'@algolia/client-analytics': 5.49.1
|
||||
'@algolia/client-common': 5.49.1
|
||||
'@algolia/client-insights': 5.49.1
|
||||
'@algolia/client-personalization': 5.49.1
|
||||
'@algolia/client-query-suggestions': 5.49.1
|
||||
'@algolia/client-search': 5.49.1
|
||||
'@algolia/ingestion': 1.49.1
|
||||
'@algolia/monitoring': 1.49.1
|
||||
'@algolia/recommend': 5.49.1
|
||||
'@algolia/requester-browser-xhr': 5.49.1
|
||||
'@algolia/requester-fetch': 5.49.1
|
||||
'@algolia/requester-node-http': 5.49.1
|
||||
|
||||
alien-signals@0.4.14: {}
|
||||
|
||||
amator@1.1.0:
|
||||
@ -28989,6 +29199,8 @@ snapshots:
|
||||
readable-stream: 2.3.8
|
||||
wbuf: 1.7.3
|
||||
|
||||
htm@3.1.1: {}
|
||||
|
||||
html-encoding-sniffer@2.0.1:
|
||||
dependencies:
|
||||
whatwg-encoding: 1.0.5
|
||||
@ -33520,6 +33732,8 @@ snapshots:
|
||||
|
||||
scule@1.3.0: {}
|
||||
|
||||
search-insights@2.17.3: {}
|
||||
|
||||
secure-compare@3.0.1: {}
|
||||
|
||||
selderee@0.11.0:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user