@bounded-sh/client 0.0.53 → 0.0.56

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 (52) hide show
  1. package/dist/builds/apps.d.ts +22 -0
  2. package/dist/{email-auth-provider-BZJ9EcnE.js → email-auth-provider-4Df8dFOh.js} +2 -2
  3. package/dist/{email-auth-provider-BZJ9EcnE.js.map → email-auth-provider-4Df8dFOh.js.map} +1 -1
  4. package/dist/{email-auth-provider-BGc8H93l.mjs → email-auth-provider-BqX-o_sJ.mjs} +2 -2
  5. package/dist/{email-auth-provider-CD7YIGxe.mjs.map → email-auth-provider-BqX-o_sJ.mjs.map} +1 -1
  6. package/dist/{email-auth-provider-CD7YIGxe.mjs → email-auth-provider-By6SL0YS.mjs} +2 -2
  7. package/dist/{email-auth-provider-BGc8H93l.mjs.map → email-auth-provider-By6SL0YS.mjs.map} +1 -1
  8. package/dist/{email-auth-provider-ChDGkDyY.js → email-auth-provider-CZ-xYVln.js} +2 -2
  9. package/dist/{email-auth-provider-ChDGkDyY.js.map → email-auth-provider-CZ-xYVln.js.map} +1 -1
  10. package/dist/{guest-auth-provider-BkkSRli_.mjs → guest-auth-provider-6bqnyX79.mjs} +2 -2
  11. package/dist/{guest-auth-provider-DZQWJu59.mjs.map → guest-auth-provider-6bqnyX79.mjs.map} +1 -1
  12. package/dist/{guest-auth-provider-C7u3RFEX.js → guest-auth-provider-D9A4SU4z.js} +2 -2
  13. package/dist/{guest-auth-provider-C7u3RFEX.js.map → guest-auth-provider-D9A4SU4z.js.map} +1 -1
  14. package/dist/{guest-auth-provider-B2CPHhym.js → guest-auth-provider-DWcdRvLW.js} +2 -2
  15. package/dist/{guest-auth-provider-B2CPHhym.js.map → guest-auth-provider-DWcdRvLW.js.map} +1 -1
  16. package/dist/{guest-auth-provider-DZQWJu59.mjs → guest-auth-provider-Q2wbjdHM.mjs} +2 -2
  17. package/dist/{guest-auth-provider-BkkSRli_.mjs.map → guest-auth-provider-Q2wbjdHM.mjs.map} +1 -1
  18. package/dist/{index-DuaMs1q-.mjs → index--jrXqxte.mjs} +45 -10
  19. package/dist/index--jrXqxte.mjs.map +1 -0
  20. package/dist/{index-CK36YlGT.js → index-B_uRc6gn.js} +45 -10
  21. package/dist/index-B_uRc6gn.js.map +1 -0
  22. package/dist/index.d.ts +2 -0
  23. package/dist/index.js +9 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/index.mjs +2 -2
  26. package/dist/{index.native-DoWvYWaz.js → index.native-BqK-14S8.js} +45 -10
  27. package/dist/{index.native-DoWvYWaz.js.map → index.native-BqK-14S8.js.map} +1 -1
  28. package/dist/{index.native-C5SoJAZn.mjs → index.native-CTVEq0VY.mjs} +45 -10
  29. package/dist/{index.native-C5SoJAZn.mjs.map → index.native-CTVEq0VY.mjs.map} +1 -1
  30. package/dist/index.native.d.ts +2 -0
  31. package/dist/index.native.js +9 -1
  32. package/dist/index.native.js.map +1 -1
  33. package/dist/index.native.mjs +2 -2
  34. package/dist/{injected-evm-wallet-provider-CMZE-rJ7.mjs → injected-evm-wallet-provider-BCR37kRN.mjs} +2 -2
  35. package/dist/{injected-evm-wallet-provider-CMZE-rJ7.mjs.map → injected-evm-wallet-provider-BCR37kRN.mjs.map} +1 -1
  36. package/dist/{injected-evm-wallet-provider-bbFMPrsJ.mjs → injected-evm-wallet-provider-BZPmj8bC.mjs} +2 -2
  37. package/dist/{injected-evm-wallet-provider-bbFMPrsJ.mjs.map → injected-evm-wallet-provider-BZPmj8bC.mjs.map} +1 -1
  38. package/dist/{injected-evm-wallet-provider-9ephHduG.js → injected-evm-wallet-provider-CXfQT5sm.js} +2 -2
  39. package/dist/{injected-evm-wallet-provider-9ephHduG.js.map → injected-evm-wallet-provider-CXfQT5sm.js.map} +1 -1
  40. package/dist/{injected-evm-wallet-provider-GANZNy2j.js → injected-evm-wallet-provider-xZ01LIw2.js} +2 -2
  41. package/dist/{injected-evm-wallet-provider-GANZNy2j.js.map → injected-evm-wallet-provider-xZ01LIw2.js.map} +1 -1
  42. package/dist/{injected-wallet-provider-BHBiq-r2.mjs → injected-wallet-provider-1IRUHyB3.mjs} +2 -2
  43. package/dist/{injected-wallet-provider-BHBiq-r2.mjs.map → injected-wallet-provider-1IRUHyB3.mjs.map} +1 -1
  44. package/dist/{injected-wallet-provider-CABVyh7K.js → injected-wallet-provider-ClI_h_fy.js} +2 -2
  45. package/dist/{injected-wallet-provider-CABVyh7K.js.map → injected-wallet-provider-ClI_h_fy.js.map} +1 -1
  46. package/dist/{injected-wallet-provider-DGN0kuf_.mjs → injected-wallet-provider-DHQGI0Yl.mjs} +2 -2
  47. package/dist/{injected-wallet-provider-DGN0kuf_.mjs.map → injected-wallet-provider-DHQGI0Yl.mjs.map} +1 -1
  48. package/dist/{injected-wallet-provider-C_EmEki7.js → injected-wallet-provider-eMZ8tjas.js} +2 -2
  49. package/dist/{injected-wallet-provider-C_EmEki7.js.map → injected-wallet-provider-eMZ8tjas.js.map} +1 -1
  50. package/package.json +2 -2
  51. package/dist/index-CK36YlGT.js.map +0 -1
  52. package/dist/index-DuaMs1q-.mjs.map +0 -1
