terse-cli 0.6.2 → 0.6.4

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.
Files changed (40) hide show
  1. package/dist/actorDevUi.d.ts +2 -1
  2. package/dist/actorDevUi.d.ts.map +1 -1
  3. package/dist/actorDevUi.js +4 -3
  4. package/dist/actorDevUi.js.map +1 -1
  5. package/dist/commands/actor.d.ts.map +1 -1
  6. package/dist/commands/actor.js +13 -8
  7. package/dist/commands/actor.js.map +1 -1
  8. package/dist/commands/actorGenerate.d.ts.map +1 -1
  9. package/dist/commands/actorGenerate.js +24 -7
  10. package/dist/commands/actorGenerate.js.map +1 -1
  11. package/dist/commands/auth.d.ts.map +1 -1
  12. package/dist/commands/auth.js +2 -0
  13. package/dist/commands/auth.js.map +1 -1
  14. package/dist/commands/init.d.ts.map +1 -1
  15. package/dist/commands/init.js +26 -31
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/install.d.ts.map +1 -1
  18. package/dist/commands/install.js +5 -63
  19. package/dist/commands/install.js.map +1 -1
  20. package/dist/index.js +7 -474
  21. package/dist/index.js.map +1 -1
  22. package/dist/localActors.d.ts.map +1 -1
  23. package/dist/localActors.js +4 -3
  24. package/dist/localActors.js.map +1 -1
  25. package/dist/productFeatures.d.ts +5 -0
  26. package/dist/productFeatures.d.ts.map +1 -0
  27. package/dist/productFeatures.js +6 -0
  28. package/dist/productFeatures.js.map +1 -0
  29. package/dist/projectActorTools.d.ts +5 -0
  30. package/dist/projectActorTools.d.ts.map +1 -0
  31. package/dist/projectActorTools.js +34 -0
  32. package/dist/projectActorTools.js.map +1 -0
  33. package/dist/providers/typescript/actorCodegen.d.ts.map +1 -1
  34. package/dist/providers/typescript/actorCodegen.js +14 -10
  35. package/dist/providers/typescript/actorCodegen.js.map +1 -1
  36. package/dist/providers/typescript/actorSources.d.ts +4 -2
  37. package/dist/providers/typescript/actorSources.d.ts.map +1 -1
  38. package/dist/providers/typescript/actorSources.js +12 -5
  39. package/dist/providers/typescript/actorSources.js.map +1 -1
  40. package/package.json +5 -4
@@ -1,12 +1,13 @@
1
- import { startLocalActors } from "durable-actors/dev";
1
+ import { loadProjectActorTools } from "./projectActorTools.js";
2
2
  import { readProjectConfigOrBail } from "./projectConfig.js";
3
- import { ACTOR_ENTRY_FILE, loadActorTypes } from "./providers/typescript/actorSources.js";
3
+ import { loadActorTypes, resolveActorEntryFile } from "./providers/typescript/actorSources.js";
4
4
  let runtime;
