@chainlink/cre-sdk 1.6.0-alpha.2 → 1.6.0-alpha.3

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 (38) hide show
  1. package/README.md +7 -1
  2. package/bin/cre-compile.ts +34 -17
  3. package/dist/generated/capabilities/blockchain/aptos/v1alpha/client_pb.d.ts +1023 -0
  4. package/dist/generated/capabilities/blockchain/aptos/v1alpha/client_pb.js +290 -0
  5. package/dist/generated/capabilities/blockchain/solana/v1alpha/client_pb.d.ts +2904 -0
  6. package/dist/generated/capabilities/blockchain/solana/v1alpha/client_pb.js +506 -0
  7. package/dist/generated-sdk/capabilities/blockchain/aptos/v1alpha/client_sdk_gen.d.ts +52 -0
  8. package/dist/generated-sdk/capabilities/blockchain/aptos/v1alpha/client_sdk_gen.js +186 -0
  9. package/dist/generated-sdk/capabilities/blockchain/solana/v1alpha/client_sdk_gen.d.ts +92 -0
  10. package/dist/generated-sdk/capabilities/blockchain/solana/v1alpha/client_sdk_gen.js +343 -0
  11. package/dist/sdk/cre/index.d.ts +6 -0
  12. package/dist/sdk/cre/index.js +8 -0
  13. package/dist/sdk/report.js +0 -15
  14. package/dist/sdk/test/generated/capabilities/blockchain/aptos/v1alpha/aptos_mock_gen.d.ts +25 -0
  15. package/dist/sdk/test/generated/capabilities/blockchain/aptos/v1alpha/aptos_mock_gen.js +111 -0
  16. package/dist/sdk/test/generated/capabilities/blockchain/solana/v1alpha/solana_mock_gen.d.ts +33 -0
  17. package/dist/sdk/test/generated/capabilities/blockchain/solana/v1alpha/solana_mock_gen.js +178 -0
  18. package/dist/sdk/test/generated/index.d.ts +2 -0
  19. package/dist/sdk/test/generated/index.js +2 -0
  20. package/package.json +3 -3
  21. package/scripts/run-standard-tests.sh +3 -3
  22. package/scripts/run.ts +6 -1
  23. package/scripts/src/check-determinism.test.ts +64 -0
  24. package/scripts/src/check-determinism.ts +32 -0
  25. package/scripts/src/compile-cli-args.test.ts +32 -0
  26. package/scripts/src/compile-cli-args.ts +35 -0
  27. package/scripts/src/compile-to-js.test.ts +90 -0
  28. package/scripts/src/compile-to-js.ts +53 -7
  29. package/scripts/src/compile-to-wasm.ts +18 -32
  30. package/scripts/src/compile-workflow.ts +55 -27
  31. package/scripts/src/generate-chain-selectors.ts +9 -27
  32. package/scripts/src/generate-sdks.ts +12 -0
  33. package/scripts/src/typecheck-workflow.test.ts +77 -0
  34. package/scripts/src/typecheck-workflow.ts +96 -0
  35. package/scripts/src/validate-shared.ts +400 -0
  36. package/scripts/src/validate-workflow-determinism.test.ts +409 -0
  37. package/scripts/src/validate-workflow-determinism.ts +545 -0
  38. package/scripts/src/validate-workflow-runtime-compat.ts +25 -377
package/README.md CHANGED
@@ -58,10 +58,16 @@ CRE workflows are compiled to WASM and executed through Javy (QuickJS). This is
58
58
 
59
59
  - Node built-ins like `node:fs`, `node:crypto`, `node:http`, `node:net`, etc. are not supported in workflows.
60
60
  - Browser globals like `fetch`, `window`, and `setTimeout` are also not available in workflow runtime.
61
- - `cre compile:workflow` / `cre-compile` now validates workflow source and fails fast when unsupported APIs are used.
61
+ - `cre compile:workflow` / `cre-compile` now typechecks your workflow project first (using your nearest `tsconfig.json`), then validates workflow source and fails fast when unsupported APIs are used.
62
62
 