package/dist/index.d.ts CHANGED
@@ -7,6 +7,8 @@ export type { HostedAuthMethod, OidcLoginOptions, PopupLoginOptions } from "./au
7
7
  export { get, getMany, docId, set, setMany, setFile, getFiles, search, queryAggregate, runQuery, runQueryMany, runExpression, runExpressionMany, signMessage, signTransaction, signAndSubmitTransaction, count, aggregate, GetOptions, SearchOptions, SetOptions, CountOptions, AggregateOptions, AggregateOperation, AggregateResult, AggregateSpec, AggregateRow, QueryAggregateOptions, } from "@bounded-sh/core";
8
8
  export type { GetOptions as BoundedGetOptions } from "@bounded-sh/core";
9
9
  export { subscribe } from "@bounded-sh/core";
10
+ export { createClient, ScopedClientReadOnlyError } from "@bounded-sh/core";
11
+ export type { BoundedClient, CreateClientConfig } from "@bounded-sh/core";
10
12
  export { BoundedDeclineError, deriveDecline, dispatchDeclineEvent, DECLINE_EVENT_NAME } from "@bounded-sh/core";
11
13
  export type { BoundedDecline, DeclineReason, DeclineBoundary } from "@bounded-sh/core";
12
14
  export { dispatchRateLimitEvent, RATE_LIMIT_EVENT_NAME } from "@bounded-sh/core";
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-CK36YlGT.js');
3
+ var index = require('./index-B_uRc6gn.js');
4
4
  var core = require('@bounded-sh/core');
5
5
  require('react');
6
6
 
@@ -55,6 +55,10 @@ Object.defineProperty(exports, "RATE_LIMIT_EVENT_NAME", {
55
55
  enumerable: true,
56
56
  get: function () { return core.RATE_LIMIT_EVENT_NAME; }
57
57
  });
