@gaganref/confect-cli 10.3.1-fork.16 → 10.3.1-fork.18
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/dist/CodegenError.mjs +4 -1
- package/dist/CodegenError.mjs.map +1 -1
- package/dist/Evaluation.mjs +39 -13
- package/dist/Evaluation.mjs.map +1 -1
- package/dist/EvaluationWorker.mjs +13 -1
- package/dist/EvaluationWorker.mjs.map +1 -1
- package/dist/FunctionModule.mjs +81 -13
- package/dist/FunctionModule.mjs.map +1 -1
- package/dist/Watcher.mjs +8 -5
- package/dist/Watcher.mjs.map +1 -1
- package/dist/confect/codegen.mjs +2 -1
- package/dist/confect/codegen.mjs.map +1 -1
- package/dist/confect/dev.mjs +9 -4
- package/dist/confect/dev.mjs.map +1 -1
- package/package.json +3 -3
package/dist/confect/dev.mjs
CHANGED
|
@@ -10,8 +10,8 @@ import { functionPaths } from "../GenerationSnapshot.mjs";
|
|
|
10
10
|
import { preserveComponentOutput } from "../Rollback.mjs";
|
|
11
11
|
import { isDeclared } from "./declaration.mjs";
|
|
12
12
|
import { Operation, Outcome, Phase, forBackend, isDirty, needsDeploymentNotification, plan, shouldRetry, transition } from "../SyncState.mjs";
|
|
13
|
-
import { isRefreshSuccessful, make } from "../Watcher.mjs";
|
|
14
|
-
import { EvaluationError, catchAndLog, generateSnapshot, loadPreviousFunctionPaths, updateDeclarations, validate } from "../Evaluation.mjs";
|
|
13
|
+
import { CoalesceQuiescence, isRefreshSuccessful, make } from "../Watcher.mjs";
|
|
14
|
+
import { EvaluationError, catchAndLog, generateSnapshot, loadPreviousFunctionPaths, prewarmedLayer, updateDeclarations, validate } from "../Evaluation.mjs";
|
|
15
15
|
import * as Effect from "effect/Effect";
|
|
16
16
|
import * as Command from "effect/cli/Command";
|
|
17
17
|
import * as FileSystem from "effect/FileSystem";
|
|
@@ -26,6 +26,8 @@ import * as Ref from "effect/Ref";
|
|
|
26
26
|
import * as String from "effect/String";
|
|
27
27
|
import * as Console from "effect/Console";
|
|
28
28
|
import * as Order from "effect/Order";
|
|
29
|
+
import * as Flag from "effect/cli/Flag";
|
|
30
|
+
import * as Duration from "effect/Duration";
|
|
29
31
|
import * as Equal from "effect/Equal";
|
|
30
32
|
//#region src/confect/dev.ts
|
|
31
33
|
const changeChar = (change) => Match.value(change).pipe(Match.when("Added", () => ({
|
|
@@ -59,8 +61,11 @@ const devHandler = Effect.gen(function* () {
|
|
|
59
61
|
const previousFunctionPaths = yield* loadPreviousFunctionPaths;
|
|
60
62
|
const watcher = yield* make();
|
|
61
63
|
yield* Effect.all([watcher.run, syncLoop(previousFunctionPaths, watcher)], { concurrency: "unbounded" });
|
|
62
|
-
});
|
|
63
|
-
const dev = Command.make("dev",
|
|
64
|
+
}).pipe(Effect.provide(prewarmedLayer));
|
|
65
|
+
const dev = Command.make("dev", {
|
|
66
|
+
...flags,
|
|
67
|
+
coalesceMs: Flag.Int("coalesce-ms").pipe(Flag.filter((ms) => ms >= 0 && ms <= 5e3, () => "Set --coalesce-ms to an integer between 0 and 5000 milliseconds."), Flag.withDefault(Duration.toMillis(CoalesceQuiescence.defaultValue())), Flag.withDescription("Quiet period before processing saved files, in milliseconds."))
|
|
68
|
+
}, ({ coalesceMs }) => devHandler.pipe(Effect.provideService(CoalesceQuiescence, Duration.millis(coalesceMs)))).pipe(Command.withDescription("Start the Confect development server"), Command.provide((options) => layer(options)));
|
|
64
69
|
const esbuildMessageKey = (m) => `${m.location?.file ?? ""}:${m.location?.line ?? ""}:${m.location?.column ?? ""}:${m.text}`;
|
|
65
70
|
const dedupeWatcherMessages = (messages) => pipe(messages, Array.dedupeWith((messageA, messageB) => esbuildMessageKey(messageA) === esbuildMessageKey(messageB)));
|
|
66
71
|
const watcherMessagesSignature = (messages) => pipe(messages, Array.map(esbuildMessageKey), Array.dedupe, Array.sort(Order.String), Array.join("\n"));
|
package/dist/confect/dev.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.mjs","names":["Ansi.green","Ansi.red","Ansi.magenta","Ansi.blackBright","FunctionPaths.diff","Evaluation.loadPreviousFunctionPaths","Watcher.make","DirectoryOptions.flags","DirectoryOptions.layer","SyncState.isDirty","SyncState.forBackend","SyncState.plan","GenerationSnapshot.functionPaths","Evaluation.catchAndLog","Watcher.isRefreshSuccessful","Evaluation.EvaluationError","validate","Evaluation.validate","Evaluation.generateSnapshot","Evaluation.updateDeclarations","SyncState.transition","SyncState.shouldRetry","SyncState.needsDeploymentNotification"],"sources":["../../src/confect/dev.ts"],"sourcesContent":["import * as Command from \"effect/cli/Command\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport * as Path from \"effect/Path\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Console from \"effect/Console\";\nimport * as Effect from \"effect/Effect\";\nimport * as Equal from \"effect/Equal\";\nimport * as HashSet from \"effect/HashSet\";\nimport * as Match from \"effect/Match\";\nimport * as Option from \"effect/Option\";\nimport * as Order from \"effect/Order\";\nimport * as Ref from \"effect/Ref\";\nimport * as Result from \"effect/Result\";\nimport * as String from \"effect/String\";\nimport type * as esbuild from \"esbuild\";\nimport * as Ansi from \"../Ansi.js\";\nimport { renderCodegenError } from \"../CodegenError.js\";\nimport * as SyncState from \"../SyncState.js\";\nimport type { OptionalFile } from \"../EntryPoint.js\";\nimport * as Watcher from \"../Watcher.js\";\nimport * as Evaluation from \"../Evaluation.js\";\nimport { ConvexDirectory } from \"../ConvexDirectory.js\";\nimport * as DirectoryOptions from \"../DirectoryOptions.js\";\nimport * as FunctionPaths from \"../FunctionPaths.js\";\nimport * as GenerationSnapshot from \"../GenerationSnapshot.js\";\nimport type { ImplModulePath } from \"../ImplModulePath.js\";\nimport type * as GroupPath from \"../GroupPath.js\";\nimport type * as GroupPaths from \"../GroupPaths.js\";\nimport {\n logCoalescedBuildErrors,\n logCoalescedBuildWarnings,\n logFunctionAdded,\n logFunctionRemoved,\n logPending,\n logSuccess,\n} from \"../log.js\";\nimport { ProjectRoot } from \"../ProjectRoot.js\";\nimport { preserveComponentOutput } from \"../Rollback.js\";\nimport {\n generateAuthConfig,\n generateCrons,\n generateHttp,\n touchConvexSchema,\n} from \"../utils.js\";\nimport { isDeclared } from \"./declaration.js\";\n\nconst changeChar = (change: \"Added\" | \"Removed\" | \"Modified\") =>\n Match.value(change).pipe(\n Match.when(\"Added\", () => ({ char: \"+\", color: Ansi.green })),\n Match.when(\"Removed\", () => ({ char: \"-\", color: Ansi.red })),\n Match.when(\"Modified\", () => ({ char: \"~\", color: Ansi.magenta })),\n Match.exhaustive,\n );\n\nconst logFileChangeIndented = Effect.fnUntraced(function* (\n change: \"Added\" | \"Removed\" | \"Modified\",\n fullPath: string,\n) {\n const projectRoot = yield* ProjectRoot.get;\n const path = yield* Path.Path;\n\n const prefix = projectRoot + path.sep;\n const suffix = pipe(fullPath, String.startsWith(prefix))\n ? pipe(fullPath, String.slice(prefix.length))\n : fullPath;\n\n const { char, color } = changeChar(change);\n\n yield* Console.log(\n `${color(char)} ${Ansi.blackBright(prefix)}${color(suffix)}`,\n );\n});\n\nconst logFunctionPathDiff = Effect.fnUntraced(function* (\n previous: FunctionPaths.FunctionPaths,\n current: FunctionPaths.FunctionPaths,\n) {\n const {\n functionsAdded,\n functionsRemoved,\n groupsRemoved,\n groupsAdded,\n groupsChanged,\n } = FunctionPaths.diff(previous, current);\n\n const logForGroups = (\n groupPaths: GroupPaths.GroupPaths,\n fnPaths: FunctionPaths.FunctionPaths,\n logFn: typeof logFunctionAdded,\n ) =>\n Effect.forEach(groupPaths, (gp) =>\n Effect.forEach(\n Array.fromIterable(\n HashSet.filter(fnPaths, (fp) => Equal.equals(fp.groupPath, gp)),\n ),\n logFn,\n ),\n );\n\n yield* logForGroups(groupsRemoved, functionsRemoved, logFunctionRemoved);\n yield* logForGroups(groupsAdded, functionsAdded, logFunctionAdded);\n yield* Effect.forEach(\n groupsChanged,\n Effect.fnUntraced(function* (gp: GroupPath.GroupPath) {\n yield* Effect.forEach(\n Array.fromIterable(\n HashSet.filter(functionsAdded, (fp) =>\n Equal.equals(fp.groupPath, gp),\n ),\n ),\n logFunctionAdded,\n );\n yield* Effect.forEach(\n Array.fromIterable(\n HashSet.filter(functionsRemoved, (fp) =>\n Equal.equals(fp.groupPath, gp),\n ),\n ),\n logFunctionRemoved,\n );\n }),\n );\n});\n\nexport const devHandler = Effect.gen(function* () {\n yield* logPending(\"Performing initial sync…\");\n const previousFunctionPaths = yield* Evaluation.loadPreviousFunctionPaths;\n\n const watcher = yield* Watcher.make();\n\n yield* Effect.all([watcher.run, syncLoop(previousFunctionPaths, watcher)], {\n concurrency: \"unbounded\",\n });\n});\n\nexport const dev = Command.make(\n \"dev\",\n DirectoryOptions.flags,\n () => devHandler,\n).pipe(\n Command.withDescription(\"Start the Confect development server\"),\n Command.provide(DirectoryOptions.layer),\n);\n\nconst esbuildMessageKey = (m: esbuild.Message): string =>\n `${m.location?.file ?? \"\"}:${m.location?.line ?? \"\"}:${m.location?.column ?? \"\"}:${m.text}`;\n\nconst dedupeWatcherMessages = (\n messages: ReadonlyArray<esbuild.Message>,\n): ReadonlyArray<esbuild.Message> =>\n pipe(\n messages,\n Array.dedupeWith(\n (messageA, messageB) =>\n esbuildMessageKey(messageA) === esbuildMessageKey(messageB),\n ),\n );\n\nconst watcherMessagesSignature = (\n messages: ReadonlyArray<esbuild.Message>,\n): string =>\n pipe(\n messages,\n Array.map(esbuildMessageKey),\n Array.dedupe,\n Array.sort(Order.String),\n Array.join(\"\\n\"),\n );\n\n/**\n * Log any watcher messages (errors or warnings) that haven't already been\n * logged at their current signature. Suppresses the per-watcher fanout that\n * happens when one root cause (e.g. a missing import) breaks every entry\n * point's build at the same source location.\n */\nconst logChangedWatcherMessages = Effect.fnUntraced(function* (\n messages: ReadonlyArray<esbuild.Message>,\n lastLoggedSignatureRef: Ref.Ref<string>,\n log: (messages: ReadonlyArray<esbuild.Message>) => Effect.Effect<void>,\n) {\n const signature = watcherMessagesSignature(messages);\n const previous = yield* Ref.get(lastLoggedSignatureRef);\n if (signature === previous) return;\n yield* Ref.set(lastLoggedSignatureRef, signature);\n if (messages.length === 0) return;\n yield* log(dedupeWatcherMessages(messages));\n});\n\nconst syncLoop = Effect.fnUntraced(function* (\n initialFunctionPaths: FunctionPaths.FunctionPaths,\n watcher: Watcher.Watcher,\n) {\n const functionPathsRef = yield* Ref.make(initialFunctionPaths);\n const lastLoggedErrorsRef = yield* Ref.make<string>(\"\");\n const lastLoggedWarningsRef = yield* Ref.make<string>(\"\");\n const phaseRef = yield* Ref.make<SyncState.Phase>(\n SyncState.Phase.Bootstrapping(),\n );\n const optionalPendingRef = yield* Ref.make(HashSet.empty<OptionalFile>());\n const logMessages = Effect.gen(function* () {\n const { errors, warnings } = yield* watcher.diagnostics;\n yield* logChangedWatcherMessages(\n errors,\n lastLoggedErrorsRef,\n logCoalescedBuildErrors,\n );\n yield* logChangedWatcherMessages(\n warnings,\n lastLoggedWarningsRef,\n logCoalescedBuildWarnings,\n );\n });\n\n return yield* Effect.forever(\n Effect.gen(function* () {\n yield* Effect.logDebug(\"Running sync loop…\");\n const taken = yield* watcher.next;\n\n const phase = yield* Ref.get(phaseRef);\n const firstSync = SyncState.Phase.$is(\"Bootstrapping\")(phase);\n if (!firstSync) yield* logMessages;\n\n if (!SyncState.isDirty(taken)) return;\n\n const declared = yield* isDeclared;\n const pending = SyncState.forBackend(\n {\n ...taken,\n optional: yield* Ref.updateAndGet(\n optionalPendingRef,\n HashSet.union(taken.optional),\n ),\n },\n {\n declared,\n component: (yield* ConvexDirectory.target).kind === \"component\",\n },\n );\n const optional = pending.optional;\n const operation = SyncState.plan(phase, pending);\n yield* Effect.logDebug(\"Planned development sync\").pipe(\n Effect.annotateLogs({\n phase: phase._tag,\n work: pending.work._tag,\n operation: operation._tag,\n }),\n );\n if (\n !firstSync &&\n !(\n SyncState.Operation.$is(\"Validate\")(operation) &&\n operation.paths.length === 0\n )\n )\n yield* logPending(\"Dependencies may have changed, reloading…\");\n\n const regenerate = <R>(\n generation: Effect.Effect<\n GenerationSnapshot.GenerationSnapshot,\n Effect.Error<typeof Evaluation.generateSnapshot>,\n R\n >,\n ) =>\n Effect.gen(function* () {\n const current = yield* generation.pipe(\n Effect.tap((snapshot) =>\n Effect.gen(function* () {\n const nextFunctionPaths =\n GenerationSnapshot.functionPaths(snapshot);\n const previous = yield* Ref.get(functionPathsRef);\n yield* logFunctionPathDiff(previous, nextFunctionPaths);\n yield* Ref.set(functionPathsRef, nextFunctionPaths);\n }),\n ),\n Evaluation.catchAndLog,\n );\n if (Option.isNone(current)) {\n return SyncState.Outcome.GenerationFailed();\n }\n const refreshed = yield* watcher.refresh.pipe(Effect.result);\n if (Result.isFailure(refreshed)) {\n yield* Console.error(\n `Dependency watcher could not ${refreshed.failure.operation}: ${globalThis.String(refreshed.failure.cause)}`,\n );\n return SyncState.Outcome.ReconciliationFailed();\n }\n if (!Watcher.isRefreshSuccessful(refreshed.success)) {\n yield* logMessages;\n return SyncState.Outcome.ReconciliationFailed();\n }\n return SyncState.Outcome.Succeeded({ snapshot: current.value });\n });\n const preserved = <R>(\n generation: Effect.Effect<\n GenerationSnapshot.GenerationSnapshot,\n Effect.Error<typeof Evaluation.generateSnapshot>,\n R\n >,\n ) =>\n preserveComponentOutput(generation, watcher.duringRestore).pipe(\n Effect.tapErrorTag(\n \"ComponentNodeGroupError\",\n () => watcher.discardRestoreEchoes,\n ),\n Effect.catchTags({\n RemoveBusyError: (error) =>\n Effect.fail(\n new Evaluation.EvaluationError({\n diagnostic: renderCodegenError(error),\n }),\n ),\n // Output that cannot be restored leaves nothing to serve.\n PlatformError: Effect.die,\n }),\n );\n const validate = (\n paths: ReadonlyArray<ImplModulePath>,\n snapshot: GenerationSnapshot.GenerationSnapshot,\n ) =>\n Effect.gen(function* () {\n if (Array.isReadonlyArrayNonEmpty(paths)) {\n const validated = yield* Evaluation.validate(paths).pipe(\n Evaluation.catchAndLog,\n );\n if (Option.isNone(validated)) {\n return SyncState.Outcome.ValidationFailed({ paths, snapshot });\n }\n }\n return SyncState.Outcome.Succeeded({ snapshot });\n });\n const outcome = yield* SyncState.Operation.$match(operation, {\n Generate: () => regenerate(preserved(Evaluation.generateSnapshot)),\n Validate: ({ paths, snapshot }) => validate(paths, snapshot),\n Update: ({ snapshot, declarations, paths }) =>\n regenerate(\n preserved(\n Evaluation.updateDeclarations(snapshot, declarations, paths),\n ),\n ),\n });\n yield* Ref.set(phaseRef, SyncState.transition(outcome));\n if (SyncState.shouldRetry(phase, outcome)) {\n yield* watcher.requestRetry;\n }\n if (!SyncState.Outcome.$is(\"Succeeded\")(outcome)) return;\n\n const dirtyOptionalFiles = [\n ...(HashSet.has(optional, \"Http\")\n ? [syncOptionalFile(generateHttp, \"http.ts\")]\n : []),\n ...(HashSet.has(optional, \"Crons\")\n ? [syncOptionalFile(generateCrons, \"crons.ts\")]\n : []),\n ...(HashSet.has(optional, \"Auth\")\n ? [syncOptionalFile(generateAuthConfig, \"auth.config.ts\")]\n : []),\n ];\n\n yield* Array.isReadonlyArrayNonEmpty(dirtyOptionalFiles)\n ? Effect.all(dirtyOptionalFiles, { concurrency: \"unbounded\" })\n : Effect.void;\n yield* Ref.set(optionalPendingRef, HashSet.empty());\n\n if (SyncState.needsDeploymentNotification(phase))\n yield* touchConvexSchema;\n\n if (!SyncState.isDirty(yield* watcher.pending)) {\n yield* logSuccess(\"Generated files are up-to-date\");\n }\n }),\n );\n});\n\nconst syncOptionalFile = (generate: typeof generateHttp, convexFile: string) =>\n pipe(\n generate,\n Effect.andThen(\n Option.match({\n onSome: ({ change, convexFilePath }) =>\n Match.value(change).pipe(\n Match.when(\"Unchanged\", () => Effect.void),\n Match.whenOr(\"Added\", \"Modified\", (addedOrModified) =>\n logFileChangeIndented(addedOrModified, convexFilePath),\n ),\n Match.exhaustive,\n ),\n onNone: () =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n const convexDirectory = yield* ConvexDirectory.get;\n const convexFilePath = path.join(convexDirectory, convexFile);\n\n if (yield* fs.exists(convexFilePath)) {\n yield* fs.remove(convexFilePath);\n yield* logFileChangeIndented(\"Removed\", convexFilePath);\n }\n }),\n }),\n ),\n );\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev.mjs","names":["Ansi.green","Ansi.red","Ansi.magenta","Ansi.blackBright","FunctionPaths.diff","Evaluation.loadPreviousFunctionPaths","Watcher.make","Evaluation.prewarmedLayer","DirectoryOptions.flags","Watcher.CoalesceQuiescence","DirectoryOptions.layer","SyncState.isDirty","SyncState.forBackend","SyncState.plan","GenerationSnapshot.functionPaths","Evaluation.catchAndLog","Watcher.isRefreshSuccessful","Evaluation.EvaluationError","validate","Evaluation.validate","Evaluation.generateSnapshot","Evaluation.updateDeclarations","SyncState.transition","SyncState.shouldRetry","SyncState.needsDeploymentNotification"],"sources":["../../src/confect/dev.ts"],"sourcesContent":["import * as Command from \"effect/cli/Command\";\nimport * as Flag from \"effect/cli/Flag\";\nimport * as Duration from \"effect/Duration\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport * as Path from \"effect/Path\";\nimport { pipe } from \"effect/Function\";\nimport * as Array from \"effect/Array\";\nimport * as Console from \"effect/Console\";\nimport * as Effect from \"effect/Effect\";\nimport * as Equal from \"effect/Equal\";\nimport * as HashSet from \"effect/HashSet\";\nimport * as Match from \"effect/Match\";\nimport * as Option from \"effect/Option\";\nimport * as Order from \"effect/Order\";\nimport * as Ref from \"effect/Ref\";\nimport * as Result from \"effect/Result\";\nimport * as String from \"effect/String\";\nimport type * as esbuild from \"esbuild\";\nimport * as Ansi from \"../Ansi.js\";\nimport { renderCodegenError } from \"../CodegenError.js\";\nimport * as SyncState from \"../SyncState.js\";\nimport type { OptionalFile } from \"../EntryPoint.js\";\nimport * as Watcher from \"../Watcher.js\";\nimport * as Evaluation from \"../Evaluation.js\";\nimport { ConvexDirectory } from \"../ConvexDirectory.js\";\nimport * as DirectoryOptions from \"../DirectoryOptions.js\";\nimport * as FunctionPaths from \"../FunctionPaths.js\";\nimport * as GenerationSnapshot from \"../GenerationSnapshot.js\";\nimport type { ImplModulePath } from \"../ImplModulePath.js\";\nimport type * as GroupPath from \"../GroupPath.js\";\nimport type * as GroupPaths from \"../GroupPaths.js\";\nimport {\n logCoalescedBuildErrors,\n logCoalescedBuildWarnings,\n logFunctionAdded,\n logFunctionRemoved,\n logPending,\n logSuccess,\n} from \"../log.js\";\nimport { ProjectRoot } from \"../ProjectRoot.js\";\nimport { preserveComponentOutput } from \"../Rollback.js\";\nimport {\n generateAuthConfig,\n generateCrons,\n generateHttp,\n touchConvexSchema,\n} from \"../utils.js\";\nimport { isDeclared } from \"./declaration.js\";\n\nconst changeChar = (change: \"Added\" | \"Removed\" | \"Modified\") =>\n Match.value(change).pipe(\n Match.when(\"Added\", () => ({ char: \"+\", color: Ansi.green })),\n Match.when(\"Removed\", () => ({ char: \"-\", color: Ansi.red })),\n Match.when(\"Modified\", () => ({ char: \"~\", color: Ansi.magenta })),\n Match.exhaustive,\n );\n\nconst logFileChangeIndented = Effect.fnUntraced(function* (\n change: \"Added\" | \"Removed\" | \"Modified\",\n fullPath: string,\n) {\n const projectRoot = yield* ProjectRoot.get;\n const path = yield* Path.Path;\n\n const prefix = projectRoot + path.sep;\n const suffix = pipe(fullPath, String.startsWith(prefix))\n ? pipe(fullPath, String.slice(prefix.length))\n : fullPath;\n\n const { char, color } = changeChar(change);\n\n yield* Console.log(\n `${color(char)} ${Ansi.blackBright(prefix)}${color(suffix)}`,\n );\n});\n\nconst logFunctionPathDiff = Effect.fnUntraced(function* (\n previous: FunctionPaths.FunctionPaths,\n current: FunctionPaths.FunctionPaths,\n) {\n const {\n functionsAdded,\n functionsRemoved,\n groupsRemoved,\n groupsAdded,\n groupsChanged,\n } = FunctionPaths.diff(previous, current);\n\n const logForGroups = (\n groupPaths: GroupPaths.GroupPaths,\n fnPaths: FunctionPaths.FunctionPaths,\n logFn: typeof logFunctionAdded,\n ) =>\n Effect.forEach(groupPaths, (gp) =>\n Effect.forEach(\n Array.fromIterable(\n HashSet.filter(fnPaths, (fp) => Equal.equals(fp.groupPath, gp)),\n ),\n logFn,\n ),\n );\n\n yield* logForGroups(groupsRemoved, functionsRemoved, logFunctionRemoved);\n yield* logForGroups(groupsAdded, functionsAdded, logFunctionAdded);\n yield* Effect.forEach(\n groupsChanged,\n Effect.fnUntraced(function* (gp: GroupPath.GroupPath) {\n yield* Effect.forEach(\n Array.fromIterable(\n HashSet.filter(functionsAdded, (fp) =>\n Equal.equals(fp.groupPath, gp),\n ),\n ),\n logFunctionAdded,\n );\n yield* Effect.forEach(\n Array.fromIterable(\n HashSet.filter(functionsRemoved, (fp) =>\n Equal.equals(fp.groupPath, gp),\n ),\n ),\n logFunctionRemoved,\n );\n }),\n );\n});\n\nexport const devHandler = Effect.gen(function* () {\n yield* logPending(\"Performing initial sync…\");\n const previousFunctionPaths = yield* Evaluation.loadPreviousFunctionPaths;\n\n const watcher = yield* Watcher.make();\n\n yield* Effect.all([watcher.run, syncLoop(previousFunctionPaths, watcher)], {\n concurrency: \"unbounded\",\n });\n}).pipe(Effect.provide(Evaluation.prewarmedLayer));\n\nexport const dev = Command.make(\n \"dev\",\n {\n ...DirectoryOptions.flags,\n coalesceMs: Flag.Int(\"coalesce-ms\").pipe(\n Flag.filter(\n (ms) => ms >= 0 && ms <= 5000,\n () =>\n \"Set --coalesce-ms to an integer between 0 and 5000 milliseconds.\",\n ),\n Flag.withDefault(\n Duration.toMillis(Watcher.CoalesceQuiescence.defaultValue()),\n ),\n Flag.withDescription(\n \"Quiet period before processing saved files, in milliseconds.\",\n ),\n ),\n },\n ({ coalesceMs }) =>\n devHandler.pipe(\n Effect.provideService(\n Watcher.CoalesceQuiescence,\n Duration.millis(coalesceMs),\n ),\n ),\n).pipe(\n Command.withDescription(\"Start the Confect development server\"),\n Command.provide(\n (options: { componentDir: Option.Option<string>; coalesceMs: number }) =>\n DirectoryOptions.layer(options),\n ),\n);\n\nconst esbuildMessageKey = (m: esbuild.Message): string =>\n `${m.location?.file ?? \"\"}:${m.location?.line ?? \"\"}:${m.location?.column ?? \"\"}:${m.text}`;\n\nconst dedupeWatcherMessages = (\n messages: ReadonlyArray<esbuild.Message>,\n): ReadonlyArray<esbuild.Message> =>\n pipe(\n messages,\n Array.dedupeWith(\n (messageA, messageB) =>\n esbuildMessageKey(messageA) === esbuildMessageKey(messageB),\n ),\n );\n\nconst watcherMessagesSignature = (\n messages: ReadonlyArray<esbuild.Message>,\n): string =>\n pipe(\n messages,\n Array.map(esbuildMessageKey),\n Array.dedupe,\n Array.sort(Order.String),\n Array.join(\"\\n\"),\n );\n\n/**\n * Log any watcher messages (errors or warnings) that haven't already been\n * logged at their current signature. Suppresses the per-watcher fanout that\n * happens when one root cause (e.g. a missing import) breaks every entry\n * point's build at the same source location.\n */\nconst logChangedWatcherMessages = Effect.fnUntraced(function* (\n messages: ReadonlyArray<esbuild.Message>,\n lastLoggedSignatureRef: Ref.Ref<string>,\n log: (messages: ReadonlyArray<esbuild.Message>) => Effect.Effect<void>,\n) {\n const signature = watcherMessagesSignature(messages);\n const previous = yield* Ref.get(lastLoggedSignatureRef);\n if (signature === previous) return;\n yield* Ref.set(lastLoggedSignatureRef, signature);\n if (messages.length === 0) return;\n yield* log(dedupeWatcherMessages(messages));\n});\n\nconst syncLoop = Effect.fnUntraced(function* (\n initialFunctionPaths: FunctionPaths.FunctionPaths,\n watcher: Watcher.Watcher,\n) {\n const functionPathsRef = yield* Ref.make(initialFunctionPaths);\n const lastLoggedErrorsRef = yield* Ref.make<string>(\"\");\n const lastLoggedWarningsRef = yield* Ref.make<string>(\"\");\n const phaseRef = yield* Ref.make<SyncState.Phase>(\n SyncState.Phase.Bootstrapping(),\n );\n const optionalPendingRef = yield* Ref.make(HashSet.empty<OptionalFile>());\n const logMessages = Effect.gen(function* () {\n const { errors, warnings } = yield* watcher.diagnostics;\n yield* logChangedWatcherMessages(\n errors,\n lastLoggedErrorsRef,\n logCoalescedBuildErrors,\n );\n yield* logChangedWatcherMessages(\n warnings,\n lastLoggedWarningsRef,\n logCoalescedBuildWarnings,\n );\n });\n\n return yield* Effect.forever(\n Effect.gen(function* () {\n yield* Effect.logDebug(\"Running sync loop…\");\n const taken = yield* watcher.next;\n\n const phase = yield* Ref.get(phaseRef);\n const firstSync = SyncState.Phase.$is(\"Bootstrapping\")(phase);\n if (!firstSync) yield* logMessages;\n\n if (!SyncState.isDirty(taken)) return;\n\n const declared = yield* isDeclared;\n const pending = SyncState.forBackend(\n {\n ...taken,\n optional: yield* Ref.updateAndGet(\n optionalPendingRef,\n HashSet.union(taken.optional),\n ),\n },\n {\n declared,\n component: (yield* ConvexDirectory.target).kind === \"component\",\n },\n );\n const optional = pending.optional;\n const operation = SyncState.plan(phase, pending);\n yield* Effect.logDebug(\"Planned development sync\").pipe(\n Effect.annotateLogs({\n phase: phase._tag,\n work: pending.work._tag,\n operation: operation._tag,\n }),\n );\n if (\n !firstSync &&\n !(\n SyncState.Operation.$is(\"Validate\")(operation) &&\n operation.paths.length === 0\n )\n )\n yield* logPending(\"Dependencies may have changed, reloading…\");\n\n const regenerate = <R>(\n generation: Effect.Effect<\n GenerationSnapshot.GenerationSnapshot,\n Effect.Error<typeof Evaluation.generateSnapshot>,\n R\n >,\n ) =>\n Effect.gen(function* () {\n const current = yield* generation.pipe(\n Effect.tap((snapshot) =>\n Effect.gen(function* () {\n const nextFunctionPaths =\n GenerationSnapshot.functionPaths(snapshot);\n const previous = yield* Ref.get(functionPathsRef);\n yield* logFunctionPathDiff(previous, nextFunctionPaths);\n yield* Ref.set(functionPathsRef, nextFunctionPaths);\n }),\n ),\n Evaluation.catchAndLog,\n );\n if (Option.isNone(current)) {\n return SyncState.Outcome.GenerationFailed();\n }\n const refreshed = yield* watcher.refresh.pipe(Effect.result);\n if (Result.isFailure(refreshed)) {\n yield* Console.error(\n `Dependency watcher could not ${refreshed.failure.operation}: ${globalThis.String(refreshed.failure.cause)}`,\n );\n return SyncState.Outcome.ReconciliationFailed();\n }\n if (!Watcher.isRefreshSuccessful(refreshed.success)) {\n yield* logMessages;\n return SyncState.Outcome.ReconciliationFailed();\n }\n return SyncState.Outcome.Succeeded({ snapshot: current.value });\n });\n const preserved = <R>(\n generation: Effect.Effect<\n GenerationSnapshot.GenerationSnapshot,\n Effect.Error<typeof Evaluation.generateSnapshot>,\n R\n >,\n ) =>\n preserveComponentOutput(generation, watcher.duringRestore).pipe(\n Effect.tapErrorTag(\n \"ComponentNodeGroupError\",\n () => watcher.discardRestoreEchoes,\n ),\n Effect.catchTags({\n RemoveBusyError: (error) =>\n Effect.fail(\n new Evaluation.EvaluationError({\n diagnostic: renderCodegenError(error),\n }),\n ),\n // Output that cannot be restored leaves nothing to serve.\n PlatformError: Effect.die,\n }),\n );\n const validate = (\n paths: ReadonlyArray<ImplModulePath>,\n snapshot: GenerationSnapshot.GenerationSnapshot,\n ) =>\n Effect.gen(function* () {\n if (Array.isReadonlyArrayNonEmpty(paths)) {\n const validated = yield* Evaluation.validate(paths).pipe(\n Evaluation.catchAndLog,\n );\n if (Option.isNone(validated)) {\n return SyncState.Outcome.ValidationFailed({ paths, snapshot });\n }\n }\n return SyncState.Outcome.Succeeded({ snapshot });\n });\n const outcome = yield* SyncState.Operation.$match(operation, {\n Generate: () => regenerate(preserved(Evaluation.generateSnapshot)),\n Validate: ({ paths, snapshot }) => validate(paths, snapshot),\n Update: ({ snapshot, declarations, paths }) =>\n regenerate(\n preserved(\n Evaluation.updateDeclarations(snapshot, declarations, paths),\n ),\n ),\n });\n yield* Ref.set(phaseRef, SyncState.transition(outcome));\n if (SyncState.shouldRetry(phase, outcome)) {\n yield* watcher.requestRetry;\n }\n if (!SyncState.Outcome.$is(\"Succeeded\")(outcome)) return;\n\n const dirtyOptionalFiles = [\n ...(HashSet.has(optional, \"Http\")\n ? [syncOptionalFile(generateHttp, \"http.ts\")]\n : []),\n ...(HashSet.has(optional, \"Crons\")\n ? [syncOptionalFile(generateCrons, \"crons.ts\")]\n : []),\n ...(HashSet.has(optional, \"Auth\")\n ? [syncOptionalFile(generateAuthConfig, \"auth.config.ts\")]\n : []),\n ];\n\n yield* Array.isReadonlyArrayNonEmpty(dirtyOptionalFiles)\n ? Effect.all(dirtyOptionalFiles, { concurrency: \"unbounded\" })\n : Effect.void;\n yield* Ref.set(optionalPendingRef, HashSet.empty());\n\n if (SyncState.needsDeploymentNotification(phase))\n yield* touchConvexSchema;\n\n if (!SyncState.isDirty(yield* watcher.pending)) {\n yield* logSuccess(\"Generated files are up-to-date\");\n }\n }),\n );\n});\n\nconst syncOptionalFile = (generate: typeof generateHttp, convexFile: string) =>\n pipe(\n generate,\n Effect.andThen(\n Option.match({\n onSome: ({ change, convexFilePath }) =>\n Match.value(change).pipe(\n Match.when(\"Unchanged\", () => Effect.void),\n Match.whenOr(\"Added\", \"Modified\", (addedOrModified) =>\n logFileChangeIndented(addedOrModified, convexFilePath),\n ),\n Match.exhaustive,\n ),\n onNone: () =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n const convexDirectory = yield* ConvexDirectory.get;\n const convexFilePath = path.join(convexDirectory, convexFile);\n\n if (yield* fs.exists(convexFilePath)) {\n yield* fs.remove(convexFilePath);\n yield* logFileChangeIndented(\"Removed\", convexFilePath);\n }\n }),\n }),\n ),\n );\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gaganref/confect-cli",
|
|
3
|
-
"version": "10.3.1-fork.
|
|
3
|
+
"version": "10.3.1-fork.18",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@effect/platform-node": "^4.0.4",
|
|
6
6
|
"bundle-require": "^5.1.0",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
"exsolve": "^1.1.3"
|
|
10
10
|
},
|
|
11
11
|
"peerDependencies": {
|
|
12
|
-
"@confect/core": "npm:@gaganref/confect-core@10.3.1-fork.
|
|
13
|
-
"@confect/server": "npm:@gaganref/confect-server@10.3.1-fork.
|
|
12
|
+
"@confect/core": "npm:@gaganref/confect-core@10.3.1-fork.18",
|
|
13
|
+
"@confect/server": "npm:@gaganref/confect-server@10.3.1-fork.18",
|
|
14
14
|
"effect": "^4.0.4"
|
|
15
15
|
},
|
|
16
16
|
"description": "Developer tooling for codegen and sync",
|