From e91539f7e2ee4f4f43cca9a1b0ebc2b1eaf73241 Mon Sep 17 00:00:00 2001 From: Benjamin DeMann Date: Wed, 3 Jul 2024 09:32:42 -0600 Subject: [PATCH] bonus return types --- benchmark/index.ts | 2 +- benchmark/markdown.ts | 4 +- benchmark/setup.ts | 2 +- dfx/index.ts | 4 +- examples/apollo_server/src/index.ts | 21 +++- .../src/backend/range_response.ts | 2 +- examples/basic_bitcoin/test/bitcoin.ts | 6 +- examples/bitcoin/test/setup.ts | 2 +- .../scripts/bitcoin/transaction_count.js | 1 + examples/ckbtc/test/pretest.ts | 2 +- examples/ckbtc/wallet/backend/index.ts | 2 +- .../ckbtc/wallet/frontend/elements/ck-app.ts | 23 ++--- .../composite_queries/src/canister1/index.ts | 4 +- examples/ethereum_json_rpc/src/index.ts | 7 +- examples/express/src/backend/index.ts | 2 +- examples/express/src/frontend/index.ts | 12 +-- examples/fetch_ic/src/frontend/index.ts | 36 +++---- examples/guard_functions/src/guards.ts | 14 +-- examples/hello_world/src/frontend/index.ts | 6 +- examples/imports/src/library.ts | 6 +- .../internet_identity/src/frontend/index.ts | 14 +-- .../large_files/test/generate_test_files.ts | 2 +- examples/large_files/test/tests.ts | 2 +- examples/management_canister/src/index.ts | 2 +- examples/management_canister/test/tests.ts | 2 +- .../threshold_ecdsa/src/index.ts | 4 +- examples/nest/src/app.controller.ts | 2 +- examples/nest/src/cats/cats.controller.ts | 2 +- examples/nest/src/dogs/dogs.controller.ts | 2 +- examples/nest/src/main.ts | 2 +- .../robust_imports/src/azle_coverage/index.ts | 2 +- .../src/type_alias_decls/index.ts | 2 +- examples/sqlite/src/entities/posts/router.ts | 2 +- examples/sqlite/src/entities/users/router.ts | 2 +- .../src/entities/users/router.ts | 2 +- .../src/entities/posts/router.ts | 2 +- .../src/entities/users/router.ts | 2 +- examples/tfjs/src/api.ts | 2 +- examples/timers/src/timers.ts | 6 +- examples/vanilla_js/src/library.js | 1 + http_client/fetch_ic/call.ts | 2 +- http_client/fetch_ic/index.ts | 4 +- .../constructed/tuple_arb/definition_arb.ts | 4 +- .../constructed/tuple_arb/values_arbs.ts | 4 +- .../candid/constructed/vec_arb/values_arb.ts | 2 +- .../candid/primitive/ints/index.ts | 2 +- .../candid/primitive/nats/index.ts | 2 +- .../candid/reference/principal_arb.ts | 2 +- .../reference/service_arb/definition_arb.ts | 4 +- .../service_arb/service_method_arb.ts | 2 +- .../candid/to_src_literal/string.ts | 2 +- property_tests/arbitraries/canister_arb.ts | 4 +- .../inspect_message_method_arb.ts | 2 +- .../pre_upgrade_method_arb.ts | 2 +- .../canister_methods/query_method_arb.ts | 2 +- .../canister_methods/update_method_arb.ts | 2 +- property_tests/arbitraries/http/body_arb.ts | 2 +- .../arbitraries/http/headers_arb.ts | 2 +- .../arbitraries/http/response_arb.ts | 2 +- .../arbitraries/unique_identifier_arb.ts | 4 +- .../arbitraries/unique_primitive_arb.ts | 6 +- .../are_params_correctly_ordered.ts | 2 +- property_tests/get_actor.ts | 2 +- property_tests/index.ts | 2 +- property_tests/test/index.ts | 6 +- .../tests/blob/test/generate_tests.ts | 4 +- .../tests/bool/test/generate_tests.ts | 4 +- .../http_request/test/fletch.ts | 6 +- .../http_request/test/generate_body.ts | 15 +-- .../http_request/test/generate_tests.ts | 4 +- .../http_request_update/test/fletch.ts | 6 +- .../http_request_update/test/generate_body.ts | 15 +-- .../test/generate_tests.ts | 8 +- .../test/generate_callable_method_body.ts | 2 +- .../init/test/generate_init_body.ts | 2 +- .../init/test/generate_tests.ts | 4 +- .../inspect_message/test/generate_tests.ts | 4 +- .../test/generate_callable_method_body.ts | 2 +- .../test/generate_init_method_body.ts | 2 +- .../post_upgrade/test/generate_init_tests.ts | 4 +- .../test/generate_post_upgrade_method_body.ts | 2 +- .../test/generate_post_upgrade_tests.ts | 4 +- .../post_upgrade/test/global_var_name.ts | 4 +- .../canister_methods/pre_upgrade/test/test.ts | 6 +- .../query/test/generate_tests.ts | 4 +- .../update/test/generate_tests.ts | 4 +- .../tests/float32/test/generate_tests.ts | 4 +- .../tests/float64/test/generate_tests.ts | 4 +- .../tests/func/test/generate_tests.ts | 4 +- .../tests/int/test/generate_tests.ts | 4 +- .../tests/int16/test/generate_tests.ts | 4 +- .../tests/int32/test/generate_tests.ts | 4 +- .../tests/int64/test/generate_tests.ts | 4 +- .../tests/int8/test/generate_tests.ts | 4 +- .../tests/nat/test/generate_tests.ts | 4 +- .../tests/nat16/test/generate_tests.ts | 4 +- .../tests/nat32/test/generate_tests.ts | 4 +- .../tests/nat64/test/generate_tests.ts | 4 +- .../tests/nat8/test/generate_tests.ts | 4 +- .../tests/null/test/generate_tests.ts | 4 +- .../tests/opt/test/generate_tests.ts | 4 +- .../tests/principal/test/generate_tests.ts | 4 +- .../tests/record/test/generate_tests.ts | 4 +- .../tests/recursive/test/generate_tests.ts | 4 +- .../tests/service/test/generate_tests.ts | 4 +- .../stable_b_tree_map/test/contains_key.ts | 12 ++- .../tests/stable_b_tree_map/test/get.ts | 12 ++- .../tests/stable_b_tree_map/test/insert.ts | 8 +- .../tests/stable_b_tree_map/test/is_empty.ts | 12 ++- .../tests/stable_b_tree_map/test/items.ts | 12 ++- .../tests/stable_b_tree_map/test/keys.ts | 12 ++- .../tests/stable_b_tree_map/test/len.ts | 12 ++- .../tests/stable_b_tree_map/test/remove.ts | 8 +- .../tests/stable_b_tree_map/test/values.ts | 12 ++- .../tests/text/test/generate_tests.ts | 4 +- .../tests/tuple/test/generate_tests.ts | 4 +- .../tests/variant/test/generate_tests.ts | 4 +- .../tests/vec/test/generate_tests.ts | 4 +- property_tests/visitors/cli-string-visitor.ts | 4 +- scripts/add_metadata_to_dfx_json.js | 1 + scripts/class_migration/clean_package.js | 1 + .../copy_generated_candid_from_example.js | 1 + scripts/class_migration/delete_tests_file.js | 1 + scripts/file_generator/index.ts | 14 ++- scripts/file_generator/main.ts | 4 +- scripts/hash_file/main.ts | 2 +- scripts/reorder_dfx_json.js | 1 + scripts/simplify_tsconfig.js | 1 + scripts/update_dfx_json_main.js | 1 + src/compiler/compile_rust_code.ts | 6 +- ...rust_code_with_candid_and_compiler_info.ts | 2 +- src/compiler/custom_js_modules/perf_hooks.ts | 2 +- src/compiler/file_uploader/expand_paths.ts | 4 +- src/compiler/file_uploader/index.ts | 5 +- src/compiler/file_uploader/on_before_exit.ts | 7 +- src/compiler/file_uploader/ongoing_hashes.ts | 4 +- src/compiler/file_uploader/upload_file.ts | 4 +- src/compiler/file_watcher/file_watcher.ts | 2 +- .../file_watcher/setup_file_watcher.ts | 2 +- .../generate_candid_and_canister_methods.ts | 96 +++++++++---------- src/compiler/get_consumer_config.ts | 2 +- src/compiler/handle_cli.ts | 10 +- src/compiler/index.ts | 8 +- src/compiler/new_command.ts | 2 +- src/compiler/prepare_docker_image.ts | 12 +-- src/compiler/prepare_rust_staging_area.ts | 2 +- src/compiler/utils/global_paths.ts | 2 +- .../candid/did_file/visitor/visit/service.ts | 2 +- .../visitors/visit/variant/azle_result.ts | 3 +- .../visitors/visit/variant/azle_variant.ts | 3 +- src/lib/candid/types/constructed/blob.ts | 8 +- src/lib/candid/types/constructed/opt.ts | 8 +- src/lib/candid/types/constructed/record.ts | 4 +- src/lib/candid/types/constructed/tuple.ts | 6 +- src/lib/candid/types/constructed/variant.ts | 4 +- src/lib/candid/types/constructed/vec.ts | 8 +- src/lib/candid/types/primitive/bool.ts | 8 +- src/lib/candid/types/primitive/empty.ts | 8 +- .../candid/types/primitive/floats/float32.ts | 8 +- .../candid/types/primitive/floats/float64.ts | 8 +- src/lib/candid/types/primitive/ints/int.ts | 8 +- src/lib/candid/types/primitive/ints/int16.ts | 8 +- src/lib/candid/types/primitive/ints/int32.ts | 8 +- src/lib/candid/types/primitive/ints/int64.ts | 8 +- src/lib/candid/types/primitive/ints/int8.ts | 8 +- src/lib/candid/types/primitive/nats/nat.ts | 8 +- src/lib/candid/types/primitive/nats/nat16.ts | 8 +- src/lib/candid/types/primitive/nats/nat32.ts | 8 +- src/lib/candid/types/primitive/nats/nat64.ts | 8 +- src/lib/candid/types/primitive/nats/nat8.ts | 8 +- src/lib/candid/types/primitive/null.ts | 8 +- src/lib/candid/types/primitive/reserved.ts | 6 +- src/lib/candid/types/primitive/text.ts | 8 +- src/lib/candid/types/primitive/void.ts | 6 +- src/lib/candid/types/reference/func.ts | 8 +- src/lib/candid/types/reference/principal.ts | 8 +- .../service/canister_function/index.ts | 2 +- .../service/canister_function/query_update.ts | 2 +- src/lib/canister_methods/execute_method.ts | 4 +- src/lib/canister_methods/is_async.ts | 2 +- src/lib/canister_methods/methods/heartbeat.ts | 2 +- src/lib/canister_methods/methods/init.ts | 2 +- .../methods/inspect_message.ts | 2 +- .../canister_methods/methods/post_upgrade.ts | 2 +- src/lib/canister_methods/methods/query.ts | 2 +- src/lib/canister_methods/methods/update.ts | 2 +- src/lib/fetch/headers.ts | 20 ++-- src/lib/fetch/index.ts | 4 +- src/lib/globals.ts | 10 +- src/lib/ic/call_raw.ts | 6 +- src/lib/ic/call_raw_128.ts | 6 +- src/lib/ic/set_outgoing_http_options.ts | 2 +- src/lib/ic/set_timer.ts | 2 +- src/lib/stable/error.ts | 6 +- src/lib/stable/execute_with_candid_serde.ts | 2 +- src/lib/stable/guard.ts | 2 +- src/lib/stable/ic_apis/call.ts | 6 +- .../ic_apis/set_outgoing_http_options.ts | 2 +- src/lib/stable/ic_apis/set_timer.ts | 2 +- src/lib/stable/init.ts | 2 +- src/lib/stable/mark_experimental.ts | 2 +- src/lib/stable/post_upgrade.ts | 2 +- src/lib/stable/query.ts | 2 +- src/lib/stable/update.ts | 2 +- src/lib/stable_structures/stable_json.ts | 4 +- src/lib/system_types/result.ts | 12 +-- 206 files changed, 591 insertions(+), 515 deletions(-) diff --git a/benchmark/index.ts b/benchmark/index.ts index 44de6f4a66..a18575d54b 100644 --- a/benchmark/index.ts +++ b/benchmark/index.ts @@ -516,7 +516,7 @@ function write_reports_to_file( output_file: string, benchmark_results: BenchmarkResult[], num_benchmark_iterations: number -) { +): void { const markdown_report = create_markdown_report( benchmark_results, num_benchmark_iterations, diff --git a/benchmark/markdown.ts b/benchmark/markdown.ts index d505cd7235..f38c3ff262 100644 --- a/benchmark/markdown.ts +++ b/benchmark/markdown.ts @@ -1655,7 +1655,7 @@ function generate_benchmarks_string( )}`; } -function format_number_to_rust(number: string | number | bigint) { +function format_number_to_rust(number: string | number | bigint): string { const number_is_negative = number.toString()[0] === '-'; const number_is_decimal_less_than_one = (number_is_negative === false && Number(number) < 1) || @@ -1683,7 +1683,7 @@ function format_number_to_rust(number: string | number | bigint) { ); } -function format_number_to_usd(number: number) { +function format_number_to_usd(number: number): string { return number.toLocaleString('en-US', { style: 'currency', currency: 'USD', diff --git a/benchmark/setup.ts b/benchmark/setup.ts index f3870cd0a2..d6a494957e 100644 --- a/benchmark/setup.ts +++ b/benchmark/setup.ts @@ -1,6 +1,6 @@ import { execSync } from 'child_process'; -export async function run_setup(argument?: string) { +export async function run_setup(argument?: string): Promise { execSync(`dfx canister create azle`, { stdio: 'inherit' }); diff --git a/dfx/index.ts b/dfx/index.ts index 180b1584a0..a2bb0814f2 100644 --- a/dfx/index.ts +++ b/dfx/index.ts @@ -28,7 +28,7 @@ export function getAgentHost(): string { : `http://127.0.0.1:${getWebServerPort()}`; } -export async function createAnonymousAgent() { +export async function createAnonymousAgent(): Promise { const agent = new HttpAgent({ host: getAgentHost() }); @@ -185,7 +185,7 @@ export function addController( canisterName: string, identityName: string, principal: string -) { +): Buffer { const currentIdentity = whoami(); console.info(); console.info(`Adding ${identityName} as a controller for ${canisterName}`); diff --git a/examples/apollo_server/src/index.ts b/examples/apollo_server/src/index.ts index 31629d5415..e39cc0c945 100644 --- a/examples/apollo_server/src/index.ts +++ b/examples/apollo_server/src/index.ts @@ -34,6 +34,17 @@ const typeDefs = `#graphql } `; +type Book = { + id: string; + title: string; + rating: number; +}; + +type Author = { + id: string; + name: string; +}; + let books = [ { id: '0', @@ -62,14 +73,14 @@ const authors = [ // This resolver retrieves books from the "books" array above. const resolvers = { Query: { - books: () => books, - authors: () => authors, - titles: () => { + books: (): Book[] => books, + authors: (): Author[] => authors, + titles: (): string[] => { return books.map((book) => book.title); } }, Mutation: { - createBook: (parent: any, args: any) => { + createBook: (parent: any, args: any): Book => { const book = { id: books.length.toString(), title: args.title, @@ -83,7 +94,7 @@ const resolvers = { } }; -async function init() { +async function init(): Promise { const app = express(); const server = new ApolloServer({ diff --git a/examples/audio_and_video/src/backend/range_response.ts b/examples/audio_and_video/src/backend/range_response.ts index e27fdeeb81..df81a96e6f 100644 --- a/examples/audio_and_video/src/backend/range_response.ts +++ b/examples/audio_and_video/src/backend/range_response.ts @@ -3,7 +3,7 @@ import { createReadStream, statSync } from 'fs'; import parseRange from 'range-parser'; export function rangeResponse(maxRange: number = 3_000_000) { - return async (req: Request, res: Response) => { + return async (req: Request, res: Response): Promise => { const filePath = req.originalUrl; const fileLength = statSync(filePath).size; diff --git a/examples/basic_bitcoin/test/bitcoin.ts b/examples/basic_bitcoin/test/bitcoin.ts index bf7d119c11..12c492881d 100644 --- a/examples/basic_bitcoin/test/bitcoin.ts +++ b/examples/basic_bitcoin/test/bitcoin.ts @@ -1,19 +1,19 @@ import { Transaction } from 'bitcoinjs-lib'; import { execSync } from 'child_process'; -export function generateToAddress(address: string, blocks: number) { +export function generateToAddress(address: string, blocks: number): void { execSync( `.bitcoin/bin/bitcoin-cli -conf=$(pwd)/.bitcoin.conf generatetoaddress ${blocks} ${address}` ); } -export function generate(blocks: number) { +export function generate(blocks: number): void { execSync( `.bitcoin/bin/bitcoin-cli -conf=$(pwd)/.bitcoin.conf -generate ${blocks}` ); } -export function createWallet(name: string) { +export function createWallet(name: string): void { execSync( `.bitcoin/bin/bitcoin-cli -conf=$(pwd)/.bitcoin.conf createwallet ${name}` ); diff --git a/examples/bitcoin/test/setup.ts b/examples/bitcoin/test/setup.ts index 3652aa25ca..28661b4756 100644 --- a/examples/bitcoin/test/setup.ts +++ b/examples/bitcoin/test/setup.ts @@ -68,7 +68,7 @@ export function createTransaction(from: Utxo, wallets: Wallets): string { return bitcoinCli.createRawTransaction(input, outputs); } -export function signTransaction(rawTransaction: string) { +export function signTransaction(rawTransaction: string): string { console.log(' - sign transaction'); return bitcoinCli.signRawTransactionWithWallet(rawTransaction).hex; } diff --git a/examples/bitcoin_psbt/scripts/bitcoin/transaction_count.js b/examples/bitcoin_psbt/scripts/bitcoin/transaction_count.js index 1785372ed5..63c8774d2b 100644 --- a/examples/bitcoin_psbt/scripts/bitcoin/transaction_count.js +++ b/examples/bitcoin_psbt/scripts/bitcoin/transaction_count.js @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/explicit-function-return-type */ // eslint-disable-next-line @typescript-eslint/no-var-requires const { execSync } = require('child_process'); diff --git a/examples/ckbtc/test/pretest.ts b/examples/ckbtc/test/pretest.ts index 29f6d9ce2a..5b1d9c5537 100644 --- a/examples/ckbtc/test/pretest.ts +++ b/examples/ckbtc/test/pretest.ts @@ -15,7 +15,7 @@ function pretest(): void { }); } -function uninstall(...canisterNames: string[]) { +function uninstall(...canisterNames: string[]): void { canisterNames.forEach((canisterName) => { execSync(`dfx canister uninstall-code ${canisterName} || true`, { stdio: 'inherit' diff --git a/examples/ckbtc/wallet/backend/index.ts b/examples/ckbtc/wallet/backend/index.ts index 15af27900e..a3c8415457 100644 --- a/examples/ckbtc/wallet/backend/index.ts +++ b/examples/ckbtc/wallet/backend/index.ts @@ -211,7 +211,7 @@ function padPrincipalWithZeros(blob: blob): blob { return newUin8Array; } -function setupCanisters() { +function setupCanisters(): void { ckBTC = ICRC( Principal.fromText( process.env.CK_BTC_PRINCIPAL ?? diff --git a/examples/ckbtc/wallet/frontend/elements/ck-app.ts b/examples/ckbtc/wallet/frontend/elements/ck-app.ts index b5118890ef..6526902d42 100644 --- a/examples/ckbtc/wallet/frontend/elements/ck-app.ts +++ b/examples/ckbtc/wallet/frontend/elements/ck-app.ts @@ -35,13 +35,13 @@ export class CkApp extends LitElement { @state() transferring: boolean = false; - async connectedCallback() { + async connectedCallback(): Promise { super.connectedCallback(); await this.authenticate(); } - async authenticate() { + async authenticate(): Promise { const authClient = await AuthClient.create(); if (await authClient.isAuthenticated()) { @@ -62,14 +62,14 @@ export class CkApp extends LitElement { } } - initialize() { + initialize(): void { this.createWalletBackend(); this.getBalance(); this.getBitcoinDepositAddress(); } - createWalletBackend() { + createWalletBackend(): void { const agent = new HttpAgent({ identity: this.identity }); @@ -89,7 +89,7 @@ export class CkApp extends LitElement { this.walletBackend = walletBackend; } - async getBalance() { + async getBalance(): Promise { if (this.walletBackend === undefined) { alert(`walletBackend has not been initialized`); return; @@ -102,7 +102,7 @@ export class CkApp extends LitElement { this.balance = result; } - async getBitcoinDepositAddress() { + async getBitcoinDepositAddress(): Promise { if (this.walletBackend === undefined) { alert(`walletBackend has not been initialized`); return; @@ -115,7 +115,7 @@ export class CkApp extends LitElement { this.bitcoinDepositAddress = result; } - async updateBalance() { + async updateBalance(): Promise { this.updatingBalance = true; if (this.walletBackend === undefined) { @@ -132,7 +132,7 @@ export class CkApp extends LitElement { this.updatingBalance = false; } - async transfer() { + async transfer(): Promise { this.transferring = true; if (this.walletBackend === undefined) { @@ -157,7 +157,7 @@ export class CkApp extends LitElement { this.transferring = false; } - render() { + render(): void { const identityPrincipalString = this.identity ? this.identity.getPrincipal().toText() : 'Loading...'; @@ -190,14 +190,15 @@ export class CkApp extends LitElement { .disabled=${this.transferring} type="text" .value=${this.transferTo} - @input=${(e: any) => (this.transferTo = e.target.value)} + @input=${(e: any): void => + (this.transferTo = e.target.value)} /> Amount: + @input=${(e: any): void => (this.transferAmount = BigInt(e.target.value))} />