vona-core 5.1.50 → 5.1.51

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.
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(() => {
@@ -3658,9 +3662,12 @@ function decode(source) {
3658
3662
  throw new Error('Windows test claim filesystem helper returned an invalid response');
3659
3663
  }
3660
3664
  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'})`);
3665
+ const code = ['EEXIST', 'ENOENT', 'EBUSY', 'EACCES', 'EUNSAFE'].includes(value?.code) ? value.code : 'EUNSAFE';
3666
+ const nativeCode = Number.isInteger(value?.nativeCode) && value.nativeCode >= 0 && value.nativeCode <= 65535 ? value.nativeCode : 0;
3667
+ const error = new Error(`Unsafe Windows test claim filesystem operation (${code}, nativeCode=${nativeCode})`);
3662
3668
  Object.assign(error, {
3663
- code: value?.code ?? 'EUNSAFE'
3669
+ code,
3670
+ nativeCode
3664
3671
  });
3665
3672
  throw error;
3666
3673
  }
@@ -4350,9 +4357,19 @@ async function startTestClaimBroker(claimPath) {
4350
4357
  const update = event => {
4351
4358
  if (closing) return Promise.reject(new Error('Test claim broker is closed'));
4352
4359
  const result = queue.then(async () => {
4353
- const manifest = await loadTestClaim(claimPath);
4354
- applyEvent(manifest, event);
4355
- await writeTestClaim(claimPath, manifest);
4360
+ let phase = 'read';
4361
+ try {
4362
+ const manifest = await loadTestClaim(claimPath);
4363
+ phase = 'validate';
4364
+ applyEvent(manifest, event);
4365
+ phase = 'write';
4366
+ await writeTestClaim(claimPath, manifest);
4367
+ } catch (error) {
4368
+ if (error instanceof Error) Object.assign(error, {
4369
+ testClaimPhase: phase
4370
+ });
4371
+ throw error;
4372
+ }
4356
4373
  });
4357
4374
  queue = result.catch(() => {});
4358
4375
  return result;
@@ -4373,8 +4390,15 @@ async function startTestClaimBroker(claimPath) {
4373
4390
  }
4374
4391
  if (req.url === '/containment') await containment(parseTestClaimJson(body));else await update(parseTestClaimJson(body));
4375
4392
  res.writeHead(204).end();
4376
- } catch {
4377
- res.writeHead(409).end('Test claim registration rejected');
4393
+ } catch (error) {
4394
+ const failure = error;
4395
+ const headers = {};
4396
+ if (['read', 'validate', 'write'].includes(failure?.testClaimPhase)) headers['x-vona-claim-phase'] = failure.testClaimPhase;
4397
+ if (['EEXIST', 'ENOENT', 'EBUSY', 'EACCES', 'EUNSAFE'].includes(failure?.code)) headers['x-vona-claim-code'] = failure.code;
4398
+ if (Number.isInteger(failure?.nativeCode) && failure.nativeCode >= 0 && failure.nativeCode <= 65535) {
4399
+ headers['x-vona-claim-native-code'] = String(failure.nativeCode);
4400
+ }
4401
+ res.writeHead(409, headers).end('Test claim registration rejected');
4378
4402
  }
4379
4403
  });
4380
4404
  server.requestTimeout = 10000;
@@ -4424,20 +4448,34 @@ function hasTestClaimTransport(env = process.env) {
4424
4448
  }
4425
4449
  async function sendTestClaimEvent(env, event) {
4426
4450
  if (!hasTestClaimTransport(env)) return;
4451
+ let response;
4427
4452
  try {
4428
- const response = await fetch(env[TEST_CLAIM_URL_ENV], {
4453
+ response = await fetch(env[TEST_CLAIM_URL_ENV], {
4429
4454
  method: 'POST',
4430
4455
  headers: {
4431
4456
  'authorization': `Bearer ${env[TEST_CLAIM_TOKEN_ENV]}`,
4457
+ // Startup can block past the broker's idle timeout; never reuse a stale socket.
4458
+ 'connection': 'close',
4432
4459
  'content-type': 'application/json'
4433
4460
  },
4434
4461
  body: JSON.stringify(event),
4435
- signal: AbortSignal.timeout(10000),
4462
+ // Includes the serialized queue and durable Windows filesystem work (30s per operation).
4463
+ signal: AbortSignal.timeout(120000),
4436
4464
  redirect: 'error'
4437
4465
  });
4438
- if (response.status !== 204) throw new Error('Registration rejected');
4439
4466
  } catch {
4440
- throw new Error('Managed test allocation registration failed');
4467
+ throw new Error('Managed test allocation registration failed (transport)');
4468
+ }
4469
+ if (response.status !== 204) {
4470
+ const details = [`HTTP ${response.status}`];
4471
+ const phase = response.headers.get('x-vona-claim-phase');
4472
+ const code = response.headers.get('x-vona-claim-code');
4473
+ const nativeCode = response.headers.get('x-vona-claim-native-code');
4474
+ if (['read', 'validate', 'write'].includes(phase)) details.push(phase);
4475
+ if (['EEXIST', 'ENOENT', 'EBUSY', 'EACCES', 'EUNSAFE'].includes(code)) details.push(code);
4476
+ if (nativeCode && /^\d{1,5}$/.test(nativeCode) && Number(nativeCode) <= 65535) details.push(`native ${nativeCode}`);
4477
+ await response.body?.cancel().catch(() => {});
4478
+ throw new Error(`Managed test allocation registration failed (${details.join(', ')})`);
4441
4479
  }
4442
4480
  }
4443
4481
 
@@ -4459,6 +4497,8 @@ async function assertTestClaimWindowsJob(env, identity) {
4459
4497
  method: 'POST',
4460
4498
  headers: {
4461
4499
  'authorization': `Bearer ${env[TEST_CLAIM_TOKEN_ENV]}`,
4500
+ // Startup can block past the broker's idle timeout; never reuse a stale socket.
4501
+ 'connection': 'close',
4462
4502
  'content-type': 'application/json'
4463
4503
  },
4464
4504
  body: JSON.stringify(query),
@@ -5451,5 +5491,5 @@ async function retry(options, fn) {
5451
5491
 
5452
5492
  zodExtendOpenApi();
5453
5493
 
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 };
5494
+ 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, runWithZodQueryCoercion, saveJSONFile, sendTestClaimEvent, setMappedClassMetadataKeys, startTestClaimBroker, text$1 as text, useApp, usePrepareArg, usePrepareArgs, uuidv4, validateTestClaim, withIsolatedTestDatabaseDiscovery, writeTestClaim };
5455
5495
  //# sourceMappingURL=index.js.map