vona-core 5.1.50 → 5.1.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/index.js +121 -36
  2. package/dist/index.js.map +1 -1
  3. package/dist/lib/bean/resource/locale/utils.d.ts +8 -1
  4. package/dist/lib/bean/resource/locale/utils.d.ts.map +1 -1
  5. package/dist/lib/bean/type.d.ts.map +1 -1
  6. package/dist/lib/core/testClaim.d.ts.map +1 -1
  7. package/dist/lib/core/testClaimFilesystemWindows.d.ts.map +1 -1
  8. package/dist/lib/module/locales.d.ts.map +1 -1
  9. package/dist/lib/utils/index.d.ts +1 -0
  10. package/dist/lib/utils/index.d.ts.map +1 -1
  11. package/dist/lib/utils/zod-enhance.d.ts +2 -1
  12. package/dist/lib/utils/zod-enhance.d.ts.map +1 -1
  13. package/dist/types/config/config.d.ts +2 -0
  14. package/dist/types/config/config.d.ts.map +1 -1
  15. package/dist/types/config/locale.d.ts +9 -1
  16. package/dist/types/config/locale.d.ts.map +1 -1
  17. package/dist/types/interface/module.d.ts +1 -0
  18. package/dist/types/interface/module.d.ts.map +1 -1
  19. package/package.json +3 -3
  20. package/src/lib/bean/resource/locale/appLocale.ts +2 -2
  21. package/src/lib/bean/resource/locale/utils.ts +46 -1
  22. package/src/lib/bean/type.ts +3 -3
  23. package/src/lib/core/testClaim.test.ts +294 -1
  24. package/src/lib/core/testClaim.ts +47 -9
  25. package/src/lib/core/testClaimFilesystem.test.ts +163 -39
  26. package/src/lib/core/testClaimFilesystemWindows.cs +16 -6
  27. package/src/lib/core/testClaimFilesystemWindows.ts +9 -4
  28. package/src/lib/framework/start.ts +4 -0
  29. package/src/lib/module/locales.ts +41 -22
  30. package/src/lib/utils/index.ts +1 -0
  31. package/src/lib/utils/zod-enhance.ts +9 -2
  32. package/src/types/config/config.ts +2 -0
  33. package/src/types/config/locale.ts +11 -4
  34. package/src/types/interface/module.ts +1 -0
package/dist/index.js CHANGED
@@ -663,6 +663,10 @@ function _resolverAddonFile(addonName, projectPath, resolver) {
663
663
  }
664
664
  }
665
665
 
666
+ const queryCoercion = new AsyncLocalStorage();
667
+ function runWithZodQueryCoercion(enabled, fn) {
668
+ return queryCoercion.run(enabled, fn);
669
+ }
666
670
  function zodEnhance() {
667
671
  setLocaleAdapter((text, iss) => {
668
672
  const app = useApp();
@@ -670,7 +674,7 @@ function zodEnhance() {
670
674
  return app.meta.text(text, ...args);
671
675
  }, text, iss);
672
676
  });
673
- setParseAdapter(ZodMetadata);
677
+ setParseAdapter(ZodMetadata, () => queryCoercion.getStore() !== false);
674
678
  }