5
5
  export async function ensureLocalActors() {
6
6
  if ((await loadActorTypes(process.cwd())).length === 0)
7
7
  return;
8
8
  const projectId = readProjectConfigOrBail().projectId;
9
- const options = { projectId, entrypoint: ACTOR_ENTRY_FILE, dataDir: ".terse/test-actors", quiet: true };
9
+ const { startLocalActors } = await loadProjectActorTools(process.cwd());
10
+ const options = { project: process.cwd(), projectId, entrypoint: resolveActorEntryFile(process.cwd()), dataDir: ".terse/test-actors", quiet: true };
10
11
  const { connection } = await (runtime ??= startLocalActors(options).catch(error => {
11
12
  runtime = undefined;
12
13
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"localActors.js","sourceRoot":"","sources":["../src/localActors.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAE7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAEzF,IAAI,OAA+C,CAAA;AAEnD,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACnC,IAAI,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAC9D,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC,SAAS,CAAA;IACrD,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACvG,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC9E,OAAO,GAAG,SAAS,CAAA;QACnB,MAAM,KAAK,CAAA;IACf,CAAC,CAAC,CAAC,CAAA;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;QACvB,yBAAyB,EAAE,SAAS;QACpC,wBAAwB,EAAE,GAAG;QAC7B,gCAAgC,EAAE,UAAU,CAAC,eAAe;QAC5D,qBAAqB,EAAE,UAAU,CAAC,MAAM;KAC3C,CAAC,CAAA;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IACvC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,MAAM,CAAC,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"localActors.js","sourceRoot":"","sources":["../src/localActors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAE9F,IAAI,OAA+C,CAAA;AAEnD,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACnC,IAAI,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAC9D,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC,SAAS,CAAA;IACrD,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACvE,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACpJ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC9E,OAAO,GAAG,SAAS,CAAA;QACnB,MAAM,KAAK,CAAA;IACf,CAAC,CAAC,CAAC,CAAA;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;QACvB,yBAAyB,EAAE,SAAS;QACpC,wBAAwB,EAAE,GAAG;QAC7B,gCAAgC,EAAE,UAAU,CAAC,eAAe;QAC5D,qBAAqB,EAAE,UAAU,CAAC,MAAM;KAC3C,CAAC,CAAA;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IACvC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,MAAM,CAAC,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,CAAA;AACjC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** New actor projects have one source file and only the supporting project files. */
2
+ export declare function actorScaffoldFiles<T extends {
3
+ output: string;
4
+ }>(files: T[]): T[];
5
+ //# sourceMappingURL=productFeatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productFeatures.d.ts","sourceRoot":"","sources":["../src/productFeatures.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAGhF"}
@@ -0,0 +1,6 @@
1
+ /** New actor projects have one source file and only the supporting project files. */
2
+ export function actorScaffoldFiles(files) {
3
+ const outputs = new Set(["package.json", "tsconfig.json", "src/actors.ts", ".env.example", ".gitignore"]);
4
+ return files.filter(file => outputs.has(file.output)).map(file => (file.output === "src/actors.ts" ? { ...file, output: "src/actor.ts" } : file));
5
+ }
6
+ //# sourceMappingURL=productFeatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"productFeatures.js","sourceRoot":"","sources":["../src/productFeatures.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,UAAU,kBAAkB,CAA+B,KAAU;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAA;IACzG,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACrJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ type ActorTools = typeof import("terse-sdk/dev");
2
+ export declare function loadProjectActorTools(project: string): Promise<ActorTools>;
3
+ export declare function resolveProjectActorTools(project: string): string;
4
+ export {};
5
+ //# sourceMappingURL=projectActorTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectActorTools.d.ts","sourceRoot":"","sources":["../src/projectActorTools.ts"],"names":[],"mappings":"AAOA,KAAK,UAAU,GAAG,cAAc,eAAe,CAAC,CAAA;AAEhD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAMhF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYhE"}
@@ -0,0 +1,34 @@
1
+ import { resolve } from "import-meta-resolve";
2
+ import { existsSync } from "node:fs";
3
+ import path from "node:path";
4
+ import { fileURLToPath, pathToFileURL } from "node:url";
5
+ import { CliError } from "./cliError.js";
6
+ export async function loadProjectActorTools(project) {
7
+ const module = await import(resolveProjectActorTools(project));
8
+ for (const name of ["ActorCompiler", "generateClientArtifacts", "runActorDev", "startLocalActors"]) {
9
+ if (typeof module[name] !== "function")
10
+ throw outdatedSdk(project);
11
+ }
12
+ return module;
13
+ }
14
+ export function resolveProjectActorTools(project) {
15
+ try {
16
+ const entry = resolve("terse-sdk/dev", pathToFileURL(path.resolve(project, "package.json")).href);
17
+ if (!existsSync(fileURLToPath(entry)))
18
+ throw outdatedSdk(project);
19
+ return entry;
20
+ }
21
+ catch (error) {
22
+ if (error instanceof CliError)
23
+ throw error;
24
+ if (error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED")
25
+ throw outdatedSdk(project);
26
+ throw new CliError("project_sdk_unavailable", `Cannot resolve terse-sdk/dev in ${project}. Install terse-sdk in this project and run your package manager's install command.`, {
27
+ detail: error instanceof Error ? error.message : String(error)
28
+ });
29
+ }
30
+ }
31
+ function outdatedSdk(project) {
32
+ return new CliError("project_sdk_outdated", `The terse-sdk installed in ${project} does not support this CLI's actor tooling. Update terse-sdk in this project.`);
33
+ }
34
+ //# sourceMappingURL=projectActorTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectActorTools.js","sourceRoot":"","sources":["../src/projectActorTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIxC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe;IACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;IAC9D,KAAK,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,yBAAyB,EAAE,aAAa,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACjG,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,UAAU;YAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;IACtE,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACpD,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACjG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;QACjE,OAAO,KAAK,CAAA;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,QAAQ;YAAE,MAAM,KAAK,CAAA;QAC1C,IAAK,KAA+B,CAAC,IAAI,KAAK,+BAA+B;YAAE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAA;QACzG,MAAM,IAAI,QAAQ,CAAC,yBAAyB,EAAE,mCAAmC,OAAO,qFAAqF,EAAE;YAC3K,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SACjE,CAAC,CAAA;IACN,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAChC,OAAO,IAAI,QAAQ,CAAC,sBAAsB,EAAE,8BAA8B,OAAO,+EAA+E,CAAC,CAAA;AACrK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"actorCodegen.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/actorCodegen.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAI3D,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CA+C5E"}
1
+ {"version":3,"file":"actorCodegen.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/actorCodegen.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAI3D,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAqD5E"}
@@ -1,23 +1,23 @@
1
- import { generateTypeScript } from "durable-actors/codegen";
2
- import { ActorCompiler } from "durable-actors/compiler";
3
- import fs from "node:fs/promises";
4
1
  import path from "node:path";
5
2
  import { formatActorDiagnostic } from "terse-types/ActorDiagnostics";
6
3
  import ts from "typescript";
7
4
  import { CliError } from "../../cliError.js";
5
+ import { loadProjectActorTools } from "../../projectActorTools.js";
8
6
  import { readProjectConfigOrBail } from "../../projectConfig.js";
9
- import { ACTOR_ENTRY_FILE } from "./actorSources.js";
7
+ import { resolveActorEntryFile } from "./actorSources.js";
10
8
  export async function renderActorFiles(cwd) {
11
- if (!(await fs.stat(path.join(cwd, ACTOR_ENTRY_FILE)).catch(() => null)))
9
+ const entryFile = resolveActorEntryFile(cwd);
10
+ if (!entryFile)
12
11
  return [];
13
12
  try {
14
- const compiled = new ActorCompiler().compile(path.join(cwd, ACTOR_ENTRY_FILE));
15
- const actors = compiled.map(actor => actor.actorName).sort();
13
+ const { ActorCompiler, generateClientArtifacts } = await loadProjectActorTools(cwd);
14
+ const contract = new ActorCompiler().compileContract(path.join(cwd, entryFile));
15
+ const actors = contract.actors.map(actor => actor.actorName).sort();
16
16
  if (!actors.length)
17
17
  return [];
18
- const generated = await generateTypeScript(compiled.map(actor => actor.contract));
18
+ const generated = await generateClientArtifacts(contract);
19
19
  const { projectId } = readProjectConfigOrBail(cwd);
20
- const source = ts.createSourceFile("index.ts", generated.get("index.ts"), ts.ScriptTarget.Latest, true);
20
+ const source = ts.createSourceFile("index.ts", generated.get("index.d.ts"), ts.ScriptTarget.Latest, true);
21
21
  // Keep upstream's type declarations; authorization uses Terse's project-aware proxy below.
22
22
  const declarations = source.statements
23
23
  .filter(statement => ts.isModuleDeclaration(statement) && statement.name.text === "actors")
@@ -27,7 +27,11 @@ export async function renderActorFiles(cwd) {
27
27
  return [
28
28
  {
29
29
  fileName: "terse.generated/actors/types.ts",
30
- code: `// Generated by terse generate. Safe to import as types from browser or server code.\n${declarations}\n`
30
+ code: `// Generated by terse generate. Safe to import as types from browser or server code.\nimport type { ActorTypes as $ActorTypes } from "./declarations.js"\n${declarations}\n`
31
+ },
32
+ {
33
+ fileName: "terse.generated/actors/declarations.d.ts",
34
+ code: contract.typescript.declarations
31
35
  },
32
36
  {
33
37
  fileName: "terse.generated/server.ts",
@@ -1 +1 @@
1
- {"version":3,"file":"actorCodegen.js","sourceRoot":"","sources":["../../../src/providers/typescript/actorCodegen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actorCodegen.js","sourceRoot":"","sources":["../../../src/providers/typescript/actorCodegen.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAC9C,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,IAAI,CAAC;QACD,MAAM,EAAE,aAAa,EAAE,uBAAuB,EAAE,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAA;QACnF,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;QAC/E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;QACnE,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,EAAE,CAAA;QAC7B,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAA;QACzD,MAAM,EAAE,SAAS,EAAE,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,YAAY,CAAE,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC1G,2FAA2F;QAC3F,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU;aACjC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC;aAC1F,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC3C,IAAI,CAAC,MAAM,CAAC,CAAA;QACjB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kCAAkC,IAAI,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7H,OAAO;YACH;gBACI,QAAQ,EAAE,iCAAiC;gBAC3C,IAAI,EAAE,6JAA6J,YAAY,IAAI;aACtL;YACD;gBACI,QAAQ,EAAE,0CAA0C;gBACpD,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY;aACzC;YACD;gBACI,QAAQ,EAAE,2BAA2B;gBACrC,IAAI,EAAE;;;;mBAIH,WAAW;;;;;;iDAMmB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;;;;;CAOzE;aACY;SACJ,CAAA;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,QAAQ;YAAE,MAAM,KAAK,CAAA;QAC1C,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5F,MAAM,IAAI,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAA;IACzD,CAAC;AACL,CAAC"}
@@ -1,4 +1,6 @@
1
- export declare const ACTOR_ENTRY_FILE = "src/actors.ts";
1
+ import { ACTOR_ENTRY_FILE } from "terse-types/ActorSource";
2
+ export { ACTOR_ENTRY_FILE };
3
+ export declare function resolveActorEntryFile(cwd: string): string | undefined;
2
4
  export declare function loadActorTypes(cwd: string): Promise<string[]>;
3
- export declare function loadActorContract(cwd: string): Promise<import("durable-actors/codegen").PublicActorContract | undefined>;
5
+ export declare function loadActorContract(cwd: string): Promise<import("durable-actors/compiler").PublicActorContract | undefined>;
4
6
  //# sourceMappingURL=actorSources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"actorSources.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/actorSources.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gBAAgB,kBAAkB,CAAA;AAE/C,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGnE;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,6EASlD"}
1
+ {"version":3,"file":"actorSources.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/actorSources.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,yBAAyB,CAAA;AAK9E,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAE3B,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAErE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGnE;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,8EAWlD"}
@@ -1,22 +1,29 @@
1
- import { ActorCompiler } from "durable-actors/compiler";
2
1
  import fs from "node:fs";
3
2
  import path from "node:path";
4
3
  import { formatActorDiagnostic } from "terse-types/ActorDiagnostics";
4
+ import { ACTOR_ENTRY_FILE, findActorEntryFile } from "terse-types/ActorSource";
5
5
  import { CliError } from "../../cliError.js";
6
- export const ACTOR_ENTRY_FILE = "src/actors.ts";
6
+ import { loadProjectActorTools } from "../../projectActorTools.js";
7
+ export { ACTOR_ENTRY_FILE };
8
+ export function resolveActorEntryFile(cwd) {
9
+ return findActorEntryFile(file => fs.existsSync(path.join(cwd, file)));
10
+ }
7
11
  export async function loadActorTypes(cwd) {
8
12
  const contract = await loadActorContract(cwd);
9
13
  return contract?.actors.map(actor => actor.actorName).sort() ?? [];
10
14
  }
11
15
  export async function loadActorContract(cwd) {
12
- const entryFile = ACTOR_ENTRY_FILE;
13
- const entry = path.join(cwd, entryFile);
14
- if (!fs.existsSync(entry))
16
+ const entryFile = resolveActorEntryFile(cwd);
17
+ if (!entryFile)
15
18
  return undefined;
19
+ const entry = path.join(cwd, entryFile);
16
20
  try {
21
+ const { ActorCompiler } = await loadProjectActorTools(cwd);
17
22
  return new ActorCompiler().compileContract(entry);
18
23
  }
19
24
  catch (error) {
25
+ if (error instanceof CliError)
26
+ throw error;
20
27
  throw new CliError("invalid_actor_definition", `${entryFile}: ${formatActorDiagnostic(error instanceof Error ? error.message : String(error))}`);
21
28
  }
22
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"actorSources.js","sourceRoot":"","sources":["../../../src/providers/typescript/actorSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAA;AAE/C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC5C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC7C,OAAO,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAA;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC3C,IAAI,CAAC;QACD,OAAO,IAAI,aAAa,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,QAAQ,CAAC,0BAA0B,EAAE,GAAG,SAAS,KAAK,qBAAqB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;IACpJ,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"actorSources.js","sourceRoot":"","sources":["../../../src/providers/typescript/actorSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAElE,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAE3B,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC7C,OAAO,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC5C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC7C,OAAO,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC/C,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACvC,IAAI,CAAC;QACD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAA;QAC1D,OAAO,IAAI,aAAa,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,KAAK,YAAY,QAAQ;YAAE,MAAM,KAAK,CAAA;QAC1C,MAAM,IAAI,QAAQ,CAAC,0BAA0B,EAAE,GAAG,SAAS,KAAK,qBAAqB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;IACpJ,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "terse-cli",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "repository": {
@@ -30,16 +30,17 @@
30
30
  "dotenv": "^17.4.2",
31
31
  "fflate": "^0.8.0",
32
32
  "handlebars": "^4.7.9",
33
+ "import-meta-resolve": "^4.2.0",
33
34
  "json-schema-to-typescript": "^15.0.4",
34
- "durable-actors": "0.3.1",
35
+ "durable-actors": "0.4.5",
35
36
  "little-durable": "0.1.3",
36
37
  "luxon": "^3.7.2",
37
38
  "ora": "^8.0.0",
38
39
  "tsx": "^4.0.0",
39
40
  "typescript": "^5.0.0",
40
41
  "zod": "^4.3.6",
41
- "terse-sdk": "0.6.2",
42
- "terse-types": "0.6.2"
42
+ "terse-sdk": "0.6.4",
43
+ "terse-types": "0.6.4"
43
44
  },
44
45
  "devDependencies": {
45
46
  "@types/luxon": "^3.7.1",