mirror of
https://github.com/jackwener/OpenCLI.git
synced 2026-09-14 18:25:42 +08:00
d2974a9ff6
* refactor(adapters): convert adapter layer from TypeScript to JavaScript Core framework stays TypeScript; adapter layer moves to JS-first. Adapters are essentially "executable config + browser scripts" that barely use TS features — this simplifies the build/distribution pipeline by removing the dist/clis/ intermediate compilation step. Changes: - Convert all 753 adapter files in clis/ from .ts to .js - Update tsconfig to exclude clis/ from compilation - Simplify build-manifest to scan clis/*.js directly (no dist/clis/) - Update discovery, main, fetch-adapters to load JS adapters from clis/ - Update generate-verified to output .js artifacts - Update package.json files field: dist/clis/ → clis/ - Fix all test files for the .ts → .js transition * fix(main): use findPackageRoot for BUILTIN_CLIS path The previous relative path (../../clis from __dirname) only worked for dist/src/main.js but broke dev mode (tsx src/main.ts) where __dirname is <repo>/src — resolving to /clis instead of <repo>/clis. Use findPackageRoot() which works for both dev and prod paths.
26 lines
794 B
JavaScript
26 lines
794 B
JavaScript
/**
|
|
* 即刻适配器公共定义
|
|
*
|
|
* JikePost 接口和 getPostData 函数在 feed.ts / search.ts 中复用,
|
|
* 统一维护于此文件避免重复。
|
|
*/
|
|
/**
|
|
* 注入浏览器 evaluate 的 JS 函数字符串。
|
|
* 从 React fiber 树中向上最多走 10 层,找到含 id 字段的 props.data。
|
|
*/
|
|
export const getPostDataJs = `
|
|
function getPostData(element) {
|
|
for (const key of Object.keys(element)) {
|
|
if (key.startsWith('__reactFiber$') || key.startsWith('__reactInternalInstance$')) {
|
|
let fiber = element[key];
|
|
for (let i = 0; i < 10 && fiber; i++) {
|
|
const props = fiber.memoizedProps || fiber.pendingProps;
|
|
if (props && props.data && props.data.id) return props.data;
|
|
fiber = fiber.return;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
`.trim();
|