58
+ Object.defineProperty(exports, "ScopedClientReadOnlyError", {
59
+ enumerable: true,
60
+ get: function () { return core.ScopedClientReadOnlyError; }
61
+ });
58
62
  Object.defineProperty(exports, "aggregate", {
59
63
  enumerable: true,
60
64
  get: function () { return core.aggregate; }
@@ -63,6 +67,10 @@ Object.defineProperty(exports, "count", {
63
67
  enumerable: true,
64
68
  get: function () { return core.count; }
65
69
  });
70
+ Object.defineProperty(exports, "createClient", {
71
+ enumerable: true,
72
+ get: function () { return core.createClient; }
73
+ });
66
74
  Object.defineProperty(exports, "deriveDecline", {
67
75
  enumerable: true,
68
76
  get: function () { return core.deriveDecline; }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { W as BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA, V as BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA, U as BUILD_REVIEW_CAPABILITY_SCHEMA, M as BuildsApiError, S as FAILURE_REASONS, N as NON_TERMINAL_STATES, O as OffchainAuthProvider, Q as PARK_REASONS, P as PrivyExpoProvider, R as RUN_STATES, T as TERMINAL_STATES, G as apps, L as builds, z as completeLoginFromRedirect, B as completeLoginInPopup, k as defaultInjectedEvmProvider, d as defaultInjectedProvider, H as deserializeTransaction, q as getAuthLoading, v as getAuthProvider, m as getCurrentUser, I as getIdToken, g as getPlatform, l as init, t as login, A as loginWithPopup, x as loginWithPrivy, y as loginWithRedirect, u as logout, p as onAuthLoadingChanged, o as onAuthStateChanged, K as requestEip6963Providers, J as setPlatform, w as signInAnonymously, C as useAuth, F as useBuildRun, D as useQuery } from './index-DuaMs1q-.mjs';
1
+ export { W as BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA, V as BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA, U as BUILD_REVIEW_CAPABILITY_SCHEMA, M as BuildsApiError, S as FAILURE_REASONS, N as NON_TERMINAL_STATES, O as OffchainAuthProvider, Q as PARK_REASONS, P as PrivyExpoProvider, R as RUN_STATES, T as TERMINAL_STATES, G as apps, L as builds, z as completeLoginFromRedirect, B as completeLoginInPopup, k as defaultInjectedEvmProvider, d as defaultInjectedProvider, H as deserializeTransaction, q as getAuthLoading, v as getAuthProvider, m as getCurrentUser, I as getIdToken, g as getPlatform, l as init, t as login, A as loginWithPopup, x as loginWithPrivy, y as loginWithRedirect, u as logout, p as onAuthLoadingChanged, o as onAuthStateChanged, K as requestEip6963Providers, J as setPlatform, w as signInAnonymously, C as useAuth, F as useBuildRun, D as useQuery } from './index--jrXqxte.mjs';
2
2
  export * from '@bounded-sh/core';
3
- export { BoundedDeclineError, DECLINE_EVENT_NAME, RATE_LIMIT_EVENT_NAME, aggregate, count, deriveDecline, dispatchDeclineEvent, dispatchRateLimitEvent, docId, get, getConfig, getFiles, getMany, queryAggregate, runExpression, runExpressionMany, runQuery, runQueryMany, search, set, setFile, setMany, signAndSubmitTransaction, signMessage, signTransaction, subscribe } from '@bounded-sh/core';
3
+ export { BoundedDeclineError, DECLINE_EVENT_NAME, RATE_LIMIT_EVENT_NAME, ScopedClientReadOnlyError, aggregate, count, createClient, deriveDecline, dispatchDeclineEvent, dispatchRateLimitEvent, docId, get, getConfig, getFiles, getMany, queryAggregate, runExpression, runExpressionMany, runQuery, runQueryMany, search, set, setFile, setMany, signAndSubmitTransaction, signMessage, signTransaction, subscribe } from '@bounded-sh/core';
4
4
  import 'react';
5
5
  //# sourceMappingURL=index.mjs.map
@@ -4464,7 +4464,7 @@ async function getAuthProvider(config) {
4464
4464
  // manager as legacy email sessions. Human login should be started
4465
4465
  // with loginWithRedirect(); this provider is kept as the restore and
4466
4466
  // logout surface for those sessions.
4467
- currentAuthProvider = new (await Promise.resolve().then(function () { return require('./email-auth-provider-ChDGkDyY.js'); })).EmailAuthProvider();
4467
+ currentAuthProvider = new (await Promise.resolve().then(function () { return require('./email-auth-provider-CZ-xYVln.js'); })).EmailAuthProvider();
4468
4468
  break;
4469
4469
  case "wallet":
4470
4470
  case "phantom": {
@@ -4483,7 +4483,7 @@ async function getAuthProvider(config) {
4483
4483
  if (!isWalletLoginEnabled(config)) {
4484
4484
  throw walletLoginNotEnabledError(authMethod);
4485
4485
  }
4486
- const { InjectedWalletProvider } = await Promise.resolve().then(function () { return require('./injected-wallet-provider-C_EmEki7.js'); });
4486
+ const { InjectedWalletProvider } = await Promise.resolve().then(function () { return require('./injected-wallet-provider-eMZ8tjas.js'); });
4487
4487
  currentAuthProvider = new InjectedWalletProvider(resolveInjectedWalletConfig(config), rpcUrl, configuredNetwork);
4488
4488
  break;
4489
4489
  }
@@ -4496,7 +4496,7 @@ async function getAuthProvider(config) {
4496
4496
  // Selecting authMethod:'evm-wallet' IS the opt-in — pass evmWalletConfig
4497
4497
  // to point at a specific wallet or set chainId/domain.
4498
4498
  const evmWalletConfig = ((_a = config.evmWalletConfig) !== null && _a !== void 0 ? _a : {});
4499
- const { InjectedEvmWalletProvider } = await Promise.resolve().then(function () { return require('./injected-evm-wallet-provider-9ephHduG.js'); });
4499
+ const { InjectedEvmWalletProvider } = await Promise.resolve().then(function () { return require('./injected-evm-wallet-provider-CXfQT5sm.js'); });
4500
4500
  currentAuthProvider = new InjectedEvmWalletProvider(evmWalletConfig);
4501
4501
  break;
4502
4502
  }
@@ -4524,7 +4524,7 @@ async function getAuthProvider(config) {
4524
4524
  break;
4525
4525
  case "guest":
4526
4526
  // Anonymous auth: a device-local ed25519 keypair signs the challenge.
4527
- currentAuthProvider = new (await Promise.resolve().then(function () { return require('./guest-auth-provider-C7u3RFEX.js'); })).GuestAuthProvider();
4527
+ currentAuthProvider = new (await Promise.resolve().then(function () { return require('./guest-auth-provider-D9A4SU4z.js'); })).GuestAuthProvider();
4528
4528
  break;
4529
4529
  }
4530
4530
  if (!currentAuthProvider) {
@@ -4580,7 +4580,7 @@ async function signInAnonymously() {
4580
4580
  // Lazy-load the guest provider so its ed25519/web3 dependencies stay out of
4581
4581
  // the main bundle for data-only apps. Specifier is a static string literal
4582
4582
  // so bundle-splitting can see it.
4583
- const provider = new (await Promise.resolve().then(function () { return require('./guest-auth-provider-C7u3RFEX.js'); })).GuestAuthProvider();
4583
+ const provider = new (await Promise.resolve().then(function () { return require('./guest-auth-provider-D9A4SU4z.js'); })).GuestAuthProvider();
4584
4584
  setAuthLoading(true); // reflect "signing in…" while the guest keypair session is minted
4585
4585
  const commit = (user) => {
4586
4586
  // No await/interleaving inside this block: provider/method/config/marker
@@ -5376,9 +5376,11 @@ const BUILD_REVIEW_CAPABILITY_SCHEMA = 'bounded.build-review-capability.v1';
5376
5376
  const BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA = 'bounded.build-review-capability-refresh.v1';
5377
5377
  const BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA = 'bounded.build-delegated-review-capability.v1';
5378
5378
 
5379
+ const FAST_POLL_MS = 1000;
5379
5380
  const NORMAL_POLL_MS = 2000;
5380
5381
  const PARKED_POLL_MS = 5000;
5381
5382
  const LONG_RUNNING_POLL_MS = 10000;
5383
+ const THIRTY_SECONDS_MS = 30000;
5382
5384
  const TWO_MINUTES_MS = 2 * 60000;
5383
5385
  const TEN_MINUTES_MS = 10 * 60000;
5384
5386
  const terminalStates = new Set(TERMINAL_STATES);
@@ -5387,6 +5389,10 @@ function pollCadence(state, elapsedMs) {
5387
5389
  return LONG_RUNNING_POLL_MS;
5388
5390
  if ((state === null || state === void 0 ? void 0 : state.startsWith('parked')) || elapsedMs >= TWO_MINUTES_MS)
5389
5391
  return PARKED_POLL_MS;
5392
+ // The first 30s is where the user is staring at "waiting for a build slot" /
5393
+ // "building" and every transition matters most; poll fast, then relax.
5394
+ if (elapsedMs < THIRTY_SECONDS_MS)
5395
+ return FAST_POLL_MS;
5390
5396
  return NORMAL_POLL_MS;
5391
5397
  }
5392
5398
  function retryCadence(error, state, elapsedMs) {
@@ -5472,9 +5478,18 @@ function watch(appId, runId, onUpdate, options = {}) {
5472
5478
  const poll = async () => {
5473
5479
  if (!active)
5474
5480
  return;
5481
+ // Fire the view and the events page concurrently: the events cursor (lastSeq)
5482
+ // does not depend on the run view, so there is no reason to pay two serial
5483
+ // round-trips per tick. Error semantics below are unchanged — the run result
5484
+ // still gates, and a failed events page still publishes the run with no rows.
5485
+ const runPromise = get(appId, runId);
5486
+ const eventsPromise = events(appId, runId, lastSeq);
5487
+ // Keep the in-flight events page from becoming an unhandled rejection if the
5488
+ // run result makes us bail before awaiting it; the real await below still sees it.
5489
+ eventsPromise.catch(() => { });
5475
5490
  let run;
5476
5491
  try {
5477
- const view = await get(appId, runId);
5492
+ const view = await runPromise;
5478
5493
  if (!active)
5479
5494
  return;
5480
5495
  run = view.run;
@@ -5492,7 +5507,7 @@ function watch(appId, runId, onUpdate, options = {}) {
5492
5507
  return;
5493
5508
  }
5494
5509
  try {
5495
- const response = await events(appId, runId, lastSeq);
5510
+ const response = await eventsPromise;
5496
5511
  if (!active)
5497
5512
  return;
5498
5513
  const deduped = newEvents(Array.isArray(response.events) ? response.events : [], lastSeq, seenSeqs);
@@ -5634,7 +5649,27 @@ async function create(options = {}) {
5634
5649
  method: 'POST',
5635
5650
  body,
5636
5651
  });
5637
- return Object.assign(Object.assign({ appId: app.appId }, (typeof app.slug === 'string' && app.slug ? { slug: app.slug } : {})), { url: app.url });
5652
+ return Object.assign(Object.assign(Object.assign(Object.assign({ appId: app.appId }, (typeof app.slug === 'string' && app.slug ? { slug: app.slug } : {})), { url: app.url }), (typeof app.prompt === 'string' && app.prompt ? { prompt: app.prompt } : {})), (typeof app.handoff === 'string' && app.handoff ? { handoff: app.handoff } : {}));
5653
+ }
5654
+ /**
5655
+ * F-1200: build the create-flow redirect the owner is sent to after `create()`, with the
5656
+ * prompt and handoff carried in the URL FRAGMENT (never the query - fragments never reach
5657
+ * servers, logs, or Referer). Encoding is byte-exact so the widget's `URLSearchParams`
5658
+ * parse + `.trim()` reproduces the SAME prompt string dev-api hashed into the handoff;
5659
+ * getting this wrong would make the widget reject a genuine token and degrade to prefill.
5660
+ * Callers (bounded.sh, oapps.fun) should use this instead of hand-building the URL.
5661
+ *
5662
+ * Returns `${url}#bounded_prompt=<prompt>` with no `&bounded_handoff=` when the server
5663
+ * minted no handoff (HANDOFF_SECRET unset) - the widget then prefills without auto-running.
5664
+ */
5665
+ function buildCreateRedirectUrl(app) {
5666
+ const base = app.url;
5667
+ const prompt = typeof app.prompt === 'string' ? app.prompt.trim() : '';
5668
+ if (!prompt)
5669
+ return base;
5670
+ const params = `bounded_prompt=${encodeURIComponent(prompt)}`
5671
+ + (app.handoff ? `&bounded_handoff=${encodeURIComponent(app.handoff)}` : '');
5672
+ return `${base}#${params}`;
5638
5673
  }
5639
5674
  async function list() {
5640
5675
  // This legacy-compatible action shape is also used by oapps.fun listMyApps.
@@ -5667,7 +5702,7 @@ async function list() {
5667
5702
  * Platform first-party surfaces only (bounded.sh, oapps.fun, localhost) —
5668
5703
  * dev-api CORS blocks calls from generated-app origins. Server-side callers unaffected.
5669
5704
  */
5670
- const apps = { create, list };
5705
+ const apps = { create, list, buildCreateRedirectUrl };
5671
5706
 
5672
5707
  async function deserializeTransaction(tx) {
5673
5708
  // Literal specifier so bundlers can code-split the lazy chunk.
@@ -6109,4 +6144,4 @@ exports.setPlatform = setPlatform;
6109
6144
  exports.signInAnonymously = signInAnonymously;
6110
6145
  exports.useAuth = useAuth;
6111
6146
  exports.useBuildRun = useBuildRun;
6112
- //# sourceMappingURL=index.native-DoWvYWaz.js.map
6147
+ //# sourceMappingURL=index.native-BqK-14S8.js.map