@chainlink/cre-sdk 1.3.1 → 1.4.0-alpha.1

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 (81) hide show
  1. package/README.md +7 -1
  2. package/bin/cre-compile.ts +23 -6
  3. package/dist/generated/networks.d.ts +2 -2
  4. package/dist/generated/networks.js +0 -238
  5. package/package.json +1 -1
  6. package/scripts/run.ts +5 -1
  7. package/scripts/src/compile-cli-args.test.ts +32 -0
  8. package/scripts/src/compile-cli-args.ts +35 -0
  9. package/scripts/src/compile-to-js.test.ts +90 -0
  10. package/scripts/src/compile-to-js.ts +46 -7
  11. package/scripts/src/compile-workflow.ts +51 -12
  12. package/scripts/src/typecheck-workflow.test.ts +77 -0
  13. package/scripts/src/typecheck-workflow.ts +96 -0
  14. package/dist/generated/chain-selectors/mainnet/evm/ab-mainnet.d.ts +0 -3
  15. package/dist/generated/chain-selectors/mainnet/evm/ab-mainnet.js +0 -12
  16. package/dist/generated/chain-selectors/mainnet/evm/adi-mainnet.d.ts +0 -3
  17. package/dist/generated/chain-selectors/mainnet/evm/adi-mainnet.js +0 -12
  18. package/dist/generated/chain-selectors/mainnet/evm/edge-mainnet.d.ts +0 -3
  19. package/dist/generated/chain-selectors/mainnet/evm/edge-mainnet.js +0 -12
  20. package/dist/generated/chain-selectors/mainnet/evm/everclear-mainnet.d.ts +0 -3
  21. package/dist/generated/chain-selectors/mainnet/evm/everclear-mainnet.js +0 -12
  22. package/dist/generated/chain-selectors/mainnet/evm/gate-chain-mainnet.d.ts +0 -3
  23. package/dist/generated/chain-selectors/mainnet/evm/gate-chain-mainnet.js +0 -12
  24. package/dist/generated/chain-selectors/mainnet/evm/gate-layer-mainnet.d.ts +0 -3
  25. package/dist/generated/chain-selectors/mainnet/evm/gate-layer-mainnet.js +0 -12
  26. package/dist/generated/chain-selectors/mainnet/evm/jovay-mainnet.d.ts +0 -3
  27. package/dist/generated/chain-selectors/mainnet/evm/jovay-mainnet.js +0 -12
  28. package/dist/generated/chain-selectors/mainnet/evm/megaeth-mainnet.d.ts +0 -3
  29. package/dist/generated/chain-selectors/mainnet/evm/megaeth-mainnet.js +0 -12
  30. package/dist/generated/chain-selectors/mainnet/evm/pharos-mainnet.d.ts +0 -3
  31. package/dist/generated/chain-selectors/mainnet/evm/pharos-mainnet.js +0 -12
  32. package/dist/generated/chain-selectors/mainnet/evm/stable-mainnet.d.ts +0 -3
  33. package/dist/generated/chain-selectors/mainnet/evm/stable-mainnet.js +0 -12
  34. package/dist/generated/chain-selectors/mainnet/evm/tempo-mainnet.d.ts +0 -3
  35. package/dist/generated/chain-selectors/mainnet/evm/tempo-mainnet.js +0 -12
  36. package/dist/generated/chain-selectors/testnet/evm/0g-testnet-galileo-1.d.ts +0 -3
  37. package/dist/generated/chain-selectors/testnet/evm/0g-testnet-galileo-1.js +0 -12
  38. package/dist/generated/chain-selectors/testnet/evm/ab-testnet.d.ts +0 -3
  39. package/dist/generated/chain-selectors/testnet/evm/ab-testnet.js +0 -12
  40. package/dist/generated/chain-selectors/testnet/evm/adi-testnet.d.ts +0 -3
  41. package/dist/generated/chain-selectors/testnet/evm/adi-testnet.js +0 -12
  42. package/dist/generated/chain-selectors/testnet/evm/arc-testnet.d.ts +0 -3
  43. package/dist/generated/chain-selectors/testnet/evm/arc-testnet.js +0 -12
  44. package/dist/generated/chain-selectors/testnet/evm/celo-sepolia.d.ts +0 -3
  45. package/dist/generated/chain-selectors/testnet/evm/celo-sepolia.js +0 -12
  46. package/dist/generated/chain-selectors/testnet/evm/dogeos-testnet-chikyu.d.ts +0 -3
  47. package/dist/generated/chain-selectors/testnet/evm/dogeos-testnet-chikyu.js +0 -12
  48. package/dist/generated/chain-selectors/testnet/evm/edge-testnet.d.ts +0 -3
  49. package/dist/generated/chain-selectors/testnet/evm/edge-testnet.js +0 -12
  50. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-hoodi-morph.d.ts +0 -3
  51. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-hoodi-morph.js +0 -12
  52. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-hoodi-taiko-1.d.ts +0 -3
  53. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-hoodi-taiko-1.js +0 -12
  54. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-hoodi-taiko.d.ts +0 -3
  55. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-hoodi-taiko.js +0 -12
  56. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-hoodi.d.ts +0 -3
  57. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-hoodi.js +0 -12
  58. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-ronin-1.d.ts +0 -3
  59. package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-ronin-1.js +0 -12
  60. package/dist/generated/chain-selectors/testnet/evm/everclear-testnet-sepolia.d.ts +0 -3
  61. package/dist/generated/chain-selectors/testnet/evm/everclear-testnet-sepolia.js +0 -12
  62. package/dist/generated/chain-selectors/testnet/evm/gate-chain-testnet-meteora.d.ts +0 -3
  63. package/dist/generated/chain-selectors/testnet/evm/gate-chain-testnet-meteora.js +0 -12
  64. package/dist/generated/chain-selectors/testnet/evm/gate-layer-testnet.d.ts +0 -3
  65. package/dist/generated/chain-selectors/testnet/evm/gate-layer-testnet.js +0 -12
  66. package/dist/generated/chain-selectors/testnet/evm/megaeth-testnet-2.d.ts +0 -3
  67. package/dist/generated/chain-selectors/testnet/evm/megaeth-testnet-2.js +0 -12
  68. package/dist/generated/chain-selectors/testnet/evm/pharos-atlantic-testnet.d.ts +0 -3
  69. package/dist/generated/chain-selectors/testnet/evm/pharos-atlantic-testnet.js +0 -12
  70. package/dist/generated/chain-selectors/testnet/evm/robinhood-testnet.d.ts +0 -3
  71. package/dist/generated/chain-selectors/testnet/evm/robinhood-testnet.js +0 -12
  72. package/dist/generated/chain-selectors/testnet/evm/sonic-testnet.d.ts +0 -3
  73. package/dist/generated/chain-selectors/testnet/evm/sonic-testnet.js +0 -12
  74. package/dist/generated/chain-selectors/testnet/evm/stable-testnet.d.ts +0 -3
  75. package/dist/generated/chain-selectors/testnet/evm/stable-testnet.js +0 -12
  76. package/dist/generated/chain-selectors/testnet/evm/tempo-testnet-moderato.d.ts +0 -3
  77. package/dist/generated/chain-selectors/testnet/evm/tempo-testnet-moderato.js +0 -12
  78. package/dist/generated/chain-selectors/testnet/evm/tempo-testnet.d.ts +0 -3
  79. package/dist/generated/chain-selectors/testnet/evm/tempo-testnet.js +0 -12
  80. package/dist/generated/chain-selectors/testnet/evm/xlayer-testnet.d.ts +0 -3
  81. package/dist/generated/chain-selectors/testnet/evm/xlayer-testnet.js +0 -12
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,33 +1,50 @@
1
1
  #!/usr/bin/env bun
