Files
PRA-only-demo/packages/rpa-core/src/capabilities/time-caps.ts
T
yu caa8e19332 阶段1-rpa-core建包: engine+31个纯Node能力迁入packages/rpa-core, 领域类型单一源化, createEngine工厂收拢模块级状态
- engine/(registry/types/runtime/expression)物理迁入包, 解耦shared/types(域类型归包, 宿主type-only re-export)
- 31个纯Node能力+27个测试迁入包; 宿主留守Electron/浏览器/AI依赖能力, index.ts经@rpa/core/capabilities拉起
- 新增createEngine()/defaultEngine: excel缓存/Excel句柄/db连接/FTP客户端/OCR实例/拟真设置挂引擎实例
- remaining-core子流程依赖改为host-bridge注入, 包内不再import宿主flows
- 宿主main/index.ts启动时注入子流程源; electron-vite/vitest/tsconfig配@rpa/core源码别名
- 验证: typecheck绿, 快照909个id diff为零, 332测试过(2个桌面冒烟因会话无交互SetForegroundWindow被拒, 环境阻塞)
2026-11-04 12:36:03 +08:00

16 lines
892 B
TypeScript

import { register } from "../engine/registry";
function part(args: Record<string, unknown>, get: (d: Date) => number): number {
const ts = Number(args.timestamp);
const d = Number.isFinite(ts) && ts > 0 ? new Date(ts) : new Date();
return get(d);
}
register("Time_Year", async (_ctx, _node, args) => part(args, d => d.getFullYear()));
register("Time_Month", async (_ctx, _node, args) => part(args, d => d.getMonth() + 1));
register("Time_Day", async (_ctx, _node, args) => part(args, d => d.getDate()));
register("Time_Hour", async (_ctx, _node, args) => part(args, d => d.getHours()));
register("Time_Minute", async (_ctx, _node, args) => part(args, d => d.getMinutes()));
register("Time_Second", async (_ctx, _node, args) => part(args, d => d.getSeconds()));
register("Time_WeekDay", async (_ctx, _node, args) => part(args, d => { const w = d.getDay(); return w === 0 ? 7 : w; }));