63
63
  Use CRE capabilities (for example, `cre.capabilities.HTTPClient`) instead of direct Node/browser APIs.
64
64
 
65
+ If you need to compile despite TypeScript errors, pass `--skip-type-checks`:
66
+
67
+ ```bash
68
+ bun x cre-compile src/workflow.ts dist/workflow.wasm --skip-type-checks
69
+ ```
70
+
65
71
  ## Getting Started
66
72
 
67
73
  We recommend you consult the [getting started docs](https://docs.chain.link/cre/getting-started/cli-installation) and install the CRE CLI.
@@ -1,38 +1,55 @@
1
1
  #!/usr/bin/env bun
2
2
 
3
3
  import { main as compileWorkflow } from "../scripts/src/compile-workflow";
4
- import { parseCompileFlags } from "../../cre-sdk-javy-plugin/scripts/parse-compile-flags";
4
+ import {
5
+ parseCompileCliArgs,
6
+ skipTypeChecksFlag,
7
+ } from "../scripts/src/compile-cli-args";
8
+ import { WorkflowTypecheckError } from "../scripts/src/typecheck-workflow";
5
9
  import { WorkflowRuntimeCompatibilityError } from "../scripts/src/validate-workflow-runtime-compat";
6
10
 
7
11
  const main = async () => {
8
- const cliArgs = process.argv.slice(2);
9
- const { creExports, plugin, rest } = parseCompileFlags(cliArgs);
12
+ let inputPath: string | undefined;
13
+ let outputPathArg: string | undefined;
14
+ let skipTypeChecks = false;
10
15
 
11
- const inputPath = rest[0];
12
- const outputPathArg = rest[1];
13
-
14
- if (!inputPath) {
16
+ try {
17
+ const parsed = parseCompileCliArgs(process.argv.slice(2));
18
+ inputPath = parsed.inputPath;
19
+ outputPathArg = parsed.outputPath;
20
+ skipTypeChecks = parsed.skipTypeChecks;
21
+ } catch (error) {
22
+ console.error(error instanceof Error ? error.message : error);
15
23
  console.error(
16
- "Usage: cre-compile [--plugin <path>] [--cre-exports <crate-dir>]... <path/to/workflow.ts> [path/to/output.wasm]"
24
+ `Usage: cre-compile <path/to/workflow.ts> [path/to/output.wasm] [${skipTypeChecksFlag}]`,
17
25
  );
18
26
  process.exit(1);
19
27
  }
20
28
 
21
- if (plugin !== null && creExports.length > 0) {
22
- console.error("❌ Error: --plugin and --cre-exports are mutually exclusive.");
29
+ if (!inputPath) {
30
+ console.error(
31
+ `Usage: cre-compile <path/to/workflow.ts> [path/to/output.wasm] [${skipTypeChecksFlag}]`,
32
+ );
33
+ console.error("Examples:");
34
+ console.error(" cre-compile src/standard_tests/secrets/test.ts");
35
+ console.error(
36
+ " cre-compile src/standard_tests/secrets/test.ts .temp/standard_tests/secrets/test.wasm",
37
+ );
38
+ console.error(
39
+ ` cre-compile src/standard_tests/secrets/test.ts .temp/standard_tests/secrets/test.wasm ${skipTypeChecksFlag}`,
40
+ );
23
41
  process.exit(1);
24
42
  }
25
43
 
26
- await compileWorkflow(
27
- inputPath,
28
- outputPathArg,
29
- creExports.length > 0 ? creExports : undefined,
30
- plugin ?? undefined,
31
- );
44
+ await compileWorkflow(inputPath, outputPathArg, { skipTypeChecks });
32
45
  };
33
46
 
47
+ // CLI entry point
34
48
  main().catch((e) => {
35
- if (e instanceof WorkflowRuntimeCompatibilityError) {
49
+ if (
50
+ e instanceof WorkflowRuntimeCompatibilityError ||
51
+ e instanceof WorkflowTypecheckError
52
+ ) {
36
53
  console.error(`\n❌ ${e.message}`);
37
54
  } else {
38
55
  console.error(e);