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
1.1 KiB
JavaScript
26 lines
1.1 KiB
JavaScript
/** Side-effect-free helpers shared by xiaohongshu note and comments commands. */
|
|
/** Extract a bare note ID from a full URL or raw ID string. */
|
|
export function parseNoteId(input) {
|
|
const trimmed = input.trim();
|
|
const match = trimmed.match(/\/(?:explore|note|search_result)\/([a-f0-9]+)/);
|
|
return match ? match[1] : trimmed;
|
|
}
|
|
/**
|
|
* Build the best navigation URL for a note.
|
|
*
|
|
* XHS blocks direct `/explore/<id>` access without a valid `xsec_token`.
|
|
* When the user passes a full URL (from search results), we preserve it
|
|
* so the browser navigates with the token intact. For bare IDs we now use
|
|
* `/search_result/<id>` which works without xsec_token when cookies are present.
|
|
*/
|
|
export function buildNoteUrl(input) {
|
|
const trimmed = input.trim();
|
|
if (/^https?:\/\//.test(trimmed)) {
|
|
// Full URL — navigate as-is; the browser will follow any redirects
|
|
return trimmed;
|
|
}
|
|
// Use /search_result/<id> instead of /explore/<id> — works without xsec_token
|
|
// when the user is logged in via cookies (which is always the case with opencli).
|
|
return `https://www.xiaohongshu.com/search_result/${trimmed}`;
|
|
}
|