diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 283a45483b..86d549f07d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -184,7 +184,6 @@ jobs: "tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes", "tests/end_to_end/candid_rpc/class_syntax/motoko_examples/threshold_ecdsa", "tests/end_to_end/candid_rpc/class_syntax/motoko_examples/whoami", - "tests/end_to_end/candid_rpc/class_syntax/new", "tests/end_to_end/candid_rpc/class_syntax/new_candid_rpc", "tests/end_to_end/candid_rpc/class_syntax/notify_raw", "tests/end_to_end/candid_rpc/class_syntax/null_example", @@ -284,6 +283,7 @@ jobs: "tests/end_to_end/http_server/internet_identity", "tests/end_to_end/http_server/large_files", "tests/end_to_end/http_server/nest", + "tests/end_to_end/http_server/new", "tests/end_to_end/http_server/open_value_sharing", "tests/end_to_end/http_server/sqlite", "tests/end_to_end/http_server/sqlite_drizzle", diff --git a/Cargo.toml b/Cargo.toml index 330e2b52ba..4b99d1b359 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,2 +1,2 @@ [workspace] -members = ["src/compiler/rust/canister", "src/compiler/rust/open_value_sharing"] +members = ["src/build/rust/canister", "src/build/rust/open_value_sharing"] diff --git a/canister_templates/experimental.wasm b/canister_templates/experimental.wasm index dc52bf0a3f..bad1f1c5ed 100644 Binary files a/canister_templates/experimental.wasm and b/canister_templates/experimental.wasm differ diff --git a/canister_templates/stable.wasm b/canister_templates/stable.wasm index 02f67a1cdc..32b954114b 100644 Binary files a/canister_templates/stable.wasm and b/canister_templates/stable.wasm differ diff --git a/dfx_extension/extension.json b/dfx_extension/extension.json index a09e3b4185..a6d2bab0f4 100644 --- a/dfx_extension/extension.json +++ b/dfx_extension/extension.json @@ -9,7 +9,7 @@ "canister_type": { "defaults": { "candid": ".azle/{{canister_name}}/{{canister_name}}.did", - "build": "npx azle {{canister_name}}", + "build": "npx azle compile {{canister_name}}", "post_install": "npx azle upload-assets {{canister_name}}", "wasm": ".azle/{{canister_name}}/{{canister_name}}.wasm", "gzip": true, diff --git a/examples/basic_bitcoin/dfx.json b/examples/basic_bitcoin/dfx.json index 1aef5b4771..3b25e15d22 100644 --- a/examples/basic_bitcoin/dfx.json +++ b/examples/basic_bitcoin/dfx.json @@ -3,9 +3,10 @@ "basic_bitcoin": { "type": "azle", "main": "src/index.ts", - "env": ["BITCOIN_NETWORK"], "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "env": ["BITCOIN_NETWORK"] } } }, diff --git a/examples/bitcoin_psbt/dfx.json b/examples/bitcoin_psbt/dfx.json index c9d6c73704..570326416e 100644 --- a/examples/bitcoin_psbt/dfx.json +++ b/examples/bitcoin_psbt/dfx.json @@ -3,9 +3,10 @@ "bitcoin_psbt": { "type": "azle", "main": "src/index.ts", - "env": ["BITCOIN_NETWORK"], "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "env": ["BITCOIN_NETWORK"] } } }, diff --git a/examples/ckbtc/dfx.json b/examples/ckbtc/dfx.json index b78aa81f82..cc0301ff8d 100644 --- a/examples/ckbtc/dfx.json +++ b/examples/ckbtc/dfx.json @@ -24,12 +24,15 @@ "type": "azle", "main": "wallet/backend/index.ts", "candid": "wallet/backend/index.did", - "candid_gen": "custom", - "env": ["CK_BTC_PRINCIPAL", "MINTER_PRINCIPAL"], - "assets": [["minter/minter.did", "minter/minter.did"]], "declarations": { "node_compatibility": true, "output": "wallet/frontend/dfx_generated/wallet_backend" + }, + "custom": { + "experimental": true, + "assets": [["minter/minter.did", "minter/minter.did"]], + "candid_gen": "custom", + "env": ["CK_BTC_PRINCIPAL", "MINTER_PRINCIPAL"] } }, "wallet_frontend": { diff --git a/examples/hello_world/dfx.json b/examples/hello_world/dfx.json index eb1d5f3751..cf250413ec 100644 --- a/examples/hello_world/dfx.json +++ b/examples/hello_world/dfx.json @@ -3,10 +3,10 @@ "backend": { "type": "azle", "main": "src/backend/index.ts", - "assets": [["src/frontend/dist", "dist"]], - "build_assets": "npm run build", "custom": { - "experimental": true + "experimental": true, + "assets": [["src/frontend/dist", "dist"]], + "build_assets": "npm run build" } } } diff --git a/examples/hello_world_candid_rpc/dfx.json b/examples/hello_world_candid_rpc/dfx.json index 065b304858..217f29901a 100644 --- a/examples/hello_world_candid_rpc/dfx.json +++ b/examples/hello_world_candid_rpc/dfx.json @@ -3,7 +3,6 @@ "hello_world": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/hello_world", "node_compatibility": true diff --git a/package-lock.json b/package-lock.json index f5035cf298..d8dbc80ff9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "uuid": "^9.0.1" }, "bin": { - "azle": "src/compiler/index.ts" + "azle": "src/build/index.ts" }, "devDependencies": { "@types/deep-equal": "^1.0.4", diff --git a/package.json b/package.json index 9aac64d681..3b054ab149 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ }, "type": "module", "bin": { - "azle": "./src/compiler/index.ts" + "azle": "./src/build/index.ts" }, "main": "./src/lib/stable/index.ts", "repository": { diff --git a/src/build/experimental/commands/compile/candid_and_method_meta.ts b/src/build/experimental/commands/compile/candid_and_method_meta.ts new file mode 100644 index 0000000000..129828abfe --- /dev/null +++ b/src/build/experimental/commands/compile/candid_and_method_meta.ts @@ -0,0 +1,102 @@ +import { IOType } from 'child_process'; +import { readFile } from 'fs/promises'; +import { join } from 'path'; + +import { execute } from '../../../stable/commands/compile/candid_and_method_meta/execute'; +import { AZLE_PACKAGE_PATH } from '../../../stable/utils/global_paths'; +import { + CandidAndMethodMeta, + CandidGen, + MethodMeta +} from '../../../stable/utils/types'; +import { WasmData } from '../../utils/types'; +import { getWasmBinary } from './wasm_binary'; + +export async function getCandidAndMethodMeta( + canisterName: string, + candidGen: CandidGen | undefined, + canisterPath: string, + candidPath: string, + js: string, + ioType: IOType, + wasmData: WasmData +): Promise { + if ( + candidGen === undefined || + candidGen === 'automatic' || + candidGen === 'custom' + ) { + return await handleAutomaticAndCustom( + candidGen, + candidPath, + canisterName, + ioType, + js, + wasmData, + canisterPath + ); + } + + if (candidGen === 'http') { + return await handleHttp(); + } + + throw new Error(`dfx.json: "candid_gen": "${candidGen}" is not supported`); +} + +async function handleAutomaticAndCustom( + candidGen: CandidGen | undefined, + candidPath: string, + canisterName: string, + ioType: IOType, + js: string, + wasmData: WasmData, + canisterPath: string +): Promise { + const wasmBinary = await getWasmBinary( + canisterName, + ioType, + js, + wasmData, + canisterPath + ); + + const { candid, methodMeta } = await execute(wasmBinary); + + return { + candid: + candidGen === 'custom' + ? (await readFile(candidPath)).toString() + : candid, + methodMeta + }; +} + +async function handleHttp(): Promise { + const candid = ( + await readFile(join(AZLE_PACKAGE_PATH, 'server.did')) + ).toString(); + + const methodMeta: MethodMeta = { + queries: [ + { + name: 'http_request', + index: 0, + composite: true + } + ], + updates: [ + { + name: 'http_request_update', + index: 1 + } + ], + init: { name: 'init', index: 2 }, + post_upgrade: { name: 'postUpgrade', index: 3 } + }; + + return { + candid, + methodMeta + }; +} diff --git a/src/compiler/custom_js_modules/acorn/acorn.ts b/src/build/experimental/commands/compile/custom_js_modules/acorn/acorn.ts similarity index 100% rename from src/compiler/custom_js_modules/acorn/acorn.ts rename to src/build/experimental/commands/compile/custom_js_modules/acorn/acorn.ts diff --git a/src/compiler/custom_js_modules/acorn/walk.ts b/src/build/experimental/commands/compile/custom_js_modules/acorn/walk.ts similarity index 100% rename from src/compiler/custom_js_modules/acorn/walk.ts rename to src/build/experimental/commands/compile/custom_js_modules/acorn/walk.ts diff --git a/src/compiler/custom_js_modules/async_hooks.ts b/src/build/experimental/commands/compile/custom_js_modules/async_hooks.ts similarity index 100% rename from src/compiler/custom_js_modules/async_hooks.ts rename to src/build/experimental/commands/compile/custom_js_modules/async_hooks.ts diff --git a/src/compiler/custom_js_modules/https.ts b/src/build/experimental/commands/compile/custom_js_modules/https.ts similarity index 100% rename from src/compiler/custom_js_modules/https.ts rename to src/build/experimental/commands/compile/custom_js_modules/https.ts diff --git a/src/compiler/custom_js_modules/perf_hooks.ts b/src/build/experimental/commands/compile/custom_js_modules/perf_hooks.ts similarity index 100% rename from src/compiler/custom_js_modules/perf_hooks.ts rename to src/build/experimental/commands/compile/custom_js_modules/perf_hooks.ts diff --git a/src/compiler/file_watcher/file_watcher.ts b/src/build/experimental/commands/compile/file_watcher/file_watcher.ts similarity index 78% rename from src/compiler/file_watcher/file_watcher.ts rename to src/build/experimental/commands/compile/file_watcher/file_watcher.ts index 59c978ff8f..8a9846d863 100644 --- a/src/compiler/file_watcher/file_watcher.ts +++ b/src/build/experimental/commands/compile/file_watcher/file_watcher.ts @@ -2,10 +2,9 @@ import { Actor, ActorMethod, ActorSubclass } from '@dfinity/agent'; import { watch } from 'chokidar'; import { writeFile } from 'fs/promises'; -import { createAuthenticatedAgent } from '../../../dfx'; -import { getCanisterJavaScript } from '../get_canister_javascript'; -import { generateUploaderIdentity } from '../uploader_identity'; -import { ok } from '../utils/result'; +import { createAuthenticatedAgent } from '../../../../../../dfx'; +import { generateUploaderIdentity } from '../../upload_assets/uploader_identity'; +import { compile as compileJavaScript } from '../javascript'; type ActorReloadJs = ActorSubclass<_SERVICE>; interface _SERVICE { @@ -27,7 +26,6 @@ const esmAliases = JSON.parse(process.argv[6]); const esmExternals = JSON.parse(process.argv[7]); const canisterName = process.argv[8]; const postUpgradeIndex = Number(process.argv[9]); -const experimental = process.argv[10] === 'true' ? true : false; // TODO https://github.com/demergent-labs/azle/issues/1664 const watcher = watch([`**/*.ts`, `**/*.js`], { @@ -50,8 +48,7 @@ watcher.on('all', async (event, path) => { actor, reloadedJsPath, mainPath, - wasmedgeQuickJsPath, - experimental + wasmedgeQuickJsPath ); } catch (error) { console.error(error); @@ -63,28 +60,16 @@ async function reloadJs( actor: ActorReloadJs, reloadedJsPath: string, mainPath: string, - wasmedgeQuickJsPath: string, - experimental: boolean + wasmedgeQuickJsPath: string ): Promise { - const canisterJavaScriptResult = await getCanisterJavaScript( + const javaScript = await compileJavaScript( mainPath, wasmedgeQuickJsPath, esmAliases, - esmExternals, - experimental + esmExternals ); - if (!ok(canisterJavaScriptResult)) { - if (process.env.AZLE_VERBOSE === 'true') { - console.error(canisterJavaScriptResult.err!.error); - console.error(canisterJavaScriptResult.err!.suggestion); - console.error(canisterJavaScriptResult.err!.exitCode); - } - - throw new Error(`TypeScript compilation failed`); - } - - const reloadedJs = Buffer.from(canisterJavaScriptResult.ok); + const reloadedJs = Buffer.from(javaScript); const chunkSize = 2_000_000; // The current message limit is about 2 MiB const timestamp = process.hrtime.bigint(); diff --git a/src/compiler/file_watcher/file_watcher_loader.js b/src/build/experimental/commands/compile/file_watcher/file_watcher_loader.js similarity index 100% rename from src/compiler/file_watcher/file_watcher_loader.js rename to src/build/experimental/commands/compile/file_watcher/file_watcher_loader.js diff --git a/src/compiler/file_watcher/setup_file_watcher.ts b/src/build/experimental/commands/compile/file_watcher/setup_file_watcher.ts similarity index 80% rename from src/compiler/file_watcher/setup_file_watcher.ts rename to src/build/experimental/commands/compile/file_watcher/setup_file_watcher.ts index b9a90aedd7..65a74e3590 100644 --- a/src/compiler/file_watcher/setup_file_watcher.ts +++ b/src/build/experimental/commands/compile/file_watcher/setup_file_watcher.ts @@ -1,8 +1,8 @@ import { spawn } from 'child_process'; import { join } from 'path'; -import { execSyncPretty } from '../utils/exec_sync_pretty'; -import { AZLE_PACKAGE_PATH } from '../utils/global_paths'; +import { execSyncPretty } from '../../../../stable/utils/exec_sync_pretty'; +import { AZLE_PACKAGE_PATH } from '../../../../stable/utils/global_paths'; export function setupFileWatcher( reloadedJsPath: string, @@ -12,8 +12,7 @@ export function setupFileWatcher( esmAliases: Record, esmExternals: string[], canisterName: string, - postUpgradeIndex: number, - experimental: boolean + postUpgradeIndex: number ): void { try { // TODO should we check that this was successful in killing @@ -36,7 +35,10 @@ export function setupFileWatcher( join( AZLE_PACKAGE_PATH, 'src', - 'compiler', + 'build', + 'experimental', + 'commands', + 'compile', 'file_watcher', 'file_watcher_loader.js' ), @@ -47,8 +49,7 @@ export function setupFileWatcher( JSON.stringify(esmAliases), JSON.stringify(esmExternals), canisterName, - postUpgradeIndex.toString(), - experimental.toString() + postUpgradeIndex.toString() ], { detached: true, diff --git a/src/build/experimental/commands/compile/get_context.ts b/src/build/experimental/commands/compile/get_context.ts new file mode 100644 index 0000000000..a4fa818066 --- /dev/null +++ b/src/build/experimental/commands/compile/get_context.ts @@ -0,0 +1,55 @@ +import { readFile } from 'fs/promises'; +import { join } from 'path'; + +import { getCanisterId } from '../../../../../dfx'; +import { version } from '../../../../../package.json'; +import { getContext as getStableContext } from '../../../stable/commands/compile/get_context'; +import { + AZLE_PACKAGE_PATH, + GLOBAL_AZLE_CONFIG_DIR +} from '../../../stable/utils/global_paths'; +import { CanisterConfig } from '../../../stable/utils/types'; +import { Context, WasmData } from '../../utils/types'; +import { getConsumer } from './open_value_sharing/consumer'; + +export async function getContext( + canisterName: string, + canisterConfig: CanisterConfig +): Promise { + const stableContext = getStableContext(canisterName, canisterConfig); + + const canisterId = getCanisterId(canisterName); + + const esmAliases = canisterConfig.custom?.esm_aliases ?? {}; + const esmExternals = canisterConfig.custom?.esm_externals ?? []; + + const reloadedJsPath = join('.azle', canisterName, 'main_reloaded.js'); + + const consumer = await getConsumer(canisterConfig); + const managementDid = ( + await readFile( + join(AZLE_PACKAGE_PATH, 'canisters', 'management', 'ic.did') + ) + ).toString(); + const wasmData: WasmData = { + ...stableContext.wasmData, + consumer, + managementDid + }; + + const wasmedgeQuickJsName = `wasmedge-quickjs_${version}`; + const wasmedgeQuickJsPath = join( + GLOBAL_AZLE_CONFIG_DIR, + wasmedgeQuickJsName + ); + + return { + ...stableContext, + canisterId, + esmAliases, + esmExternals, + reloadedJsPath, + wasmData, + wasmedgeQuickJsPath + }; +} diff --git a/src/build/experimental/commands/compile/index.ts b/src/build/experimental/commands/compile/index.ts new file mode 100644 index 0000000000..e1344fb665 --- /dev/null +++ b/src/build/experimental/commands/compile/index.ts @@ -0,0 +1,96 @@ +import { IOType } from 'child_process'; + +import { + createHiddenAzleDirectories, + writeGeneratedFiles +} from '../../../stable/commands/compile'; +import { execSyncPretty } from '../../../stable/utils/exec_sync_pretty'; +import { CanisterConfig } from '../../../stable/utils/types'; +import { logSuccess } from '../../utils/log_success'; +import { getCandidAndMethodMeta } from './candid_and_method_meta'; +import { setupFileWatcher } from './file_watcher/setup_file_watcher'; +import { getContext } from './get_context'; +import { compile as compileJavaScript } from './javascript'; +import { getWasmBinary } from './wasm_binary'; + +export async function runCommand( + canisterName: string, + canisterConfig: CanisterConfig, + ioType: IOType +): Promise { + const { + canisterId, + canisterPath, + candidPath, + esmAliases, + esmExternals, + main, + reloadedJsPath, + wasmBinaryPath, + wasmData, + wasmedgeQuickJsPath + } = await getContext(canisterName, canisterConfig); + + await createHiddenAzleDirectories(canisterPath); + + const javaScript = await compileJavaScript( + main, + wasmedgeQuickJsPath, + esmAliases, + esmExternals + ); + + const { candid, methodMeta } = await getCandidAndMethodMeta( + canisterName, + canisterConfig.custom?.candid_gen, + canisterPath, + candidPath, + javaScript, + ioType, + wasmData + ); + + const wasmBinary = await getWasmBinary( + canisterName, + ioType, + javaScript, + wasmData, + canisterPath, + methodMeta + ); + + await writeGeneratedFiles( + canisterPath, + candidPath, + wasmBinaryPath, + candid, + javaScript, + wasmBinary + ); + + buildAssets(canisterConfig, ioType); + + setupFileWatcher( + reloadedJsPath, + canisterId, + main, + wasmedgeQuickJsPath, + esmAliases, + esmExternals, + canisterName, + methodMeta.post_upgrade?.index ?? -1 + ); + + if (canisterConfig.custom?.candid_gen === 'http') { + logSuccess(canisterName, canisterId); + } +} + +function buildAssets(canisterConfig: CanisterConfig, ioType: IOType): void { + if ( + canisterConfig.custom?.build_assets !== undefined && + canisterConfig.custom?.build_assets !== null + ) { + execSyncPretty(canisterConfig.custom.build_assets, ioType); + } +} diff --git a/src/build/experimental/commands/compile/javascript.ts b/src/build/experimental/commands/compile/javascript.ts new file mode 100644 index 0000000000..3987dc4718 --- /dev/null +++ b/src/build/experimental/commands/compile/javascript.ts @@ -0,0 +1,182 @@ +import { BuildOptions } from 'esbuild'; +import esbuildPluginTsc from 'esbuild-plugin-tsc'; +import { join } from 'path'; + +import { + bundle, + getBuildOptions as getStableBuildOptions, + handleClassApiCanister +} from '../../../stable/commands/compile/javascript'; +import { AZLE_PACKAGE_PATH } from '../../../stable/utils/global_paths'; + +export async function compile( + main: string, + wasmedgeQuickJsPath: string, + esmAliases: Record, + esmExternals: string[] +): Promise { + const prelude = getPrelude(main); + const buildOptions = getBuildOptions( + prelude, + wasmedgeQuickJsPath, + esmAliases, + esmExternals + ); + const bundled = await bundle(buildOptions); + + return bundled + .replace( + /__toCommonJS\(assert_exports\)\);/g, + `__toCommonJS(assert_exports)).default;` + ) + .replace( + /__toCommonJS\(stream_exports\)\);/g, + `__toCommonJS(stream_exports)).default;` + ) + .replace( + /__toCommonJS\(http_exports\)\);/g, + `__toCommonJS(http_exports)).default;` + ); +} + +export function getPrelude(main: string): string { + return /*TS*/ ` + import 'azle/src/lib/stable/globals'; + import 'azle/src/lib/experimental/globals'; + + import 'reflect-metadata'; + + // TODO remove the ethersGetUrl registration once we implement lower-level http for ethers + import { ethersGetUrl, Server } from 'azle/src/lib/experimental'; + import { ethers } from 'ethers'; + ethers.FetchRequest.registerGetUrl(ethersGetUrl); + + import { DidVisitor, getDefaultVisitorData, IDL, toDidString } from 'azle'; + export { Principal } from '@dfinity/principal'; + import * as Canister from './${main}'; + + if (isClassSyntaxExport(Canister)) { + ${handleClassApiCanister()} + } + else { + // TODO This setTimeout is here to allow asynchronous operations during canister initialization + // for Server canisters that have chosen not to use export default Server + // This seems to work no matter how many async tasks are awaited, but I am still unsure about how it will + // behave in all async situations + setTimeout(() => { + const canister = Canister.default !== undefined ? Canister.default() : Server(() => globalThis._azleNodeServer)(); + + const candid = canister.getIdlType([]).accept(new DidVisitor(), { + ...getDefaultVisitorData(), + isFirstService: true, + systemFuncs: canister.getSystemFunctionIdlTypes() + }); + + globalThis._azleCallbacks = canister.callbacks; + + globalThis._azleGetCandidAndMethodMeta = () => { + return JSON.stringify({ + candid: toDidString(candid), + methodMeta: canister.methodMeta + }); + }; + }); + } + + function isClassSyntaxExport(canister) { + const isNothing = canister === undefined || canister.default === undefined; + const isFunctionalSyntaxExport = + canister?.default?.isCanister === true || + canister?.default?.isRecursive === true; + return !isNothing && !isFunctionalSyntaxExport; + } + `; +} + +export function getBuildOptions( + ts: string, + wasmedgeQuickJsPath: string, + esmAliases: Record, + esmExternals: string[] +): BuildOptions { + const finalWasmedgeQuickJsPath = + process.env.AZLE_WASMEDGE_QUICKJS_DIR ?? wasmedgeQuickJsPath; + + const externalImplemented = [ + '_node:fs', + '_node:os', + '_node:crypto', + 'qjs:os', + '_encoding', + 'wasi_net', + 'wasi_http' + ]; + + // These are modules that should not be included in the build from the Azle side (our side) + const externalNotImplementedAzle: string[] = []; + + // These are modules that should not be included in the build from the developer side + // These are specified in the dfx.json canister object esm_externals property + const externalNotImplementedDev = esmExternals; + + // These will cause runtime errors if their functionality is dependend upon + const externalNotImplemented = [ + ...externalNotImplementedAzle, + ...externalNotImplementedDev + ]; + + const customJsModulesPath = join( + AZLE_PACKAGE_PATH, + 'src', + 'build', + 'experimental', + 'commands', + 'compile', + 'custom_js_modules' + ); + + const stableBuildOptions = getStableBuildOptions(ts); + + return { + ...stableBuildOptions, + alias: { + internal: `${finalWasmedgeQuickJsPath}/modules/internal`, + util: `${finalWasmedgeQuickJsPath}/modules/util`, + fs: `${finalWasmedgeQuickJsPath}/modules/fs`, + fmt: `${finalWasmedgeQuickJsPath}/modules/fmt`, + assert: `${finalWasmedgeQuickJsPath}/modules/assert.js`, + buffer: `${finalWasmedgeQuickJsPath}/modules/buffer.js`, + path: `${finalWasmedgeQuickJsPath}/modules/path.js`, + stream: `${finalWasmedgeQuickJsPath}/modules/stream.js`, + process: `${finalWasmedgeQuickJsPath}/modules/process.js`, + url: `${finalWasmedgeQuickJsPath}/modules/url.js`, + events: `${finalWasmedgeQuickJsPath}/modules/events.js`, + string_decoder: `${finalWasmedgeQuickJsPath}/modules/string_decoder.js`, + punycode: `${finalWasmedgeQuickJsPath}/modules/punycode.js`, + querystring: `${finalWasmedgeQuickJsPath}/modules/querystring.js`, + whatwg_url: `${finalWasmedgeQuickJsPath}/modules/whatwg_url.js`, + encoding: `${finalWasmedgeQuickJsPath}/modules/encoding.js`, + http: `${finalWasmedgeQuickJsPath}/modules/http.js`, + os: `${finalWasmedgeQuickJsPath}/modules/os.js`, + // crypto: `${finalWasmedgeQuickJsPath}/modules/crypto.js`, // TODO waiting on wasi-crypto + crypto: 'crypto-browserify', // TODO we really want the wasmedge-quickjs version once wasi-crypto is working + zlib: 'pako', + 'internal/deps/acorn/acorn/dist/acorn': join( + customJsModulesPath, + 'acorn', + 'acorn.ts' + ), // TODO acorn stuff is a bug, wasmedge-quickjs should probably add these files + 'internal/deps/acorn/acorn-walk/dist/walk': join( + customJsModulesPath, + 'acorn', + 'walk.ts' + ), // TODO acorn stuff is a bug, wasmedge-quickjs should probably add these files + perf_hooks: join(customJsModulesPath, 'perf_hooks.ts'), + async_hooks: join(customJsModulesPath, 'async_hooks.ts'), + https: join(customJsModulesPath, 'https.ts'), + ...esmAliases + }, + external: [...externalImplemented, ...externalNotImplemented], + plugins: [esbuildPluginTsc()] + }; +} diff --git a/src/compiler/get_consumer_config.ts b/src/build/experimental/commands/compile/open_value_sharing/consumer.ts similarity index 97% rename from src/compiler/get_consumer_config.ts rename to src/build/experimental/commands/compile/open_value_sharing/consumer.ts index 83824b8170..0f0565056e 100644 --- a/src/compiler/get_consumer_config.ts +++ b/src/build/experimental/commands/compile/open_value_sharing/consumer.ts @@ -2,8 +2,7 @@ import { execSync } from 'child_process'; import { readFile } from 'fs/promises'; import { glob } from 'glob'; -import { yellow } from './utils/colors'; -import { CanisterConfig } from './utils/types'; +import { CanisterConfig } from '../../../../stable/utils/types'; const DEFAULT_KILL_SWITCH: Consumer['killSwitch'] = true; const DEFAULT_PLATFORMS = ['icp']; @@ -150,9 +149,7 @@ function getConsumerConfig( function logWarningPeriod(consumerConfig?: ConsumerConfig): void { if (consumerConfig?.period !== undefined) { console.warn( - yellow( - `\nOpenValueSharing: to avoid problematic behavior, it is not currently recommended to change the period manually\n` - ) + `\nWarning: Azle: OpenValueSharing: to avoid problematic behavior, it is not currently recommended to change the period manually\n` ); } } diff --git a/src/build/experimental/commands/compile/wasm_binary/compile.ts b/src/build/experimental/commands/compile/wasm_binary/compile.ts new file mode 100644 index 0000000000..cd3f8d5c1a --- /dev/null +++ b/src/build/experimental/commands/compile/wasm_binary/compile.ts @@ -0,0 +1,19 @@ +import { IOType } from 'child_process'; + +import { execSyncPretty } from '../../../../stable/utils/exec_sync_pretty'; + +export function compile( + wasmDest: string, + canisterName: string, + stdio: IOType +): void { + execSyncPretty( + `CARGO_TARGET_DIR=target cargo build --target wasm32-wasi --manifest-path .azle/${canisterName}/canister/Cargo.toml --release --features "experimental"`, + stdio + ); + + execSyncPretty( + `wasi2ic target/wasm32-wasi/release/canister.wasm ${wasmDest}`, + stdio + ); +} diff --git a/src/build/experimental/commands/compile/wasm_binary/index.ts b/src/build/experimental/commands/compile/wasm_binary/index.ts new file mode 100644 index 0000000000..9f47457a28 --- /dev/null +++ b/src/build/experimental/commands/compile/wasm_binary/index.ts @@ -0,0 +1,37 @@ +import { IOType } from 'child_process'; +import { existsSync } from 'fs'; + +import { manipulateWasmBinary } from '../../../../stable/commands/compile/wasm_binary/manipulate'; +import { logGlobalDependencies } from '../../../../stable/utils/log_global_dependencies'; +import { MethodMeta } from '../../../../stable/utils/types'; +import { EXPERIMENTAL_CANISTER_TEMPLATE_PATH } from '../../../utils/global_paths'; +import { WasmData } from '../../../utils/types'; +import { compile } from './compile'; +import { prepareRustStagingArea } from './prepare_rust_staging_area'; + +export async function getWasmBinary( + canisterName: string, + stdio: IOType, + js: string, + wasmData: WasmData, + canisterPath: string, + methodMeta?: MethodMeta +): Promise { + if ( + process.env.AZLE_GEN_WASM === 'true' || + !existsSync(EXPERIMENTAL_CANISTER_TEMPLATE_PATH) + ) { + await logGlobalDependencies(); + + await prepareRustStagingArea(canisterPath); + + compile(EXPERIMENTAL_CANISTER_TEMPLATE_PATH, canisterName, stdio); + } + + return await manipulateWasmBinary( + js, + EXPERIMENTAL_CANISTER_TEMPLATE_PATH, + wasmData, + methodMeta + ); +} diff --git a/src/build/experimental/commands/compile/wasm_binary/prepare_rust_staging_area.ts b/src/build/experimental/commands/compile/wasm_binary/prepare_rust_staging_area.ts new file mode 100644 index 0000000000..ee84321e4d --- /dev/null +++ b/src/build/experimental/commands/compile/wasm_binary/prepare_rust_staging_area.ts @@ -0,0 +1,39 @@ +import { existsSync } from 'fs'; +import { mkdir, writeFile } from 'fs/promises'; +// @ts-ignore +import { copy } from 'fs-extra/esm'; +import { join } from 'path'; + +import { generateWorkspaceCargoToml } from '../../../../stable/commands/compile/wasm_binary/generate_cargo_toml_files'; +import { AZLE_PACKAGE_PATH } from '../../../../stable/utils/global_paths'; + +export async function prepareRustStagingArea( + canisterPath: string +): Promise { + const workspaceCargoToml = generateWorkspaceCargoToml(); + + await writeFile(`${canisterPath}/Cargo.toml`, workspaceCargoToml); + + await copy( + join(AZLE_PACKAGE_PATH, 'Cargo.lock'), + `${canisterPath}/Cargo.lock` + ); + + if (!existsSync(`${canisterPath}/canister`)) { + await mkdir(`${canisterPath}/canister`); + } + + await copy( + `${AZLE_PACKAGE_PATH}/src/build/rust/canister`, + `${canisterPath}/canister` + ); + + if (!existsSync(`${canisterPath}/open_value_sharing`)) { + await mkdir(`${canisterPath}/open_value_sharing`); + } + + await copy( + `${AZLE_PACKAGE_PATH}/src/build/rust/open_value_sharing`, + `${canisterPath}/open_value_sharing` + ); +} diff --git a/src/compiler/new_command.ts b/src/build/experimental/commands/new.ts similarity index 85% rename from src/compiler/new_command.ts rename to src/build/experimental/commands/new.ts index b3fd5bace0..5c32d4d201 100644 --- a/src/compiler/new_command.ts +++ b/src/build/experimental/commands/new.ts @@ -3,11 +3,9 @@ import { readFile, writeFile } from 'fs/promises'; import { copy } from 'fs-extra/esm'; import { join } from 'path'; -import { AZLE_PACKAGE_PATH } from './utils/global_paths'; +import { AZLE_PACKAGE_PATH } from '../../stable/utils/global_paths'; -export async function generateNewAzleProject( - azleVersion: string -): Promise { +export async function runCommand(azleVersion: string): Promise { if (process.argv[3] === undefined) { console.error('You must provide a name for your Azle project'); return; diff --git a/src/compiler/file_uploader/bytes_to_human_readable.ts b/src/build/experimental/commands/upload_assets/file_uploader/bytes_to_human_readable.ts similarity index 100% rename from src/compiler/file_uploader/bytes_to_human_readable.ts rename to src/build/experimental/commands/upload_assets/file_uploader/bytes_to_human_readable.ts diff --git a/src/compiler/file_uploader/expand_paths.ts b/src/build/experimental/commands/upload_assets/file_uploader/expand_paths.ts similarity index 100% rename from src/compiler/file_uploader/expand_paths.ts rename to src/build/experimental/commands/upload_assets/file_uploader/expand_paths.ts diff --git a/src/compiler/file_uploader/get_files_to_upload.ts b/src/build/experimental/commands/upload_assets/file_uploader/get_files_to_upload.ts similarity index 70% rename from src/compiler/file_uploader/get_files_to_upload.ts rename to src/build/experimental/commands/upload_assets/file_uploader/get_files_to_upload.ts index 26a8e26031..09b30e3412 100644 --- a/src/compiler/file_uploader/get_files_to_upload.ts +++ b/src/build/experimental/commands/upload_assets/file_uploader/get_files_to_upload.ts @@ -1,5 +1,4 @@ -import { getCanisterConfig } from '../utils/get_canister_config'; -import { unwrap } from '../utils/result'; +import { getCanisterConfig } from '../../../../stable/utils/get_canister_config'; export async function getFilesToUpload( canisterName: string, @@ -11,8 +10,8 @@ export async function getFilesToUpload( } if (srcPath === undefined && destPath === undefined) { // If both paths are undefined, look at the dfx.json for the assets to upload - const dfxJson = unwrap(await getCanisterConfig(canisterName)); - return dfxJson.assets ?? []; + const dfxJson = await getCanisterConfig(canisterName); + return dfxJson.custom?.assets ?? []; } throw new Error( 'The source path and destination path must be either both defined or both undefined' diff --git a/src/compiler/file_uploader/incomplete_files.ts b/src/build/experimental/commands/upload_assets/file_uploader/incomplete_files.ts similarity index 90% rename from src/compiler/file_uploader/incomplete_files.ts rename to src/build/experimental/commands/upload_assets/file_uploader/incomplete_files.ts index 7a98ebae16..5430fe91c8 100644 --- a/src/compiler/file_uploader/incomplete_files.ts +++ b/src/build/experimental/commands/upload_assets/file_uploader/incomplete_files.ts @@ -1,4 +1,4 @@ -import { filterAsync } from '../utils/filter_async'; +import { filterAsync } from '../../../utils/filter_async'; import { Dest, Src } from '.'; import { UploaderActor } from './uploader_actor'; diff --git a/src/compiler/file_uploader/index.ts b/src/build/experimental/commands/upload_assets/file_uploader/index.ts similarity index 95% rename from src/compiler/file_uploader/index.ts rename to src/build/experimental/commands/upload_assets/file_uploader/index.ts index c0b4f78759..21994ce5d5 100644 --- a/src/compiler/file_uploader/index.ts +++ b/src/build/experimental/commands/upload_assets/file_uploader/index.ts @@ -1,4 +1,4 @@ -import { getCanisterId } from '../../../dfx'; +import { getCanisterId } from '../../../../../../dfx'; import { generateUploaderIdentity } from '../uploader_identity'; import { expandPaths } from './expand_paths'; import { onBeforeExit } from './on_before_exit'; diff --git a/src/compiler/file_uploader/on_before_exit.ts b/src/build/experimental/commands/upload_assets/file_uploader/on_before_exit.ts similarity index 100% rename from src/compiler/file_uploader/on_before_exit.ts rename to src/build/experimental/commands/upload_assets/file_uploader/on_before_exit.ts diff --git a/src/compiler/file_uploader/upload_file.ts b/src/build/experimental/commands/upload_assets/file_uploader/upload_file.ts similarity index 97% rename from src/compiler/file_uploader/upload_file.ts rename to src/build/experimental/commands/upload_assets/file_uploader/upload_file.ts index c285974728..5937e3f1ef 100644 --- a/src/compiler/file_uploader/upload_file.ts +++ b/src/build/experimental/commands/upload_assets/file_uploader/upload_file.ts @@ -1,6 +1,6 @@ import { open, stat } from 'fs/promises'; -import { hashFile } from '../../../scripts/hash_file'; +import { hashFile } from '../../../../../../scripts/hash_file'; import { Dest, Src } from '.'; import { bytesToHumanReadable } from './bytes_to_human_readable'; import { UploaderActor } from './uploader_actor'; diff --git a/src/compiler/file_uploader/uploader_actor.ts b/src/build/experimental/commands/upload_assets/file_uploader/uploader_actor.ts similarity index 95% rename from src/compiler/file_uploader/uploader_actor.ts rename to src/build/experimental/commands/upload_assets/file_uploader/uploader_actor.ts index cf6d7cc43f..b5025b281a 100644 --- a/src/compiler/file_uploader/uploader_actor.ts +++ b/src/build/experimental/commands/upload_assets/file_uploader/uploader_actor.ts @@ -1,6 +1,6 @@ import { Actor, ActorMethod, ActorSubclass } from '@dfinity/agent'; -import { createAuthenticatedAgent } from '../../../dfx'; +import { createAuthenticatedAgent } from '../../../../../../dfx'; export type UploaderActor = ActorSubclass<_SERVICE>; diff --git a/src/build/experimental/commands/upload_assets/index.ts b/src/build/experimental/commands/upload_assets/index.ts new file mode 100644 index 0000000000..0ee3bc14aa --- /dev/null +++ b/src/build/experimental/commands/upload_assets/index.ts @@ -0,0 +1,14 @@ +import { uploadFiles } from './file_uploader'; +import { getFilesToUpload } from './file_uploader/get_files_to_upload'; + +export async function runCommand(): Promise { + const canisterName = process.argv[3]; + const srcPath = process.argv[4]; + const destPath = process.argv[5]; + const filesToUpload = await getFilesToUpload( + canisterName, + srcPath, + destPath + ); + await uploadFiles(canisterName, filesToUpload); +} diff --git a/src/compiler/uploader_identity.ts b/src/build/experimental/commands/upload_assets/uploader_identity.ts similarity index 95% rename from src/compiler/uploader_identity.ts rename to src/build/experimental/commands/upload_assets/uploader_identity.ts index c1d84d5d05..8ffd884f9c 100644 --- a/src/compiler/uploader_identity.ts +++ b/src/build/experimental/commands/upload_assets/uploader_identity.ts @@ -3,7 +3,7 @@ import { generateIdentity, getPrincipal, identityExists -} from '../../dfx'; +} from '../../../../../dfx'; export const AZLE_UPLOADER_IDENTITY_NAME = process.env.AZLE_UPLOADER_IDENTITY_NAME ?? '_azle_file_uploader_identity'; diff --git a/src/build/experimental/utils/experimental_message.ts b/src/build/experimental/utils/experimental_message.ts new file mode 100644 index 0000000000..336ac74bbf --- /dev/null +++ b/src/build/experimental/utils/experimental_message.ts @@ -0,0 +1,19 @@ +export function experimentalMessageDfxJson(description: string): string { + return `Azle: Experimental mode must be enabled to use ${description}. You can enable experimental mode in your dfx.json file like this: +{ + "canisters": { + "canisterName": { + "type": "azle", + "main": "index.ts", + "custom": { + "experimental": true + } + } + } +} +`; +} + +export function experimentalMessageCli(description: string): string { + return `Azle: Experimental mode must be enabled to use ${description}. You can enable experimental mode with the --experimental flag as the final argument`; +} diff --git a/src/compiler/utils/filter_async.ts b/src/build/experimental/utils/filter_async.ts similarity index 100% rename from src/compiler/utils/filter_async.ts rename to src/build/experimental/utils/filter_async.ts diff --git a/src/build/experimental/utils/global_paths.ts b/src/build/experimental/utils/global_paths.ts new file mode 100644 index 0000000000..12ed8baae6 --- /dev/null +++ b/src/build/experimental/utils/global_paths.ts @@ -0,0 +1,9 @@ +import { join } from 'path'; + +import { AZLE_PACKAGE_PATH } from '../../stable/utils/global_paths'; + +export const EXPERIMENTAL_CANISTER_TEMPLATE_PATH = join( + AZLE_PACKAGE_PATH, + 'canister_templates', + 'experimental.wasm' +); diff --git a/src/build/experimental/utils/log_success.ts b/src/build/experimental/utils/log_success.ts new file mode 100644 index 0000000000..0ca86da304 --- /dev/null +++ b/src/build/experimental/utils/log_success.ts @@ -0,0 +1,16 @@ +import { execSyncPretty } from '../../stable/utils/exec_sync_pretty'; + +export function logSuccess(canisterName: string, canisterId: string): void { + const replicaWebServerPort = execSyncPretty(`dfx info webserver-port`) + .toString() + .trim(); + + const url = + process.env.DFX_NETWORK === 'ic' + ? `https://${canisterId}.raw.icp0.io` + : `http://${canisterId}.localhost:${replicaWebServerPort}`; + + console.info( + `\nCanister ${canisterName} serving HTTP requests at: ${url}\n` + ); +} diff --git a/src/build/experimental/utils/types.ts b/src/build/experimental/utils/types.ts new file mode 100644 index 0000000000..c72ba77f12 --- /dev/null +++ b/src/build/experimental/utils/types.ts @@ -0,0 +1,19 @@ +import { + Context as StableContext, + WasmData as StableWasmData +} from '../../stable/utils/types'; +import { Consumer } from '../commands/compile/open_value_sharing/consumer'; + +export type Context = { + canisterId: string; + esmAliases: Record; + esmExternals: string[]; + reloadedJsPath: string; + wasmData: WasmData; + wasmedgeQuickJsPath: string; +} & StableContext; + +export type WasmData = { + consumer: Consumer; + managementDid: string; +} & StableWasmData; diff --git a/src/build/index.ts b/src/build/index.ts new file mode 100755 index 0000000000..ee9fb30ce5 --- /dev/null +++ b/src/build/index.ts @@ -0,0 +1,186 @@ +#!/usr/bin/env -S tsx --abort-on-uncaught-exception + +import { IOType } from 'child_process'; +import { join } from 'path'; + +import { version as azleVersion } from '../../package.json'; +import { runCommand as runExperimentalCompileCommand } from './experimental/commands/compile'; +import { runCommand as runUploadAssetsCommand } from './experimental/commands/upload_assets'; +import { + experimentalMessageCli, + experimentalMessageDfxJson +} from './experimental/utils/experimental_message'; +import { runCommand as runCleanCommand } from './stable/commands/clean'; +import { runCommand as runStableCompileCommand } from './stable/commands/compile'; +import { runCommand as runInstallDfxExtensionCommand } from './stable/commands/install_dfx_extension'; +import { runCommand as runNewCommand } from './stable/commands/new'; +import { runCommand as runVersionCommand } from './stable/commands/version'; +import { getCanisterConfig } from './stable/utils/get_canister_config'; +import { AZLE_PACKAGE_PATH } from './stable/utils/global_paths'; +import { CanisterConfig, Command } from './stable/utils/types'; + +build(); + +async function build(): Promise { + const command = process.argv[2] as Command | undefined; + + if (command === undefined) { + throw new Error( + `Azle: No command found when running azle. Running azle should start like this: azle [commandName]` + ); + } + + const ioType = process.env.AZLE_VERBOSE === 'true' ? 'inherit' : 'pipe'; + + if (command === 'install-dfx-extension') { + handleInstallDfxExtensionCommand(ioType); + + return; + } + + if (command === 'upload-assets') { + await handleUploadAssetsCommand(); + + return; + } + + if (command === 'compile') { + await handleCompileCommand(ioType); + + return; + } + + if (command === '--version') { + runVersionCommand(); + + return; + } + + if (command === 'clean') { + await runCleanCommand(); + + return; + } + + if (command === 'new') { + await handleNewCommand(); + + return; + } + + throw new Error( + `Azle: Invalid command found when running azle. Running azle ${command} is not valid` + ); +} + +function handleInstallDfxExtensionCommand(ioType: IOType): void { + runInstallDfxExtensionCommand(ioType); +} + +async function handleUploadAssetsCommand(): Promise { + const canisterName = process.argv[3]; + const canisterConfig = await getCanisterConfig(canisterName); + + const experimental = canisterConfig?.custom?.experimental === true; + + if (experimental === false) { + if (canisterConfig.custom?.assets !== undefined) { + throw new Error( + experimentalMessageDfxJson('the upload-assets command') + ); + } + } else { + await runUploadAssetsCommand(); + } +} + +async function handleCompileCommand(ioType: IOType): Promise { + const canisterName = process.argv[3]; + const canisterConfig = await getCanisterConfig(canisterName); + + const experimental = canisterConfig?.custom?.experimental === true; + + if (experimental === false) { + checkForExperimentalDfxJsonFields(canisterConfig); + + await runStableCompileCommand(canisterName, canisterConfig, ioType); + } else { + await runExperimentalCompileCommand( + canisterName, + canisterConfig, + ioType + ); + } +} + +async function handleNewCommand(): Promise { + const experimental = process.argv.includes('--experimental'); + + if (experimental === false) { + if (process.argv.includes('--http-server')) { + throw new Error(experimentalMessageCli('the --http-server option')); + } + + const templatePath = join( + AZLE_PACKAGE_PATH, + 'examples', + 'hello_world_candid_rpc' + ); + + await runNewCommand(azleVersion, templatePath); + } else { + const templatePath = join(AZLE_PACKAGE_PATH, 'examples', 'hello_world'); + + await runNewCommand(azleVersion, templatePath); + } +} + +function checkForExperimentalDfxJsonFields( + canisterConfig: CanisterConfig +): void { + if (canisterConfig.custom?.assets !== undefined) { + throw new Error( + experimentalMessageDfxJson('the assets field in your dfx.json file') + ); + } + + if (canisterConfig.custom?.build_assets !== undefined) { + throw new Error( + experimentalMessageDfxJson( + 'the build_assets field in your dfx.json file' + ) + ); + } + + if (canisterConfig.custom?.candid_gen === 'http') { + throw new Error( + experimentalMessageDfxJson( + 'the "candid_gen": "http" field in your dfx.json file' + ) + ); + } + + if (canisterConfig.custom?.esm_aliases !== undefined) { + throw new Error( + experimentalMessageDfxJson( + 'the esm_aliases field in your dfx.json file' + ) + ); + } + + if (canisterConfig.custom?.esm_externals !== undefined) { + throw new Error( + experimentalMessageDfxJson( + 'the esm_externals field in your dfx.json file' + ) + ); + } + + if (canisterConfig.custom?.openValueSharing !== undefined) { + throw new Error( + experimentalMessageDfxJson( + 'the openValueSharing field in your dfx.json file' + ) + ); + } +} diff --git a/src/compiler/rust/canister/Cargo.toml b/src/build/rust/canister/Cargo.toml similarity index 75% rename from src/compiler/rust/canister/Cargo.toml rename to src/build/rust/canister/Cargo.toml index 10e0e46506..cb523695a0 100644 --- a/src/compiler/rust/canister/Cargo.toml +++ b/src/build/rust/canister/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" crate-type = ["cdylib"] [features] -experimental = [] +experimental = ["open_value_sharing", "wasmi"] [dependencies] anyhow = "1.0.75" @@ -17,14 +17,18 @@ ic-cdk-timers = "0.6.0" candid = "0.10.2" candid_parser = "0.1.2" ic-stable-structures = "0.6.5" -open_value_sharing = { path = "../open_value_sharing" } slotmap = "=1.0.6" -wasmi = "0.31.2" sha2 = "0.10.8" serde = "1.0.202" serde_json = "1.0.107" - ic-wasi-polyfill = "0.5.0" - wasmedge_quickjs = { git = "https://github.com/demergent-labs/wasmedge-quickjs", rev = "573c6c07316de64e4bb9a9561b079f265fd9bcc4" } # wasmedge_quickjs = { path = "/home/wasmedge-quickjs" } + +[dependencies.open_value_sharing] +optional = true +path = "../open_value_sharing" + +[dependencies.wasmi] +optional = true +version = "0.31.2" diff --git a/src/compiler/rust/canister/src/autoreload.rs b/src/build/rust/canister/src/autoreload.rs similarity index 92% rename from src/compiler/rust/canister/src/autoreload.rs rename to src/build/rust/canister/src/autoreload.rs index ccfeca9794..507a115f32 100644 --- a/src/compiler/rust/canister/src/autoreload.rs +++ b/src/build/rust/canister/src/autoreload.rs @@ -36,7 +36,7 @@ pub fn reload_js( if reloaded_js_complete_bytes.len() as u64 == total_len { let js_string = String::from_utf8_lossy(&reloaded_js_complete_bytes); - initialize_js(&js_string, false, function_index, 1, true); // TODO should the last arg be 0? + initialize_js(&js_string, false, function_index, 1); // TODO should the last arg be 0? ic_cdk::println!("Azle: Reloaded canister JavaScript"); } }); diff --git a/src/compiler/rust/canister/src/candid.rs b/src/build/rust/canister/src/candid.rs similarity index 71% rename from src/compiler/rust/canister/src/candid.rs rename to src/build/rust/canister/src/candid.rs index 7257d2626d..f66d941ec2 100644 --- a/src/compiler/rust/canister/src/candid.rs +++ b/src/build/rust/canister/src/candid.rs @@ -1,10 +1,10 @@ use wasmedge_quickjs::AsObject; -use crate::{ic, run_event_loop, wasm_binary_manipulation::get_js_code, RUNTIME}; +use crate::{ic, run_event_loop, wasm_binary_manipulation::get_js_code, EXPERIMENTAL, RUNTIME}; // Heavily inspired by https://stackoverflow.com/a/47676844 #[no_mangle] -pub fn get_candid_pointer(experimental: i32) -> *mut std::os::raw::c_char { +pub fn get_candid_and_method_meta_pointer() -> *mut std::os::raw::c_char { std::panic::set_hook(Box::new(|panic_info| { let msg = match panic_info.payload().downcast_ref::<&str>() { Some(s) => *s, @@ -26,7 +26,7 @@ pub fn get_candid_pointer(experimental: i32) -> *mut std::os::raw::c_char { runtime.run_with_context(|context| { context.get_global().set( - "_azleWasmtimeCandidEnvironment", + "_azleNodeWasmEnvironment", wasmedge_quickjs::JsValue::Bool(true), ); @@ -36,25 +36,25 @@ pub fn get_candid_pointer(experimental: i32) -> *mut std::os::raw::c_char { // TODO what do we do if there is an error in here? context.eval_global_str("globalThis.exports = {};".to_string()); - context.eval_global_str(format!( - "globalThis._azleExperimental = {};", - if experimental == 1 { "true" } else { "false" } - )); + context.eval_global_str(format!("globalThis._azleExperimental = {EXPERIMENTAL};")); context.eval_module_str(std::str::from_utf8(&js).unwrap().to_string(), "azle_main"); run_event_loop(context); let global = context.get_global(); - let candid_info_function = global.get("candidInfoFunction").to_function().unwrap(); + let get_candid_and_method_meta = global + .get("_azleGetCandidAndMethodMeta") + .to_function() + .unwrap(); - let candid_info = candid_info_function.call(&[]); + let candid_and_method_meta = get_candid_and_method_meta.call(&[]); // TODO error handling is mostly done in JS right now // TODO we would really like wasmedge-quickjs to add // TODO good error info to JsException and move error handling // TODO out of our own code - match &candid_info { + match &candid_and_method_meta { wasmedge_quickjs::JsValue::Exception(js_exception) => { js_exception.dump_error(); panic!("TODO needs error info"); @@ -62,9 +62,10 @@ pub fn get_candid_pointer(experimental: i32) -> *mut std::os::raw::c_char { _ => run_event_loop(context), }; - let candid_info_string = candid_info.to_string().unwrap().to_string(); + let candid_and_method_meta_string = + candid_and_method_meta.to_string().unwrap().to_string(); - let c_string = std::ffi::CString::new(candid_info_string).unwrap(); + let c_string = std::ffi::CString::new(candid_and_method_meta_string).unwrap(); c_string.into_raw() }) diff --git a/src/compiler/rust/canister/src/chunk.rs b/src/build/rust/canister/src/chunk.rs similarity index 100% rename from src/compiler/rust/canister/src/chunk.rs rename to src/build/rust/canister/src/chunk.rs diff --git a/src/compiler/rust/canister/src/execute_method_js.rs b/src/build/rust/canister/src/execute_method_js.rs similarity index 89% rename from src/compiler/rust/canister/src/execute_method_js.rs rename to src/build/rust/canister/src/execute_method_js.rs index 7d85ef78c5..3fbb8c47e7 100644 --- a/src/compiler/rust/canister/src/execute_method_js.rs +++ b/src/build/rust/canister/src/execute_method_js.rs @@ -14,11 +14,8 @@ pub extern "C" fn execute_method_js(function_index: i32, pass_arg_data: i32) { runtime.run_with_context(|context| { let global = context.get_global(); - let exports = global.get("exports"); - let canister_methods = exports.get("canisterMethods").unwrap(); - - let callbacks = canister_methods.get("callbacks").unwrap(); + let callbacks = global.get("_azleCallbacks"); let method_callback = callbacks.get(function_name).unwrap(); let candid_args = if pass_arg_data { diff --git a/src/compiler/rust/canister/src/guards.rs b/src/build/rust/canister/src/guards.rs similarity index 100% rename from src/compiler/rust/canister/src/guards.rs rename to src/build/rust/canister/src/guards.rs diff --git a/src/compiler/rust/canister/src/ic/accept_message.rs b/src/build/rust/canister/src/ic/accept_message.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/accept_message.rs rename to src/build/rust/canister/src/ic/accept_message.rs diff --git a/src/compiler/rust/canister/src/ic/arg_data_raw.rs b/src/build/rust/canister/src/ic/arg_data_raw.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/arg_data_raw.rs rename to src/build/rust/canister/src/ic/arg_data_raw.rs diff --git a/src/compiler/rust/canister/src/ic/call_raw.rs b/src/build/rust/canister/src/ic/call_raw.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/call_raw.rs rename to src/build/rust/canister/src/ic/call_raw.rs diff --git a/src/compiler/rust/canister/src/ic/caller.rs b/src/build/rust/canister/src/ic/caller.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/caller.rs rename to src/build/rust/canister/src/ic/caller.rs diff --git a/src/compiler/rust/canister/src/ic/candid_compiler.rs b/src/build/rust/canister/src/ic/candid_compiler.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/candid_compiler.rs rename to src/build/rust/canister/src/ic/candid_compiler.rs diff --git a/src/compiler/rust/canister/src/ic/candid_decode.rs b/src/build/rust/canister/src/ic/candid_decode.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/candid_decode.rs rename to src/build/rust/canister/src/ic/candid_decode.rs diff --git a/src/compiler/rust/canister/src/ic/candid_encode.rs b/src/build/rust/canister/src/ic/candid_encode.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/candid_encode.rs rename to src/build/rust/canister/src/ic/candid_encode.rs diff --git a/src/compiler/rust/canister/src/ic/canister_balance.rs b/src/build/rust/canister/src/ic/canister_balance.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/canister_balance.rs rename to src/build/rust/canister/src/ic/canister_balance.rs diff --git a/src/compiler/rust/canister/src/ic/canister_version.rs b/src/build/rust/canister/src/ic/canister_version.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/canister_version.rs rename to src/build/rust/canister/src/ic/canister_version.rs diff --git a/src/compiler/rust/canister/src/ic/clear_timer.rs b/src/build/rust/canister/src/ic/clear_timer.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/clear_timer.rs rename to src/build/rust/canister/src/ic/clear_timer.rs diff --git a/src/compiler/rust/canister/src/ic/data_certificate.rs b/src/build/rust/canister/src/ic/data_certificate.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/data_certificate.rs rename to src/build/rust/canister/src/ic/data_certificate.rs diff --git a/src/compiler/rust/canister/src/ic/id.rs b/src/build/rust/canister/src/ic/id.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/id.rs rename to src/build/rust/canister/src/ic/id.rs diff --git a/src/compiler/rust/canister/src/ic/instruction_counter.rs b/src/build/rust/canister/src/ic/instruction_counter.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/instruction_counter.rs rename to src/build/rust/canister/src/ic/instruction_counter.rs diff --git a/src/compiler/rust/canister/src/ic/is_controller.rs b/src/build/rust/canister/src/ic/is_controller.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/is_controller.rs rename to src/build/rust/canister/src/ic/is_controller.rs diff --git a/src/compiler/rust/canister/src/ic/method_name.rs b/src/build/rust/canister/src/ic/method_name.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/method_name.rs rename to src/build/rust/canister/src/ic/method_name.rs diff --git a/src/compiler/rust/canister/src/ic/mod.rs b/src/build/rust/canister/src/ic/mod.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/mod.rs rename to src/build/rust/canister/src/ic/mod.rs diff --git a/src/compiler/rust/canister/src/ic/msg_cycles_accept.rs b/src/build/rust/canister/src/ic/msg_cycles_accept.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/msg_cycles_accept.rs rename to src/build/rust/canister/src/ic/msg_cycles_accept.rs diff --git a/src/compiler/rust/canister/src/ic/msg_cycles_available.rs b/src/build/rust/canister/src/ic/msg_cycles_available.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/msg_cycles_available.rs rename to src/build/rust/canister/src/ic/msg_cycles_available.rs diff --git a/src/compiler/rust/canister/src/ic/msg_cycles_refunded.rs b/src/build/rust/canister/src/ic/msg_cycles_refunded.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/msg_cycles_refunded.rs rename to src/build/rust/canister/src/ic/msg_cycles_refunded.rs diff --git a/src/compiler/rust/canister/src/ic/notify_raw.rs b/src/build/rust/canister/src/ic/notify_raw.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/notify_raw.rs rename to src/build/rust/canister/src/ic/notify_raw.rs diff --git a/src/compiler/rust/canister/src/ic/performance_counter.rs b/src/build/rust/canister/src/ic/performance_counter.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/performance_counter.rs rename to src/build/rust/canister/src/ic/performance_counter.rs diff --git a/src/compiler/rust/canister/src/ic/print.rs b/src/build/rust/canister/src/ic/print.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/print.rs rename to src/build/rust/canister/src/ic/print.rs diff --git a/src/compiler/rust/canister/src/ic/reject.rs b/src/build/rust/canister/src/ic/reject.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/reject.rs rename to src/build/rust/canister/src/ic/reject.rs diff --git a/src/compiler/rust/canister/src/ic/reject_code.rs b/src/build/rust/canister/src/ic/reject_code.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/reject_code.rs rename to src/build/rust/canister/src/ic/reject_code.rs diff --git a/src/compiler/rust/canister/src/ic/reject_message.rs b/src/build/rust/canister/src/ic/reject_message.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/reject_message.rs rename to src/build/rust/canister/src/ic/reject_message.rs diff --git a/src/compiler/rust/canister/src/ic/reply_raw.rs b/src/build/rust/canister/src/ic/reply_raw.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/reply_raw.rs rename to src/build/rust/canister/src/ic/reply_raw.rs diff --git a/src/compiler/rust/canister/src/ic/set_certified_data.rs b/src/build/rust/canister/src/ic/set_certified_data.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/set_certified_data.rs rename to src/build/rust/canister/src/ic/set_certified_data.rs diff --git a/src/compiler/rust/canister/src/ic/set_timer.rs b/src/build/rust/canister/src/ic/set_timer.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/set_timer.rs rename to src/build/rust/canister/src/ic/set_timer.rs diff --git a/src/compiler/rust/canister/src/ic/set_timer_interval.rs b/src/build/rust/canister/src/ic/set_timer_interval.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/set_timer_interval.rs rename to src/build/rust/canister/src/ic/set_timer_interval.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_contains_key.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_contains_key.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_contains_key.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_contains_key.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_get.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_get.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_get.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_get.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_init.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_init.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_init.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_init.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_insert.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_insert.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_insert.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_insert.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_is_empty.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_is_empty.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_is_empty.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_is_empty.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_items.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_items.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_items.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_items.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_keys.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_keys.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_keys.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_keys.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_len.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_len.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_len.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_len.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_remove.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_remove.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_remove.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_remove.rs diff --git a/src/compiler/rust/canister/src/ic/stable_b_tree_map_values.rs b/src/build/rust/canister/src/ic/stable_b_tree_map_values.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/stable_b_tree_map_values.rs rename to src/build/rust/canister/src/ic/stable_b_tree_map_values.rs diff --git a/src/compiler/rust/canister/src/ic/time.rs b/src/build/rust/canister/src/ic/time.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/time.rs rename to src/build/rust/canister/src/ic/time.rs diff --git a/src/compiler/rust/canister/src/ic/trap.rs b/src/build/rust/canister/src/ic/trap.rs similarity index 100% rename from src/compiler/rust/canister/src/ic/trap.rs rename to src/build/rust/canister/src/ic/trap.rs diff --git a/src/compiler/rust/canister/src/init_and_post_upgrade.rs b/src/build/rust/canister/src/init_and_post_upgrade.rs similarity index 93% rename from src/compiler/rust/canister/src/init_and_post_upgrade.rs rename to src/build/rust/canister/src/init_and_post_upgrade.rs index 8e18ad02f9..4666debc3e 100644 --- a/src/compiler/rust/canister/src/init_and_post_upgrade.rs +++ b/src/build/rust/canister/src/init_and_post_upgrade.rs @@ -3,7 +3,7 @@ use wasmedge_quickjs::AsObject; use crate::{ execute_method_js, ic, run_event_loop, wasm_binary_manipulation::get_js_code, - wasm_binary_manipulation::get_wasm_data, MEMORY_MANAGER_REF_CELL, RUNTIME, + wasm_binary_manipulation::get_wasm_data, EXPERIMENTAL, MEMORY_MANAGER_REF_CELL, RUNTIME, }; #[cfg(feature = "experimental")] @@ -74,7 +74,6 @@ fn initialize(init: bool, function_index: i32, pass_arg_data: i32) { init, function_index, pass_arg_data, - wasm_data.experimental, ); #[cfg(feature = "experimental")] @@ -83,13 +82,7 @@ fn initialize(init: bool, function_index: i32, pass_arg_data: i32) { }); } -pub fn initialize_js( - js: &str, - init: bool, - function_index: i32, - pass_arg_data: i32, - experimental: bool, -) { +pub fn initialize_js(js: &str, init: bool, function_index: i32, pass_arg_data: i32) { let mut rt = wasmedge_quickjs::Runtime::new(); rt.run_with_context(|context| { @@ -111,13 +104,13 @@ pub fn initialize_js( context.get_global().set("process", process.into()); context.get_global().set( - "_azleWasmtimeCandidEnvironment", + "_azleNodeWasmEnvironment", wasmedge_quickjs::JsValue::Bool(false), ); // TODO what do we do if there is an error in here? context.eval_global_str("globalThis.exports = {};".to_string()); - context.eval_global_str(format!("globalThis._azleExperimental = {experimental};")); + context.eval_global_str(format!("globalThis._azleExperimental = {EXPERIMENTAL};")); context.eval_module_str(js.to_string(), "azle_main"); run_event_loop(context); diff --git a/src/compiler/rust/canister/src/lib.rs b/src/build/rust/canister/src/lib.rs similarity index 88% rename from src/compiler/rust/canister/src/lib.rs rename to src/build/rust/canister/src/lib.rs index 36b894fd5e..0201e3202d 100644 --- a/src/compiler/rust/canister/src/lib.rs +++ b/src/build/rust/canister/src/lib.rs @@ -1,3 +1,8 @@ +// TODO the plan is to integrate rquickjs for stable +// TODO and at that time create two crates +// TODO we should place each crate at src/build/stable/commands/compile/rust +// TODO and src/build/experimental/commands/compile/rust respectively + use std::cell::RefCell; #[allow(unused)] @@ -30,6 +35,8 @@ thread_local! { pub static MEMORY_MANAGER_REF_CELL: RefCell> = RefCell::new(MemoryManager::init(DefaultMemoryImpl::default())); } +const EXPERIMENTAL: bool = cfg!(feature = "experimental"); + pub fn run_event_loop(context: &mut wasmedge_quickjs::Context) { context.promise_loop_poll(); diff --git a/src/compiler/rust/canister/src/stable_b_tree_map.rs b/src/build/rust/canister/src/stable_b_tree_map.rs similarity index 100% rename from src/compiler/rust/canister/src/stable_b_tree_map.rs rename to src/build/rust/canister/src/stable_b_tree_map.rs diff --git a/src/compiler/rust/canister/src/upload_file/bytes_to_human_readable.rs b/src/build/rust/canister/src/upload_file/bytes_to_human_readable.rs similarity index 100% rename from src/compiler/rust/canister/src/upload_file/bytes_to_human_readable.rs rename to src/build/rust/canister/src/upload_file/bytes_to_human_readable.rs diff --git a/src/compiler/rust/canister/src/upload_file/file_info.rs b/src/build/rust/canister/src/upload_file/file_info.rs similarity index 100% rename from src/compiler/rust/canister/src/upload_file/file_info.rs rename to src/build/rust/canister/src/upload_file/file_info.rs diff --git a/src/compiler/rust/canister/src/upload_file/hash.rs b/src/build/rust/canister/src/upload_file/hash.rs similarity index 100% rename from src/compiler/rust/canister/src/upload_file/hash.rs rename to src/build/rust/canister/src/upload_file/hash.rs diff --git a/src/compiler/rust/canister/src/upload_file/mod.rs b/src/build/rust/canister/src/upload_file/mod.rs similarity index 100% rename from src/compiler/rust/canister/src/upload_file/mod.rs rename to src/build/rust/canister/src/upload_file/mod.rs diff --git a/src/compiler/rust/canister/src/upload_file/reset.rs b/src/build/rust/canister/src/upload_file/reset.rs similarity index 100% rename from src/compiler/rust/canister/src/upload_file/reset.rs rename to src/build/rust/canister/src/upload_file/reset.rs diff --git a/src/compiler/rust/canister/src/upload_file/upload_file_chunk.rs b/src/build/rust/canister/src/upload_file/upload_file_chunk.rs similarity index 100% rename from src/compiler/rust/canister/src/upload_file/upload_file_chunk.rs rename to src/build/rust/canister/src/upload_file/upload_file_chunk.rs diff --git a/src/compiler/rust/canister/src/wasm_binary_manipulation.rs b/src/build/rust/canister/src/wasm_binary_manipulation.rs similarity index 93% rename from src/compiler/rust/canister/src/wasm_binary_manipulation.rs rename to src/build/rust/canister/src/wasm_binary_manipulation.rs index 2c046d07d5..9060c977f8 100644 --- a/src/compiler/rust/canister/src/wasm_binary_manipulation.rs +++ b/src/build/rust/canister/src/wasm_binary_manipulation.rs @@ -1,14 +1,17 @@ -#[allow(unused)] +#[cfg(feature = "experimental")] use open_value_sharing::Consumer; + use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize)] pub struct WasmData { + #[serde(rename = "envVars")] pub env_vars: Vec<(String, String)>, #[cfg(feature = "experimental")] pub consumer: Consumer, + #[cfg(feature = "experimental")] + #[serde(rename = "managementDid")] pub management_did: String, - pub experimental: bool, } #[inline(never)] diff --git a/src/compiler/rust/canister/src/web_assembly/instantiate.rs b/src/build/rust/canister/src/web_assembly/instantiate.rs similarity index 100% rename from src/compiler/rust/canister/src/web_assembly/instantiate.rs rename to src/build/rust/canister/src/web_assembly/instantiate.rs diff --git a/src/compiler/rust/canister/src/web_assembly/mod.rs b/src/build/rust/canister/src/web_assembly/mod.rs similarity index 100% rename from src/compiler/rust/canister/src/web_assembly/mod.rs rename to src/build/rust/canister/src/web_assembly/mod.rs diff --git a/src/compiler/rust/open_value_sharing/Cargo.toml b/src/build/rust/open_value_sharing/Cargo.toml similarity index 100% rename from src/compiler/rust/open_value_sharing/Cargo.toml rename to src/build/rust/open_value_sharing/Cargo.toml diff --git a/src/compiler/rust/open_value_sharing/src/lib.rs b/src/build/rust/open_value_sharing/src/lib.rs similarity index 100% rename from src/compiler/rust/open_value_sharing/src/lib.rs rename to src/build/rust/open_value_sharing/src/lib.rs diff --git a/src/compiler/rust/open_value_sharing/src/platforms/icp/assets/cycles.rs b/src/build/rust/open_value_sharing/src/platforms/icp/assets/cycles.rs similarity index 100% rename from src/compiler/rust/open_value_sharing/src/platforms/icp/assets/cycles.rs rename to src/build/rust/open_value_sharing/src/platforms/icp/assets/cycles.rs diff --git a/src/compiler/rust/open_value_sharing/src/platforms/icp/assets/mod.rs b/src/build/rust/open_value_sharing/src/platforms/icp/assets/mod.rs similarity index 100% rename from src/compiler/rust/open_value_sharing/src/platforms/icp/assets/mod.rs rename to src/build/rust/open_value_sharing/src/platforms/icp/assets/mod.rs diff --git a/src/compiler/rust/open_value_sharing/src/platforms/icp/mod.rs b/src/build/rust/open_value_sharing/src/platforms/icp/mod.rs similarity index 100% rename from src/compiler/rust/open_value_sharing/src/platforms/icp/mod.rs rename to src/build/rust/open_value_sharing/src/platforms/icp/mod.rs diff --git a/src/compiler/rust/open_value_sharing/src/platforms/mod.rs b/src/build/rust/open_value_sharing/src/platforms/mod.rs similarity index 100% rename from src/compiler/rust/open_value_sharing/src/platforms/mod.rs rename to src/build/rust/open_value_sharing/src/platforms/mod.rs diff --git a/src/compiler/rust/open_value_sharing/src/query_methods.rs b/src/build/rust/open_value_sharing/src/query_methods.rs similarity index 100% rename from src/compiler/rust/open_value_sharing/src/query_methods.rs rename to src/build/rust/open_value_sharing/src/query_methods.rs diff --git a/src/compiler/rust/open_value_sharing/src/test/mod.rs b/src/build/rust/open_value_sharing/src/test/mod.rs similarity index 100% rename from src/compiler/rust/open_value_sharing/src/test/mod.rs rename to src/build/rust/open_value_sharing/src/test/mod.rs diff --git a/src/build/stable/commands/clean.ts b/src/build/stable/commands/clean.ts new file mode 100644 index 0000000000..2d28bfbb6c --- /dev/null +++ b/src/build/stable/commands/clean.ts @@ -0,0 +1,33 @@ +import { rm } from 'fs/promises'; + +import { GLOBAL_AZLE_CONFIG_DIR } from '../utils/global_paths'; + +export async function runCommand(): Promise { + await rm(GLOBAL_AZLE_CONFIG_DIR, { + recursive: true, + force: true + }); + + console.info(`~/.config/azle directory deleted`); + + await rm('.azle', { + recursive: true, + force: true + }); + + console.info(`.azle directory deleted`); + + await rm('.dfx', { + recursive: true, + force: true + }); + + console.info(`.dfx directory deleted`); + + await rm('node_modules', { + recursive: true, + force: true + }); + + console.info(`node_modules directory deleted`); +} diff --git a/src/compiler/generate_candid_and_canister_methods.ts b/src/build/stable/commands/compile/candid_and_method_meta/execute.ts similarity index 85% rename from src/compiler/generate_candid_and_canister_methods.ts rename to src/build/stable/commands/compile/candid_and_method_meta/execute.ts index 903bca187e..70bf5e1ef6 100644 --- a/src/compiler/generate_candid_and_canister_methods.ts +++ b/src/build/stable/commands/compile/candid_and_method_meta/execute.ts @@ -1,19 +1,9 @@ -import { readFile } from 'fs/promises'; +import { CandidAndMethodMeta } from '../../../utils/types'; -import { CanisterMethods } from './utils/types'; - -export async function generateCandidAndCanisterMethods( - wasmFilePath: string, - experimental: boolean -): Promise<{ - candid: string; - canisterMethods: CanisterMethods; -}> { - const wasmBuffer = await readFile( - process.env.AZLE_WASM_DEST ?? wasmFilePath - ); - - const wasmModule = new WebAssembly.Module(wasmBuffer); +export async function execute( + wasmBinary: Uint8Array +): Promise { + const wasmModule = new WebAssembly.Module(wasmBinary); const wasmInstance = new WebAssembly.Instance(wasmModule, { ic0: { accept_message: (): void => {}, @@ -88,14 +78,14 @@ export async function generateCandidAndCanisterMethods( }); // TODO can we simplify this to be more like azle_log above? - const candidPointer = (wasmInstance.exports as any).get_candid_pointer( - experimental === true ? 1 : 0 - ); + const candidAndMethodMetaPointer = ( + wasmInstance.exports as any + ).get_candid_and_method_meta_pointer(); const memory = new Uint8Array((wasmInstance.exports.memory as any).buffer); let candidBytes: number[] = []; - let i = candidPointer; + let i = candidAndMethodMetaPointer; while (memory[i] !== 0) { candidBytes.push(memory[i]); i += 1; diff --git a/src/build/stable/commands/compile/candid_and_method_meta/index.ts b/src/build/stable/commands/compile/candid_and_method_meta/index.ts new file mode 100644 index 0000000000..e6c5dbd4c7 --- /dev/null +++ b/src/build/stable/commands/compile/candid_and_method_meta/index.ts @@ -0,0 +1,72 @@ +import { IOType } from 'child_process'; +import { readFile } from 'fs/promises'; + +import { CandidAndMethodMeta, CandidGen, WasmData } from '../../../utils/types'; +import { getWasmBinary } from '../wasm_binary'; +import { execute } from './execute'; + +export async function getCandidAndMethodMeta( + canisterName: string, + candidGen: CandidGen | undefined, + canisterPath: string, + candidPath: string, + js: string, + ioType: IOType, + wasmData: WasmData +): Promise { + if ( + candidGen === undefined || + candidGen === 'automatic' || + candidGen === 'custom' + ) { + return await handleAutomaticAndCustom( + candidGen, + candidPath, + canisterName, + ioType, + js, + wasmData, + canisterPath + ); + } + + if (candidGen === 'http') { + handleHttp(); + } + + throw new Error(`dfx.json: "candid_gen": "${candidGen}" is not supported`); +} + +async function handleAutomaticAndCustom( + candidGen: CandidGen | undefined, + candidPath: string, + canisterName: string, + ioType: IOType, + js: string, + wasmData: WasmData, + canisterPath: string +): Promise { + const wasmBinary = await getWasmBinary( + canisterName, + ioType, + js, + wasmData, + canisterPath + ); + + const { candid, methodMeta } = await execute(wasmBinary); + + return { + candid: + candidGen === 'custom' + ? (await readFile(candidPath)).toString() + : candid, + methodMeta + }; +} + +function handleHttp(): never { + throw new Error( + `dfx.json: "candid_gen": "http" is only available in experimental mode` + ); +} diff --git a/src/build/stable/commands/compile/get_context.ts b/src/build/stable/commands/compile/get_context.ts new file mode 100644 index 0000000000..ee6cb0bb44 --- /dev/null +++ b/src/build/stable/commands/compile/get_context.ts @@ -0,0 +1,57 @@ +import { join } from 'path'; + +import { CanisterConfig, Context, EnvVars } from '../../utils/types'; + +export function getContext( + canisterName: string, + canisterConfig: CanisterConfig +): Context { + const main = canisterConfig?.main; + + if (main === undefined) { + throw new Error( + `Your dfx.json canister configuration object must have a "main" property pointing to your canister's entrypoint .ts or .js file` + ); + } + + const canisterPath = join('.azle', canisterName); + + const candidPath = process.env.CANISTER_CANDID_PATH; + + if (candidPath === undefined) { + throw new Error(`Azle: CANISTER_CANDID_PATH is not defined`); + } + + const wasmBinaryPath = join(canisterPath, `${canisterName}.wasm`); + + const envVars = getEnvVars(canisterConfig); + const wasmData = { + envVars + }; + + return { + canisterPath, + candidPath, + main, + wasmBinaryPath, + wasmData + }; +} + +function getEnvVars(canisterConfig: CanisterConfig): EnvVars { + const env = canisterConfig.custom?.env ?? []; + + return env + .filter((envVarName) => process.env[envVarName] !== undefined) + .map((envVarName) => { + const envVarValue = process.env[envVarName]; + + if (envVarValue === undefined) { + throw new Error( + `Environment variable ${envVarName} must be undefined` + ); + } + + return [envVarName, envVarValue]; + }); +} diff --git a/src/build/stable/commands/compile/index.ts b/src/build/stable/commands/compile/index.ts new file mode 100644 index 0000000000..d1cba68561 --- /dev/null +++ b/src/build/stable/commands/compile/index.ts @@ -0,0 +1,70 @@ +import { IOType } from 'child_process'; +import { mkdir, rm, writeFile } from 'fs/promises'; +import { join } from 'path'; + +import { CanisterConfig } from '../../utils/types'; +import { getCandidAndMethodMeta } from './candid_and_method_meta'; +import { getContext } from './get_context'; +import { compile as compileJavaScript } from './javascript'; +import { getWasmBinary } from './wasm_binary'; + +export async function runCommand( + canisterName: string, + canisterConfig: CanisterConfig, + ioType: IOType +): Promise { + const { main, canisterPath, candidPath, wasmBinaryPath, wasmData } = + getContext(canisterName, canisterConfig); + + await createHiddenAzleDirectories(canisterPath); + + const javaScript = await compileJavaScript(main); + + const { candid, methodMeta } = await getCandidAndMethodMeta( + canisterName, + canisterConfig.custom?.candid_gen, + canisterPath, + candidPath, + javaScript, + ioType, + wasmData + ); + + const wasmBinary = await getWasmBinary( + canisterName, + ioType, + javaScript, + wasmData, + canisterPath, + methodMeta + ); + + await writeGeneratedFiles( + canisterPath, + candidPath, + wasmBinaryPath, + candid, + javaScript, + wasmBinary + ); +} + +export async function createHiddenAzleDirectories( + canisterPath: string +): Promise { + await rm(canisterPath, { recursive: true, force: true }); + await mkdir(canisterPath, { recursive: true }); +} + +export async function writeGeneratedFiles( + canisterPath: string, + candidPath: string, + wasmBinaryPath: string, + candid: string, + javaScript: string, + wasmBinary: Uint8Array +): Promise { + await writeFile(candidPath, candid); + await writeFile(join(canisterPath, 'main.js'), javaScript); + await writeFile(wasmBinaryPath, wasmBinary); +} diff --git a/src/build/stable/commands/compile/javascript.ts b/src/build/stable/commands/compile/javascript.ts new file mode 100644 index 0000000000..b59a5088f9 --- /dev/null +++ b/src/build/stable/commands/compile/javascript.ts @@ -0,0 +1,95 @@ +import { build, BuildOptions } from 'esbuild'; +import esbuildPluginTsc from 'esbuild-plugin-tsc'; + +import { experimentalMessage } from '../../../../lib/experimental/experimental'; + +export async function compile(main: string): Promise { + const prelude = getPrelude(main); + const buildOptions = getBuildOptions(prelude); + const bundled = await bundle(buildOptions); + + return bundled; +} + +function getPrelude(main: string): string { + return /*TS*/ ` + import 'azle/src/lib/stable/globals'; + + import { DidVisitor, getDefaultVisitorData, IDL, toDidString } from 'azle'; + + import Canister from './${main}'; + + ${handleClassApiCanister()} + `; +} + +export function handleClassApiCanister(): string { + return /*TS*/ ` + if (globalThis._azleNodeWasmEnvironment === false) { + const canisterClassInstance = new Canister(); + globalThis._azleCanisterClassInstance = canisterClassInstance; + } + + const canisterIdlType = IDL.Service(globalThis._azleCanisterMethodIdlTypes); + const candid = canisterIdlType.accept(new DidVisitor(), { + ...getDefaultVisitorData(), + isFirstService: true, + systemFuncs: globalThis._azleInitAndPostUpgradeIdlTypes + }); + + globalThis._azleGetCandidAndMethodMeta = () => { + return JSON.stringify({ + candid: toDidString(candid), + methodMeta: globalThis._azleMethodMeta + }); + }; + `; +} + +export async function bundle(buildOptions: BuildOptions): Promise { + const buildResult = await build(buildOptions); + + if (buildResult.outputFiles === undefined) { + throw new Error( + `Azle: Build process failed to produce JavaScript output files` + ); + } + + const bundleArray = buildResult.outputFiles[0].contents; + const bundleString = Buffer.from(bundleArray).toString('utf-8'); + + return bundleString; +} + +// TODO tree-shaking does not seem to work with stdin. I have learned this from sad experience +export function getBuildOptions(ts: string): BuildOptions { + return { + stdin: { + contents: ts, + resolveDir: process.cwd() + }, + format: 'esm', + bundle: true, + treeShaking: true, + write: false, + logLevel: 'silent', + target: 'es2020', + preserveSymlinks: true, + plugins: [ + { + name: 'Azle experimental check', + setup(build): void { + build.onResolve( + { + filter: /^internal$|^util$|^fs$|^fmt$|^assert$|^buffer$|^path$|^stream$|^process$|^url$|^events$|^string_decoder$|^punycode$|^querystring$|^whatwg_url$|^encoding$|^http$|^os$|^crypto$|^zlib$|^internal\/deps\/acorn\/acorn\/dist\/acorn$|^internal\/deps\/acorn\/acorn-walk\/dist\/walk$|^perf_hooks$|^async_hooks$|^https$|^_node:fs$|^_node:os$|^_node:crypto$|^qjs:os$|^_encoding$|^wasi_net$|^wasi_http$/ + }, + (args) => { + throw new Error(experimentalMessage(args.path)); + } + ); + } + }, + esbuildPluginTsc() + ] + }; +} diff --git a/src/build/stable/commands/compile/wasm_binary/compile.ts b/src/build/stable/commands/compile/wasm_binary/compile.ts new file mode 100644 index 0000000000..ac3c6220a4 --- /dev/null +++ b/src/build/stable/commands/compile/wasm_binary/compile.ts @@ -0,0 +1,19 @@ +import { IOType } from 'child_process'; + +import { execSyncPretty } from '../../../utils/exec_sync_pretty'; + +export function compile( + wasmDest: string, + canisterName: string, + stdio: IOType +): void { + execSyncPretty( + `CARGO_TARGET_DIR=target cargo build --target wasm32-wasi --manifest-path .azle/${canisterName}/canister/Cargo.toml --release`, + stdio + ); + + execSyncPretty( + `wasi2ic target/wasm32-wasi/release/canister.wasm ${wasmDest}`, + stdio + ); +} diff --git a/src/build/stable/commands/compile/wasm_binary/generate_cargo_toml_files.ts b/src/build/stable/commands/compile/wasm_binary/generate_cargo_toml_files.ts new file mode 100644 index 0000000000..9f09be3ae2 --- /dev/null +++ b/src/build/stable/commands/compile/wasm_binary/generate_cargo_toml_files.ts @@ -0,0 +1,14 @@ +export function generateWorkspaceCargoToml(): string { + return ` + # This code is automatically generated by Azle + + [workspace] + members = [ + "canister", + "open_value_sharing" + ] + + [profile.release] + opt-level = 'z' + `; +} diff --git a/src/build/stable/commands/compile/wasm_binary/index.ts b/src/build/stable/commands/compile/wasm_binary/index.ts new file mode 100644 index 0000000000..77103ddc3e --- /dev/null +++ b/src/build/stable/commands/compile/wasm_binary/index.ts @@ -0,0 +1,36 @@ +import { IOType } from 'child_process'; +import { existsSync } from 'fs'; + +import { STABLE_STATIC_CANISTER_TEMPLATE_PATH } from '../../../utils/global_paths'; +import { logGlobalDependencies } from '../../../utils/log_global_dependencies'; +import { MethodMeta, WasmData } from '../../../utils/types'; +import { compile } from './compile'; +import { manipulateWasmBinary } from './manipulate'; +import { prepareRustStagingArea } from './prepare_rust_staging_area'; + +export async function getWasmBinary( + canisterName: string, + stdio: IOType, + js: string, + wasmData: WasmData, + canisterPath: string, + methodMeta?: MethodMeta +): Promise { + if ( + process.env.AZLE_GEN_WASM === 'true' || + !existsSync(STABLE_STATIC_CANISTER_TEMPLATE_PATH) + ) { + await logGlobalDependencies(); + + await prepareRustStagingArea(canisterPath); + + compile(STABLE_STATIC_CANISTER_TEMPLATE_PATH, canisterName, stdio); + } + + return await manipulateWasmBinary( + js, + STABLE_STATIC_CANISTER_TEMPLATE_PATH, + wasmData, + methodMeta + ); +} diff --git a/src/build/stable/commands/compile/wasm_binary/manipulate.ts b/src/build/stable/commands/compile/wasm_binary/manipulate.ts new file mode 100644 index 0000000000..39aba60834 --- /dev/null +++ b/src/build/stable/commands/compile/wasm_binary/manipulate.ts @@ -0,0 +1,264 @@ +import binaryen from 'binaryen'; +import { readFile } from 'fs/promises'; + +import { MethodMeta } from '../../../utils/types'; + +// TODO can we make the start function just load the passive segment into memory? +export async function manipulateWasmBinary>( + js: string, + canisterTemplatePath: string, + wasmData: T, + methodMeta?: MethodMeta +): Promise { + const module = await getModule(canisterTemplatePath); + + addCanisterMethodProxies(module, methodMeta); + + const { memoryInfo, memorySegmentInfos } = getMemoryInformation(module); + + const encodedJs = encode(js); + const encodedWasmData = encode(JSON.stringify(wasmData)); + + addPassiveDataSegmentsToMemory( + module, + memoryInfo, + memorySegmentInfos, + encodedJs, + encodedWasmData + ); + + addPassiveSizeFunction(module, 'js_passive_data_size', encodedJs); + addPassiveSizeFunction( + module, + 'wasm_data_passive_data_size', + encodedWasmData + ); + + addInitPassiveDataFunction( + module, + 'init_js_passive_data', + memorySegmentInfos.length, + encodedJs + ); + addInitPassiveDataFunction( + module, + 'init_wasm_data_passive_data', + memorySegmentInfos.length + 1, + encodedWasmData + ); + + // TODO do we need to validate? It takes some extra time + // module.validate(); + + return module.emitBinary(); +} + +export async function getModule( + wasmBinaryPath: string +): Promise { + const originalWasm = await readFile(wasmBinaryPath); + const module = binaryen.readBinary(originalWasm); + + return module; +} + +export function addCanisterMethodProxies( + module: binaryen.Module, + methodMeta: MethodMeta | undefined +): void { + methodMeta?.queries?.forEach(({ name: functionName, index, composite }) => { + addCanisterMethod( + module, + `${ + composite === true + ? 'canister_composite_query' + : 'canister_query' + } ${functionName}`, + 'execute_method_js', + index, + true + ); + }); + + methodMeta?.updates?.forEach(({ name: functionName, index }) => { + addCanisterMethod( + module, + `canister_update ${functionName}`, + 'execute_method_js', + index, + true + ); + }); + + addCanisterMethod( + module, + 'canister_init', + 'init', + methodMeta?.init?.index ?? -1, + true + ); + + addCanisterMethod( + module, + 'canister_post_upgrade', + 'post_upgrade', + methodMeta?.post_upgrade?.index ?? -1, + true + ); + + if (methodMeta?.pre_upgrade !== undefined) { + addCanisterMethod( + module, + 'canister_pre_upgrade', + 'execute_method_js', + methodMeta.pre_upgrade.index, + false + ); + } + + if (methodMeta?.inspect_message !== undefined) { + addCanisterMethod( + module, + 'canister_inspect_message', + 'execute_method_js', + methodMeta.inspect_message.index, + false + ); + } + + if (methodMeta?.heartbeat !== undefined) { + addCanisterMethod( + module, + 'canister_heartbeat', + 'execute_method_js', + methodMeta.heartbeat.index, + false + ); + } +} + +export function addCanisterMethod( + module: binaryen.Module, + exportName: string, + functionToCall: string, + index: number, + passArgData: boolean +): void { + const funcBody = module.block(null, [ + module.call( + functionToCall, + [ + module.i32.const(index), + module.i32.const(passArgData === true ? 1 : 0) + ], + binaryen.none + ) + ]); + + module.addFunction(exportName, binaryen.none, binaryen.none, [], funcBody); + + module.addFunctionExport(exportName, exportName); +} + +export function getMemoryInformation(module: binaryen.Module): { + memoryInfo: binaryen.MemoryInfo; + memorySegmentInfos: binaryen.MemorySegmentInfo[]; +} { + const memoryInfo = module.getMemoryInfo(); + + const numMemorySegments = module.getNumMemorySegments(); + + let memorySegmentInfos: binaryen.MemorySegmentInfo[] = []; + + for (let i = 0; i < numMemorySegments; i++) { + const segment = module.getMemorySegmentInfoByIndex(i); + + memorySegmentInfos.push(segment); + } + + // Normalization is necessary for some reason + // the TypeScript types work out fine without normalization + // but not the actual values during manipulation + const normalizedMemorySegmentInfos = memorySegmentInfos.map( + (memorySegmentInfo) => { + return { + offset: module.i32.const(memorySegmentInfo.offset), + data: new Uint8Array(memorySegmentInfo.data), + passive: memorySegmentInfo.passive + }; + } + ); + + return { + memoryInfo, + memorySegmentInfos: normalizedMemorySegmentInfos + }; +} + +export function encode(text: string): Uint8Array { + return new TextEncoder().encode(text); +} + +export function addPassiveDataSegmentsToMemory( + module: binaryen.Module, + memoryInfo: binaryen.MemoryInfo, + memorySegmentInfos: binaryen.MemorySegmentInfo[], + encodedJs: Uint8Array, + encodedWasmData: Uint8Array +): void { + module.setMemory(memoryInfo.initial, memoryInfo.max ?? -1, null, [ + ...memorySegmentInfos, + { + offset: 0, + data: encodedJs, + passive: true + }, + { + offset: 0, + data: encodedWasmData, + passive: true + } + ]); +} + +export function addPassiveSizeFunction( + module: binaryen.Module, + name: string, + encoded: Uint8Array +): void { + module.removeFunction(name); + + module.addFunction( + name, + binaryen.none, + binaryen.i32, + [], + module.i32.const(encoded.byteLength) + ); +} + +export function addInitPassiveDataFunction( + module: binaryen.Module, + name: string, + segmentNumber: number, + encoded: Uint8Array +): void { + module.removeFunction(name); + + module.addFunction( + name, + binaryen.createType([binaryen.i32]), + binaryen.i32, // TODO just to stop weird Rust optimizations + [], + module.block(null, [ + module.memory.init( + segmentNumber.toString() as unknown as number, + module.local.get(0, binaryen.i32), + module.i32.const(0), + module.i32.const(encoded.byteLength) + ), + module.data.drop(segmentNumber.toString() as unknown as number), + module.return(module.local.get(0, binaryen.i32)) + ]) + ); +} diff --git a/src/compiler/prepare_rust_staging_area.ts b/src/build/stable/commands/compile/wasm_binary/prepare_rust_staging_area.ts similarity index 69% rename from src/compiler/prepare_rust_staging_area.ts rename to src/build/stable/commands/compile/wasm_binary/prepare_rust_staging_area.ts index c1f32b0fbc..7e966df498 100644 --- a/src/compiler/prepare_rust_staging_area.ts +++ b/src/build/stable/commands/compile/wasm_binary/prepare_rust_staging_area.ts @@ -4,17 +4,13 @@ import { mkdir, writeFile } from 'fs/promises'; import { copy } from 'fs-extra/esm'; import { join } from 'path'; +import { AZLE_PACKAGE_PATH } from '../../../utils/global_paths'; import { generateWorkspaceCargoToml } from './generate_cargo_toml_files'; -import { AZLE_PACKAGE_PATH } from './utils/global_paths'; -import { CanisterConfig, Toml } from './utils/types'; export async function prepareRustStagingArea( - canisterConfig: CanisterConfig, canisterPath: string ): Promise { - const workspaceCargoToml: Toml = generateWorkspaceCargoToml( - canisterConfig.opt_level ?? '0' - ); + const workspaceCargoToml = generateWorkspaceCargoToml(); await writeFile(`${canisterPath}/Cargo.toml`, workspaceCargoToml); @@ -28,7 +24,7 @@ export async function prepareRustStagingArea( } await copy( - `${AZLE_PACKAGE_PATH}/src/compiler/rust/canister`, + `${AZLE_PACKAGE_PATH}/src/build/rust/canister`, `${canisterPath}/canister` ); @@ -37,7 +33,7 @@ export async function prepareRustStagingArea( } await copy( - `${AZLE_PACKAGE_PATH}/src/compiler/rust/open_value_sharing`, + `${AZLE_PACKAGE_PATH}/src/build/rust/open_value_sharing`, `${canisterPath}/open_value_sharing` ); } diff --git a/src/build/stable/commands/install_dfx_extension.ts b/src/build/stable/commands/install_dfx_extension.ts new file mode 100644 index 0000000000..29b5454276 --- /dev/null +++ b/src/build/stable/commands/install_dfx_extension.ts @@ -0,0 +1,10 @@ +import { IOType } from 'child_process'; +import { join } from 'path'; + +import { execSyncPretty } from '../utils/exec_sync_pretty'; +import { AZLE_PACKAGE_PATH } from '../utils/global_paths'; + +export function runCommand(ioType: IOType): void { + const dfxExtensionDirectoryPath = join(AZLE_PACKAGE_PATH, 'dfx_extension'); + execSyncPretty(`cd ${dfxExtensionDirectoryPath} && ./install.sh`, ioType); +} diff --git a/src/build/stable/commands/new.ts b/src/build/stable/commands/new.ts new file mode 100644 index 0000000000..669ee0a24b --- /dev/null +++ b/src/build/stable/commands/new.ts @@ -0,0 +1,33 @@ +import { readFile, writeFile } from 'fs/promises'; +// @ts-ignore +import { copy } from 'fs-extra/esm'; +import { join } from 'path'; + +export async function runCommand( + azleVersion: string, + templatePath: string +): Promise { + if (process.argv[3] === undefined) { + console.error('You must provide a name for your Azle project'); + return; + } + + const projectName = process.argv[3]; + + await copy(templatePath, projectName); + + const packageJson = ( + await readFile(join(templatePath, 'package.json')) + ).toString(); + + let parsedPackageJson = JSON.parse(packageJson); + + parsedPackageJson.dependencies.azle = `^${azleVersion}`; + + await writeFile( + join(projectName, 'package.json'), + JSON.stringify(parsedPackageJson, null, 4) + ); + + console.info(`${projectName} created successfully`); +} diff --git a/src/build/stable/commands/version.ts b/src/build/stable/commands/version.ts new file mode 100644 index 0000000000..6cbc3280bc --- /dev/null +++ b/src/build/stable/commands/version.ts @@ -0,0 +1,5 @@ +import { version } from '../../../../package.json'; + +export function runCommand(): void { + console.info(version); +} diff --git a/src/compiler/utils/exec_sync_pretty.ts b/src/build/stable/utils/exec_sync_pretty.ts similarity index 100% rename from src/compiler/utils/exec_sync_pretty.ts rename to src/build/stable/utils/exec_sync_pretty.ts diff --git a/src/build/stable/utils/get_canister_config.ts b/src/build/stable/utils/get_canister_config.ts new file mode 100644 index 0000000000..e406ba62b2 --- /dev/null +++ b/src/build/stable/utils/get_canister_config.ts @@ -0,0 +1,50 @@ +import { existsSync } from 'fs'; +import { readFile } from 'fs/promises'; + +import { CanisterConfig, DfxJson } from './types'; + +export async function getCanisterConfig( + canisterName: string +): Promise { + const dfxJsonExample = getDfxJsonExample(canisterName); + + if (!existsSync(`dfx.json`)) { + throw new Error( + `Create a dfx.json file in the current directory with the following format:\n\n${dfxJsonExample}` + ); + } + + const dfxJson: DfxJson = JSON.parse( + (await readFile('dfx.json')).toString() + ); + const canisterConfig = dfxJson.canisters?.[canisterName]; + + if (canisterConfig === undefined) { + throw new Error( + `Make sure your dfx.json contains a property for "${canisterName}". For example:\n\n${dfxJsonExample}` + ); + } + + if (canisterConfig.main === undefined) { + throw new Error( + `Make sure your dfx.json contains a property for "main". For example:\n\n${dfxJsonExample}` + ); + } + + return canisterConfig; +} + +function getDfxJsonExample(canisterName: string): string { + return `{ + "canisters": { + "${canisterName}": { + "type": "azle", + "main": "index.ts", + "custom": { + "candid_gen": "automatic" + } + } + } +} +`; +} diff --git a/src/compiler/utils/global_paths.ts b/src/build/stable/utils/global_paths.ts similarity index 76% rename from src/compiler/utils/global_paths.ts rename to src/build/stable/utils/global_paths.ts index 318191bd6c..11c066e7be 100644 --- a/src/compiler/utils/global_paths.ts +++ b/src/build/stable/utils/global_paths.ts @@ -11,6 +11,7 @@ export const AZLE_PACKAGE_PATH = join( dirname(fileURLToPath(import.meta.url)), '..', '..', + '..', '..' ); @@ -19,9 +20,3 @@ export const STABLE_STATIC_CANISTER_TEMPLATE_PATH = join( 'canister_templates', 'stable.wasm' ); - -export const EXPERIMENTAL_STATIC_CANISTER_TEMPLATE_PATH = join( - AZLE_PACKAGE_PATH, - 'canister_templates', - 'experimental.wasm' -); diff --git a/src/compiler/log_global_dependencies.ts b/src/build/stable/utils/log_global_dependencies.ts similarity index 84% rename from src/compiler/log_global_dependencies.ts rename to src/build/stable/utils/log_global_dependencies.ts index dc7a498863..196caf4931 100644 --- a/src/compiler/log_global_dependencies.ts +++ b/src/build/stable/utils/log_global_dependencies.ts @@ -1,8 +1,8 @@ import { writeFile } from 'fs/promises'; import { join } from 'path'; -import { execSyncPretty } from './utils/exec_sync_pretty'; -import { AZLE_PACKAGE_PATH } from './utils/global_paths'; +import { execSyncPretty } from './exec_sync_pretty'; +import { AZLE_PACKAGE_PATH } from './global_paths'; export async function logGlobalDependencies(): Promise { const wasiVersion = execSyncPretty('cargo install --list | grep wasi2ic'); diff --git a/src/build/stable/utils/types.ts b/src/build/stable/utils/types.ts new file mode 100644 index 0000000000..59a68da5aa --- /dev/null +++ b/src/build/stable/utils/types.ts @@ -0,0 +1,66 @@ +import { ConsumerConfig } from '../../experimental/commands/compile/open_value_sharing/consumer'; + +export type CandidAndMethodMeta = { + candid: string; + methodMeta: MethodMeta; +}; + +export type CandidGen = 'automatic' | 'custom' | 'http'; + +export type CanisterConfig = { + main?: string; + custom?: { + assets?: [string, string][]; + build_assets?: string; + candid_gen?: CandidGen; + env?: string[]; + esm_aliases: Record; + esm_externals: string[]; + experimental?: boolean; + openValueSharing?: ConsumerConfig; + }; +}; + +export type Context = { + canisterPath: string; + candidPath: string; + main: string; + wasmBinaryPath: string; + wasmData: WasmData; +}; + +export type Command = + | 'new' + | 'compile' + | 'install-dfx-extension' + | 'clean' + | 'upload-assets' + | '--version'; + +export type DfxJson = { + canisters?: { + [key: string]: CanisterConfig | undefined; + }; +}; + +export type EnvVars = [string, string][]; + +export type Method = { + name: string; + composite?: boolean; + index: number; +}; + +export type MethodMeta = { + queries?: Method[]; + updates?: Method[]; + init?: Method; + pre_upgrade?: Method; + post_upgrade?: Method; + heartbeat?: Method; + inspect_message?: Method; +}; + +export type WasmData = { + envVars: EnvVars; +}; diff --git a/src/compiler/compile_typescript_code.ts b/src/compiler/compile_typescript_code.ts deleted file mode 100644 index d9733563a8..0000000000 --- a/src/compiler/compile_typescript_code.ts +++ /dev/null @@ -1,274 +0,0 @@ -import { build } from 'esbuild'; -import esbuildPluginTsc from 'esbuild-plugin-tsc'; -import * as path from 'path'; - -import { experimentalMessage } from '../lib/experimental/experimental'; -import { AZLE_PACKAGE_PATH } from './utils/global_paths'; -import { Result } from './utils/result'; -import { JavaScript, TypeScript } from './utils/types'; - -export async function compileTypeScriptToJavaScript( - main: string, - wasmedgeQuickJsPath: string, - esmAliases: Record, - esmExternals: string[], - experimental: boolean -): Promise> { - const imports = getImports(main, experimental); - - const bundledJavaScript = await bundleFromString( - imports, - wasmedgeQuickJsPath, - esmAliases, - esmExternals, - experimental - ); - - return { - ok: bundledJavaScript - }; -} - -function getImports(main: string, experimental: boolean): string { - if (experimental === false) { - return /*TS*/ ` - import 'azle/src/lib/stable/globals'; - - import { DidVisitor, getDefaultVisitorData, IDL, toDidString } from 'azle'; - - export * from './${main}'; - import * as CanisterMethods from './${main}'; - - if (globalThis._azleWasmtimeCandidEnvironment === false) { - const canister = new CanisterMethods.default(); - globalThis._azleCanisterClassInstance = canister; - } - - const canisterIdlType = IDL.Service(globalThis._azleCanisterMethodIdlTypes); - const candid = canisterIdlType.accept(new DidVisitor(), { - ...getDefaultVisitorData(), - isFirstService: true, - systemFuncs: globalThis._azleInitAndPostUpgradeIdlTypes - }); - - - globalThis.candidInfoFunction = () => { - return JSON.stringify({ - candid: toDidString(candid), - canisterMethods: globalThis._azleCanisterMethods - }); - }; - - globalThis.exports.canisterMethods = globalThis._azleCanisterMethods; - `; - } else { - return /*TS*/ ` - import 'azle/src/lib/stable/globals'; - import 'azle/src/lib/experimental/globals'; - - import 'reflect-metadata'; - - // TODO remove the ethersGetUrl registration once we implement lower-level http for ethers - import { ethersGetUrl, Server } from 'azle/src/lib/experimental'; - import { ethers } from 'ethers'; - ethers.FetchRequest.registerGetUrl(ethersGetUrl); - - import { DidVisitor, getDefaultVisitorData, IDL, toDidString } from 'azle'; - export { Principal } from '@dfinity/principal'; - export * from './${main}'; - import * as CanisterMethods from './${main}'; - - if (isClassSyntaxExport(CanisterMethods)) { - if (globalThis._azleWasmtimeCandidEnvironment === false) { - const canister = new CanisterMethods.default(); - globalThis._azleCanisterClassInstance = canister; - } - - const canisterIdlType = IDL.Service(globalThis._azleCanisterMethodIdlTypes); - const candid = canisterIdlType.accept(new DidVisitor(), { - ...getDefaultVisitorData(), - isFirstService: true, - systemFuncs: globalThis._azleInitAndPostUpgradeIdlTypes - }); - - globalThis.candidInfoFunction = () => { - return JSON.stringify({ - candid: toDidString(candid), - canisterMethods: globalThis._azleCanisterMethods - }); - }; - - globalThis.exports.canisterMethods = globalThis._azleCanisterMethods; - } - else { - // TODO This setTimeout is here to allow asynchronous operations during canister initialization - // for Server canisters that have chosen not to use export default Server - // This seems to work no matter how many async tasks are awaited, but I am still unsure about how it will - // behave in all async situations - setTimeout(() => { - const canisterMethods = CanisterMethods.default !== undefined ? CanisterMethods.default() : Server(() => globalThis._azleNodeServer)(); - - globalThis.candidInfoFunction = () => { - const candidInfo = canisterMethods.getIdlType([]).accept(new DidVisitor(), { - ...getDefaultVisitorData(), - isFirstService: true, - systemFuncs: canisterMethods.getSystemFunctionIdlTypes() - }); - - return JSON.stringify({ - candid: toDidString(candidInfo), - canisterMethods: { - // TODO The spread is because canisterMethods is a function with properties - // TODO we should probably just grab the props out that we need - ...canisterMethods - } - }); - }; - - // TODO I do not know how to get the module exports yet with wasmedge_quickjs - globalThis.exports.canisterMethods = canisterMethods; - }); - } - - function isClassSyntaxExport(module) { - const isNothing = module === undefined || module.default === undefined; - const isFunctionalSyntaxExport = - module?.default?.isCanister === true || - module?.default?.isRecursive === true; - return !isNothing && !isFunctionalSyntaxExport; - } - `; - } -} - -export async function bundleFromString( - ts: TypeScript, - wasmedgeQuickJsPath: string, - esmAliases: Record, - esmExternals: string[], - experimental: boolean -): Promise { - const finalWasmedgeQuickJsPath = - process.env.AZLE_WASMEDGE_QUICKJS_DIR ?? wasmedgeQuickJsPath; - - const externalImplemented = [ - '_node:fs', - '_node:os', - '_node:crypto', - 'qjs:os', - '_encoding', - 'wasi_net', - 'wasi_http' - ]; - - // These are modules that should not be included in the build from the Azle side (our side) - const externalNotImplementedAzle: string[] = []; - - // These are modules that should not be included in the build from the developer side - // These are specified in the dfx.json canister object esm_externals property - const externalNotImplementedDev = esmExternals; - - // These will cause runtime errors if their functionality is dependend upon - const externalNotImplemented = [ - ...externalNotImplementedAzle, - ...externalNotImplementedDev - ]; - - const customJsModulesPath = path.join( - AZLE_PACKAGE_PATH, - 'src', - 'compiler', - 'custom_js_modules' - ); - - // TODO tree-shaking does not seem to work with stdin. I have learned this from sad experience - const buildResult = await build({ - stdin: { - contents: ts, - resolveDir: process.cwd() - }, - format: 'esm', - bundle: true, - treeShaking: true, - write: false, - logLevel: 'silent', - target: 'es2020', - preserveSymlinks: true, - alias: { - internal: `${finalWasmedgeQuickJsPath}/modules/internal`, - util: `${finalWasmedgeQuickJsPath}/modules/util`, - fs: `${finalWasmedgeQuickJsPath}/modules/fs`, - fmt: `${finalWasmedgeQuickJsPath}/modules/fmt`, - assert: `${finalWasmedgeQuickJsPath}/modules/assert.js`, - buffer: `${finalWasmedgeQuickJsPath}/modules/buffer.js`, - path: `${finalWasmedgeQuickJsPath}/modules/path.js`, - stream: `${finalWasmedgeQuickJsPath}/modules/stream.js`, - process: `${finalWasmedgeQuickJsPath}/modules/process.js`, - url: `${finalWasmedgeQuickJsPath}/modules/url.js`, - events: `${finalWasmedgeQuickJsPath}/modules/events.js`, - string_decoder: `${finalWasmedgeQuickJsPath}/modules/string_decoder.js`, - punycode: `${finalWasmedgeQuickJsPath}/modules/punycode.js`, - querystring: `${finalWasmedgeQuickJsPath}/modules/querystring.js`, - whatwg_url: `${finalWasmedgeQuickJsPath}/modules/whatwg_url.js`, - encoding: `${finalWasmedgeQuickJsPath}/modules/encoding.js`, - http: `${finalWasmedgeQuickJsPath}/modules/http.js`, - os: `${finalWasmedgeQuickJsPath}/modules/os.js`, - // crypto: `${finalWasmedgeQuickJsPath}/modules/crypto.js`, // TODO waiting on wasi-crypto - crypto: 'crypto-browserify', // TODO we really want the wasmedge-quickjs version once wasi-crypto is working - zlib: 'pako', - 'internal/deps/acorn/acorn/dist/acorn': path.join( - customJsModulesPath, - 'acorn', - 'acorn.ts' - ), // TODO acorn stuff is a bug, wasmedge-quickjs should probably add these files - 'internal/deps/acorn/acorn-walk/dist/walk': path.join( - customJsModulesPath, - 'acorn', - 'walk.ts' - ), // TODO acorn stuff is a bug, wasmedge-quickjs should probably add these files - perf_hooks: path.join(customJsModulesPath, 'perf_hooks.ts'), - async_hooks: path.join(customJsModulesPath, 'async_hooks.ts'), - https: path.join(customJsModulesPath, 'https.ts'), - ...esmAliases - }, - external: [...externalImplemented, ...externalNotImplemented], - plugins: [ - { - name: 'Azle experimental check', - setup(build): void { - if (experimental === false) { - build.onResolve( - { - filter: /^internal$|^util$|^fs$|^fmt$|^assert$|^buffer$|^path$|^stream$|^process$|^url$|^events$|^string_decoder$|^punycode$|^querystring$|^whatwg_url$|^encoding$|^http$|^os$|^crypto$|^zlib$|^internal\/deps\/acorn\/acorn\/dist\/acorn$|^internal\/deps\/acorn\/acorn-walk\/dist\/walk$|^perf_hooks$|^async_hooks$|^https$|^_node:fs$|^_node:os$|^_node:crypto$|^qjs:os$|^_encoding$|^wasi_net$|^wasi_http$/ - }, - (args) => { - throw new Error(experimentalMessage(args.path)); - } - ); - } - } - }, - esbuildPluginTsc() - ] - }); - - const bundleArray = buildResult.outputFiles[0].contents; - const bundleString = Buffer.from(bundleArray).toString('utf-8'); - - // TODO consuming code tries to require assert.js which is now an ES module - // TODO in wasmedge-quickjs, so the expected output is now on the .default property - // TODO this has only come up with assert for now - return bundleString - .replace( - /__toCommonJS\(assert_exports\)\);/g, - `__toCommonJS(assert_exports)).default;` - ) - .replace( - /__toCommonJS\(stream_exports\)\);/g, - `__toCommonJS(stream_exports)).default;` - ) - .replace( - /__toCommonJS\(http_exports\)\);/g, - `__toCommonJS(http_exports)).default;` - ); -} diff --git a/src/compiler/generate_cargo_toml_files.ts b/src/compiler/generate_cargo_toml_files.ts deleted file mode 100644 index 882368e813..0000000000 --- a/src/compiler/generate_cargo_toml_files.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { OptLevel, Toml } from './utils/types'; - -export function generateWorkspaceCargoToml(optLevel: OptLevel): Toml { - const optLevels = { - '0': `opt-level = 'z'`, - '1': ` - opt-level = 'z' - lto = "thin" - `, - '2': ` - opt-level = 'z' - lto = "thin" - codegen-units = 1 - `, - '3': ` - opt-level = 'z' - lto = "fat" - `, - '4': ` - opt-level = 'z' - lto = "fat" - codegen-units = 1 - ` - }; - - return ` - # This code is automatically generated by Azle - - [workspace] - members = [ - "canister", - "open_value_sharing" - ] - - [profile.release] - ${optLevels[optLevel]} - `; -} diff --git a/src/compiler/generate_wasm_binary.ts b/src/compiler/generate_wasm_binary.ts deleted file mode 100644 index 5df280d7ed..0000000000 --- a/src/compiler/generate_wasm_binary.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { IOType } from 'child_process'; - -import { logGlobalDependencies } from './log_global_dependencies'; -import { prepareRustStagingArea } from './prepare_rust_staging_area'; -import { execSyncPretty } from './utils/exec_sync_pretty'; -import { - EXPERIMENTAL_STATIC_CANISTER_TEMPLATE_PATH, - STABLE_STATIC_CANISTER_TEMPLATE_PATH -} from './utils/global_paths'; -import { CanisterConfig, CompilerInfo } from './utils/types'; -import { manipulateWasmBinary } from './wasm_binary_manipulation'; - -export async function generateWasmBinary( - canisterName: string, - stdio: IOType, - js: string, - compilerInfo: CompilerInfo, - canisterConfig: CanisterConfig, - canisterPath: string, - experimental: boolean -): Promise { - if (process.env.AZLE_GEN_WASM === 'true') { - await logGlobalDependencies(); - - await prepareRustStagingArea(canisterConfig, canisterPath); - - compileRustCodeNatively( - STABLE_STATIC_CANISTER_TEMPLATE_PATH, - canisterName, - false, - stdio - ); - - compileRustCodeNatively( - EXPERIMENTAL_STATIC_CANISTER_TEMPLATE_PATH, - canisterName, - true, - stdio - ); - } - - await manipulateWasmBinary( - canisterName, - js, - compilerInfo, - canisterConfig, - experimental - ); -} - -function compileRustCodeNatively( - wasmDest: string, - canisterName: string, - experimental: boolean, - stdio: IOType -): void { - execSyncPretty( - `CARGO_TARGET_DIR=target cargo build --target wasm32-wasi --manifest-path .azle/${canisterName}/canister/Cargo.toml --release${ - experimental === true ? ' --features "experimental"' : '' - }`, - stdio - ); - - execSyncPretty( - `wasi2ic target/wasm32-wasi/release/canister.wasm ${wasmDest}`, - stdio - ); -} diff --git a/src/compiler/get_candid_and_canister_methods.ts b/src/compiler/get_candid_and_canister_methods.ts deleted file mode 100644 index b77671abd5..0000000000 --- a/src/compiler/get_candid_and_canister_methods.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { IOType } from 'child_process'; -import { readFile } from 'fs/promises'; -import { join } from 'path'; - -import { generateCandidAndCanisterMethods } from './generate_candid_and_canister_methods'; -import { generateWasmBinary } from './generate_wasm_binary'; -import { AZLE_PACKAGE_PATH } from './utils/global_paths'; -import { - CandidGen, - CanisterConfig, - CanisterMethods, - CompilerInfo -} from './utils/types'; - -export async function getCandidAndCanisterMethods( - candidGen: CandidGen = 'http', - candidPath: string, - canisterName: string, - stdioType: IOType, - envVars: [string, string][], - rustStagingWasmPath: string, - js: string, - canisterConfig: CanisterConfig, - canisterPath: string, - experimental: boolean -): Promise<{ - candid: string; - canisterMethods: CanisterMethods; -}> { - if (candidGen === 'automatic' || candidGen === 'custom') { - const customCandid = - candidGen === 'custom' - ? (await readFile(candidPath)).toString() - : ''; - - const compilerInfo: CompilerInfo = { - canister_methods: { - candid: customCandid, - queries: [], - updates: [], - callbacks: {} - }, - env_vars: envVars - }; - - await generateWasmBinary( - canisterName, - stdioType, - js, - compilerInfo, - canisterConfig, - canisterPath, - experimental - ); - - const { candid, canisterMethods } = - await generateCandidAndCanisterMethods( - rustStagingWasmPath, - experimental - ); - - return { - candid: candidGen === 'custom' ? customCandid : candid, - canisterMethods - }; - } - - if (candidGen === 'http') { - const candid = ( - await readFile(join(AZLE_PACKAGE_PATH, 'server.did')) - ).toString(); - - const canisterMethods: CanisterMethods = { - candid, - queries: [ - { - name: 'http_request', - index: 0, - composite: true - } - ], - updates: [ - { - name: 'http_request_update', - index: 1 - } - ], - init: { name: 'init', index: 2 }, - post_upgrade: { name: 'postUpgrade', index: 3 }, - callbacks: {} - }; - - return { - candid, - canisterMethods - }; - } - - throw new Error(`Unsupported candid_gen: ${candidGen}`); -} diff --git a/src/compiler/get_canister_javascript.ts b/src/compiler/get_canister_javascript.ts deleted file mode 100644 index e858337f66..0000000000 --- a/src/compiler/get_canister_javascript.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { compileTypeScriptToJavaScript } from './compile_typescript_code'; -import { dim, red } from './utils/colors'; -import { Err, ok, Result } from './utils/result'; -import { - AzleError, - TsCompilationError, - TsSyntaxErrorLocation -} from './utils/types'; - -export async function getCanisterJavaScript( - mainPath: string, - wasmedgeQuickJsPath: string, - esmAliases: Record, - esmExternals: string[], - experimental: boolean -): Promise> { - const typeScriptCompilationResult = await compileTypeScriptToJavaScript( - mainPath, - wasmedgeQuickJsPath, - esmAliases, - esmExternals, - experimental - ); - - if (!ok(typeScriptCompilationResult)) { - const azleErrorResult = compilationErrorToAzleErrorResult( - typeScriptCompilationResult.err - ); - - return azleErrorResult; - } - - return typeScriptCompilationResult; -} - -function compilationErrorToAzleErrorResult(error: unknown): Err { - if (isTsCompilationError(error)) { - const firstError = error.errors[0]; - const codeSnippet = generateVisualDisplayOfErrorLocation( - firstError.location - ); - return Err({ - error: `TypeScript error: ${firstError.text}`, - suggestion: codeSnippet, - exitCode: 5 - }); - } else { - return Err({ - error: `Unable to compile TS to JS: ${error}`, - exitCode: 6 - }); - } -} - -function isTsCompilationError(error: unknown): error is TsCompilationError { - if ( - error && - typeof error === 'object' && - 'stack' in error && - 'message' in error && - 'errors' in error && - 'warnings' in error - ) { - return true; - } - return false; -} - -function generateVisualDisplayOfErrorLocation( - location: TsSyntaxErrorLocation -): string { - const { file, line, column, lineText } = location; - const marker = red('^'.padStart(column + 1)); - const preciseLocation = dim(`${file}:${line}:${column}`); - const previousLine = - line > 1 - ? dim(`${(line - 1).toString().padStart(line.toString().length)}| `) - : ''; - const offendingLine = `${dim(`${line}| `)}${lineText}`; - const subsequentLine = `${dim( - `${(line + 1).toString().padStart(line.toString().length)}| ` - )}${marker}`; - return `${preciseLocation}\n${previousLine}\n${offendingLine}\n${subsequentLine}`; -} diff --git a/src/compiler/get_names.ts b/src/compiler/get_names.ts deleted file mode 100644 index 30c38ac803..0000000000 --- a/src/compiler/get_names.ts +++ /dev/null @@ -1,90 +0,0 @@ -// TODO make this function's return type explicit https://github.com/demergent-labs/azle/issues/1860 -/* eslint-disable @typescript-eslint/explicit-function-return-type */ - -import { join } from 'path'; - -import { getCanisterId } from '../../dfx'; -import { version } from '../../package.json'; -import { - getCanisterConfig, - getCanisterName, - getStdIoType, - unwrap -} from './utils'; -import { execSyncPretty } from './utils/exec_sync_pretty'; -import { GLOBAL_AZLE_CONFIG_DIR } from './utils/global_paths'; -import { CanisterConfig } from './utils/types'; - -export async function getNames() { - const stdioType = getStdIoType(); - - const wasmedgeQuickJsName = `wasmedge-quickjs_${version}`; - - const wasmedgeQuickJsPath = join( - GLOBAL_AZLE_CONFIG_DIR, - wasmedgeQuickJsName - ); - - const replicaWebServerPort = execSyncPretty(`dfx info webserver-port`) - .toString() - .trim(); - - const canisterName = unwrap(getCanisterName(process.argv)); - const canisterPath = join('.azle', canisterName); - - const canisterConfig = unwrap(await getCanisterConfig(canisterName)); - const candidPath = process.env.CANISTER_CANDID_PATH; - - if (candidPath === undefined) { - throw new Error(`Azle: CANISTER_CANDID_PATH is not defined`); - } - - const envVars = getEnvVars(canisterConfig); - - const rustStagingWasmPath = join(canisterPath, `${canisterName}.wasm`); - - const canisterId = getCanisterId(canisterName); - - const reloadedJsPath = join('.azle', canisterName, 'main_reloaded.js'); - - const esmAliases = canisterConfig.esm_aliases ?? {}; - const esmExternals = canisterConfig.esm_externals ?? []; - - const experimental = canisterConfig.custom?.experimental ?? false; - - return { - stdioType, - wasmedgeQuickJsName, - wasmedgeQuickJsPath, - replicaWebServerPort, - canisterName, - canisterPath, - canisterConfig, - candidPath, - envVars, - rustStagingWasmPath, - canisterId, - reloadedJsPath, - esmAliases, - esmExternals, - experimental - }; -} - -function getEnvVars(canisterConfig: CanisterConfig): [string, string][] { - const env = [...(canisterConfig.env ?? []), 'AZLE_AUTORELOAD']; - - return env - .filter((envVarName) => process.env[envVarName] !== undefined) - .map((envVarName) => { - const envVarValue = process.env[envVarName]; - - if (envVarValue === undefined) { - throw new Error( - `Environment variable ${envVarName} must be undefined` - ); - } - - return [envVarName, envVarValue]; - }); -} diff --git a/src/compiler/handle_cli.ts b/src/compiler/handle_cli.ts deleted file mode 100644 index 13568f0760..0000000000 --- a/src/compiler/handle_cli.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { IOType } from 'child_process'; -import { rm } from 'fs/promises'; -import { join } from 'path'; - -import { version as azleVersion } from '../../package.json'; -import { uploadFiles } from './file_uploader'; -import { getFilesToUpload } from './file_uploader/get_files_to_upload'; -import { generateNewAzleProject } from './new_command'; -import { getStdIoType } from './utils'; -import { execSyncPretty } from './utils/exec_sync_pretty'; -import { - AZLE_PACKAGE_PATH, - GLOBAL_AZLE_CONFIG_DIR -} from './utils/global_paths'; - -export async function handleCli(): Promise { - const commandName = process.argv[2]; - - if (commandName === 'new') { - await handleCommandNew(); - - return true; - } - - if (commandName === 'clean') { - await handleCommandClean(); - - return true; - } - - if (commandName === 'upload-assets') { - await handleUploadAssets(); - - return true; - } - - if (commandName === '--version') { - handleVersionCommand(); - - return true; - } - - if (commandName === 'install-dfx-extension') { - installDfxExtension(getStdIoType()); - - return true; - } - - return false; -} - -async function handleCommandNew(): Promise { - await generateNewAzleProject(azleVersion); -} - -async function handleCommandClean(): Promise { - await rm(GLOBAL_AZLE_CONFIG_DIR, { - recursive: true, - force: true - }); - - console.info(`~/.config/azle directory deleted`); - - await rm('.azle', { - recursive: true, - force: true - }); - - console.info(`.azle directory deleted`); - - await rm('.dfx', { - recursive: true, - force: true - }); - - console.info(`.dfx directory deleted`); - - await rm('node_modules', { - recursive: true, - force: true - }); - - console.info(`node_modules directory deleted`); -} - -async function handleUploadAssets(): Promise { - const canisterName = process.argv[3]; - const srcPath = process.argv[4]; - const destPath = process.argv[5]; - const filesToUpload = await getFilesToUpload( - canisterName, - srcPath, - destPath - ); - await uploadFiles(canisterName, filesToUpload); -} - -function handleVersionCommand(): void { - console.info(azleVersion); -} - -// TODO this is just temporary -// TODO until we either make azle an official extension in the DFINITY dfx extensions repo -// TODO or we have a better way for the developer to install the extension locally -function installDfxExtension(stdioType: IOType): void { - const dfxExtensionDirectoryPath = join(AZLE_PACKAGE_PATH, 'dfx_extension'); - execSyncPretty( - `cd ${dfxExtensionDirectoryPath} && ./install.sh`, - stdioType - ); -} diff --git a/src/compiler/index.ts b/src/compiler/index.ts deleted file mode 100755 index 7e6add6be8..0000000000 --- a/src/compiler/index.ts +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env -S tsx --abort-on-uncaught-exception - -import { mkdir, rm, writeFile } from 'fs/promises'; -import { join } from 'path'; - -import { setupFileWatcher } from './file_watcher/setup_file_watcher'; -import { generateWasmBinary } from './generate_wasm_binary'; -import { getCandidAndCanisterMethods } from './get_candid_and_canister_methods'; -import { getCanisterJavaScript } from './get_canister_javascript'; -import { getNames } from './get_names'; -import { handleCli } from './handle_cli'; -import { logSuccess, time, unwrap } from './utils'; -import { green } from './utils/colors'; -import { execSyncPretty } from './utils/exec_sync_pretty'; -import { CompilerInfo } from './utils/types'; - -azle(); - -async function azle(): Promise { - const commandExecuted = await handleCli(); - - if (commandExecuted === true) { - return; - } - - const { - stdioType, - wasmedgeQuickJsPath, - replicaWebServerPort, - canisterName, - canisterPath, - canisterConfig, - candidPath, - envVars, - rustStagingWasmPath, - canisterId, - reloadedJsPath, - esmAliases, - esmExternals, - experimental - } = await getNames(); - - await time( - `\nBuilding canister ${green(canisterName)}`, - 'default', - async () => { - createAzleDirectories(canisterPath); - - const canisterJavaScript = unwrap( - await getCanisterJavaScript( - canisterConfig.main, - wasmedgeQuickJsPath, - esmAliases, - esmExternals, - experimental - ) - ); - - await writeFile(join(canisterPath, 'main.js'), canisterJavaScript); - - const { candid, canisterMethods } = - await getCandidAndCanisterMethods( - canisterConfig.candid_gen, - candidPath, - canisterName, - stdioType, - envVars, - rustStagingWasmPath, - canisterJavaScript, - canisterConfig, - canisterPath, - experimental - ); - - // This is for the dfx.json candid property - await writeFile(candidPath, candid); - - const compilerInfo: CompilerInfo = { - // The spread is because canisterMethods is a function with properties - canister_methods: { - ...canisterMethods - }, - env_vars: envVars - }; - - await generateWasmBinary( - canisterName, - stdioType, - canisterJavaScript, - compilerInfo, - canisterConfig, - canisterPath, - experimental - ); - - if ( - canisterConfig.build_assets !== undefined && - canisterConfig.build_assets !== null - ) { - execSyncPretty(canisterConfig.build_assets, stdioType); - } - - setupFileWatcher( - reloadedJsPath, - canisterId, - canisterConfig.main, - wasmedgeQuickJsPath, - esmAliases, - esmExternals, - canisterName, - canisterMethods.post_upgrade?.index ?? -1, - experimental - ); - } - ); - - logSuccess(canisterName, canisterId, replicaWebServerPort); -} - -async function createAzleDirectories(canisterPath: string): Promise { - await rm(canisterPath, { recursive: true, force: true }); - await mkdir(canisterPath, { recursive: true }); -} diff --git a/src/compiler/utils/colors.ts b/src/compiler/utils/colors.ts deleted file mode 100644 index 6019b89d75..0000000000 --- a/src/compiler/utils/colors.ts +++ /dev/null @@ -1,23 +0,0 @@ -export function red(text: string): string { - return `\x1b[31m${text}\x1b[0m`; -} - -export function yellow(text: string): string { - return `\x1b[33m${text}\x1b[0m`; -} - -export function green(text: string): string { - return `\x1b[32m${text}\x1b[0m`; -} - -export function blue(text: string): string { - return `\x1b[34m${text}\x1b[0m`; -} - -export function purple(text: string): string { - return `\x1b[35m${text}\x1b[0m`; -} - -export function dim(text: string): string { - return `\x1b[2m${text}\x1b[0m`; -} diff --git a/src/compiler/utils/get_canister_config.ts b/src/compiler/utils/get_canister_config.ts deleted file mode 100644 index 3f0112230d..0000000000 --- a/src/compiler/utils/get_canister_config.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { existsSync } from 'fs'; -import { readFile } from 'fs/promises'; - -import { blue, green, purple, red, yellow } from './colors'; -import { Err, Ok, Result } from './result'; -import { AzleError, CanisterConfig, DfxJson } from './types'; - -export async function getCanisterConfig( - canisterName: string -): Promise> { - const exampleDfxJson = colorFormattedDfxJsonExample(canisterName); - - if (!existsSync(`dfx.json`)) { - return Err({ - error: 'Missing dfx.json', - suggestion: `Create a dfx.json file in the current directory with the following format:\n\n${exampleDfxJson}`, - exitCode: 2 - }); - } - - const dfxJson: DfxJson = JSON.parse( - (await readFile('dfx.json')).toString() - ); - const canisterConfig = dfxJson.canisters[canisterName]; - - if (!canisterConfig) { - return Err({ - error: `Unable to find canister "${canisterName}" in ./dfx.json`, - suggestion: `Make sure your dfx.json contains an entry for "${canisterName}". For example:\n\n${exampleDfxJson}`, - exitCode: 3 - }); - } - - const { main } = canisterConfig; - - if (main === undefined) { - const missingFields = [['"main"', main]] - .filter(([_, value]) => !value) - .map(([field, _]) => field); - const fieldOrFields = missingFields.length === 1 ? 'field' : 'fields'; - const missingFieldNames = missingFields.join(', '); - return Err({ - error: `Missing ${fieldOrFields} ${missingFieldNames} in ./dfx.json`, - suggestion: `Make sure your dfx.json looks similar to the following:\n\n${exampleDfxJson}`, - exitCode: 4 - }); - } - - return Ok(canisterConfig); -} - -function colorFormattedDfxJsonExample(canisterName: string): string { - return ` ${yellow('{')} - ${red('"canisters"')}: ${purple('{')} - ${red(`"${canisterName}"`)}: ${blue('{')} - ${red('"type"')}: ${green('"azle"')}, - ${red('"main"')}: ${green('"src/index.ts"')} - ${blue('}')} - ${purple('}')} - ${yellow('}')}`; -} diff --git a/src/compiler/utils/get_canister_name.ts b/src/compiler/utils/get_canister_name.ts deleted file mode 100644 index 899e4313b2..0000000000 --- a/src/compiler/utils/get_canister_name.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { version } from '../../../package.json'; -import { dim, green } from './colors'; -import { Err, Ok, Result } from './result'; -import { AzleError } from './types'; - -export function getCanisterName(args: string[]): Result { - const canisterNames = args.slice(2).filter((arg) => !isCliFlag(arg)); - - if (canisterNames.length === 0) { - return Err({ suggestion: `azle v${version}\n\n${getUsageInfo()}` }); - } - - if (canisterNames.length > 1) { - return Err({ - error: 'Too many arguments', - suggestion: getUsageInfo(), - exitCode: 1 - }); - } - const canisterName = canisterNames[0]; - - return Ok(canisterName); -} - -function getUsageInfo(): string { - return `Usage: azle ${dim('[-v|--verbose]')} ${green('')}`; -} - -function isCliFlag(arg: string): boolean { - return arg.startsWith('--') || arg.startsWith('-'); -} diff --git a/src/compiler/utils/index.ts b/src/compiler/utils/index.ts deleted file mode 100644 index e69ad09ff9..0000000000 --- a/src/compiler/utils/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { IOType } from 'child_process'; - -export { getCanisterConfig } from './get_canister_config'; -export { getCanisterName } from './get_canister_name'; -export { logSuccess } from './log_success'; -export { unwrap } from './result'; -export { time } from './time'; - -export function getStdIoType(): IOType { - return isVerboseMode() ? 'inherit' : 'pipe'; -} - -export function isVerboseMode(): boolean { - return ( - process.argv.includes('--verbose') || - process.argv.includes('-v') || - process.env.AZLE_VERBOSE === 'true' - ); -} diff --git a/src/compiler/utils/log_success.ts b/src/compiler/utils/log_success.ts deleted file mode 100644 index 6f0a9a12d9..0000000000 --- a/src/compiler/utils/log_success.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { green } from './colors'; - -export function logSuccess( - canisterName: string, - canisterId: string, - replicaWebServerPort: string -): void { - const url = - process.env.DFX_NETWORK === 'ic' - ? `https://${canisterId}.raw.icp0.io` - : `http://${canisterId}.localhost:${replicaWebServerPort}`; - - console.info( - `\n🎉 Canister ${green(canisterName)} will be available at ${green( - url - )}\n` - ); -} diff --git a/src/compiler/utils/result.ts b/src/compiler/utils/result.ts deleted file mode 100644 index db5f6ca11b..0000000000 --- a/src/compiler/utils/result.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { red } from './colors'; -import { AzleError } from './types'; - -export type Ok = { - ok: T; -}; - -export type Err = { - err: T; -}; - -export type Result = Partial<{ - ok: Ok; - err: Err; -}>; - -export function ok(result: Result): result is Ok { - return result.err === undefined; -} - -export function unwrap(result: Result): Ok | never { - if (!ok(result)) { - const err = result.err as NonNullable; - exitWithError(err); - } - return result.ok; -} - -export function Err(err: T): Err { - return { err }; -} - -export function Ok(ok: T): Ok { - return { ok }; -} - -function exitWithError(payload: AzleError): never { - if (payload.error) { - console.error(`\n💣 ${red(payload.error)}`); - } - if (payload.suggestion) { - console.error(`\n${payload.suggestion}`); - } - console.info(`\n💀 Build failed`); - process.exit(payload.exitCode ?? 0); -} diff --git a/src/compiler/utils/time.ts b/src/compiler/utils/time.ts deleted file mode 100644 index bfdc4ba1c0..0000000000 --- a/src/compiler/utils/time.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { dim } from './colors'; - -export async function time( - label: string, - mode: 'inline' | 'default', - callback: () => Promise -): Promise { - const startTime = process.hrtime(); - console.info(label); - const result = await callback(); - const endTime = process.hrtime(startTime); - const duration = parseHrTimeToSeconds(endTime); - - if (mode === 'inline') { - const leadingNewLinesCount = (label.match(/^[\n]+/g) || [''])[0].length; - const cursorUp = `\x1b[${1 + leadingNewLinesCount}A`; - process.stdout.write(`${cursorUp}${label} ${dim(`${duration}s`)}\n`); - } else { - console.info(`\nDone in ${duration}s`); - } - - return result; -} - -function parseHrTimeToSeconds( - hrTime: [number, number], - precision: number = 2 -): string { - const seconds = (hrTime[0] + hrTime[1] / 1_000_000_000).toFixed(precision); - return seconds; -} diff --git a/src/compiler/utils/types.ts b/src/compiler/utils/types.ts deleted file mode 100644 index dc70cc3a68..0000000000 --- a/src/compiler/utils/types.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { RequireExactlyOne } from '../../lib/experimental'; -import { ConsumerConfig } from '../get_consumer_config'; - -export type AzleError = { - error?: string; - suggestion?: string; - exitCode?: number; -}; - -export type DfxJson = Readonly<{ - canisters: Readonly<{ - [key: string]: CanisterConfig; - }>; -}>; - -export type JavaScript = string; - -export type CanisterConfig = Readonly<{ - type: 'azle'; - main: string; - build?: string; - build_assets?: string; - candid?: string; - candid_gen?: CandidGen; - wasm?: string; - env?: string[]; - opt_level?: OptLevel; - assets?: [string, string][]; - esm_aliases?: Record; - esm_externals?: string[]; - // TODO we should move all custom properties into custom in a subsequent PR - custom?: { - experimental?: boolean; - openValueSharing?: ConsumerConfig; - }; -}>; - -export type OptLevel = '0' | '1' | '2' | '3' | '4'; - -export type CandidGen = 'automatic' | 'custom' | 'http'; - -export type CompilerInfo = { - canister_methods: CanisterMethods; - env_vars: [string, string][]; -}; - -export type CanisterMethods = { - candid: string; - queries: CanisterMethod[]; - updates: CanisterMethod[]; - init?: CanisterMethod; - pre_upgrade?: CanisterMethod; - post_upgrade?: CanisterMethod; - heartbeat?: CanisterMethod; - inspect_message?: CanisterMethod; - callbacks: { - [key: string]: (...args: any) => any; - }; -}; - -export type CanisterMethod = { - name: string; - composite?: boolean; - index: number; -}; - -export type Plugin = { - path: string; - register_function: string; -}; - -export type RunOptions = { - rootPath: string; -}; - -export type Rust = string; - -export type SpawnSyncError = RequireExactlyOne<{ - Error: string; - Signal: NodeJS.Signals; - Status: number; -}>; - -export type Toml = string; - -export type TsCompilationError = { - stack: string; - message: string; - errors: TsSyntaxError[]; - warnings: unknown[]; -}; - -export type TsSyntaxErrorLocation = { - column: number; - file: string; - length: number; - line: number; - lineText: string; - namespace: string; - suggestion: string; -}; - -export type TsSyntaxError = { - detail?: unknown; - location: TsSyntaxErrorLocation; - notes: unknown[]; - pluginName: string; - text: string; -}; - -export type TypeScript = string; diff --git a/src/compiler/wasm_binary_manipulation.ts b/src/compiler/wasm_binary_manipulation.ts deleted file mode 100644 index 0ee257e389..0000000000 --- a/src/compiler/wasm_binary_manipulation.ts +++ /dev/null @@ -1,252 +0,0 @@ -// import { func, indexLiteral, instr } from '@webassemblyjs/ast'; -// import { addExport } from '@webassemblyjs/wasm-edit'; -// import { decode, encode } from '@webassemblyjs/wasm-parser'; -import binaryen from 'binaryen'; -import { readFile, writeFile } from 'fs/promises'; -import { join } from 'path'; - -import { getConsumer } from './get_consumer_config'; -import { - AZLE_PACKAGE_PATH, - EXPERIMENTAL_STATIC_CANISTER_TEMPLATE_PATH, - STABLE_STATIC_CANISTER_TEMPLATE_PATH -} from './utils/global_paths'; -import { CanisterConfig, CompilerInfo } from './utils/types'; - -// TODO put the licenses in the binary? Or with Azle? Probably with Azle actually -// TODO it would be neat to be the licenses in all Azle binaries though -// TODO can we make the start function just load the passive segment into memory? - -export async function manipulateWasmBinary( - canisterName: string, - js: string, - compilerInfo: CompilerInfo, - canisterConfig: CanisterConfig, - experimental: boolean -): Promise { - const originalWasm = await readFile( - experimental === true - ? EXPERIMENTAL_STATIC_CANISTER_TEMPLATE_PATH - : STABLE_STATIC_CANISTER_TEMPLATE_PATH - ); - - const module = binaryen.readBinary(originalWasm); - - compilerInfo.canister_methods.queries.forEach( - ({ name: functionName, index, composite }) => { - addCanisterMethod( - module, - `${ - composite === true - ? 'canister_composite_query' - : 'canister_query' - } ${functionName}`, - 'execute_method_js', - index, - true - ); - } - ); - - compilerInfo.canister_methods.updates.forEach( - ({ name: functionName, index }) => { - addCanisterMethod( - module, - `canister_update ${functionName}`, - 'execute_method_js', - index, - true - ); - } - ); - - addCanisterMethod( - module, - 'canister_init', - 'init', - compilerInfo.canister_methods.init?.index ?? -1, - true - ); - - addCanisterMethod( - module, - 'canister_post_upgrade', - 'post_upgrade', - compilerInfo.canister_methods.post_upgrade?.index ?? -1, - true - ); - - if (compilerInfo.canister_methods.pre_upgrade !== undefined) { - addCanisterMethod( - module, - 'canister_pre_upgrade', - 'execute_method_js', - compilerInfo.canister_methods.pre_upgrade.index, - false - ); - } - - if (compilerInfo.canister_methods.inspect_message !== undefined) { - addCanisterMethod( - module, - 'canister_inspect_message', - 'execute_method_js', - compilerInfo.canister_methods.inspect_message.index, - false - ); - } - - if (compilerInfo.canister_methods.heartbeat !== undefined) { - addCanisterMethod( - module, - 'canister_heartbeat', - 'execute_method_js', - compilerInfo.canister_methods.heartbeat.index, - false - ); - } - - const memoryInfo = module.getMemoryInfo(); - - const numMemorySegments = module.getNumMemorySegments(); - - let segments = []; - - for (let i = 0; i < numMemorySegments; i++) { - const segment = module.getMemorySegmentInfoByIndex(i); - - segments.push(segment); - } - - const normalizedSegments = segments.map((segment) => { - return { - offset: module.i32.const(segment.offset), - data: new Uint8Array(segment.data), - passive: segment.passive - }; - }); - - const consumer = await getConsumer(canisterConfig); - - const jsEncoded = new TextEncoder().encode(js); - const wasmDataEncoded = new TextEncoder().encode( - JSON.stringify({ - env_vars: compilerInfo.env_vars, - consumer, - management_did: ( - await readFile( - join(AZLE_PACKAGE_PATH, 'canisters', 'management', 'ic.did') - ) - ).toString(), - experimental - }) - ); - - module.setMemory(memoryInfo.initial, memoryInfo.max ?? -1, null, [ - ...normalizedSegments, - { - offset: 0, - data: jsEncoded, - passive: true - }, - { - offset: 0, - data: wasmDataEncoded, - passive: true - } - ]); - - module.removeFunction('js_passive_data_size'); - module.removeFunction('init_js_passive_data'); - - module.addFunction( - 'js_passive_data_size', - binaryen.none, - binaryen.i32, - [], - module.i32.const(jsEncoded.byteLength) - ); - - const jsPassiveDataSegmentNumber = normalizedSegments.length; - - module.addFunction( - 'init_js_passive_data', - binaryen.createType([binaryen.i32]), - binaryen.i32, // TODO just to stop weird Rust optimizations - [], - module.block(null, [ - module.memory.init( - jsPassiveDataSegmentNumber.toString() as unknown as number, - module.local.get(0, binaryen.i32), - module.i32.const(0), - module.i32.const(jsEncoded.byteLength) - ), - module.data.drop( - jsPassiveDataSegmentNumber.toString() as unknown as number - ), - module.return(module.local.get(0, binaryen.i32)) - ]) - ); - - module.removeFunction('wasm_data_passive_data_size'); - module.removeFunction('init_wasm_data_passive_data'); - - module.addFunction( - 'wasm_data_passive_data_size', - binaryen.none, - binaryen.i32, - [], - module.i32.const(wasmDataEncoded.byteLength) - ); - - const wasmDataPassiveDataSegmentNumber = normalizedSegments.length + 1; - - module.addFunction( - 'init_wasm_data_passive_data', - binaryen.createType([binaryen.i32]), - binaryen.i32, // TODO just to stop weird Rust optimizations - [], - module.block(null, [ - module.memory.init( - wasmDataPassiveDataSegmentNumber.toString() as unknown as number, - module.local.get(0, binaryen.i32), - module.i32.const(0), - module.i32.const(wasmDataEncoded.byteLength) - ), - module.data.drop( - wasmDataPassiveDataSegmentNumber.toString() as unknown as number - ), - module.return(module.local.get(0, binaryen.i32)) - ]) - ); - - // TODO do we need to validate? It takes some extra time - // module.validate(); - - const newWasm = module.emitBinary(); - - await writeFile(`.azle/${canisterName}/${canisterName}.wasm`, newWasm); -} - -function addCanisterMethod( - module: binaryen.Module, - exportName: string, - functionToCall: string, - index: number, - passArgData: boolean -): void { - const funcBody = module.block(null, [ - module.call( - functionToCall, - [ - module.i32.const(index), - module.i32.const(passArgData === true ? 1 : 0) - ], - binaryen.none - ) - ]); - - module.addFunction(exportName, binaryen.none, binaryen.none, [], funcBody); - - module.addFunctionExport(exportName, exportName); -} diff --git a/src/lib/experimental/candid/types/reference/service/canister_function/index.ts b/src/lib/experimental/candid/types/reference/service/canister_function/index.ts index 05d67dd85e..7bb4734580 100644 --- a/src/lib/experimental/candid/types/reference/service/canister_function/index.ts +++ b/src/lib/experimental/candid/types/reference/service/canister_function/index.ts @@ -6,6 +6,7 @@ if (globalThis._azleExperimental !== true) { import { IDL } from '@dfinity/candid'; +import { MethodMeta } from '../../../../../../../build/stable/utils/types'; import { CanisterMethodInfo } from '../../../../../canister_methods/types/canister_method_info'; import { ic } from '../../../../../ic'; import { CandidType, Parent, toIdlTypeArray } from '../../../../index'; @@ -24,13 +25,7 @@ export type CanisterOptions = { type _AzleFunctionReturnType = { (principal: Principal): void; - init?: any; - post_upgrade?: any; - pre_upgrade?: any; - heartbeat?: any; - inspect_message?: any; - queries?: any[]; - updates?: any[]; + methodMeta?: MethodMeta; callbacks?: any; getSystemFunctionIdlTypes?: (parents: Parent[]) => IDL.FuncClass[]; getIdlType?: (parents: Parent[]) => IDL.Type; @@ -60,17 +55,30 @@ export function createCanisterFunction( canisterOptions: CanisterOptions ): _AzleFunctionReturnType { let canister = createCanisterFunctionBase(canisterOptions); - canister.init = createSystemMethod('init', canisterOptions); - canister.heartbeat = createSystemMethod('heartbeat', canisterOptions); - canister.post_upgrade = createSystemMethod('postUpgrade', canisterOptions); - canister.pre_upgrade = createSystemMethod('preUpgrade', canisterOptions); - canister.inspect_message = createSystemMethod( + + canister.methodMeta = {}; + canister.methodMeta.init = createSystemMethod('init', canisterOptions); + canister.methodMeta.heartbeat = createSystemMethod( + 'heartbeat', + canisterOptions + ); + canister.methodMeta.post_upgrade = createSystemMethod( + 'postUpgrade', + canisterOptions + ); + canister.methodMeta.pre_upgrade = createSystemMethod( + 'preUpgrade', + canisterOptions + ); + canister.methodMeta.inspect_message = createSystemMethod( 'inspectMessage', canisterOptions ); - canister.queries = createQueryMethods(canisterOptions); - canister.updates = createUpdateMethods(canisterOptions); + canister.methodMeta.queries = createQueryMethods(canisterOptions); + canister.methodMeta.updates = createUpdateMethods(canisterOptions); + canister.callbacks = createCallbacks(canisterOptions); + canister.getIdlType = createGetIdlTypeFunction(canisterOptions); canister.getSystemFunctionIdlTypes = createGetSystemFunctionIdlTypeFunction(canisterOptions); diff --git a/src/lib/experimental/experimental.ts b/src/lib/experimental/experimental.ts index 870c3931c1..aa20fa1e74 100644 --- a/src/lib/experimental/experimental.ts +++ b/src/lib/experimental/experimental.ts @@ -1,5 +1,5 @@ export function experimentalMessage(importName: string): string { - return `Azle experimental mode must be enabled to import from ${importName}. You can enable experimental mode in your dfx.json file like this: + return `Azle: experimental mode must be enabled to import from ${importName}. You can enable experimental mode in your dfx.json file like this: { "canisters": { "canisterName": { diff --git a/src/lib/stable/canister_methods/heartbeat.ts b/src/lib/stable/canister_methods/heartbeat.ts index 7f41ea1a96..42c9c8bda9 100644 --- a/src/lib/stable/canister_methods/heartbeat.ts +++ b/src/lib/stable/canister_methods/heartbeat.ts @@ -6,12 +6,12 @@ export function heartbeat( ): void { const index = globalThis._azleCanisterMethodsIndex++; - globalThis._azleCanisterMethods.heartbeat = { + globalThis._azleMethodMeta.heartbeat = { name: context.name as string, index }; - globalThis._azleCanisterMethods.callbacks[index.toString()] = (): void => { + globalThis._azleCallbacks[index.toString()] = (): void => { executeAndReplyWithCandidSerde( 'heartbeat', [], diff --git a/src/lib/stable/canister_methods/init.ts b/src/lib/stable/canister_methods/init.ts index 606743ae6c..3195e61a4a 100644 --- a/src/lib/stable/canister_methods/init.ts +++ b/src/lib/stable/canister_methods/init.ts @@ -11,7 +11,7 @@ export function init( ): void => { const index = globalThis._azleCanisterMethodsIndex++; - globalThis._azleCanisterMethods.init = { + globalThis._azleMethodMeta.init = { name: context.name as string, index }; @@ -20,7 +20,7 @@ export function init( IDL.Func(paramIdlTypes, [], ['init']) ); - globalThis._azleCanisterMethods.callbacks[index.toString()] = ( + globalThis._azleCallbacks[index.toString()] = ( ...args: any[] ): void => { executeAndReplyWithCandidSerde( diff --git a/src/lib/stable/canister_methods/inspect_message.ts b/src/lib/stable/canister_methods/inspect_message.ts index 5f3e7ee867..d55b2cf171 100644 --- a/src/lib/stable/canister_methods/inspect_message.ts +++ b/src/lib/stable/canister_methods/inspect_message.ts @@ -7,12 +7,12 @@ export function inspectMessage( ): void { const index = globalThis._azleCanisterMethodsIndex++; - globalThis._azleCanisterMethods.inspect_message = { + globalThis._azleMethodMeta.inspect_message = { name: context.name as string, index }; - globalThis._azleCanisterMethods.callbacks[index.toString()] = (): void => { + globalThis._azleCallbacks[index.toString()] = (): void => { executeAndReplyWithCandidSerde( 'inspectMessage', [], diff --git a/src/lib/stable/canister_methods/post_upgrade.ts b/src/lib/stable/canister_methods/post_upgrade.ts index 70aefd79ac..88aead96e0 100644 --- a/src/lib/stable/canister_methods/post_upgrade.ts +++ b/src/lib/stable/canister_methods/post_upgrade.ts @@ -11,7 +11,7 @@ export function postUpgrade( ): void => { const index = globalThis._azleCanisterMethodsIndex++; - globalThis._azleCanisterMethods.post_upgrade = { + globalThis._azleMethodMeta.post_upgrade = { name: context.name as string, index }; @@ -20,7 +20,7 @@ export function postUpgrade( IDL.Func(paramIdlTypes, [], ['post_upgrade']) ); - globalThis._azleCanisterMethods.callbacks[index.toString()] = ( + globalThis._azleCallbacks[index.toString()] = ( ...args: any[] ): void => { executeAndReplyWithCandidSerde( diff --git a/src/lib/stable/canister_methods/pre_upgrade.ts b/src/lib/stable/canister_methods/pre_upgrade.ts index 7002eb7fd0..ad016b912c 100644 --- a/src/lib/stable/canister_methods/pre_upgrade.ts +++ b/src/lib/stable/canister_methods/pre_upgrade.ts @@ -6,12 +6,12 @@ export function preUpgrade( ): void { const index = globalThis._azleCanisterMethodsIndex++; - globalThis._azleCanisterMethods.pre_upgrade = { + globalThis._azleMethodMeta.pre_upgrade = { name: context.name as string, index }; - globalThis._azleCanisterMethods.callbacks[index.toString()] = (): void => { + globalThis._azleCallbacks[index.toString()] = (): void => { executeAndReplyWithCandidSerde( 'preUpgrade', [], diff --git a/src/lib/stable/canister_methods/query.ts b/src/lib/stable/canister_methods/query.ts index 32172656c1..94891a049b 100644 --- a/src/lib/stable/canister_methods/query.ts +++ b/src/lib/stable/canister_methods/query.ts @@ -18,7 +18,7 @@ export function query( const name = context.name as string; const composite = options?.composite ?? false; - globalThis._azleCanisterMethods.queries.push({ + globalThis._azleMethodMeta.queries?.push({ name, index, composite @@ -30,7 +30,7 @@ export function query( ['query'] ); - globalThis._azleCanisterMethods.callbacks[index.toString()] = ( + globalThis._azleCallbacks[index.toString()] = ( ...args: any[] ): void => { executeAndReplyWithCandidSerde( diff --git a/src/lib/stable/canister_methods/update.ts b/src/lib/stable/canister_methods/update.ts index eed4056b91..6cc73cc57a 100644 --- a/src/lib/stable/canister_methods/update.ts +++ b/src/lib/stable/canister_methods/update.ts @@ -16,14 +16,14 @@ export function update( const index = globalThis._azleCanisterMethodsIndex++; const name = context.name as string; - globalThis._azleCanisterMethods.updates.push({ name, index }); + globalThis._azleMethodMeta.updates?.push({ name, index }); globalThis._azleCanisterMethodIdlTypes[name] = IDL.Func( paramIdlTypes, returnIdlType === undefined ? [] : [returnIdlType] ); - globalThis._azleCanisterMethods.callbacks[index.toString()] = ( + globalThis._azleCallbacks[index.toString()] = ( ...args: any[] ): void => { executeAndReplyWithCandidSerde( diff --git a/src/lib/stable/globals.ts b/src/lib/stable/globals.ts index 077048d809..76b5235121 100644 --- a/src/lib/stable/globals.ts +++ b/src/lib/stable/globals.ts @@ -1,38 +1,23 @@ import { IDL } from '@dfinity/candid'; import { TextDecoder, TextEncoder } from 'text-encoding'; +import { MethodMeta } from '../../build/stable/utils/types'; import { jsonReplacer } from '../stable/stable_structures/stable_json'; import { print } from './ic_apis'; import { AzleIc } from './ic_apis/azle_ic'; -type CanisterMethods = { - candid: string; - queries: CanisterMethod[]; - updates: CanisterMethod[]; - init?: CanisterMethod; - pre_upgrade?: CanisterMethod; - post_upgrade?: CanisterMethod; - heartbeat?: CanisterMethod; - inspect_message?: CanisterMethod; - callbacks: { - [key: string]: (...args: any) => any; - }; -}; - -type CanisterMethod = { - name: string; - index: number; - composite?: boolean; +type Callbacks = { + [key: string]: (...args: any) => any; }; declare global { + // eslint-disable-next-line no-var + var _azleCallbacks: Callbacks; // eslint-disable-next-line no-var var _azleCanisterClassInstance: any; // eslint-disable-next-line no-var var _azleCanisterMethodIdlTypes: { [key: string]: IDL.FuncClass }; // eslint-disable-next-line no-var - var _azleCanisterMethods: CanisterMethods; - // eslint-disable-next-line no-var var _azleCanisterMethodsIndex: number; // eslint-disable-next-line no-var var _azleExperimental: boolean; @@ -47,6 +32,10 @@ declare global { // eslint-disable-next-line no-var var _azleInsideCanister: boolean; // eslint-disable-next-line no-var + var _azleMethodMeta: MethodMeta; + // eslint-disable-next-line no-var + var _azleNodeWasmEnvironment: boolean; + // eslint-disable-next-line no-var var _azlePostUpgradeCalled: boolean; // eslint-disable-next-line no-var var _azleRejectIds: { [key: string]: (err: any) => void }; @@ -54,8 +43,6 @@ declare global { var _azleResolveIds: { [key: string]: (buf: ArrayBuffer) => void }; // eslint-disable-next-line no-var var _azleTimerCallbacks: { [key: string]: () => void }; - // eslint-disable-next-line no-var - var _azleWasmtimeCandidEnvironment: boolean; } globalThis._azleInsideCanister = @@ -65,17 +52,17 @@ globalThis._azleInsideCanister = // TODO do we need to disable any other wasmedge-quickjs globals // TODO that we don't think are stable yet? if (globalThis._azleInsideCanister === true) { + globalThis._azleCallbacks = {}; + globalThis._azleCanisterMethodsIndex = 0; globalThis._azleCanisterMethodIdlTypes = {}; globalThis._azleInitAndPostUpgradeIdlTypes = []; - globalThis._azleCanisterMethods = { - candid: '', + globalThis._azleMethodMeta = { queries: [], - updates: [], - callbacks: {} + updates: [] }; globalThis._azleTimerCallbacks = {}; diff --git a/src/lib/stable/stable_structures/stable_b_tree_map.ts b/src/lib/stable/stable_structures/stable_b_tree_map.ts index dbd56ae013..4c96f17f37 100644 --- a/src/lib/stable/stable_structures/stable_b_tree_map.ts +++ b/src/lib/stable/stable_structures/stable_b_tree_map.ts @@ -16,7 +16,7 @@ export function StableBTreeMap( if ( globalThis._azleIc !== undefined && - globalThis._azleWasmtimeCandidEnvironment !== true + globalThis._azleNodeWasmEnvironment !== true ) { globalThis._azleIc.stableBTreeMapInit(memoryId); } diff --git a/test/index.ts b/test/index.ts index 5354554e40..efe82b76bf 100644 --- a/test/index.ts +++ b/test/index.ts @@ -6,7 +6,7 @@ import { describe, expect, test } from '@jest/globals'; import { join } from 'path'; import { getCanisterId } from '../dfx'; -import { execSyncPretty } from '../src/compiler/utils/exec_sync_pretty'; +import { execSyncPretty } from '../src/build/stable/utils/exec_sync_pretty'; export { expect } from '@jest/globals'; export type Test = () => void; diff --git a/tests/end_to_end/candid_rpc/class_syntax/async_await/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/async_await/dfx.json index 97ffd2e815..2852e17626 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/async_await/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/async_await/dfx.json @@ -3,7 +3,6 @@ "async_await": { "type": "azle", "main": "src/async_await.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/async_await", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/audio_recorder/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/audio_recorder/dfx.json index f8fd9a20b0..028b0d04d6 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/audio_recorder/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/audio_recorder/dfx.json @@ -3,7 +3,6 @@ "audio_recorder": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/audio_recorder", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/bitcoin/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/bitcoin/dfx.json index c7cf5ca84e..efd293f06f 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/bitcoin/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/bitcoin/dfx.json @@ -3,7 +3,6 @@ "bitcoin": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/bitcoin", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/blob_array/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/blob_array/dfx.json index 0f3068dc1b..05dfa9f56d 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/blob_array/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/blob_array/dfx.json @@ -3,7 +3,6 @@ "blob_array": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/blob_array", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/bytes/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/bytes/dfx.json index 84ab1c4356..cc008ba196 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/bytes/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/bytes/dfx.json @@ -3,7 +3,6 @@ "bytes_canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/bytes_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/call_raw/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/call_raw/dfx.json index 2d10f22926..a158ea4e96 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/call_raw/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/call_raw/dfx.json @@ -3,7 +3,6 @@ "call_raw": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/call_raw", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/candid_encoding/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/candid_encoding/dfx.json index 842565d703..835e707d9e 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/candid_encoding/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/candid_encoding/dfx.json @@ -3,7 +3,6 @@ "candid_encoding": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/candid_encoding", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/candid_keywords/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/candid_keywords/dfx.json index 5a47ed1559..c42793adfa 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/candid_keywords/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/candid_keywords/dfx.json @@ -3,7 +3,6 @@ "candid_keywords": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/candid_keywords", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/canister/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/canister/dfx.json index cc48a0a0b6..e96a077233 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/canister/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/canister/dfx.json @@ -3,22 +3,17 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", - "env": ["SOME_CANISTER_PRINCIPAL"], - "assets": [["src/some_canister.did", "candid/some_canister.did"]], "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true }, "custom": { - "experimental": true + "env": ["SOME_CANISTER_PRINCIPAL"] } }, "some_canister": { "type": "azle", "main": "src/some_canister.ts", - "candid": "src/some_canister.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/some_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/canister/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/canister/package-lock.json index 0eef896408..f9546efe8c 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/canister/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/canister/package-lock.json @@ -31,9 +31,10 @@ } }, "../../functional_syntax/canister": { + "name": "canister_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0" + "azle": "0.23.0" }, "devDependencies": { "@dfinity/agent": "^0.21.4", @@ -8196,7 +8197,7 @@ "version": "file:../../functional_syntax/canister", "requires": { "@dfinity/agent": "^0.21.4", - "azle": "0.22.0", + "azle": "0.23.0", "jest": "^29.7.0", "ts-jest": "^29.1.4", "tsx": "^4.15.7", diff --git a/tests/end_to_end/candid_rpc/class_syntax/canister/src/some_canister.did b/tests/end_to_end/candid_rpc/class_syntax/canister/src/some_canister.did deleted file mode 100644 index f61de65f9f..0000000000 --- a/tests/end_to_end/candid_rpc/class_syntax/canister/src/some_canister.did +++ /dev/null @@ -1,4 +0,0 @@ -service: () -> { - query1: () -> (bool) query; - update1: () -> (text); -} diff --git a/tests/end_to_end/candid_rpc/class_syntax/complex_init/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/complex_init/dfx.json index 0d2d8b49b0..06684ef1c2 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/complex_init/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/complex_init/dfx.json @@ -3,7 +3,6 @@ "complex_init": { "type": "azle", "main": "src/complex_init/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/complex_init", "node_compatibility": true @@ -12,7 +11,6 @@ "rec_init": { "type": "azle", "main": "src/rec_init/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/rec_init", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/complex_types/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/complex_types/dfx.json index 095103564a..e973e8bb9e 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/complex_types/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/complex_types/dfx.json @@ -3,7 +3,6 @@ "complex_types": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/complex_types", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/composite_queries/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/composite_queries/dfx.json index 3e948ab247..755a37801d 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/composite_queries/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/composite_queries/dfx.json @@ -3,44 +3,32 @@ "canister1": { "type": "azle", "main": "src/canister1/index.ts", - "candid_gen": "automatic", - "env": [ - "CANISTER1_PRINCIPAL", - "CANISTER2_PRINCIPAL", - "CANISTER3_PRINCIPAL" - ], - "assets": [ - ["src/canister2/index.did", "candid/canister2.did"], - ["src/canister3/index.did", "candid/canister3.did"] - ], "declarations": { "output": "test/dfx_generated/canister1", "node_compatibility": true }, "custom": { - "experimental": true + "env": [ + "CANISTER1_PRINCIPAL", + "CANISTER2_PRINCIPAL", + "CANISTER3_PRINCIPAL" + ] } }, "canister2": { "type": "azle", "main": "src/canister2/index.ts", - "candid": "src/canister2/index.did", - "candid_gen": "automatic", - "env": ["CANISTER3_PRINCIPAL"], - "assets": [["src/canister3/index.did", "candid/canister3.did"]], "declarations": { "output": "test/dfx_generated/canister2", "node_compatibility": true }, "custom": { - "experimental": true + "env": ["CANISTER3_PRINCIPAL"] } }, "canister3": { "type": "azle", "main": "src/canister3/index.ts", - "candid": "src/canister3/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister3", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/counter/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/counter/dfx.json index 4374e8ecf6..2065a0f11a 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/counter/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/counter/dfx.json @@ -3,7 +3,6 @@ "counter": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/counter", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/cross_canister_calls/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/cross_canister_calls/dfx.json index 12528f7bbd..be47a20586 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/cross_canister_calls/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/cross_canister_calls/dfx.json @@ -3,22 +3,17 @@ "canister1": { "type": "azle", "main": "src/canister1/index.ts", - "candid_gen": "automatic", - "env": ["CANISTER2_PRINCIPAL"], - "assets": [["src/canister2/index.did", "candid/canister2.did"]], "declarations": { "output": "test/dfx_generated/canister1", "node_compatibility": true }, "custom": { - "experimental": true + "env": ["CANISTER2_PRINCIPAL"] } }, "canister2": { "type": "azle", "main": "src/canister2/index.ts", - "candid": "src/canister2/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister2", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/cycles/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/cycles/dfx.json index c90e4eba21..fbd25be23e 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/cycles/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/cycles/dfx.json @@ -3,8 +3,6 @@ "cycles": { "type": "azle", "main": "src/cycles/index.ts", - "candid": "src/cycles/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/cycles", "node_compatibility": true @@ -13,15 +11,12 @@ "intermediary": { "type": "azle", "main": "src/intermediary/index.ts", - "candid_gen": "automatic", - "env": ["CYCLES_PRINCIPAL"], - "assets": [["src/cycles/index.did", "candid/cycles.did"]], "declarations": { "output": "test/dfx_generated/intermediary", "node_compatibility": true }, "custom": { - "experimental": true + "env": ["CYCLES_PRINCIPAL"] } } } diff --git a/tests/end_to_end/candid_rpc/class_syntax/cycles/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/cycles/package-lock.json index 3578ab1108..287c27e844 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/cycles/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/cycles/package-lock.json @@ -31,9 +31,10 @@ } }, "../../functional_syntax/cycles": { + "name": "cycles_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0" + "azle": "0.23.0" }, "devDependencies": { "@dfinity/agent": "^0.19.2", @@ -8590,7 +8591,7 @@ "version": "file:../../functional_syntax/cycles", "requires": { "@dfinity/agent": "^0.19.2", - "azle": "0.22.0", + "azle": "0.23.0", "jest": "^29.7.0", "ts-jest": "^29.1.4", "tsx": "^4.15.7", diff --git a/tests/end_to_end/candid_rpc/class_syntax/date/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/date/dfx.json index 2d71168e7e..e850df956c 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/date/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/date/dfx.json @@ -3,7 +3,6 @@ "date": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/date", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/ethereum_json_rpc/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/ethereum_json_rpc/dfx.json index 871f5d853b..bcc127fe6f 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/ethereum_json_rpc/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/ethereum_json_rpc/dfx.json @@ -3,7 +3,6 @@ "ethereum_json_rpc": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/ethereum_json_rpc", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/func_types/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/func_types/dfx.json index 104b52f32c..10faca0013 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/func_types/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/func_types/dfx.json @@ -3,28 +3,23 @@ "func_types": { "type": "azle", "main": "canisters/func_types/index.ts", - "candid_gen": "automatic", - "env": ["NOTIFIERS_PRINCIPAL"], - "assets": [ - ["canisters/notifiers/index.did", "candid/notifiers.did"] - ], "declarations": { "output": "test/dfx_generated/func_types", "node_compatibility": true }, "custom": { - "experimental": true + "env": ["NOTIFIERS_PRINCIPAL"] } }, "notifiers": { "type": "azle", "main": "canisters/notifiers/index.ts", - "candid": "canisters/notifiers/index.did", - "candid_gen": "automatic", - "env": ["NOTIFIERS_PRINCIPAL"], "declarations": { "output": "test/dfx_generated/notifiers", "node_compatibility": true + }, + "custom": { + "env": ["NOTIFIERS_PRINCIPAL"] } } } diff --git a/tests/end_to_end/candid_rpc/class_syntax/func_types/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/func_types/package-lock.json index eac0d2c5eb..5193a330d1 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/func_types/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/func_types/package-lock.json @@ -31,9 +31,10 @@ } }, "../../functional_syntax/func_types": { + "name": "func_types_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0" + "azle": "0.23.0" }, "devDependencies": { "@dfinity/agent": "0.11.1", @@ -8822,7 +8823,7 @@ "version": "file:../../functional_syntax/func_types", "requires": { "@dfinity/agent": "0.11.1", - "azle": "0.22.0", + "azle": "0.23.0", "jest": "^29.7.0", "ts-jest": "^29.1.4", "tsx": "^4.15.7", diff --git a/tests/end_to_end/candid_rpc/class_syntax/heartbeat/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/heartbeat/dfx.json index 437d743ad3..4cee070a80 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/heartbeat/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/heartbeat/dfx.json @@ -3,7 +3,6 @@ "heartbeat_async": { "type": "azle", "main": "src/heartbeat_async/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/heartbeat_async", "node_compatibility": true @@ -12,7 +11,6 @@ "heartbeat_sync": { "type": "azle", "main": "src/heartbeat_sync/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/heartbeat_sync", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/ic_api/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/ic_api/dfx.json index 8c7d97528c..59c73dcfc9 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/ic_api/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/ic_api/dfx.json @@ -3,7 +3,6 @@ "ic_api": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/ic_api", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/icrc/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/icrc/dfx.json index f4f4ce0102..5d1cc6b269 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/icrc/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/icrc/dfx.json @@ -3,11 +3,12 @@ "proxy": { "type": "azle", "main": "canisters/proxy/index.ts", - "candid_gen": "automatic", - "env": ["ICRC_PRINCIPAL"], "declarations": { "output": "test/dfx_generated/proxy", "node_compatibility": true + }, + "custom": { + "env": ["ICRC_PRINCIPAL"] } }, "icrc": { diff --git a/tests/end_to_end/candid_rpc/class_syntax/icrc/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/icrc/package-lock.json index f4fdcb0a12..0dd3385bde 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/icrc/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/icrc/package-lock.json @@ -34,7 +34,7 @@ "name": "icrc_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0" + "azle": "0.23.0" }, "devDependencies": { "@dfinity/agent": "0.14.1", diff --git a/tests/end_to_end/candid_rpc/class_syntax/imports/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/imports/dfx.json index aa93dc0fa2..b69014e2a5 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/imports/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/imports/dfx.json @@ -3,7 +3,6 @@ "imports": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/imports", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/init/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/init/dfx.json index df0d63ba37..b55868ee25 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/init/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/init/dfx.json @@ -3,7 +3,6 @@ "init": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/init", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/inspect_message/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/inspect_message/dfx.json index 6656fa4084..fbd3d013af 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/inspect_message/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/inspect_message/dfx.json @@ -3,7 +3,6 @@ "inspect_message": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/inspect_message", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/key_value_store/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/key_value_store/dfx.json index e4fe31690c..1fed456de3 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/key_value_store/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/key_value_store/dfx.json @@ -3,7 +3,6 @@ "key_value_store": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/key_value_store", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/ledger_canister/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/ledger_canister/dfx.json index c3bb96da89..d4b2c7d6a3 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/ledger_canister/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/ledger_canister/dfx.json @@ -3,15 +3,12 @@ "ledger_canister": { "type": "azle", "main": "src/ledger_canister/index.ts", - "candid_gen": "automatic", - "env": ["ICP_CANISTER_PRINCIPAL"], - "assets": [["src/icp_ledger/ledger.public.did", "src/ledger.did"]], "declarations": { "output": "test/dfx_generated/ledger_canister", "node_compatibility": true }, "custom": { - "experimental": true + "env": ["ICP_CANISTER_PRINCIPAL"] } }, "icp_ledger": { diff --git a/tests/end_to_end/candid_rpc/class_syntax/ledger_canister/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/ledger_canister/package-lock.json index 5ab39b8700..4f332223e6 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/ledger_canister/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/ledger_canister/package-lock.json @@ -31,9 +31,10 @@ } }, "../../functional_syntax/ledger_canister": { + "name": "ledger_canister_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0" + "azle": "0.23.0" }, "devDependencies": { "@dfinity/agent": "^0.19.2", @@ -9836,7 +9837,7 @@ "version": "file:../../functional_syntax/ledger_canister", "requires": { "@dfinity/agent": "^0.19.2", - "azle": "0.22.0", + "azle": "0.23.0", "jest": "^29.7.0", "ts-jest": "^29.1.5", "tsx": "^4.15.7", diff --git a/tests/end_to_end/candid_rpc/class_syntax/list_of_lists/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/list_of_lists/dfx.json index 1924f3b808..74c7335e4f 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/list_of_lists/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/list_of_lists/dfx.json @@ -3,7 +3,6 @@ "list_of_lists": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "dfx_generated/list_of_lists", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/management_canister/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/management_canister/dfx.json index 48e8298cba..ad96c19319 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/management_canister/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/management_canister/dfx.json @@ -3,7 +3,6 @@ "management_canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/management_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/manual_reply/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/manual_reply/dfx.json index 2e1068040b..ac2b94aa00 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/manual_reply/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/manual_reply/dfx.json @@ -3,7 +3,6 @@ "manual_reply": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/manual_reply", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/calc/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/calc/dfx.json index ff866b88f0..1146dd4159 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/calc/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/calc/dfx.json @@ -3,7 +3,6 @@ "calc": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/calc", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/counter/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/counter/dfx.json index 4374e8ecf6..2065a0f11a 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/counter/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/counter/dfx.json @@ -3,7 +3,6 @@ "counter": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/counter", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/echo/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/echo/dfx.json index 8afce46092..5747e67089 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/echo/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/echo/dfx.json @@ -3,7 +3,6 @@ "echo": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/echo", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/factorial/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/factorial/dfx.json index 2651611c1d..9132705ae7 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/factorial/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/factorial/dfx.json @@ -3,7 +3,6 @@ "factorial": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/factorial", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/hello-world/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/hello-world/dfx.json index 065b304858..217f29901a 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/hello-world/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/hello-world/dfx.json @@ -3,7 +3,6 @@ "hello_world": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/hello_world", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/hello/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/hello/dfx.json index 72a35fa07b..ed836e35d7 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/hello/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/hello/dfx.json @@ -3,7 +3,6 @@ "hello": { "type": "azle", "main": "src/hello/index.ts", - "candid_gen": "automatic", "declarations": { "output": "dfx_generated/hello", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/http_counter/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/http_counter/dfx.json index db57989ba8..b64df9576e 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/http_counter/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/http_counter/dfx.json @@ -3,7 +3,7 @@ "http_counter": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", + "gzip": true } } diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/minimal-counter-dapp/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/minimal-counter-dapp/dfx.json index 8df388e823..275a39d478 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/minimal-counter-dapp/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/minimal-counter-dapp/dfx.json @@ -3,7 +3,6 @@ "minimal_dapp": { "type": "azle", "main": "src/minimal_dapp/index.ts", - "candid_gen": "automatic", "declarations": { "output": "src/declarations/minimal_dapp", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/persistent-storage/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/persistent-storage/dfx.json index 84eb5ea4a4..59334ee4ac 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/persistent-storage/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/persistent-storage/dfx.json @@ -3,7 +3,6 @@ "persistent_storage": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/persistent_storage", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/phone-book/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/phone-book/dfx.json index 466acb44cc..ec4024b6c2 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/phone-book/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/phone-book/dfx.json @@ -3,7 +3,6 @@ "phone_book": { "type": "azle", "main": "src/phone_book/index.ts", - "candid_gen": "automatic", "declarations": { "output": "src/declarations/phone_book", "node_compatibility": false diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/phone-book/tsconfig.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/phone-book/tsconfig.json index 31d2dd4a88..665f1cfea3 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/phone-book/tsconfig.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/phone-book/tsconfig.json @@ -4,7 +4,7 @@ "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "jsx": "react", - "module": "commonjs", + "module": "ES2020", "strict": true, "target": "ES2020", "outDir": "HACK_BECAUSE_OF_ALLOW_JS" diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/quicksort/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/quicksort/dfx.json index 5575753824..56fc59cea3 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/quicksort/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/quicksort/dfx.json @@ -3,7 +3,6 @@ "quicksort": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/quicksort", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/simple-to-do/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/simple-to-do/dfx.json index 95914c1281..dce84d0f47 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/simple-to-do/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/simple-to-do/dfx.json @@ -3,7 +3,6 @@ "simple_to_do": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/simple_to_do", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/dfx.json index 15243d8669..e499b07871 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/dfx.json @@ -3,7 +3,6 @@ "superheroes": { "type": "azle", "main": "src/superheroes/index.ts", - "candid_gen": "automatic", "declarations": { "output": "src/declarations", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/package-lock.json index 57827ced15..edc3bc8eea 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/package-lock.json @@ -39,9 +39,10 @@ "extraneous": true }, "../../../functional_syntax/motoko_examples/superheroes": { + "name": "superheroes_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0", + "azle": "0.23.0", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did index b0ff080de3..676601a468 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did @@ -1,9 +1,7 @@ type rec_0 = record {text; opt rec_0}; -type rec_1 = record {text; opt rec_1}; -type rec_2 = record {text; opt rec_2}; service: () -> { create: (record {superpowers:opt rec_0; name:text}) -> (nat32); deleteHero: (nat32) -> (bool); - read: (nat32) -> (opt record {superpowers:opt rec_1; name:text}) query; - update: (nat32, record {superpowers:opt rec_2; name:text}) -> (bool); + read: (nat32) -> (opt record {superpowers:opt rec_0; name:text}) query; + update: (nat32, record {superpowers:opt rec_0; name:text}) -> (bool); } diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did.d.ts b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did.d.ts index 57295867e7..914493919b 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did.d.ts +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did.d.ts @@ -3,17 +3,15 @@ import type { ActorMethod } from '@dfinity/agent'; import type { IDL } from '@dfinity/candid'; export type rec_0 = [string, [] | [rec_0]]; -export type rec_1 = [string, [] | [rec_1]]; -export type rec_2 = [string, [] | [rec_2]]; export interface _SERVICE { create: ActorMethod<[{ superpowers: [] | [rec_0]; name: string }], number>; deleteHero: ActorMethod<[number], boolean>; read: ActorMethod< [number], - [] | [{ superpowers: [] | [rec_1]; name: string }] + [] | [{ superpowers: [] | [rec_0]; name: string }] >; update: ActorMethod< - [number, { superpowers: [] | [rec_2]; name: string }], + [number, { superpowers: [] | [rec_0]; name: string }], boolean >; } diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did.js b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did.js index 82278e90be..6056ac83a4 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did.js +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/src/declarations/superheroes.did.js @@ -1,10 +1,6 @@ export const idlFactory = ({ IDL }) => { const rec_0 = IDL.Rec(); - const rec_1 = IDL.Rec(); - const rec_2 = IDL.Rec(); rec_0.fill(IDL.Tuple(IDL.Text, IDL.Opt(rec_0))); - rec_1.fill(IDL.Tuple(IDL.Text, IDL.Opt(rec_1))); - rec_2.fill(IDL.Tuple(IDL.Text, IDL.Opt(rec_2))); return IDL.Service({ create: IDL.Func( [IDL.Record({ superpowers: IDL.Opt(rec_0), name: IDL.Text })], @@ -16,7 +12,7 @@ export const idlFactory = ({ IDL }) => { [IDL.Nat32], [ IDL.Opt( - IDL.Record({ superpowers: IDL.Opt(rec_1), name: IDL.Text }) + IDL.Record({ superpowers: IDL.Opt(rec_0), name: IDL.Text }) ) ], ['query'] @@ -24,7 +20,7 @@ export const idlFactory = ({ IDL }) => { update: IDL.Func( [ IDL.Nat32, - IDL.Record({ superpowers: IDL.Opt(rec_2), name: IDL.Text }) + IDL.Record({ superpowers: IDL.Opt(rec_0), name: IDL.Text }) ], [IDL.Bool], [] diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/tsconfig.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/tsconfig.json index 31d2dd4a88..665f1cfea3 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/tsconfig.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/superheroes/tsconfig.json @@ -4,7 +4,7 @@ "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "jsx": "react", - "module": "commonjs", + "module": "ES2020", "strict": true, "target": "ES2020", "outDir": "HACK_BECAUSE_OF_ALLOW_JS" diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/threshold_ecdsa/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/threshold_ecdsa/dfx.json index 4114e0661a..a5dcb75326 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/threshold_ecdsa/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/threshold_ecdsa/dfx.json @@ -3,7 +3,6 @@ "threshold_ecdsa": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/threshold_ecdsa", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/whoami/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/whoami/dfx.json index 6d7ee8c182..7022ed93da 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/whoami/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/motoko_examples/whoami/dfx.json @@ -3,7 +3,6 @@ "whoami": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/whoami", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/new_candid_rpc/package.json b/tests/end_to_end/candid_rpc/class_syntax/new_candid_rpc/package.json index 6141803118..de502cbfba 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/new_candid_rpc/package.json +++ b/tests/end_to_end/candid_rpc/class_syntax/new_candid_rpc/package.json @@ -1,7 +1,7 @@ { "name": "new_end_to_end_test_functional_syntax", "scripts": { - "test": "if [ \"$AZLE_TEST_RUN_ON_RELEASE\" == \"true\" ]; then tsx test/test.ts; else echo 'Skipping pretests'; fi" + "test": "if [ \"$AZLE_TEST_RUN_ON_RELEASE\" = \"true\" ]; then tsx test/test.ts; else echo 'Skipping pretests'; fi" }, "devDependencies": { "@dfinity/agent": "^0.19.2", diff --git a/tests/end_to_end/candid_rpc/class_syntax/notify_raw/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/notify_raw/dfx.json index c82ccc605e..be47a20586 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/notify_raw/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/notify_raw/dfx.json @@ -3,17 +3,17 @@ "canister1": { "type": "azle", "main": "src/canister1/index.ts", - "candid_gen": "automatic", - "env": ["CANISTER2_PRINCIPAL"], "declarations": { "output": "test/dfx_generated/canister1", "node_compatibility": true + }, + "custom": { + "env": ["CANISTER2_PRINCIPAL"] } }, "canister2": { "type": "azle", "main": "src/canister2/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister2", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/null_example/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/null_example/dfx.json index cd6d083d7a..c26312120e 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/null_example/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/null_example/dfx.json @@ -3,7 +3,6 @@ "null_example": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/null_example", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/optional_types/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/optional_types/dfx.json index 2708ea54da..8bc07e1f20 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/optional_types/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/optional_types/dfx.json @@ -3,7 +3,6 @@ "optional_types": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/optional_types", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/outgoing_http_requests/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/outgoing_http_requests/dfx.json index 15f1fc1e86..e6caea1ae4 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/outgoing_http_requests/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/outgoing_http_requests/dfx.json @@ -3,7 +3,6 @@ "outgoing_http_requests": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/outgoing_http_requests", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/pre_and_post_upgrade/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/pre_and_post_upgrade/dfx.json index d5395178cd..d3215a9563 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/pre_and_post_upgrade/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/pre_and_post_upgrade/dfx.json @@ -3,7 +3,6 @@ "pre_and_post_upgrade": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/pre_and_post_upgrade", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/primitive_types/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/primitive_types/dfx.json index 8c155bba4b..c752921c46 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/primitive_types/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/primitive_types/dfx.json @@ -3,7 +3,6 @@ "primitive_types": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/primitive_types", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/principal/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/principal/dfx.json index 3385a1becd..27259b8488 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/principal/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/principal/dfx.json @@ -3,7 +3,6 @@ "principal": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/principal", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/query/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/query/dfx.json index 89885f9cb1..bbb251a425 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/query/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/query/dfx.json @@ -3,7 +3,6 @@ "query": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/query", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/randomness/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/randomness/dfx.json index fcd774999c..905e91785b 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/randomness/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/randomness/dfx.json @@ -3,7 +3,6 @@ "randomness": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/randomness", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/recursion/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/recursion/dfx.json index 603f4d8e77..0fb0b25a22 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/recursion/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/recursion/dfx.json @@ -3,27 +3,17 @@ "recursion": { "type": "azle", "main": "src/recursion/index.ts", - "candid_gen": "automatic", - "env": ["MY_CANISTER_PRINCIPAL"], - "assets": [ - [ - "src/recursive_canister/index.did", - "candid/recursive_canister.did" - ] - ], "declarations": { "output": "test/dfx_generated/recursion", "node_compatibility": true }, "custom": { - "experimental": true + "env": ["MY_CANISTER_PRINCIPAL"] } }, "recursive_canister": { "type": "azle", "main": "src/recursive_canister/index.ts", - "candid": "src/recursive_canister/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/recursive_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/recursion/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/recursion/package-lock.json index 5cdcec4c68..c9bab31bd6 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/recursion/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/recursion/package-lock.json @@ -31,9 +31,10 @@ } }, "../../functional_syntax/recursion": { + "name": "recursion_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0" + "azle": "0.23.0" }, "devDependencies": { "@dfinity/agent": "0.11.1", @@ -10176,7 +10177,7 @@ "version": "file:../../functional_syntax/recursion", "requires": { "@dfinity/agent": "0.11.1", - "azle": "0.22.0", + "azle": "0.23.0", "jest": "^29.7.0", "ts-jest": "^29.1.5", "tsx": "^4.15.7", diff --git a/tests/end_to_end/candid_rpc/class_syntax/rejections/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/rejections/dfx.json index 49edf1c0ec..a982d45700 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/rejections/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/rejections/dfx.json @@ -3,25 +3,17 @@ "rejections": { "type": "azle", "main": "src/rejections/index.ts", - "candid_gen": "automatic", - "env": ["SOME_CANISTER_PRINCIPAL"], - "assets": [ - ["src/some_canister/index.did", "candid/some_canister.did"], - ["src/nonexistent.did", "candid/nonexistent.did"] - ], "declarations": { "output": "test/dfx_generated/rejections", "node_compatibility": true }, "custom": { - "experimental": true + "env": ["SOME_CANISTER_PRINCIPAL"] } }, "some_canister": { "type": "azle", "main": "src/some_canister/index.ts", - "candid": "src/some_canister/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/some_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/rejections/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/rejections/package-lock.json index d960e7fc53..46f32a5710 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/rejections/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/rejections/package-lock.json @@ -31,9 +31,10 @@ } }, "../../functional_syntax/rejections": { + "name": "rejections_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0" + "azle": "0.23.0" }, "devDependencies": { "@dfinity/agent": "0.11.1", @@ -10181,7 +10182,7 @@ "version": "file:../../functional_syntax/rejections", "requires": { "@dfinity/agent": "0.11.1", - "azle": "0.22.0", + "azle": "0.23.0", "jest": "^29.7.0", "ts-jest": "^29.1.5", "tsx": "^4.15.7", diff --git a/tests/end_to_end/candid_rpc/class_syntax/simple_erc20/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/simple_erc20/dfx.json index 2a96508ff2..6b5eedb7a7 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/simple_erc20/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/simple_erc20/dfx.json @@ -3,7 +3,6 @@ "simple_erc20": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/simple_erc20", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/simple_erc20/package-lock.json b/tests/end_to_end/candid_rpc/class_syntax/simple_erc20/package-lock.json index 712b1696cb..76d9130ad9 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/simple_erc20/package-lock.json +++ b/tests/end_to_end/candid_rpc/class_syntax/simple_erc20/package-lock.json @@ -31,9 +31,10 @@ } }, "../../functional_syntax/simple_erc20": { + "name": "simple_erc20_end_to_end_test_functional_syntax", "dev": true, "dependencies": { - "azle": "0.22.0" + "azle": "0.23.0" }, "devDependencies": { "@dfinity/agent": "0.11.1", @@ -10292,7 +10293,7 @@ "version": "file:../../functional_syntax/simple_erc20", "requires": { "@dfinity/agent": "0.11.1", - "azle": "0.22.0", + "azle": "0.23.0", "jest": "^29.7.0", "ts-jest": "^29.1.5", "tsx": "^4.15.7", diff --git a/tests/end_to_end/candid_rpc/class_syntax/simple_user_accounts/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/simple_user_accounts/dfx.json index f27dda300a..608f8afa0f 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/simple_user_accounts/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/simple_user_accounts/dfx.json @@ -3,7 +3,6 @@ "simple_user_accounts": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/simple_user_accounts", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/stable_b_tree_map_instruction_threshold/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/stable_b_tree_map_instruction_threshold/dfx.json index 1a6d803a0b..fb25752ae7 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/stable_b_tree_map_instruction_threshold/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/stable_b_tree_map_instruction_threshold/dfx.json @@ -3,7 +3,6 @@ "stable_b_tree_map_instruction_threshold": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/stable_b_tree_map_instruction_threshold", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/stable_structures/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/stable_structures/dfx.json index 0feb690762..756f4617ce 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/stable_structures/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/stable_structures/dfx.json @@ -3,7 +3,6 @@ "canister1": { "type": "azle", "main": "src/canister1/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister1", "node_compatibility": true @@ -12,7 +11,6 @@ "canister2": { "type": "azle", "main": "src/canister2/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister2", "node_compatibility": true @@ -21,7 +19,6 @@ "canister3": { "type": "azle", "main": "src/canister3/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister3", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/timers/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/timers/dfx.json index 76640c565a..ade41d6abf 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/timers/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/timers/dfx.json @@ -3,7 +3,6 @@ "timers": { "type": "azle", "main": "src/timers.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/timers", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/tuple_types/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/tuple_types/dfx.json index a0fbd3f513..9b9abde742 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/tuple_types/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/tuple_types/dfx.json @@ -3,7 +3,6 @@ "tuple_types": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/tuple_types", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/update/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/update/dfx.json index 8bb79c87f0..797cd8954a 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/update/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/update/dfx.json @@ -3,7 +3,6 @@ "update": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/update", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/class_syntax/vanilla_js/dfx.json b/tests/end_to_end/candid_rpc/class_syntax/vanilla_js/dfx.json index b0901ae883..2da13693f4 100644 --- a/tests/end_to_end/candid_rpc/class_syntax/vanilla_js/dfx.json +++ b/tests/end_to_end/candid_rpc/class_syntax/vanilla_js/dfx.json @@ -3,7 +3,6 @@ "vanilla_js": { "type": "azle", "main": "src/index.js", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/vanilla_js", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/async_await/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/async_await/dfx.json index 477d4bdcc0..1ee7dfc9ef 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/async_await/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/async_await/dfx.json @@ -3,14 +3,13 @@ "async_await": { "type": "azle", "main": "src/async_await.ts", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], "declarations": { "output": "test/dfx_generated/async_await", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["AZLE_TEST_FETCH"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/audio_recorder/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/audio_recorder/dfx.json index 0ffcec078e..6a733a0773 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/audio_recorder/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/audio_recorder/dfx.json @@ -4,13 +4,13 @@ "type": "azle", "main": "src/index.ts", "candid": "src/index.did", - "candid_gen": "custom", "declarations": { "output": "test/dfx_generated/audio_recorder", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "candid_gen": "custom" } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/bitcoin/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/bitcoin/dfx.json index f8eec93ff0..f9c710ae6b 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/bitcoin/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/bitcoin/dfx.json @@ -3,14 +3,13 @@ "bitcoin": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], "declarations": { "output": "test/dfx_generated/bitcoin", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["AZLE_TEST_FETCH"] } } }, diff --git a/tests/end_to_end/candid_rpc/functional_syntax/blob_array/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/blob_array/dfx.json index 6696e800ed..175fe0bcde 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/blob_array/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/blob_array/dfx.json @@ -3,7 +3,6 @@ "blob_array": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/blob_array", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/bytes/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/bytes/dfx.json index a543db2832..e306bc2ebe 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/bytes/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/bytes/dfx.json @@ -3,7 +3,6 @@ "bytes_canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/bytes_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/call_raw/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/call_raw/dfx.json index ac1c796e0d..3b811e9191 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/call_raw/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/call_raw/dfx.json @@ -3,7 +3,6 @@ "call_raw": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/call_raw", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/candid_encoding/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/candid_encoding/dfx.json index 40d5168702..7bcc03616b 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/candid_encoding/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/candid_encoding/dfx.json @@ -3,7 +3,6 @@ "candid_encoding": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/candid_encoding", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/candid_keywords/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/candid_keywords/dfx.json index f29131225b..656943e34a 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/candid_keywords/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/candid_keywords/dfx.json @@ -3,7 +3,6 @@ "candid_keywords": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/candid_keywords", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/canister/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/canister/dfx.json index 63a176f9a7..2564bd1f07 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/canister/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/canister/dfx.json @@ -3,22 +3,22 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", - "env": ["SOME_CANISTER_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [["src/some_canister.did", "candid/some_canister.did"]], "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [ + ["src/some_canister.did", "candid/some_canister.did"] + ], + "env": ["SOME_CANISTER_PRINCIPAL", "AZLE_TEST_FETCH"] } }, "some_canister": { "type": "azle", "main": "src/some_canister.ts", "candid": "src/some_canister.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/some_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/ckbtc/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/ckbtc/dfx.json index 56c4a2f30b..fb7af1120a 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/ckbtc/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/ckbtc/dfx.json @@ -23,18 +23,21 @@ "wallet_backend": { "type": "azle", "main": "wallet/backend/index.ts", - "candid_gen": "automatic", - "env": ["CK_BTC_PRINCIPAL", "MINTER_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [ - ["minter/minter.did", "minter/minter.did"], - ["wallet/backend/icrc.did", "candid/icp/icrc.did"] - ], "declarations": { "node_compatibility": true, "output": "wallet/frontend/dfx_generated/wallet_backend" }, "custom": { - "experimental": true + "experimental": true, + "assets": [ + ["minter/minter.did", "minter/minter.did"], + ["wallet/backend/icrc.did", "candid/icp/icrc.did"] + ], + "env": [ + "CK_BTC_PRINCIPAL", + "MINTER_PRINCIPAL", + "AZLE_TEST_FETCH" + ] } }, "wallet_frontend": { diff --git a/tests/end_to_end/candid_rpc/functional_syntax/complex_init/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/complex_init/dfx.json index 4b954554e6..5711649225 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/complex_init/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/complex_init/dfx.json @@ -3,7 +3,6 @@ "complex_init": { "type": "azle", "main": "src/complex_init/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/complex_init", "node_compatibility": true @@ -15,7 +14,6 @@ "rec_init": { "type": "azle", "main": "src/rec_init/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/rec_init", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/complex_types/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/complex_types/dfx.json index d6ce5add53..f724373f74 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/complex_types/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/complex_types/dfx.json @@ -4,13 +4,13 @@ "type": "azle", "main": "src/index.ts", "candid": "src/index.did", - "candid_gen": "custom", "declarations": { "output": "test/dfx_generated/complex_types", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "candid_gen": "custom" } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/composite_queries/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/composite_queries/dfx.json index 78399e06ca..1c758e2175 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/composite_queries/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/composite_queries/dfx.json @@ -4,46 +4,43 @@ "type": "azle", "main": "src/canister1/index.ts", "candid": "src/canister1/index.did", - "candid_gen": "automatic", - "env": [ - "CANISTER1_PRINCIPAL", - "CANISTER2_PRINCIPAL", - "CANISTER3_PRINCIPAL", - "AZLE_TEST_FETCH" - ], - "assets": [ - ["src/canister1/index.did", "candid/canister1.did"], - ["src/canister2/index.did", "candid/canister2.did"], - ["src/canister3/index.did", "candid/canister3.did"] - ], "declarations": { "output": "test/dfx_generated/canister1", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [ + ["src/canister1/index.did", "candid/canister1.did"], + ["src/canister2/index.did", "candid/canister2.did"], + ["src/canister3/index.did", "candid/canister3.did"] + ], + "env": [ + "CANISTER1_PRINCIPAL", + "CANISTER2_PRINCIPAL", + "CANISTER3_PRINCIPAL", + "AZLE_TEST_FETCH" + ] } }, "canister2": { "type": "azle", "main": "src/canister2/index.ts", "candid": "src/canister2/index.did", - "candid_gen": "automatic", - "env": ["CANISTER3_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [["src/canister3/index.did", "candid/canister3.did"]], "declarations": { "output": "test/dfx_generated/canister2", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [["src/canister3/index.did", "candid/canister3.did"]], + "env": ["CANISTER3_PRINCIPAL", "AZLE_TEST_FETCH"] } }, "canister3": { "type": "azle", "main": "src/canister3/index.ts", "candid": "src/canister3/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister3", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/counter/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/counter/dfx.json index 56c467f9cd..641708c852 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/counter/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/counter/dfx.json @@ -3,7 +3,6 @@ "counter": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/counter", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/cross_canister_calls/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/cross_canister_calls/dfx.json index 1d4ba5042c..a30401089b 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/cross_canister_calls/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/cross_canister_calls/dfx.json @@ -3,22 +3,20 @@ "canister1": { "type": "azle", "main": "src/canister1/index.ts", - "candid_gen": "automatic", - "env": ["CANISTER2_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [["src/canister2/index.did", "candid/canister2.did"]], "declarations": { "output": "test/dfx_generated/canister1", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [["src/canister2/index.did", "candid/canister2.did"]], + "env": ["CANISTER2_PRINCIPAL", "AZLE_TEST_FETCH"] } }, "canister2": { "type": "azle", "main": "src/canister2/index.ts", "candid": "src/canister2/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister2", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/cycles/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/cycles/dfx.json index 2f473817fd..2589b2de4f 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/cycles/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/cycles/dfx.json @@ -4,7 +4,6 @@ "type": "azle", "main": "src/cycles/index.ts", "candid": "src/cycles/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/cycles", "node_compatibility": true @@ -16,15 +15,14 @@ "intermediary": { "type": "azle", "main": "src/intermediary/index.ts", - "candid_gen": "automatic", - "env": ["CYCLES_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [["src/cycles/index.did", "candid/cycles.did"]], "declarations": { "output": "test/dfx_generated/intermediary", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [["src/cycles/index.did", "candid/cycles.did"]], + "env": ["CYCLES_PRINCIPAL", "AZLE_TEST_FETCH"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/date/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/date/dfx.json index 6dce6f21c1..24cce43239 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/date/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/date/dfx.json @@ -3,7 +3,6 @@ "date": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/date", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/ethereum_json_rpc/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/ethereum_json_rpc/dfx.json index abb7875e08..1ea8349e7f 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/ethereum_json_rpc/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/ethereum_json_rpc/dfx.json @@ -3,14 +3,13 @@ "ethereum_json_rpc": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], "declarations": { "output": "test/dfx_generated/ethereum_json_rpc", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["AZLE_TEST_FETCH"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/func_types/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/func_types/dfx.json index 303b52abc3..9e03398270 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/func_types/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/func_types/dfx.json @@ -3,31 +3,29 @@ "func_types": { "type": "azle", "main": "canisters/func_types/index.ts", - "candid_gen": "automatic", - "env": ["NOTIFIERS_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [ - ["canisters/notifiers/index.did", "candid/notifiers.did"] - ], "declarations": { "output": "test/dfx_generated/func_types", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [ + ["canisters/notifiers/index.did", "candid/notifiers.did"] + ], + "env": ["NOTIFIERS_PRINCIPAL", "AZLE_TEST_FETCH"] } }, "notifiers": { "type": "azle", "main": "canisters/notifiers/index.ts", "candid": "canisters/notifiers/index.did", - "candid_gen": "automatic", - "env": ["NOTIFIERS_PRINCIPAL"], "declarations": { "output": "test/dfx_generated/notifiers", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["NOTIFIERS_PRINCIPAL"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/heartbeat/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/heartbeat/dfx.json index 7e89dd618a..5484286e11 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/heartbeat/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/heartbeat/dfx.json @@ -3,20 +3,18 @@ "heartbeat_async": { "type": "azle", "main": "src/heartbeat_async/index.ts", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], "declarations": { "output": "test/dfx_generated/heartbeat_async", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["AZLE_TEST_FETCH"] } }, "heartbeat_sync": { "type": "azle", "main": "src/heartbeat_sync/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/heartbeat_sync", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/ic_api/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/ic_api/dfx.json index 0336756ecb..4617a4a26a 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/ic_api/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/ic_api/dfx.json @@ -3,7 +3,6 @@ "ic_api": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/ic_api", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/icrc/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/icrc/dfx.json index e3d9e3b6fd..b3cba42e66 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/icrc/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/icrc/dfx.json @@ -3,15 +3,14 @@ "proxy": { "type": "azle", "main": "canisters/proxy/index.ts", - "candid_gen": "automatic", - "env": ["ICRC_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [["canisters/proxy/icrc.did", "candid/icp/icrc.did"]], "declarations": { "output": "test/dfx_generated/proxy", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [["canisters/proxy/icrc.did", "candid/icp/icrc.did"]], + "env": ["ICRC_PRINCIPAL", "AZLE_TEST_FETCH"] } }, "icrc": { diff --git a/tests/end_to_end/candid_rpc/functional_syntax/imports/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/imports/dfx.json index 692ec6de26..7b3a8e30ae 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/imports/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/imports/dfx.json @@ -3,7 +3,6 @@ "imports": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/imports", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/init/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/init/dfx.json index 9c642da384..5f638da202 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/init/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/init/dfx.json @@ -3,7 +3,6 @@ "init": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/init", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/inspect_message/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/inspect_message/dfx.json index 1b62ea6ac3..24bc2f1c2c 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/inspect_message/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/inspect_message/dfx.json @@ -3,7 +3,6 @@ "inspect_message": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/inspect_message", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/key_value_store/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/key_value_store/dfx.json index 1541bd57c4..09e19d8d54 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/key_value_store/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/key_value_store/dfx.json @@ -3,7 +3,6 @@ "key_value_store": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/key_value_store", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/ledger_canister/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/ledger_canister/dfx.json index 2446341bbd..e279c697a9 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/ledger_canister/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/ledger_canister/dfx.json @@ -3,15 +3,16 @@ "ledger_canister": { "type": "azle", "main": "src/ledger_canister/index.ts", - "candid_gen": "automatic", - "env": ["ICP_CANISTER_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [["src/icp_ledger/ledger.public.did", "src/ledger.did"]], "declarations": { "output": "test/dfx_generated/ledger_canister", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [ + ["src/icp_ledger/ledger.public.did", "src/ledger.did"] + ], + "env": ["ICP_CANISTER_PRINCIPAL", "AZLE_TEST_FETCH"] } }, "icp_ledger": { diff --git a/tests/end_to_end/candid_rpc/functional_syntax/list_of_lists/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/list_of_lists/dfx.json index 29eb16ef17..1a6d9e51f4 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/list_of_lists/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/list_of_lists/dfx.json @@ -3,7 +3,6 @@ "list_of_lists": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "dfx_generated/list_of_lists", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/management_canister/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/management_canister/dfx.json index 71528315f0..cbc582617f 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/management_canister/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/management_canister/dfx.json @@ -3,14 +3,13 @@ "management_canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], "declarations": { "output": "test/dfx_generated/management_canister", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["AZLE_TEST_FETCH"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/manual_reply/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/manual_reply/dfx.json index d8e5937f5a..87d0411af9 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/manual_reply/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/manual_reply/dfx.json @@ -3,7 +3,6 @@ "manual_reply": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/manual_reply", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/calc/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/calc/dfx.json index f3136cd6d3..ccf3888e83 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/calc/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/calc/dfx.json @@ -3,7 +3,6 @@ "calc": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/calc", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/counter/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/counter/dfx.json index 56c467f9cd..641708c852 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/counter/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/counter/dfx.json @@ -3,7 +3,6 @@ "counter": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/counter", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/echo/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/echo/dfx.json index 498fc6ed75..9ba1e5a591 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/echo/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/echo/dfx.json @@ -3,7 +3,6 @@ "echo": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/echo", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/factorial/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/factorial/dfx.json index c6a3fdb6c3..651558c6bd 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/factorial/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/factorial/dfx.json @@ -3,7 +3,6 @@ "factorial": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/factorial", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/hello-world/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/hello-world/dfx.json index 45515613aa..bddca1c03e 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/hello-world/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/hello-world/dfx.json @@ -3,7 +3,6 @@ "hello_world": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/hello_world", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/hello/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/hello/dfx.json index 750728e06d..1475d30bfd 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/hello/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/hello/dfx.json @@ -3,7 +3,6 @@ "hello": { "type": "azle", "main": "src/hello/index.ts", - "candid_gen": "automatic", "declarations": { "output": "dfx_generated/hello", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/http_counter/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/http_counter/dfx.json index 5495dcd73f..ed2aedc0aa 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/http_counter/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/http_counter/dfx.json @@ -3,7 +3,6 @@ "http_counter": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "custom": { "experimental": true } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/minimal-counter-dapp/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/minimal-counter-dapp/dfx.json index b3f20bcc58..8517a12211 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/minimal-counter-dapp/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/minimal-counter-dapp/dfx.json @@ -3,7 +3,6 @@ "minimal_dapp": { "type": "azle", "main": "src/minimal_dapp/index.ts", - "candid_gen": "automatic", "declarations": { "output": "src/declarations/minimal_dapp", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/persistent-storage/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/persistent-storage/dfx.json index 2407a6f1d8..5b912078d8 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/persistent-storage/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/persistent-storage/dfx.json @@ -3,7 +3,6 @@ "persistent_storage": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/persistent_storage", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/phone-book/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/phone-book/dfx.json index c101e8bb56..eba49eef3d 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/phone-book/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/phone-book/dfx.json @@ -3,7 +3,6 @@ "phone_book": { "type": "azle", "main": "src/phone_book/index.ts", - "candid_gen": "automatic", "declarations": { "output": "src/declarations/phone_book", "node_compatibility": false diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/quicksort/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/quicksort/dfx.json index b2247fcadc..e57835db74 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/quicksort/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/quicksort/dfx.json @@ -3,7 +3,6 @@ "quicksort": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/quicksort", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/simple-to-do/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/simple-to-do/dfx.json index 395c5ca532..18677e2da6 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/simple-to-do/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/simple-to-do/dfx.json @@ -3,7 +3,6 @@ "simple_to_do": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/simple_to_do", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/superheroes/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/superheroes/dfx.json index b2121851b6..a1ea0a5415 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/superheroes/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/superheroes/dfx.json @@ -3,7 +3,6 @@ "superheroes": { "type": "azle", "main": "src/superheroes/index.ts", - "candid_gen": "automatic", "declarations": { "output": "src/declarations", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/threshold_ecdsa/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/threshold_ecdsa/dfx.json index 1b7b9748d9..9f61f57059 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/threshold_ecdsa/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/threshold_ecdsa/dfx.json @@ -3,14 +3,13 @@ "threshold_ecdsa": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], "declarations": { "output": "test/dfx_generated/threshold_ecdsa", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["AZLE_TEST_FETCH"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/whoami/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/whoami/dfx.json index 19c4a49328..e43ad95ba1 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/whoami/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/motoko_examples/whoami/dfx.json @@ -4,15 +4,14 @@ "type": "azle", "main": "src/index.ts", "candid": "src/index.did", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], - "assets": [["src/index.did", "/candid/whoami.did"]], "declarations": { "output": "test/dfx_generated/whoami", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [["src/index.did", "/candid/whoami.did"]], + "env": ["AZLE_TEST_FETCH"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/notify_raw/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/notify_raw/dfx.json index b1d7f5ea97..f068c52b20 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/notify_raw/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/notify_raw/dfx.json @@ -3,20 +3,18 @@ "canister1": { "type": "azle", "main": "src/canister1/index.ts", - "candid_gen": "automatic", - "env": ["CANISTER2_PRINCIPAL"], "declarations": { "output": "test/dfx_generated/canister1", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["CANISTER2_PRINCIPAL"] } }, "canister2": { "type": "azle", "main": "src/canister2/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister2", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/null_example/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/null_example/dfx.json index f69a72ddd3..858d71405b 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/null_example/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/null_example/dfx.json @@ -3,7 +3,6 @@ "null_example": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/null_example", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/optional_types/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/optional_types/dfx.json index a23bb6bfe7..25cff1535e 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/optional_types/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/optional_types/dfx.json @@ -3,7 +3,6 @@ "optional_types": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/optional_types", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/outgoing_http_requests/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/outgoing_http_requests/dfx.json index 9be27a9578..690dadbe1e 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/outgoing_http_requests/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/outgoing_http_requests/dfx.json @@ -3,14 +3,13 @@ "outgoing_http_requests": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], "declarations": { "output": "test/dfx_generated/outgoing_http_requests", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["AZLE_TEST_FETCH"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/pre_and_post_upgrade/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/pre_and_post_upgrade/dfx.json index 7b84d502b5..78204b5a31 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/pre_and_post_upgrade/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/pre_and_post_upgrade/dfx.json @@ -3,7 +3,6 @@ "pre_and_post_upgrade": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/pre_and_post_upgrade", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/primitive_types/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/primitive_types/dfx.json index c4a9c26d75..0825d0f1b2 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/primitive_types/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/primitive_types/dfx.json @@ -3,7 +3,6 @@ "primitive_types": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/primitive_types", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/principal/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/principal/dfx.json index b17015c097..74546a71de 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/principal/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/principal/dfx.json @@ -3,7 +3,6 @@ "principal": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/principal", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/query/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/query/dfx.json index 19ae679c38..1b2ee85666 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/query/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/query/dfx.json @@ -3,7 +3,6 @@ "query": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/query", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/randomness/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/randomness/dfx.json index 645a99846a..1703a5da8d 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/randomness/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/randomness/dfx.json @@ -3,7 +3,6 @@ "randomness": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/randomness", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/recursion/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/recursion/dfx.json index 2a20fd1e50..ff77fa2b6b 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/recursion/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/recursion/dfx.json @@ -3,27 +3,25 @@ "recursion": { "type": "azle", "main": "src/recursion/index.ts", - "candid_gen": "automatic", - "env": ["MY_CANISTER_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [ - [ - "src/recursive_canister/index.did", - "candid/recursive_canister.did" - ] - ], "declarations": { "output": "test/dfx_generated/recursion", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [ + [ + "src/recursive_canister/index.did", + "candid/recursive_canister.did" + ] + ], + "env": ["MY_CANISTER_PRINCIPAL", "AZLE_TEST_FETCH"] } }, "recursive_canister": { "type": "azle", "main": "src/recursive_canister/index.ts", "candid": "src/recursive_canister/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/recursive_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/rejections/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/rejections/dfx.json index 36cb808aed..0547f1208a 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/rejections/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/rejections/dfx.json @@ -3,25 +3,23 @@ "rejections": { "type": "azle", "main": "src/rejections/index.ts", - "candid_gen": "automatic", - "env": ["SOME_CANISTER_PRINCIPAL", "AZLE_TEST_FETCH"], - "assets": [ - ["src/some_canister/index.did", "candid/some_canister.did"], - ["src/nonexistent.did", "candid/nonexistent.did"] - ], "declarations": { "output": "test/dfx_generated/rejections", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "assets": [ + ["src/some_canister/index.did", "candid/some_canister.did"], + ["src/nonexistent.did", "candid/nonexistent.did"] + ], + "env": ["SOME_CANISTER_PRINCIPAL", "AZLE_TEST_FETCH"] } }, "some_canister": { "type": "azle", "main": "src/some_canister/index.ts", "candid": "src/some_canister/index.did", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/some_canister", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/robust_imports/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/robust_imports/dfx.json index 26d3b4bc31..8e4aba2a1d 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/robust_imports/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/robust_imports/dfx.json @@ -3,7 +3,6 @@ "robust_imports": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "dfx_generated/robust_imports", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/simple_erc20/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/simple_erc20/dfx.json index bbced21a18..e5a6d72216 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/simple_erc20/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/simple_erc20/dfx.json @@ -3,7 +3,6 @@ "simple_erc20": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/simple_erc20", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/simple_user_accounts/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/simple_user_accounts/dfx.json index b28cc106da..0458dc3812 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/simple_user_accounts/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/simple_user_accounts/dfx.json @@ -4,13 +4,13 @@ "type": "azle", "main": "src/index.ts", "candid": "src/index.did", - "candid_gen": "custom", "declarations": { "output": "test/dfx_generated/simple_user_accounts", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "candid_gen": "custom" } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/stable_b_tree_map_instruction_threshold/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/stable_b_tree_map_instruction_threshold/dfx.json index 95f3155ff6..d657e09edb 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/stable_b_tree_map_instruction_threshold/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/stable_b_tree_map_instruction_threshold/dfx.json @@ -3,7 +3,6 @@ "stable_b_tree_map_instruction_threshold": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/stable_b_tree_map_instruction_threshold", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/stable_structures/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/stable_structures/dfx.json index ef942b41d9..cf8b153609 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/stable_structures/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/stable_structures/dfx.json @@ -3,7 +3,6 @@ "canister1": { "type": "azle", "main": "src/canister1/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister1", "node_compatibility": true @@ -15,7 +14,6 @@ "canister2": { "type": "azle", "main": "src/canister2/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister2", "node_compatibility": true @@ -27,7 +25,6 @@ "canister3": { "type": "azle", "main": "src/canister3/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister3", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/timers/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/timers/dfx.json index fa645fa8b2..4dd508aa00 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/timers/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/timers/dfx.json @@ -3,14 +3,13 @@ "timers": { "type": "azle", "main": "src/timers.ts", - "candid_gen": "automatic", - "env": ["AZLE_TEST_FETCH"], "declarations": { "output": "test/dfx_generated/timers", "node_compatibility": true }, "custom": { - "experimental": true + "experimental": true, + "env": ["AZLE_TEST_FETCH"] } } } diff --git a/tests/end_to_end/candid_rpc/functional_syntax/tuple_types/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/tuple_types/dfx.json index 51bda24128..ab37854a67 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/tuple_types/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/tuple_types/dfx.json @@ -3,7 +3,6 @@ "tuple_types": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/tuple_types", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/update/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/update/dfx.json index 1fa87beff6..b793dbd054 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/update/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/update/dfx.json @@ -3,7 +3,6 @@ "update": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/update", "node_compatibility": true diff --git a/tests/end_to_end/candid_rpc/functional_syntax/vanilla_js/dfx.json b/tests/end_to_end/candid_rpc/functional_syntax/vanilla_js/dfx.json index 3b7e2e17b7..defdaf7485 100644 --- a/tests/end_to_end/candid_rpc/functional_syntax/vanilla_js/dfx.json +++ b/tests/end_to_end/candid_rpc/functional_syntax/vanilla_js/dfx.json @@ -3,7 +3,6 @@ "vanilla_js": { "type": "azle", "main": "src/index.js", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/vanilla_js", "node_compatibility": true diff --git a/tests/end_to_end/http_server/apollo_server/dfx.json b/tests/end_to_end/http_server/apollo_server/dfx.json index 27c042e521..8e22615337 100644 --- a/tests/end_to_end/http_server/apollo_server/dfx.json +++ b/tests/end_to_end/http_server/apollo_server/dfx.json @@ -4,7 +4,8 @@ "type": "azle", "main": "src/index.ts", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http" } } } diff --git a/tests/end_to_end/http_server/audio_and_video/dfx.json b/tests/end_to_end/http_server/audio_and_video/dfx.json index 5b78e51336..93dfd1e2d7 100644 --- a/tests/end_to_end/http_server/audio_and_video/dfx.json +++ b/tests/end_to_end/http_server/audio_and_video/dfx.json @@ -3,24 +3,25 @@ "backend": { "type": "azle", "main": "src/backend/server.ts", - "assets": [ - ["src/frontend/dist", "dist"], - ["src/backend/media/audio.ogg", "media/audio.ogg"], - ["src/backend/media/video.ogv", "media/video.ogv"] - ], - "assets_large_commented_out": [ - [ - "src/backend/media/jordan_video_streaming_demo.mp4", - "media/jordan_video_streaming_demo.mp4" - ], - [ - "src/backend/media/popeye_the_sailor_meets_sindbad_the_sailor.mp4", - "media/popeye_the_sailor_meets_sindbad_the_sailor.mp4" - ] - ], - "build_assets": "npm run build", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [ + ["src/frontend/dist", "dist"], + ["src/backend/media/audio.ogg", "media/audio.ogg"], + ["src/backend/media/video.ogv", "media/video.ogv"] + ], + "assets_large_commented_out": [ + [ + "src/backend/media/jordan_video_streaming_demo.mp4", + "media/jordan_video_streaming_demo.mp4" + ], + [ + "src/backend/media/popeye_the_sailor_meets_sindbad_the_sailor.mp4", + "media/popeye_the_sailor_meets_sindbad_the_sailor.mp4" + ] + ], + "build_assets": "npm run build" } } } diff --git a/tests/end_to_end/http_server/autoreload/dfx.json b/tests/end_to_end/http_server/autoreload/dfx.json index 50750465bc..2aa7f20af5 100644 --- a/tests/end_to_end/http_server/autoreload/dfx.json +++ b/tests/end_to_end/http_server/autoreload/dfx.json @@ -4,7 +4,8 @@ "type": "azle", "main": "src/server.ts", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http" } } } diff --git a/tests/end_to_end/http_server/bitcoinjs_lib/dfx.json b/tests/end_to_end/http_server/bitcoinjs_lib/dfx.json index bcec77bb8a..1dd3c138d2 100644 --- a/tests/end_to_end/http_server/bitcoinjs_lib/dfx.json +++ b/tests/end_to_end/http_server/bitcoinjs_lib/dfx.json @@ -4,7 +4,8 @@ "type": "azle", "main": "src/index.ts", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http" } } } diff --git a/tests/end_to_end/http_server/bitcore_lib/dfx.json b/tests/end_to_end/http_server/bitcore_lib/dfx.json index 52da3c0900..d9a88f9263 100644 --- a/tests/end_to_end/http_server/bitcore_lib/dfx.json +++ b/tests/end_to_end/http_server/bitcore_lib/dfx.json @@ -4,7 +4,8 @@ "type": "azle", "main": "src/index.ts", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http" } } } diff --git a/tests/end_to_end/http_server/ethers/dfx.json b/tests/end_to_end/http_server/ethers/dfx.json index ebab426c8e..757db6300b 100644 --- a/tests/end_to_end/http_server/ethers/dfx.json +++ b/tests/end_to_end/http_server/ethers/dfx.json @@ -4,7 +4,8 @@ "type": "azle", "main": "src/index.ts", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http" } } } diff --git a/tests/end_to_end/http_server/ethers_base/dfx.json b/tests/end_to_end/http_server/ethers_base/dfx.json index 5dd52d2786..8180dcee93 100644 --- a/tests/end_to_end/http_server/ethers_base/dfx.json +++ b/tests/end_to_end/http_server/ethers_base/dfx.json @@ -4,7 +4,8 @@ "type": "azle", "main": "src/server.ts", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http" } } } diff --git a/tests/end_to_end/http_server/express/dfx.json b/tests/end_to_end/http_server/express/dfx.json index 1142b17fc0..0a8b0cbd20 100644 --- a/tests/end_to_end/http_server/express/dfx.json +++ b/tests/end_to_end/http_server/express/dfx.json @@ -3,10 +3,11 @@ "express": { "type": "azle", "main": "src/backend/index.ts", - "assets": [["src/frontend/dist", "dist"]], - "build_assets": "npm run build", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [["src/frontend/dist", "dist"]], + "build_assets": "npm run build" } } } diff --git a/tests/end_to_end/http_server/fetch_ic/dfx.json b/tests/end_to_end/http_server/fetch_ic/dfx.json index 9d71b60914..e395ba2f06 100644 --- a/tests/end_to_end/http_server/fetch_ic/dfx.json +++ b/tests/end_to_end/http_server/fetch_ic/dfx.json @@ -3,10 +3,11 @@ "backend": { "type": "azle", "main": "src/backend/server.ts", - "assets": [["src/frontend/dist", "dist"]], - "build_assets": "npm run build", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [["src/frontend/dist", "dist"]], + "build_assets": "npm run build" } }, "internet_identity": { diff --git a/tests/end_to_end/http_server/file_protocol/dfx.json b/tests/end_to_end/http_server/file_protocol/dfx.json index 5b07ad3dcc..443372ca6b 100644 --- a/tests/end_to_end/http_server/file_protocol/dfx.json +++ b/tests/end_to_end/http_server/file_protocol/dfx.json @@ -3,9 +3,10 @@ "backend": { "type": "azle", "main": "src/backend.ts", - "assets": [["src/assets", "assets"]], "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [["src/assets", "assets"]] } } } diff --git a/tests/end_to_end/http_server/fs/dfx.json b/tests/end_to_end/http_server/fs/dfx.json index c0101caa8a..68a37997af 100644 --- a/tests/end_to_end/http_server/fs/dfx.json +++ b/tests/end_to_end/http_server/fs/dfx.json @@ -3,9 +3,10 @@ "fs": { "type": "azle", "main": "src/index.ts", - "assets": [["src/image.jpg", "image.jpg"]], "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [["src/image.jpg", "image.jpg"]] } } } diff --git a/tests/end_to_end/http_server/http_outcall_fetch/dfx.json b/tests/end_to_end/http_server/http_outcall_fetch/dfx.json index 16e754585b..5dd52d2786 100644 --- a/tests/end_to_end/http_server/http_outcall_fetch/dfx.json +++ b/tests/end_to_end/http_server/http_outcall_fetch/dfx.json @@ -3,7 +3,6 @@ "server": { "type": "azle", "main": "src/server.ts", - "candid_gen": "automatic", "custom": { "experimental": true } diff --git a/tests/end_to_end/http_server/hybrid_canister/dfx.json b/tests/end_to_end/http_server/hybrid_canister/dfx.json index 75438c8bc4..964cf5370d 100644 --- a/tests/end_to_end/http_server/hybrid_canister/dfx.json +++ b/tests/end_to_end/http_server/hybrid_canister/dfx.json @@ -3,7 +3,6 @@ "server": { "type": "azle", "main": "src/server.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/server", "node_compatibility": true @@ -16,7 +15,6 @@ "type": "azle", "init_arg": "(\"http-query-server-init-and-post-upgrade\", \"http-update-server-init-and-post-upgrade\", \"candidQueryServerInitAndPostUpgrade\", \"candidUpdateServerInitAndPostUpgrade\")", "main": "src/server_init_and_post_upgrade.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/server_init_and_post_upgrade", "node_compatibility": true @@ -28,7 +26,6 @@ "canister": { "type": "azle", "main": "src/canister.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true @@ -41,7 +38,6 @@ "type": "azle", "init_arg": "(\"http-query-canister-init-and-post-upgrade\", \"http-update-canister-init-and-post-upgrade\", \"candidQueryCanisterInitAndPostUpgrade\", \"candidUpdateCanisterInitAndPostUpgrade\")", "main": "src/canister_init_and_post_upgrade.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister_init_and_post_upgrade", "node_compatibility": true diff --git a/tests/end_to_end/http_server/ic_evm_rpc/dfx.json b/tests/end_to_end/http_server/ic_evm_rpc/dfx.json index 3def84df4b..7de4d641a2 100644 --- a/tests/end_to_end/http_server/ic_evm_rpc/dfx.json +++ b/tests/end_to_end/http_server/ic_evm_rpc/dfx.json @@ -3,10 +3,11 @@ "server": { "type": "azle", "main": "src/server.ts", - "assets": [["src/candid/evm_rpc.did", "src/candid/evm_rpc.did"]], "specified_id": "bd3sg-teaaa-aaaaa-qaaba-cai", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [["src/candid/evm_rpc.did", "src/candid/evm_rpc.did"]] } }, "evm_rpc": { diff --git a/tests/end_to_end/http_server/internet_identity/dfx.json b/tests/end_to_end/http_server/internet_identity/dfx.json index 9d71b60914..e395ba2f06 100644 --- a/tests/end_to_end/http_server/internet_identity/dfx.json +++ b/tests/end_to_end/http_server/internet_identity/dfx.json @@ -3,10 +3,11 @@ "backend": { "type": "azle", "main": "src/backend/server.ts", - "assets": [["src/frontend/dist", "dist"]], - "build_assets": "npm run build", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [["src/frontend/dist", "dist"]], + "build_assets": "npm run build" } }, "internet_identity": { diff --git a/tests/end_to_end/http_server/large_files/dfx.json b/tests/end_to_end/http_server/large_files/dfx.json index 67788f7321..1b784182e9 100644 --- a/tests/end_to_end/http_server/large_files/dfx.json +++ b/tests/end_to_end/http_server/large_files/dfx.json @@ -3,13 +3,14 @@ "backend": { "type": "azle", "main": "src/index.ts", - "assets": [ - ["assets/auto", "assets"], - ["assets/permanent", "assets"], - ["assets/single_asset.txt", "assets/text/single.txt"] - ], "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [ + ["assets/auto", "assets"], + ["assets/permanent", "assets"], + ["assets/single_asset.txt", "assets/text/single.txt"] + ] } } } diff --git a/tests/end_to_end/http_server/large_files/test/authorization_tests.ts b/tests/end_to_end/http_server/large_files/test/authorization_tests.ts index 0d2d57e430..e583ed253b 100644 --- a/tests/end_to_end/http_server/large_files/test/authorization_tests.ts +++ b/tests/end_to_end/http_server/large_files/test/authorization_tests.ts @@ -1,5 +1,5 @@ import { generateIdentity, getCanisterId } from 'azle/dfx'; -import { createActor } from 'azle/src/compiler/file_uploader/uploader_actor'; +import { createActor } from 'azle/src/build/experimental/commands/upload_assets/file_uploader/uploader_actor'; import { expect, it, please, Test } from 'azle/test'; import { v4 } from 'uuid'; diff --git a/tests/end_to_end/http_server/large_files/test/tests.ts b/tests/end_to_end/http_server/large_files/test/tests.ts index dfbe924d9d..b377c26f89 100644 --- a/tests/end_to_end/http_server/large_files/test/tests.ts +++ b/tests/end_to_end/http_server/large_files/test/tests.ts @@ -1,14 +1,14 @@ import { afterAll, beforeAll, describe } from '@jest/globals'; import { getCanisterId } from 'azle/dfx'; import { hashFile } from 'azle/scripts/hash_file'; -import { createActor } from 'azle/src/compiler/file_uploader/uploader_actor'; +import { createActor } from 'azle/src/build/experimental/commands/upload_assets/file_uploader/uploader_actor'; import { expect, it, please, Test } from 'azle/test'; import { execSync } from 'child_process'; import { readdir, rm } from 'fs/promises'; import { join } from 'path'; import { Unit } from '../../../../../scripts/file_generator'; -import { AZLE_UPLOADER_IDENTITY_NAME } from '../../../../../src/compiler/uploader_identity'; +import { AZLE_UPLOADER_IDENTITY_NAME } from '../../../../../src/build/experimental/commands/upload_assets/uploader_identity'; import { getAuthorizationTests } from './authorization_tests'; import { generateFiles, getDfxConfigFileTests } from './auto_tests'; import { generateTestFileOfSize } from './generate_test_files'; diff --git a/tests/end_to_end/http_server/nest/dfx.json b/tests/end_to_end/http_server/nest/dfx.json index af4bc57435..f9752cf61e 100644 --- a/tests/end_to_end/http_server/nest/dfx.json +++ b/tests/end_to_end/http_server/nest/dfx.json @@ -3,9 +3,10 @@ "api": { "type": "azle", "main": "src/main.ts", - "esm_externals": ["@nestjs/microservices", "@nestjs/websockets"], "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "esm_externals": ["@nestjs/microservices", "@nestjs/websockets"] } } } diff --git a/tests/end_to_end/http_server/new/.gitignore b/tests/end_to_end/http_server/new/.gitignore new file mode 100644 index 0000000000..88ddf02589 --- /dev/null +++ b/tests/end_to_end/http_server/new/.gitignore @@ -0,0 +1,5 @@ +.azle +.dfx +dfx_generated +hello_world +node_modules diff --git a/tests/end_to_end/http_server/new/jest.config.js b/tests/end_to_end/http_server/new/jest.config.js new file mode 100644 index 0000000000..3ab7e2d25e --- /dev/null +++ b/tests/end_to_end/http_server/new/jest.config.js @@ -0,0 +1,10 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + transform: { + '^.+\\.ts$': ['ts-jest', { isolatedModules: true }], + '^.+\\.js$': 'ts-jest' + }, + transformIgnorePatterns: ['/node_modules/(?!(azle)/)'] // Make sure azle is transformed +}; diff --git a/tests/end_to_end/http_server/new/package-lock.json b/tests/end_to_end/http_server/new/package-lock.json new file mode 100644 index 0000000000..dda66868da --- /dev/null +++ b/tests/end_to_end/http_server/new/package-lock.json @@ -0,0 +1,4723 @@ +{ + "name": "new_end_to_end_test_functional_syntax", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "new_end_to_end_test_functional_syntax", + "devDependencies": { + "@dfinity/agent": "^0.19.2", + "jest": "^29.7.0", + "ts-jest": "^29.1.5", + "tsx": "^4.15.7", + "typescript": "^5.2.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dfinity/agent": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@dfinity/agent/-/agent-0.19.2.tgz", + "integrity": "sha512-KLRWEjeU9SyyaS7IBVJ9ZUcufxufr55e/kRIyClK157+0pkTG9a8xKjUIMx3QzKvLsqqzXL238nWwdoP6jAD8g==", + "dev": true, + "dependencies": { + "@noble/hashes": "^1.3.1", + "base64-arraybuffer": "^0.2.0", + "borc": "^2.1.1", + "simple-cbor": "^0.4.1" + }, + "peerDependencies": { + "@dfinity/candid": "^0.19.2", + "@dfinity/principal": "^0.19.2" + } + }, + "node_modules/@dfinity/candid": { + "version": "0.19.2", + "resolved": "git+ssh://git@github.com/demergent-labs/candid.git#88ffa6d9a85b175fcf3ef2a79c9fe4c0f034c02d", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "peerDependencies": { + "@dfinity/principal": "^0.19.2" + } + }, + "node_modules/@dfinity/principal": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@dfinity/principal/-/principal-0.19.2.tgz", + "integrity": "sha512-vsKN6BKya70bQUsjgKRDlR2lOpv/XpUkCMIiji6rjMtKHIuWEB5Eu3JqZsOuBmWo3A3TT/K/osT9VPm0k4qdYQ==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "^1.3.1" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "dev": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@swc/core": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.91.tgz", + "integrity": "sha512-r950d0fdlZ8qbSDyvApn3HyCojiZE8xpgJzQvypeMi32dalYwugdJKWyLB55JIGMRGJ8+lmVvY4MPGkSR3kXgA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "peer": true, + "dependencies": { + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.91", + "@swc/core-darwin-x64": "1.3.91", + "@swc/core-linux-arm-gnueabihf": "1.3.91", + "@swc/core-linux-arm64-gnu": "1.3.91", + "@swc/core-linux-arm64-musl": "1.3.91", + "@swc/core-linux-x64-gnu": "1.3.91", + "@swc/core-linux-x64-musl": "1.3.91", + "@swc/core-win32-arm64-msvc": "1.3.91", + "@swc/core-win32-ia32-msvc": "1.3.91", + "@swc/core-win32-x64-msvc": "1.3.91" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.91.tgz", + "integrity": "sha512-7kHGiQ1he5khcEeJuHDmLZPM3rRL/ith5OTmV6bOPsoHi46kLeixORW+ts1opC3tC9vu6xbk16xgX0QAJchc1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.91.tgz", + "integrity": "sha512-8SpU18FbFpZDVzsHsAwdI1thF/picQGxq9UFxa8W+T9SDnbsqwFJv/6RqKJeJoDV6qFdl2OLjuO0OL7xrp0qnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.91.tgz", + "integrity": "sha512-fOq4Cy8UbwX1yf0WB0d8hWZaIKCnPtPGguRqdXGLfwvhjZ9SIErT6PnmGTGRbQCNCIkOZWHKyTU0r8t2dN3haQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.91.tgz", + "integrity": "sha512-fki4ioRP/Esy4vdp8T34RCV+V9dqkRmOt763pf74pdiyFV2dPLXa5lnw/XvR1RTfPGknrYgjEQLCfZlReTryRw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.91.tgz", + "integrity": "sha512-XrG+DUUqNtfVLcJ20imby7fpBwQNG5VsEQBzQndSonPyUOa2YkTbBb60YDondfQGDABopuHH8gHN8o2H2/VCnQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.91.tgz", + "integrity": "sha512-d11bYhX+YPBr/Frcjc6eVn3C0LuS/9U1Li9EmQ+6s9EpYtYRl2ygSlC8eueLbaiazBnCVYFnc8bU4o0kc5B9sw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.91.tgz", + "integrity": "sha512-2SRp5Dke2P4jCQePkDx9trkkTstnRpZJVw5r3jvYdk0zeO6iC4+ZPvvoWXJLigqQv/fZnIiSUfJ6ssOoaEqTzQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.91.tgz", + "integrity": "sha512-l9qKXikOxj42UIjbeZpz9xtBmr736jOMqInNP8mVF2/U+ws5sI8zJjcOFFtfis4ru7vWCXhB1wtltdlJYO2vGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.91.tgz", + "integrity": "sha512-+s+52O0QVPmzOgjEe/rcb0AK6q/J7EHKwAyJCu/FaYO9df5ovE0HJjSKP6HAF0dGPO5hkENrXuNGujofUH9vtQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.91.tgz", + "integrity": "sha512-7u9HDQhjUC3Gv43EFW84dZtduWCSa4MgltK+Sp9zEGti6WXqDPu/ESjvDsQEVYTBEMEvZs/xVAXPgLVHorV5nQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "20.5.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-arraybuffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz", + "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/borc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/borc/-/borc-2.1.2.tgz", + "integrity": "sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w==", + "dev": true, + "dependencies": { + "bignumber.js": "^9.0.0", + "buffer": "^5.5.0", + "commander": "^2.15.0", + "ieee754": "^1.1.13", + "iso-url": "~0.4.7", + "json-text-sequence": "~0.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001637", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001637.tgz", + "integrity": "sha512-1x0qRI1mD1o9e+7mBI7XtzFAP4XszbHaVWsMiGbSPLYekKTJF7K+FNk6AsXH4sUpc+qrsI3pVgf1Jdl/uGkuSQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delimit-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", + "integrity": "sha512-a02fiQ7poS5CnjiJBAsjGLPp5EwVoGHNeu9sziBd9huppRfsAFIpv5zNLv0V1gbop53ilngAf5Kf331AwcoRBQ==", + "dev": true + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.812", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.812.tgz", + "integrity": "sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/iso-url": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-0.4.7.tgz", + "integrity": "sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-text-sequence": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", + "integrity": "sha512-L3mEegEWHRekSHjc7+sc8eJhba9Clq1PZ8kMkzf8OxElhXc8O4TS5MwcVlj9aEbm5dr81N90WHC5nAz3UO971w==", + "dev": true, + "dependencies": { + "delimit-stream": "0.1.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-cbor": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/simple-cbor/-/simple-cbor-0.4.1.tgz", + "integrity": "sha512-rijcxtwx2b4Bje3sqeIqw5EeW7UlOIC4YfOdwqIKacpvRQ/D78bWg/4/0m5e0U91oKvlGh7LlJuZCu07ISCC7w==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-jest": { + "version": "29.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.5.tgz", + "integrity": "sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsx": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.16.2.tgz", + "integrity": "sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==", + "dev": true, + "dependencies": { + "esbuild": "~0.21.5", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/tests/end_to_end/http_server/new/package.json b/tests/end_to_end/http_server/new/package.json new file mode 100644 index 0000000000..35c8a3c88a --- /dev/null +++ b/tests/end_to_end/http_server/new/package.json @@ -0,0 +1,12 @@ +{ + "scripts": { + "test": "if [ \"$AZLE_TEST_RUN_ON_RELEASE\" = \"true\" ]; then tsx test/test.ts; else echo 'Skipping pretests'; fi" + }, + "devDependencies": { + "@dfinity/agent": "^0.19.2", + "jest": "^29.7.0", + "ts-jest": "^29.1.5", + "tsx": "^4.15.7", + "typescript": "^5.2.2" + } +} diff --git a/tests/end_to_end/http_server/new/test/test.ts b/tests/end_to_end/http_server/new/test/test.ts new file mode 100644 index 0000000000..87311988a8 --- /dev/null +++ b/tests/end_to_end/http_server/new/test/test.ts @@ -0,0 +1,19 @@ +import { execSync } from 'child_process'; + +import { version } from '../../../../../package.json'; + +function pretest(): void { + execSync(`npx -y azle@${version} new hello_world --http-server`, { + stdio: 'inherit' + }); + + execSync(`cd hello_world && npm install`, { + stdio: 'inherit' + }); + + execSync(`cd hello_world && npm test`, { + stdio: 'inherit' + }); +} + +pretest(); diff --git a/tests/end_to_end/http_server/new/tsconfig.json b/tests/end_to_end/http_server/new/tsconfig.json new file mode 100644 index 0000000000..be01d53b1b --- /dev/null +++ b/tests/end_to_end/http_server/new/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "strict": true, + "target": "ES2020", + "module": "ES2020", + "moduleResolution": "node", + "allowJs": true, + "outDir": "HACK_BECAUSE_OF_ALLOW_JS", + "resolveJsonModule": true + } +} diff --git a/tests/end_to_end/http_server/open_value_sharing/dfx.json b/tests/end_to_end/http_server/open_value_sharing/dfx.json index bd86049cb8..66189d1fb9 100644 --- a/tests/end_to_end/http_server/open_value_sharing/dfx.json +++ b/tests/end_to_end/http_server/open_value_sharing/dfx.json @@ -10,6 +10,7 @@ }, "custom": { "experimental": true, + "candid_gen": "http", "openValueSharing": { "killSwitch": false, "period": 1, @@ -25,7 +26,6 @@ "wallet": { "type": "azle", "main": "src/wallet.ts", - "candid_gen": "automatic", "specified_id": "bw4dl-smaaa-aaaaa-qaacq-cai", "declarations": { "output": "test/dfx_generated/wallet", diff --git a/tests/end_to_end/http_server/sqlite/dfx.json b/tests/end_to_end/http_server/sqlite/dfx.json index 2a83e49964..7c8249517d 100644 --- a/tests/end_to_end/http_server/sqlite/dfx.json +++ b/tests/end_to_end/http_server/sqlite/dfx.json @@ -3,7 +3,6 @@ "sqlite": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "custom": { "experimental": true } diff --git a/tests/end_to_end/http_server/sqlite_drizzle/dfx.json b/tests/end_to_end/http_server/sqlite_drizzle/dfx.json index 4fb9656ac8..67a955ab36 100644 --- a/tests/end_to_end/http_server/sqlite_drizzle/dfx.json +++ b/tests/end_to_end/http_server/sqlite_drizzle/dfx.json @@ -3,7 +3,6 @@ "sqlite_drizzle": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "custom": { "experimental": true } diff --git a/tests/end_to_end/http_server/sqlite_typeorm/dfx.json b/tests/end_to_end/http_server/sqlite_typeorm/dfx.json index e5d3324b9c..9458028104 100644 --- a/tests/end_to_end/http_server/sqlite_typeorm/dfx.json +++ b/tests/end_to_end/http_server/sqlite_typeorm/dfx.json @@ -3,7 +3,6 @@ "sqlite_typeorm": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "custom": { "experimental": true } diff --git a/tests/end_to_end/http_server/tfjs/dfx.json b/tests/end_to_end/http_server/tfjs/dfx.json index 877ced6f6c..cc67d48509 100644 --- a/tests/end_to_end/http_server/tfjs/dfx.json +++ b/tests/end_to_end/http_server/tfjs/dfx.json @@ -3,9 +3,10 @@ "api": { "type": "azle", "main": "src/api.ts", - "assets": [["src/spam", "spam"]], "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http", + "assets": [["src/spam", "spam"]] } } } diff --git a/tests/end_to_end/http_server/web_assembly/dfx.json b/tests/end_to_end/http_server/web_assembly/dfx.json index d92ce56c1e..1bc767a8af 100644 --- a/tests/end_to_end/http_server/web_assembly/dfx.json +++ b/tests/end_to_end/http_server/web_assembly/dfx.json @@ -4,7 +4,8 @@ "type": "azle", "main": "src/index.ts", "custom": { - "experimental": true + "experimental": true, + "candid_gen": "http" } } } diff --git a/tests/property/candid_rpc/class_api/blob/dfx.json b/tests/property/candid_rpc/class_api/blob/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/blob/dfx.json +++ b/tests/property/candid_rpc/class_api/blob/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/bool/dfx.json b/tests/property/candid_rpc/class_api/bool/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/bool/dfx.json +++ b/tests/property/candid_rpc/class_api/bool/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/canister_methods/http_request/dfx.json b/tests/property/candid_rpc/class_api/canister_methods/http_request/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/canister_methods/http_request/dfx.json +++ b/tests/property/candid_rpc/class_api/canister_methods/http_request/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/canister_methods/http_request_update/dfx.json b/tests/property/candid_rpc/class_api/canister_methods/http_request_update/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/canister_methods/http_request_update/dfx.json +++ b/tests/property/candid_rpc/class_api/canister_methods/http_request_update/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/canister_methods/init/dfx.json b/tests/property/candid_rpc/class_api/canister_methods/init/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/canister_methods/init/dfx.json +++ b/tests/property/candid_rpc/class_api/canister_methods/init/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/canister_methods/inspect_message/dfx.json b/tests/property/candid_rpc/class_api/canister_methods/inspect_message/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/canister_methods/inspect_message/dfx.json +++ b/tests/property/candid_rpc/class_api/canister_methods/inspect_message/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/canister_methods/post_upgrade/dfx.json b/tests/property/candid_rpc/class_api/canister_methods/post_upgrade/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/canister_methods/post_upgrade/dfx.json +++ b/tests/property/candid_rpc/class_api/canister_methods/post_upgrade/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/canister_methods/pre_upgrade/dfx.json b/tests/property/candid_rpc/class_api/canister_methods/pre_upgrade/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/canister_methods/pre_upgrade/dfx.json +++ b/tests/property/candid_rpc/class_api/canister_methods/pre_upgrade/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/canister_methods/query/dfx.json b/tests/property/candid_rpc/class_api/canister_methods/query/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/canister_methods/query/dfx.json +++ b/tests/property/candid_rpc/class_api/canister_methods/query/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/canister_methods/update/dfx.json b/tests/property/candid_rpc/class_api/canister_methods/update/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/canister_methods/update/dfx.json +++ b/tests/property/candid_rpc/class_api/canister_methods/update/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/float32/dfx.json b/tests/property/candid_rpc/class_api/float32/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/float32/dfx.json +++ b/tests/property/candid_rpc/class_api/float32/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/float64/dfx.json b/tests/property/candid_rpc/class_api/float64/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/float64/dfx.json +++ b/tests/property/candid_rpc/class_api/float64/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/func/dfx.json b/tests/property/candid_rpc/class_api/func/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/func/dfx.json +++ b/tests/property/candid_rpc/class_api/func/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/int/dfx.json b/tests/property/candid_rpc/class_api/int/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/int/dfx.json +++ b/tests/property/candid_rpc/class_api/int/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/int16/dfx.json b/tests/property/candid_rpc/class_api/int16/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/int16/dfx.json +++ b/tests/property/candid_rpc/class_api/int16/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/int32/dfx.json b/tests/property/candid_rpc/class_api/int32/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/int32/dfx.json +++ b/tests/property/candid_rpc/class_api/int32/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/int64/dfx.json b/tests/property/candid_rpc/class_api/int64/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/int64/dfx.json +++ b/tests/property/candid_rpc/class_api/int64/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/int8/dfx.json b/tests/property/candid_rpc/class_api/int8/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/int8/dfx.json +++ b/tests/property/candid_rpc/class_api/int8/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/nat/dfx.json b/tests/property/candid_rpc/class_api/nat/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/nat/dfx.json +++ b/tests/property/candid_rpc/class_api/nat/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/nat16/dfx.json b/tests/property/candid_rpc/class_api/nat16/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/nat16/dfx.json +++ b/tests/property/candid_rpc/class_api/nat16/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/nat32/dfx.json b/tests/property/candid_rpc/class_api/nat32/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/nat32/dfx.json +++ b/tests/property/candid_rpc/class_api/nat32/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/nat64/dfx.json b/tests/property/candid_rpc/class_api/nat64/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/nat64/dfx.json +++ b/tests/property/candid_rpc/class_api/nat64/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/nat8/dfx.json b/tests/property/candid_rpc/class_api/nat8/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/nat8/dfx.json +++ b/tests/property/candid_rpc/class_api/nat8/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/null/dfx.json b/tests/property/candid_rpc/class_api/null/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/null/dfx.json +++ b/tests/property/candid_rpc/class_api/null/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/opt/dfx.json b/tests/property/candid_rpc/class_api/opt/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/opt/dfx.json +++ b/tests/property/candid_rpc/class_api/opt/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/principal/dfx.json b/tests/property/candid_rpc/class_api/principal/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/principal/dfx.json +++ b/tests/property/candid_rpc/class_api/principal/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/record/dfx.json b/tests/property/candid_rpc/class_api/record/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/record/dfx.json +++ b/tests/property/candid_rpc/class_api/record/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/recursive/dfx.json b/tests/property/candid_rpc/class_api/recursive/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/recursive/dfx.json +++ b/tests/property/candid_rpc/class_api/recursive/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/service/dfx.json b/tests/property/candid_rpc/class_api/service/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/service/dfx.json +++ b/tests/property/candid_rpc/class_api/service/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/stable_b_tree_map/dfx.json b/tests/property/candid_rpc/class_api/stable_b_tree_map/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/stable_b_tree_map/dfx.json +++ b/tests/property/candid_rpc/class_api/stable_b_tree_map/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/text/dfx.json b/tests/property/candid_rpc/class_api/text/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/text/dfx.json +++ b/tests/property/candid_rpc/class_api/text/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/tuple/dfx.json b/tests/property/candid_rpc/class_api/tuple/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/tuple/dfx.json +++ b/tests/property/candid_rpc/class_api/tuple/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/variant/dfx.json b/tests/property/candid_rpc/class_api/variant/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/variant/dfx.json +++ b/tests/property/candid_rpc/class_api/variant/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/class_api/vec/dfx.json b/tests/property/candid_rpc/class_api/vec/dfx.json index 64da72016b..f7f4e7784b 100644 --- a/tests/property/candid_rpc/class_api/vec/dfx.json +++ b/tests/property/candid_rpc/class_api/vec/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/blob/dfx.json b/tests/property/candid_rpc/functional_api/blob/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/blob/dfx.json +++ b/tests/property/candid_rpc/functional_api/blob/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/bool/dfx.json b/tests/property/candid_rpc/functional_api/bool/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/bool/dfx.json +++ b/tests/property/candid_rpc/functional_api/bool/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/canister_methods/http_request/dfx.json b/tests/property/candid_rpc/functional_api/canister_methods/http_request/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/canister_methods/http_request/dfx.json +++ b/tests/property/candid_rpc/functional_api/canister_methods/http_request/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/canister_methods/http_request_update/dfx.json b/tests/property/candid_rpc/functional_api/canister_methods/http_request_update/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/canister_methods/http_request_update/dfx.json +++ b/tests/property/candid_rpc/functional_api/canister_methods/http_request_update/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/canister_methods/init/dfx.json b/tests/property/candid_rpc/functional_api/canister_methods/init/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/canister_methods/init/dfx.json +++ b/tests/property/candid_rpc/functional_api/canister_methods/init/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/canister_methods/inspect_message/dfx.json b/tests/property/candid_rpc/functional_api/canister_methods/inspect_message/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/canister_methods/inspect_message/dfx.json +++ b/tests/property/candid_rpc/functional_api/canister_methods/inspect_message/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/canister_methods/post_upgrade/dfx.json b/tests/property/candid_rpc/functional_api/canister_methods/post_upgrade/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/canister_methods/post_upgrade/dfx.json +++ b/tests/property/candid_rpc/functional_api/canister_methods/post_upgrade/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/canister_methods/pre_upgrade/dfx.json b/tests/property/candid_rpc/functional_api/canister_methods/pre_upgrade/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/canister_methods/pre_upgrade/dfx.json +++ b/tests/property/candid_rpc/functional_api/canister_methods/pre_upgrade/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/canister_methods/query/dfx.json b/tests/property/candid_rpc/functional_api/canister_methods/query/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/canister_methods/query/dfx.json +++ b/tests/property/candid_rpc/functional_api/canister_methods/query/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/canister_methods/update/dfx.json b/tests/property/candid_rpc/functional_api/canister_methods/update/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/canister_methods/update/dfx.json +++ b/tests/property/candid_rpc/functional_api/canister_methods/update/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/float32/dfx.json b/tests/property/candid_rpc/functional_api/float32/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/float32/dfx.json +++ b/tests/property/candid_rpc/functional_api/float32/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/float64/dfx.json b/tests/property/candid_rpc/functional_api/float64/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/float64/dfx.json +++ b/tests/property/candid_rpc/functional_api/float64/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/func/dfx.json b/tests/property/candid_rpc/functional_api/func/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/func/dfx.json +++ b/tests/property/candid_rpc/functional_api/func/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/int/dfx.json b/tests/property/candid_rpc/functional_api/int/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/int/dfx.json +++ b/tests/property/candid_rpc/functional_api/int/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/int16/dfx.json b/tests/property/candid_rpc/functional_api/int16/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/int16/dfx.json +++ b/tests/property/candid_rpc/functional_api/int16/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/int32/dfx.json b/tests/property/candid_rpc/functional_api/int32/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/int32/dfx.json +++ b/tests/property/candid_rpc/functional_api/int32/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/int64/dfx.json b/tests/property/candid_rpc/functional_api/int64/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/int64/dfx.json +++ b/tests/property/candid_rpc/functional_api/int64/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/int8/dfx.json b/tests/property/candid_rpc/functional_api/int8/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/int8/dfx.json +++ b/tests/property/candid_rpc/functional_api/int8/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/nat/dfx.json b/tests/property/candid_rpc/functional_api/nat/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/nat/dfx.json +++ b/tests/property/candid_rpc/functional_api/nat/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/nat16/dfx.json b/tests/property/candid_rpc/functional_api/nat16/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/nat16/dfx.json +++ b/tests/property/candid_rpc/functional_api/nat16/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/nat32/dfx.json b/tests/property/candid_rpc/functional_api/nat32/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/nat32/dfx.json +++ b/tests/property/candid_rpc/functional_api/nat32/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/nat64/dfx.json b/tests/property/candid_rpc/functional_api/nat64/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/nat64/dfx.json +++ b/tests/property/candid_rpc/functional_api/nat64/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/nat8/dfx.json b/tests/property/candid_rpc/functional_api/nat8/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/nat8/dfx.json +++ b/tests/property/candid_rpc/functional_api/nat8/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/null/dfx.json b/tests/property/candid_rpc/functional_api/null/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/null/dfx.json +++ b/tests/property/candid_rpc/functional_api/null/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/opt/dfx.json b/tests/property/candid_rpc/functional_api/opt/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/opt/dfx.json +++ b/tests/property/candid_rpc/functional_api/opt/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/principal/dfx.json b/tests/property/candid_rpc/functional_api/principal/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/principal/dfx.json +++ b/tests/property/candid_rpc/functional_api/principal/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/record/dfx.json b/tests/property/candid_rpc/functional_api/record/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/record/dfx.json +++ b/tests/property/candid_rpc/functional_api/record/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/recursive/dfx.json b/tests/property/candid_rpc/functional_api/recursive/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/recursive/dfx.json +++ b/tests/property/candid_rpc/functional_api/recursive/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/service/dfx.json b/tests/property/candid_rpc/functional_api/service/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/service/dfx.json +++ b/tests/property/candid_rpc/functional_api/service/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/stable_b_tree_map/dfx.json b/tests/property/candid_rpc/functional_api/stable_b_tree_map/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/stable_b_tree_map/dfx.json +++ b/tests/property/candid_rpc/functional_api/stable_b_tree_map/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/text/dfx.json b/tests/property/candid_rpc/functional_api/text/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/text/dfx.json +++ b/tests/property/candid_rpc/functional_api/text/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/tuple/dfx.json b/tests/property/candid_rpc/functional_api/tuple/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/tuple/dfx.json +++ b/tests/property/candid_rpc/functional_api/tuple/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/variant/dfx.json b/tests/property/candid_rpc/functional_api/variant/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/variant/dfx.json +++ b/tests/property/candid_rpc/functional_api/variant/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true diff --git a/tests/property/candid_rpc/functional_api/vec/dfx.json b/tests/property/candid_rpc/functional_api/vec/dfx.json index a13eb0187d..3ab221f536 100644 --- a/tests/property/candid_rpc/functional_api/vec/dfx.json +++ b/tests/property/candid_rpc/functional_api/vec/dfx.json @@ -3,7 +3,6 @@ "canister": { "type": "azle", "main": "src/index.ts", - "candid_gen": "automatic", "declarations": { "output": "test/dfx_generated/canister", "node_compatibility": true