2
2
 
3
3
  import { main as compileWorkflow } from "../scripts/src/compile-workflow";
4
+ import { parseCompileCliArgs, skipTypeChecksFlag } from "../scripts/src/compile-cli-args";
5
+ import { WorkflowTypecheckError } from "../scripts/src/typecheck-workflow";
4
6
  import { WorkflowRuntimeCompatibilityError } from "../scripts/src/validate-workflow-runtime-compat";
5
7
 
6
8
  const main = async () => {
7
- const cliArgs = process.argv.slice(2);
9
+ let inputPath: string | undefined;
10
+ let outputPathArg: string | undefined;
11
+ let skipTypeChecks = false;
8
12
 
9
- const inputPath = cliArgs[0];
10
- const outputPathArg = cliArgs[1];
13
+ try {
14
+ const parsed = parseCompileCliArgs(process.argv.slice(2));
15
+ inputPath = parsed.inputPath;
16
+ outputPathArg = parsed.outputPath;
17
+ skipTypeChecks = parsed.skipTypeChecks;
18
+ } catch (error) {
19
+ console.error(error instanceof Error ? error.message : error);
20
+ console.error(
21
+ `Usage: cre-compile <path/to/workflow.ts> [path/to/output.wasm] [${skipTypeChecksFlag}]`
22
+ );
23
+ process.exit(1);
24
+ }
11
25
 
12
26
  if (!inputPath) {
13
27
  console.error(
14
- "Usage: cre-compile <path/to/workflow.ts> [path/to/output.wasm]"
28
+ `Usage: cre-compile <path/to/workflow.ts> [path/to/output.wasm] [${skipTypeChecksFlag}]`
15
29
  );
16
30
  console.error("Examples:");
17
31
  console.error(" cre-compile src/standard_tests/secrets/test.ts");
18
32
  console.error(
19
33
  " cre-compile src/standard_tests/secrets/test.ts .temp/standard_tests/secrets/test.wasm"
20
34
  );
35
+ console.error(
36
+ ` cre-compile src/standard_tests/secrets/test.ts .temp/standard_tests/secrets/test.wasm ${skipTypeChecksFlag}`
37
+ );
21
38
  process.exit(1);
22
39
  }
23
40
 
24
41
  // Delegate to the compile-workflow script
25
- await compileWorkflow(inputPath, outputPathArg);
42
+ await compileWorkflow(inputPath, outputPathArg, { skipTypeChecks });
26
43
  };
