gencow 0.1.69 → 0.1.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/gencow.mjs +5 -2
- package/package.json +1 -1
- package/server/index.js +9 -0
- package/server/index.js.map +2 -2
package/bin/gencow.mjs
CHANGED
|
@@ -574,6 +574,9 @@ function generateReadmeMd(config, apiObj) {
|
|
|
574
574
|
md += `- mutation은 10초 이내에 완료되어야 해. 외부 API나 LLM 호출이 길면 단계별로 분리해.\n`;
|
|
575
575
|
md += `- 긴 작업은 ctx.scheduler.runAfter(0, "module.nextStep", { sessionId }) 로 다음 단계를 예약.\n`;
|
|
576
576
|
md += `- 예: 크롤링(Step1) → 필터링(Step2) → 요약(Step3) 각각 별도 mutation으로 분리.\n`;
|
|
577
|
+
md += `- 같은 서버의 다른 모듈 함수를 호출할 때는 fetch()가 아닌 직접 import해서 호출해.\n`;
|
|
578
|
+
md += ` 예: import { fetchNews } from "./naverApi"; → const result = await fetchNews.handler(ctx, { keyword });\n`;
|
|
579
|
+
md += ` HTTP self-fetch (fetch("/api/mutation")) 패턴은 불필요한 네트워크 우회이므로 사용하지 마.\n`;
|
|
577
580
|
md += `\n`;
|
|
578
581
|
md += `크론 잡 (예약 작업):\n`;
|
|
579
582
|
md += ` gencow/crons.ts에서 cronJobs()로 선언\n`;
|
|
@@ -873,8 +876,8 @@ const commands = {
|
|
|
873
876
|
// gencow (CLI + server runtime) + @gencow/core (defineQuery, defineMutation 등)
|
|
874
877
|
// 아래 패키지들은 서버 번들에서 external — 사용자 node_modules에 설치 필요
|
|
875
878
|
const baseDeps = {
|
|
876
|
-
"gencow": "
|
|
877
|
-
"@gencow/core": "
|
|
879
|
+
"gencow": "latest",
|
|
880
|
+
"@gencow/core": "latest",
|
|
878
881
|
"@electric-sql/pglite": "^0.3.15",
|
|
879
882
|
"better-auth": "^1.5.1",
|
|
880
883
|
"drizzle-orm": "^0.44.0",
|
package/package.json
CHANGED
package/server/index.js
CHANGED
|
@@ -73122,6 +73122,15 @@ async function main() {
|
|
|
73122
73122
|
}
|
|
73123
73123
|
const mutations = getRegisteredMutations();
|
|
73124
73124
|
const mutationMap = new Map(mutations.map((m) => [m.name, m]));
|
|
73125
|
+
if (scheduler) {
|
|
73126
|
+
for (const [name21, mut] of mutationMap) {
|
|
73127
|
+
scheduler.registerAction(name21, async (args) => {
|
|
73128
|
+
const ctx = buildCtx({ get: () => null });
|
|
73129
|
+
await mut.handler(ctx, args ?? {});
|
|
73130
|
+
});
|
|
73131
|
+
}
|
|
73132
|
+
console.log(`[scheduler] Registered ${mutationMap.size} mutation(s) as scheduler actions`);
|
|
73133
|
+
}
|
|
73125
73134
|
if (scheduler) {
|
|
73126
73135
|
const cronsPath = resolve5(functionsPath, "crons.ts");
|
|
73127
73136
|
const cronsPathJs = resolve5(functionsPath, "crons.js");
|