675
679
  function zodSetLocaleErrors(app, localeErrors, localeDefault) {
676
680
  setLocaleErrors(() => {
@@ -2408,10 +2412,40 @@ function text$1(strings, ...expressions) {
2408
2412
  function isLocaleMagic(str) {
2409
2413
  return typeof str === 'object' && cast(str).toJSON;
2410
2414
  }
2415
+ function canonicalizeLocale(value) {
2416
+ return typeof value === 'string' ? value.trim().replaceAll('_', '-').toLowerCase() : '';
2417
+ }
2418
+ function validateLocaleConfig(config) {
2419
+ const items = config?.items;
2420
+ if (!items || typeof items !== 'object' || Object.keys(items).length === 0) {
2421
+ throw new Error('config.locale.items must contain at least one enabled locale');
2422
+ }
2423
+ for (const key of Object.keys(items)) {
2424
+ if (!key || canonicalizeLocale(key) !== key || typeof items[key] !== 'string') {
2425
+ throw new Error(`config.locale.items contains an invalid locale: ${key}`);
2426
+ }
2427
+ }
2428
+ if (typeof config.default !== 'string' || !Object.hasOwn(items, config.default) || canonicalizeLocale(config.default) !== config.default) {
2429
+ throw new Error('config.locale.default must be an enabled config.locale.items key');
2430
+ }
2431
+ }
2432
+
2433
+ /** Resolve an enabled input without allowing aliases to expand the configured set. */
2434
+ function resolveEnabledLocale(value, config, aliases = {}) {
2435
+ validateLocaleConfig(config);
2436
+ let locale = canonicalizeLocale(value);
2437
+ if (Object.hasOwn(aliases, locale)) locale = canonicalizeLocale(aliases[locale]);
2438
+ return Object.hasOwn(config.items, locale) ? locale : undefined;
2439
+ }
2440
+
2441
+ /** Active-language selection only; explicit translation lookup remains independent. */
2442
+ function resolveLocale(value, config, aliases) {
2443
+ return resolveEnabledLocale(value, config, aliases) ?? config.default;
2444
+ }
2411
2445
 
2412
2446
  class AppLocale extends BeanSimple {
2413
2447
  get current() {
2414
- return this.ctx ? this.ctx.locale : 'en-us';
2448
+ return this.ctx ? this.ctx.locale : resolveLocale(undefined, this.app.config.locale);
2415
2449
  }
2416
2450
  set current(value) {
2417
2451
  this.ctx.locale = value;
@@ -3658,9 +3692,12 @@ function decode(source) {
3658
3692
  throw new Error('Windows test claim filesystem helper returned an invalid response');
3659
3693
  }
3660
3694
  if (!value || value.ok !== true) {
3661
- const error = new Error(value?.code === 'EEXIST' ? 'Test claim file already exists' : `Unsafe Windows test claim filesystem operation (${value?.code ?? 'unknown'})`);
3695
+ const code = ['EEXIST', 'ENOENT', 'EBUSY', 'EACCES', 'EUNSAFE'].includes(value?.code) ? value.code : 'EUNSAFE';
3696
+ const nativeCode = Number.isInteger(value?.nativeCode) && value.nativeCode >= 0 && value.nativeCode <= 65535 ? value.nativeCode : 0;
3697
+ const error = new Error(`Unsafe Windows test claim filesystem operation (${code}, nativeCode=${nativeCode})`);
3662
3698
  Object.assign(error, {
3663
- code: value?.code ?? 'EUNSAFE'
3699
+ code,
3700
+ nativeCode
3664
3701
  });
3665
3702
  throw error;
3666
3703
  }
@@ -4350,9 +4387,19 @@ async function startTestClaimBroker(claimPath) {
4350
4387
  const update = event => {
4351
4388
  if (closing) return Promise.reject(new Error('Test claim broker is closed'));
4352
4389
  const result = queue.then(async () => {
4353
- const manifest = await loadTestClaim(claimPath);
4354
- applyEvent(manifest, event);
4355
- await writeTestClaim(claimPath, manifest);
4390
+ let phase = 'read';
4391
+ try {
4392
+ const manifest = await loadTestClaim(claimPath);
4393
+ phase = 'validate';
4394
+ applyEvent(manifest, event);
4395
+ phase = 'write';
4396
+ await writeTestClaim(claimPath, manifest);
4397
+ } catch (error) {
4398
+ if (error instanceof Error) Object.assign(error, {
4399
+ testClaimPhase: phase
4400
+ });
4401
+ throw error;
4402
+ }
4356
4403
  });
4357
4404
  queue = result.catch(() => {});
4358
4405
  return result;
@@ -4373,8 +4420,15 @@ async function startTestClaimBroker(claimPath) {
4373
4420
  }
4374
4421
  if (req.url === '/containment') await containment(parseTestClaimJson(body));else await update(parseTestClaimJson(body));
4375
4422
  res.writeHead(204).end();
4376
- } catch {
4377
- res.writeHead(409).end('Test claim registration rejected');
4423
+ } catch (error) {
4424
+ const failure = error;
4425
+ const headers = {};
4426
+ if (['read', 'validate', 'write'].includes(failure?.testClaimPhase)) headers['x-vona-claim-phase'] = failure.testClaimPhase;
4427
+ if (['EEXIST', 'ENOENT', 'EBUSY', 'EACCES', 'EUNSAFE'].includes(failure?.code)) headers['x-vona-claim-code'] = failure.code;
4428
+ if (Number.isInteger(failure?.nativeCode) && failure.nativeCode >= 0 && failure.nativeCode <= 65535) {
4429
+ headers['x-vona-claim-native-code'] = String(failure.nativeCode);
4430
+ }
4431
+ res.writeHead(409, headers).end('Test claim registration rejected');
4378
4432
  }
4379
4433
  });
4380
4434
  server.requestTimeout = 10000;
@@ -4424,20 +4478,34 @@ function hasTestClaimTransport(env = process.env) {
4424
4478
  }
4425
4479
  async function sendTestClaimEvent(env, event) {
4426
4480
  if (!hasTestClaimTransport(env)) return;
4481
+ let response;
4427
4482
  try {
4428
- const response = await fetch(env[TEST_CLAIM_URL_ENV], {
4483
+ response = await fetch(env[TEST_CLAIM_URL_ENV], {
4429
4484
  method: 'POST',
4430
4485
  headers: {
4431
4486
  'authorization': `Bearer ${env[TEST_CLAIM_TOKEN_ENV]}`,
4487
+ // Startup can block past the broker's idle timeout; never reuse a stale socket.
4488
+ 'connection': 'close',
4432
4489
  'content-type': 'application/json'
4433
4490
  },
4434
4491
  body: JSON.stringify(event),
4435
- signal: AbortSignal.timeout(10000),
4492
+ // Includes the serialized queue and durable Windows filesystem work (30s per operation).
4493
+ signal: AbortSignal.timeout(120000),
4436
4494
  redirect: 'error'
4437
4495
  });
4438
- if (response.status !== 204) throw new Error('Registration rejected');
4439
4496
  } catch {
4440
- throw new Error('Managed test allocation registration failed');
4497
+ throw new Error('Managed test allocation registration failed (transport)');
4498
+ }
4499
+ if (response.status !== 204) {
4500
+ const details = [`HTTP ${response.status}`];
4501
+ const phase = response.headers.get('x-vona-claim-phase');
4502
+ const code = response.headers.get('x-vona-claim-code');
4503
+ const nativeCode = response.headers.get('x-vona-claim-native-code');
4504
+ if (['read', 'validate', 'write'].includes(phase)) details.push(phase);
4505
+ if (['EEXIST', 'ENOENT', 'EBUSY', 'EACCES', 'EUNSAFE'].includes(code)) details.push(code);
4506
+ if (nativeCode && /^\d{1,5}$/.test(nativeCode) && Number(nativeCode) <= 65535) details.push(`native ${nativeCode}`);
4507
+ await response.body?.cancel().catch(() => {});
4508
+ throw new Error(`Managed test allocation registration failed (${details.join(', ')})`);
4441
4509
  }
4442
4510
  }
4443
4511
 
@@ -4459,6 +4527,8 @@ async function assertTestClaimWindowsJob(env, identity) {
4459
4527
  method: 'POST',
4460
4528
  headers: {
4461
4529
  'authorization': `Bearer ${env[TEST_CLAIM_TOKEN_ENV]}`,
4530
+ // Startup can block past the broker's idle timeout; never reuse a stale socket.
4531
+ 'connection': 'close',
4462
4532
  'content-type': 'application/json'
4463
4533
  },
4464
4534
  body: JSON.stringify(query),
@@ -4944,34 +5014,47 @@ function loadErrors (app, modules) {
4944
5014
  }
4945
5015
 
4946
5016
  async function loadLocales (app, modules) {
4947
- // all locales
4948
- app.meta.locales = localesDefault;
5017
+ // Each application owns its registry; never add provider/project data to imported resources.
5018
+ app.meta.locales = deepExtend({}, localesDefault);
4949
5019
  app.meta.localeModules = {};
5020
+ const localesAll = await app.options.locales();
5021
+ // Preserve existing project global/module override semantics.
5022
+ for (const locale in localesAll.localesDefault) {
5023
+ _initLocales(locale, localesAll.localesDefault[locale]);
5024
+ }
5025
+ for (const locale in localesAll.localesModules) {
5026
+ _initLocales(locale, localesAll.localesModules[locale]);
5027
+ }
5028
+
5029
+ // Providers precede all ordinary dictionaries, independent of their module order.
5030
+ for (const moduleName of Object.keys(modules)) {
5031
+ const module = modules[moduleName];
5032
+ if (!module.info.capabilities?.locale) continue;
5033
+ const locales = module.resource.localesProvider;
5034
+ if (!locales) continue;
5035
+ for (const locale of Object.keys(locales)) {
5036
+ const resource = locales[locale];
5037
+ const globals = Object.fromEntries(Object.entries(resource).filter(([key, value]) => key !== 'modules' && typeof value === 'string'));
5038
+ app.meta.locales[locale] = Object.assign({}, globals, app.meta.locales[locale]);
5039
+ for (const target of Object.keys(resource.modules ?? {})) {
5040
+ // Metadata membership is sufficient; no target import, install or dependency is needed.
5041
+ if (!Object.hasOwn(modules, target)) continue;
5042
+ _registerLocale(target, locale, resource.modules[target]);
5043
+ }
5044
+ }
5045
+ }
4950
5046
 
4951
- // load locales
4952
- await loadLocales();
4953
- async function loadLocales() {
4954
- const localesAll = await app.options.locales();
4955
- // project locales default
4956
- for (const locale in localesAll.localesDefault) {
4957
- _initLocales(locale, localesAll.localesDefault[locale]);
4958
- }
4959
- // project locales modules
4960
- for (const locale in localesAll.localesModules) {
4961
- _initLocales(locale, localesAll.localesModules[locale]);
4962
- }
4963
- // app cache
4964
- app.meta.hmrCacheLocaleModules = deepExtend({}, app.meta.localeModules);
4965
- // module locales
4966
- for (const moduleName in modules) {
4967
- const module = modules[moduleName];
5047
+ // Preserve project/provider precedence when ordinary target dictionaries are reloaded.
5048
+ app.meta.hmrCacheLocaleModules = deepExtend({}, app.meta.localeModules);
5049
+ for (const moduleName of Object.keys(modules)) {
5050
+ const module = modules[moduleName];
5051
+ if (!module.info.capabilities?.locale) {
4968
5052
  _registerLocales(moduleName, module.resource.locales);
4969
5053
  }
4970
5054
  }
4971
5055
  function _initLocales(locale, locales) {
4972
5056
  if (!locales) return;
4973
5057
  if (!locales.modules) {
4974
- // override
4975
5058
  app.meta.locales[locale] = Object.assign({}, app.meta.locales[locale], locales);
4976
5059
  } else {
4977
5060
  const moduleMap = locales.modules;
@@ -4987,9 +5070,7 @@ async function loadLocales (app, modules) {
4987
5070
  }
4988
5071
  }
4989
5072
  function _registerLocale(moduleName, locale, moduleLocales) {
4990
- // locales: not override
4991
5073
  app.meta.locales[locale] = Object.assign({}, moduleLocales, app.meta.locales[locale]);
4992
- // localeModules
4993
5074
  if (!app.meta.localeModules[moduleName]) app.meta.localeModules[moduleName] = {};
4994
5075
  app.meta.localeModules[moduleName][locale] = Object.assign({}, moduleLocales, app.meta.localeModules[moduleName][locale]);
4995
5076
  }
@@ -5125,6 +5206,10 @@ async function __prepareConfig(app) {
5125
5206
  const configItemsRes = await Promise.all(configItemsPromise);
5126
5207
  for (const configItem of configItemsRes) {
5127
5208
  if (configItem) {
5209
+ // An explicit language subset replaces the preceding policy, not its individual keys.
5210
+ if (configItem.locale && Object.hasOwn(configItem.locale, 'items') && config.locale) {
5211
+ delete config.locale.items;
5212
+ }
5128
5213
  deepExtend(config, configItem);
5129
5214
  }
5130
5215
  }
@@ -5451,5 +5536,5 @@ async function retry(options, fn) {
5451
5536
 
5452
5537
  zodExtendOpenApi();
5453
5538
 
5454
- export { $Class, $localeScope, $makeLocaleMagic, $protocolKey, AppHmr, AppHmrDeps, AppLocale, AppLogger, AppMeta, AppMetadata, AppResource, AppUtil, BeanAopBase, BeanAopMethodBase, BeanBase, BeanBaseSimple, BeanContainer, BeanInfo, BeanScopeBase, BeanScopeContainer, BeanScopeError, BeanScopeErrorImpl, BeanScopeLocale, BeanScopeScene, BeanScopeUtil, BeanSimple, EnumAppEvent, ErrorClass, Global, LocaleModuleNameSeparator, PickClassInner, ProxyDisable, SymbolBeanContainerInstances, SymbolBeanFullName, SymbolBeanInstanceKey, SymbolBeanInstancePropsLazy, SymbolCacheAopChains, SymbolCacheAopChainsKey, SymbolDecoratorBeanFullName, SymbolDecoratorBeanInfo, SymbolDecoratorGlobal, SymbolDecoratorProxyDisable, SymbolDecoratorUse, SymbolDecoratorVirtual, SymbolHmrStateLoad, SymbolHmrStateSave, SymbolMappedClassMetadataKeys, SymbolModuleBelong, SymbolModuleName, TEST_CLAIM_DIRECTORY, TEST_CLAIM_TOKEN_ENV, TEST_CLAIM_URL_ENV, TEST_CLAIM_WINDOWS_GUARDIAN_ENV, TEST_REQUIRE_FRESH_RESOURCES_ENV, TEST_RUN_ID_ENV, TEST_RUN_OWNER_FILE, Use, Virtual, VonaApplication, __prepareInjectSelectorInfo, appHmrDeps, appMetadata, appResource, assertDisposableDatabaseName, assertFreshTestResources, assertFreshTestResourcesReady, assertIsolatedTestConfig, assertIsolatedTestDatabaseClient, assertIsolatedTestPath, assertTestAppIdentity, assertTestClaimDatabaseClient, assertTestClaimRedisClient, assertTestClaimSafePath, assertTestClaimWindowsJob, assertTestRunOwner, beanFullNameFromOnionName, beginCompletedInstance, bootstrap, buildTestClaimResourceInventory, captureCompletedInstance, captureRequestBoundary, cast, closeApp, closeProcessWorker, combineConfigDefault, combineFilePathSafe, compose, copyAddon, copyMetadataOfClasses, copyProperties, copyPropertiesOfClasses, createApp, createAppMaster, createBeanDecorator, createCompletedReadiness, createDiagnosticLogger, createFreshnessDependencies, createGeneralApp, createHash, createRequestBoundary, createTestClaim, deepExtend, disposeInstance, errorsInternal, filterHeaders, finishCompletedInstance, formatLoggerAxiosError, formatLoggerBoundary, formatLoggerConsole, formatLoggerCtx, formatLoggerDummy, formatLoggerErrors, formatLoggerFilter, functionNoop, getDatabaseTestPrefix, getHomeVonaAppDir, getLoggerPathPhysicalRoot, getMappedClassMetadataKeys, getPlatformArch, getPublicPathPhysicalRoot, getRequestBoundary, getRuntimePathPhysicalRoot, getSqlite3DatabaseNameDefault, getSuppressedDiagnosticLogger, getTestAppName, getTestClaimCreatedAt, getTestClaimPaths, getTestClaimRedisPrefix, getTestRunIdFromEnv, hasFreshnessDatabase, hasFreshnessRedis, hasTestClaimTransport, instanceDesp, invalidateCompletedInstance, isExistingReadyContext, isLocaleMagic, loadJSONFile, loadTestClaim, mergeTestClaimDatabaseOptions, mergeTestClaimRedisOptions, normalizeTestClaimDatabaseEndpoint, normalizeTestClaimRedisEndpoint, onionNameFromBeanFullName, pathToHref, pinExistingReadyContext, polyfillDispose, prepareEnv, registerMappedClassMetadataKey, registerTestClaimDatabaseCreation, registerTestClaimResourceInventory, registerTestClaimWindowsJobVerifier, requireAddon, requireDynamic, requiresFreshTestResources, resolveAddon, resolveExistingReadyCapability, resolveTestRunId, resolveVonaLocalPaths, resolverSharp, resolverSharpLibvips, resolverSqlite3, retry, runWithRequestBoundary, saveJSONFile, sendTestClaimEvent, setMappedClassMetadataKeys, startTestClaimBroker, text$1 as text, useApp, usePrepareArg, usePrepareArgs, uuidv4, validateTestClaim, withIsolatedTestDatabaseDiscovery, writeTestClaim };
5539
+ export { $Class, $localeScope, $makeLocaleMagic, $protocolKey, AppHmr, AppHmrDeps, AppLocale, AppLogger, AppMeta, AppMetadata, AppResource, AppUtil, BeanAopBase, BeanAopMethodBase, BeanBase, BeanBaseSimple, BeanContainer, BeanInfo, BeanScopeBase, BeanScopeContainer, BeanScopeError, BeanScopeErrorImpl, BeanScopeLocale, BeanScopeScene, BeanScopeUtil, BeanSimple, EnumAppEvent, ErrorClass, Global, LocaleModuleNameSeparator, PickClassInner, ProxyDisable, SymbolBeanContainerInstances, SymbolBeanFullName, SymbolBeanInstanceKey, SymbolBeanInstancePropsLazy, SymbolCacheAopChains, SymbolCacheAopChainsKey, SymbolDecoratorBeanFullName, SymbolDecoratorBeanInfo, SymbolDecoratorGlobal, SymbolDecoratorProxyDisable, SymbolDecoratorUse, SymbolDecoratorVirtual, SymbolHmrStateLoad, SymbolHmrStateSave, SymbolMappedClassMetadataKeys, SymbolModuleBelong, SymbolModuleName, TEST_CLAIM_DIRECTORY, TEST_CLAIM_TOKEN_ENV, TEST_CLAIM_URL_ENV, TEST_CLAIM_WINDOWS_GUARDIAN_ENV, TEST_REQUIRE_FRESH_RESOURCES_ENV, TEST_RUN_ID_ENV, TEST_RUN_OWNER_FILE, Use, Virtual, VonaApplication, __prepareInjectSelectorInfo, appHmrDeps, appMetadata, appResource, assertDisposableDatabaseName, assertFreshTestResources, assertFreshTestResourcesReady, assertIsolatedTestConfig, assertIsolatedTestDatabaseClient, assertIsolatedTestPath, assertTestAppIdentity, assertTestClaimDatabaseClient, assertTestClaimRedisClient, assertTestClaimSafePath, assertTestClaimWindowsJob, assertTestRunOwner, beanFullNameFromOnionName, beginCompletedInstance, bootstrap, buildTestClaimResourceInventory, canonicalizeLocale, captureCompletedInstance, captureRequestBoundary, cast, closeApp, closeProcessWorker, combineConfigDefault, combineFilePathSafe, compose, copyAddon, copyMetadataOfClasses, copyProperties, copyPropertiesOfClasses, createApp, createAppMaster, createBeanDecorator, createCompletedReadiness, createDiagnosticLogger, createFreshnessDependencies, createGeneralApp, createHash, createRequestBoundary, createTestClaim, deepExtend, disposeInstance, errorsInternal, filterHeaders, finishCompletedInstance, formatLoggerAxiosError, formatLoggerBoundary, formatLoggerConsole, formatLoggerCtx, formatLoggerDummy, formatLoggerErrors, formatLoggerFilter, functionNoop, getDatabaseTestPrefix, getHomeVonaAppDir, getLoggerPathPhysicalRoot, getMappedClassMetadataKeys, getPlatformArch, getPublicPathPhysicalRoot, getRequestBoundary, getRuntimePathPhysicalRoot, getSqlite3DatabaseNameDefault, getSuppressedDiagnosticLogger, getTestAppName, getTestClaimCreatedAt, getTestClaimPaths, getTestClaimRedisPrefix, getTestRunIdFromEnv, hasFreshnessDatabase, hasFreshnessRedis, hasTestClaimTransport, instanceDesp, invalidateCompletedInstance, isExistingReadyContext, isLocaleMagic, loadJSONFile, loadTestClaim, mergeTestClaimDatabaseOptions, mergeTestClaimRedisOptions, normalizeTestClaimDatabaseEndpoint, normalizeTestClaimRedisEndpoint, onionNameFromBeanFullName, pathToHref, pinExistingReadyContext, polyfillDispose, prepareEnv, registerMappedClassMetadataKey, registerTestClaimDatabaseCreation, registerTestClaimResourceInventory, registerTestClaimWindowsJobVerifier, requireAddon, requireDynamic, requiresFreshTestResources, resolveAddon, resolveEnabledLocale, resolveExistingReadyCapability, resolveLocale, resolveTestRunId, resolveVonaLocalPaths, resolverSharp, resolverSharpLibvips, resolverSqlite3, retry, runWithRequestBoundary, runWithZodQueryCoercion, saveJSONFile, sendTestClaimEvent, setMappedClassMetadataKeys, startTestClaimBroker, text$1 as text, useApp, usePrepareArg, usePrepareArgs, uuidv4, validateLocaleConfig, validateTestClaim, withIsolatedTestDatabaseDiscovery, writeTestClaim };
5455
5540
  //# sourceMappingURL=index.js.map