27
44
 
28
45
  // CLI entry point
29
46
  main().catch((e) => {
30
- if (e instanceof WorkflowRuntimeCompatibilityError) {
47
+ if (e instanceof WorkflowRuntimeCompatibilityError || e instanceof WorkflowTypecheckError) {
31
48
  console.error(`\n❌ ${e.message}`);
32
49
  } else {
33
50
  console.error(e);
@@ -1,7 +1,7 @@
1
1
  import type { NetworkInfo } from '../sdk/utils/chain-selectors/types';
2
2
  export declare const allNetworks: NetworkInfo[];
3
3
  export declare const mainnet: {
4
- readonly evm: readonly [NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo];
4
+ readonly evm: readonly [NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo];
5
5
  readonly solana: readonly [NetworkInfo];
6
6
  readonly aptos: readonly [NetworkInfo];
7
7
  readonly sui: readonly [NetworkInfo];
@@ -9,7 +9,7 @@ export declare const mainnet: {
9
9
  readonly tron: readonly [NetworkInfo];
10
10
  };
11
11
  export declare const testnet: {
12
- readonly evm: readonly [NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo];
12
+ readonly evm: readonly [NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo, NetworkInfo];
13
13
  readonly solana: readonly [NetworkInfo, NetworkInfo];
14
14
  readonly aptos: readonly [NetworkInfo, NetworkInfo];
15
15
  readonly sui: readonly [NetworkInfo, NetworkInfo];