@noya-app/noya-multiplayer-react 0.1.84 → 0.1.86

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.d.mts CHANGED
@@ -158,6 +158,8 @@ type AppData<State> = {
158
158
  clientId?: string;
159
159
  clientName?: string;
160
160
  clientImage?: string;
161
+ parentOrigin?: string;
162
+ enableDocumentAI?: boolean;
161
163
  };
162
164
  declare function createDefaultAppData<State>(initialState: State): AppData<State>;
163
165
  type GetAppDataOptions = {
@@ -178,6 +180,8 @@ declare function getSyncAdapter<S, M extends object = object, E extends object =
178
180
  policyAuthContext?: PolicyAuthContext;
179
181
  serverScripts?: LocalStorageSyncOptions["serverScripts"];
180
182
  git?: LocalStorageSyncOptions["git"];
183
+ parentOrigin?: string;
184
+ enableDocumentAI?: boolean;
181
185
  }): SyncAdapter<S, M, E, MenuT, I>;
182
186
  type UseNoyaStateOptions<S, M extends object = object, E extends object = object, MenuT extends string = string, I extends Record<string, any> = Record<string, unknown>> = UseMultiplayerStateOptions<S, M, E, MenuT, I> & {
183
187
  offlineStorageKey?: string;
@@ -228,6 +232,7 @@ type AnyNoyaStateContextValue = {
228
232
  viewType: AppViewType;
229
233
  };
230
234
  declare const AnyNoyaStateContext: React.Context<AnyNoyaStateContextValue | undefined>;
235
+ declare function useOptionalAnyNoyaStateContext(): AnyNoyaStateContextValue | undefined;
231
236
  declare function useAnyNoyaStateContext(): AnyNoyaStateContextValue;
232
237
  declare function useAnyNoyaManager(): NoyaManager<any, any, any, any, any>;
233
238
  declare function useColorScheme(): AppTheme;
@@ -510,6 +515,8 @@ declare function useObservable<T>(observable: Observable<T> | undefined): T | un
510
515
  declare function useObservable<T, A>(observable: Observable<T> | undefined, selector: (value: T) => A, options?: Pick<ObservableOptions, "isEqual">): A | undefined;
511
516
  declare function useObservable<T, P extends PathKey[] | string>(observable: Observable<T> | undefined, path: P): GetAtPath<T, P> | undefined;
512
517
 
518
+ declare function useResourceUrl(idOrStableId: string | undefined): string | undefined;
519
+
513
520
  type ConnectionEvent<State> = {
514
521
  type: "stateChange";
515
522
  state: ReconnectingWebSocketState;
@@ -543,4 +550,4 @@ declare class WebSocketConnection<State> {
543
550
  removeListener(listener: (state: ReconnectingWebSocketState) => void): void;
544
551
  }
545
552
 
546
- export { type AnyNoyaSingletonBindings, type AnyNoyaSingletonOptions, AnyNoyaStateContext, type AnyNoyaStateContextValue, type AppData, type AppTheme, type AppViewType, type ConnectionEvent, type ConnectionOptions, FallbackUntilInitialized, type GetAppDataOptions, type NoyaStateProviderProps, type RenderUserPointer, type RenderUserPointerProps, StateInspector, type StateInspectorAnchor, type StateInspectorOptions, type UseMultiplayerStateOptions, type UseNoyaStateOptions, type UseNoyaStateResult, type UserPointerData, UserPointersOverlay, type UserPointersOverlayProps, WebSocketConnection, buildResourcePatchPayload, createDefaultAppData, createNoyaContext, createStateInspectorRoot, decodeAll, deleteNoyaSingleton, encodeAll, enforceSchema, exportAll, fetchAssetMap, getAppData, getNoyaManagerSingleton, getNoyaSingletonBindings, getSyncAdapter, importAll, initializeNoyaSingleton, parseAppDataParameter, replaceDeep, resourceToCreateParameters, resourceToMediaItem, useAIManager, useActivityEvents, useActivityEventsForManager, useAnyNoyaManager, useAnyNoyaStateContext, useAnySharedConnectionData, useAsset, useAssetManager, useAssets, useBindNoyaManager, useCallableAITools, useColorScheme, useEnqueueInput, useFileName, useFilePropertyManager, useIOManager, useInputs, useIsInitialized, useIsProcessing, useManagedHistory, useManagedState, useMultiplayerState, useNoyaActiveUsers, useNoyaAssetTranscription, useNoyaCurrentUser, useNoyaCurrentUserId, useNoyaStateInternal, useNoyaTranscriptionManager, useNoyaUser, useNoyaUserManager, useNoyaUsers, useObservable, useOutputTransforms, usePipelineManager, usePublish, useRegisterAITool, useResourceManager, useResources, useScriptEvaluator, useSecret, useSecretManager, useSecrets, useSetFileNameState, useStateInspector, useViewType };
553
+ export { type AnyNoyaSingletonBindings, type AnyNoyaSingletonOptions, AnyNoyaStateContext, type AnyNoyaStateContextValue, type AppData, type AppTheme, type AppViewType, type ConnectionEvent, type ConnectionOptions, FallbackUntilInitialized, type GetAppDataOptions, type NoyaStateProviderProps, type RenderUserPointer, type RenderUserPointerProps, StateInspector, type StateInspectorAnchor, type StateInspectorOptions, type UseMultiplayerStateOptions, type UseNoyaStateOptions, type UseNoyaStateResult, type UserPointerData, UserPointersOverlay, type UserPointersOverlayProps, WebSocketConnection, buildResourcePatchPayload, createDefaultAppData, createNoyaContext, createStateInspectorRoot, decodeAll, deleteNoyaSingleton, encodeAll, enforceSchema, exportAll, fetchAssetMap, getAppData, getNoyaManagerSingleton, getNoyaSingletonBindings, getSyncAdapter, importAll, initializeNoyaSingleton, parseAppDataParameter, replaceDeep, resourceToCreateParameters, resourceToMediaItem, useAIManager, useActivityEvents, useActivityEventsForManager, useAnyNoyaManager, useAnyNoyaStateContext, useAnySharedConnectionData, useAsset, useAssetManager, useAssets, useBindNoyaManager, useCallableAITools, useColorScheme, useEnqueueInput, useFileName, useFilePropertyManager, useIOManager, useInputs, useIsInitialized, useIsProcessing, useManagedHistory, useManagedState, useMultiplayerState, useNoyaActiveUsers, useNoyaAssetTranscription, useNoyaCurrentUser, useNoyaCurrentUserId, useNoyaStateInternal, useNoyaTranscriptionManager, useNoyaUser, useNoyaUserManager, useNoyaUsers, useObservable, useOptionalAnyNoyaStateContext, useOutputTransforms, usePipelineManager, usePublish, useRegisterAITool, useResourceManager, useResourceUrl, useResources, useScriptEvaluator, useSecret, useSecretManager, useSecrets, useSetFileNameState, useStateInspector, useViewType };
package/dist/index.d.ts CHANGED
@@ -158,6 +158,8 @@ type AppData<State> = {
158
158
  clientId?: string;
159
159
  clientName?: string;
160
160
  clientImage?: string;
161
+ parentOrigin?: string;
162
+ enableDocumentAI?: boolean;
161
163
  };
162
164
  declare function createDefaultAppData<State>(initialState: State): AppData<State>;
163
165
  type GetAppDataOptions = {
@@ -178,6 +180,8 @@ declare function getSyncAdapter<S, M extends object = object, E extends object =
178
180
  policyAuthContext?: PolicyAuthContext;
179
181
  serverScripts?: LocalStorageSyncOptions["serverScripts"];
180
182
  git?: LocalStorageSyncOptions["git"];
183
+ parentOrigin?: string;
184
+ enableDocumentAI?: boolean;
181
185
  }): SyncAdapter<S, M, E, MenuT, I>;
182
186
  type UseNoyaStateOptions<S, M extends object = object, E extends object = object, MenuT extends string = string, I extends Record<string, any> = Record<string, unknown>> = UseMultiplayerStateOptions<S, M, E, MenuT, I> & {
183
187
  offlineStorageKey?: string;
@@ -228,6 +232,7 @@ type AnyNoyaStateContextValue = {
228
232
  viewType: AppViewType;
229
233
  };
230
234
  declare const AnyNoyaStateContext: React.Context<AnyNoyaStateContextValue | undefined>;
235
+ declare function useOptionalAnyNoyaStateContext(): AnyNoyaStateContextValue | undefined;
231
236
  declare function useAnyNoyaStateContext(): AnyNoyaStateContextValue;
232
237
  declare function useAnyNoyaManager(): NoyaManager<any, any, any, any, any>;
233
238
  declare function useColorScheme(): AppTheme;
@@ -510,6 +515,8 @@ declare function useObservable<T>(observable: Observable<T> | undefined): T | un
510
515
  declare function useObservable<T, A>(observable: Observable<T> | undefined, selector: (value: T) => A, options?: Pick<ObservableOptions, "isEqual">): A | undefined;
511
516
  declare function useObservable<T, P extends PathKey[] | string>(observable: Observable<T> | undefined, path: P): GetAtPath<T, P> | undefined;
512
517
 
518
+ declare function useResourceUrl(idOrStableId: string | undefined): string | undefined;
519
+
513
520
  type ConnectionEvent<State> = {
514
521
  type: "stateChange";
515
522
  state: ReconnectingWebSocketState;
@@ -543,4 +550,4 @@ declare class WebSocketConnection<State> {
543
550
  removeListener(listener: (state: ReconnectingWebSocketState) => void): void;
544
551
  }
545
552
 
546
- export { type AnyNoyaSingletonBindings, type AnyNoyaSingletonOptions, AnyNoyaStateContext, type AnyNoyaStateContextValue, type AppData, type AppTheme, type AppViewType, type ConnectionEvent, type ConnectionOptions, FallbackUntilInitialized, type GetAppDataOptions, type NoyaStateProviderProps, type RenderUserPointer, type RenderUserPointerProps, StateInspector, type StateInspectorAnchor, type StateInspectorOptions, type UseMultiplayerStateOptions, type UseNoyaStateOptions, type UseNoyaStateResult, type UserPointerData, UserPointersOverlay, type UserPointersOverlayProps, WebSocketConnection, buildResourcePatchPayload, createDefaultAppData, createNoyaContext, createStateInspectorRoot, decodeAll, deleteNoyaSingleton, encodeAll, enforceSchema, exportAll, fetchAssetMap, getAppData, getNoyaManagerSingleton, getNoyaSingletonBindings, getSyncAdapter, importAll, initializeNoyaSingleton, parseAppDataParameter, replaceDeep, resourceToCreateParameters, resourceToMediaItem, useAIManager, useActivityEvents, useActivityEventsForManager, useAnyNoyaManager, useAnyNoyaStateContext, useAnySharedConnectionData, useAsset, useAssetManager, useAssets, useBindNoyaManager, useCallableAITools, useColorScheme, useEnqueueInput, useFileName, useFilePropertyManager, useIOManager, useInputs, useIsInitialized, useIsProcessing, useManagedHistory, useManagedState, useMultiplayerState, useNoyaActiveUsers, useNoyaAssetTranscription, useNoyaCurrentUser, useNoyaCurrentUserId, useNoyaStateInternal, useNoyaTranscriptionManager, useNoyaUser, useNoyaUserManager, useNoyaUsers, useObservable, useOutputTransforms, usePipelineManager, usePublish, useRegisterAITool, useResourceManager, useResources, useScriptEvaluator, useSecret, useSecretManager, useSecrets, useSetFileNameState, useStateInspector, useViewType };
553
+ export { type AnyNoyaSingletonBindings, type AnyNoyaSingletonOptions, AnyNoyaStateContext, type AnyNoyaStateContextValue, type AppData, type AppTheme, type AppViewType, type ConnectionEvent, type ConnectionOptions, FallbackUntilInitialized, type GetAppDataOptions, type NoyaStateProviderProps, type RenderUserPointer, type RenderUserPointerProps, StateInspector, type StateInspectorAnchor, type StateInspectorOptions, type UseMultiplayerStateOptions, type UseNoyaStateOptions, type UseNoyaStateResult, type UserPointerData, UserPointersOverlay, type UserPointersOverlayProps, WebSocketConnection, buildResourcePatchPayload, createDefaultAppData, createNoyaContext, createStateInspectorRoot, decodeAll, deleteNoyaSingleton, encodeAll, enforceSchema, exportAll, fetchAssetMap, getAppData, getNoyaManagerSingleton, getNoyaSingletonBindings, getSyncAdapter, importAll, initializeNoyaSingleton, parseAppDataParameter, replaceDeep, resourceToCreateParameters, resourceToMediaItem, useAIManager, useActivityEvents, useActivityEventsForManager, useAnyNoyaManager, useAnyNoyaStateContext, useAnySharedConnectionData, useAsset, useAssetManager, useAssets, useBindNoyaManager, useCallableAITools, useColorScheme, useEnqueueInput, useFileName, useFilePropertyManager, useIOManager, useInputs, useIsInitialized, useIsProcessing, useManagedHistory, useManagedState, useMultiplayerState, useNoyaActiveUsers, useNoyaAssetTranscription, useNoyaCurrentUser, useNoyaCurrentUserId, useNoyaStateInternal, useNoyaTranscriptionManager, useNoyaUser, useNoyaUserManager, useNoyaUsers, useObservable, useOptionalAnyNoyaStateContext, useOutputTransforms, usePipelineManager, usePublish, useRegisterAITool, useResourceManager, useResourceUrl, useResources, useScriptEvaluator, useSecret, useSecretManager, useSecrets, useSetFileNameState, useStateInspector, useViewType };
package/dist/index.js CHANGED
@@ -1552,11 +1552,13 @@ __export(src_exports, {
1552
1552
  useNoyaUserManager: () => useNoyaUserManager,
1553
1553
  useNoyaUsers: () => useNoyaUsers,
1554
1554
  useObservable: () => useObservable,
1555
+ useOptionalAnyNoyaStateContext: () => useOptionalAnyNoyaStateContext,
1555
1556
  useOutputTransforms: () => useOutputTransforms,
1556
1557
  usePipelineManager: () => usePipelineManager,
1557
1558
  usePublish: () => usePublish,
1558
1559
  useRegisterAITool: () => useRegisterAITool,
1559
1560
  useResourceManager: () => useResourceManager,
1561
+ useResourceUrl: () => useResourceUrl,
1560
1562
  useResources: () => useResources,
1561
1563
  useScriptEvaluator: () => useScriptEvaluator,
1562
1564
  useSecret: () => useSecret,
@@ -7800,9 +7802,16 @@ function getSyncAdapter(params) {
7800
7802
  debug,
7801
7803
  policyAuthContext,
7802
7804
  serverScripts,
7803
- git
7805
+ git,
7806
+ parentOrigin,
7807
+ enableDocumentAI
7804
7808
  } = params ?? {};
7805
- return (0, import_state_manager3.isEmbeddedApp)() ? (0, import_state_manager3.parentFrameSync)({ debug, policyAuthContext }) : multiplayerUrl ? (0, import_state_manager3.webSocketSync)({ url: multiplayerUrl, debug }) : offlineStorageKey ? (0, import_state_manager3.localStorageSync)({
7809
+ return (0, import_state_manager3.isEmbeddedApp)() ? (0, import_state_manager3.parentFrameSync)({
7810
+ debug,
7811
+ policyAuthContext,
7812
+ origin: parentOrigin,
7813
+ enableDocumentAI
7814
+ }) : multiplayerUrl ? (0, import_state_manager3.webSocketSync)({ url: multiplayerUrl, debug }) : offlineStorageKey ? (0, import_state_manager3.localStorageSync)({
7806
7815
  key: offlineStorageKey,
7807
7816
  ...serverScripts ? { serverScripts } : {},
7808
7817
  ...git ? { git } : {}
@@ -7819,7 +7828,9 @@ function useNoyaStateInternal(...args) {
7819
7828
  viewType,
7820
7829
  userId,
7821
7830
  isDemo,
7822
- access
7831
+ access,
7832
+ parentOrigin,
7833
+ enableDocumentAI
7823
7834
  }
7824
7835
  ] = (0, import_react20.useState)(() => {
7825
7836
  return getAppData(initialState, options?.schema, {
@@ -7844,7 +7855,9 @@ function useNoyaStateInternal(...args) {
7844
7855
  debug: options?.debug,
7845
7856
  policyAuthContext: basePolicyAuthContext,
7846
7857
  serverScripts: options?.serverScripts,
7847
- git: options?.git
7858
+ git: options?.git,
7859
+ parentOrigin,
7860
+ enableDocumentAI
7848
7861
  });
7849
7862
  }, [
7850
7863
  multiplayerUrl,
@@ -7852,10 +7865,15 @@ function useNoyaStateInternal(...args) {
7852
7865
  options?.debug,
7853
7866
  basePolicyAuthContext,
7854
7867
  options?.serverScripts,
7855
- options?.git
7868
+ options?.git,
7869
+ parentOrigin,
7870
+ enableDocumentAI
7856
7871
  ]);
7857
7872
  const [noyaManager] = (0, import_react20.useState)(
7858
- () => new import_state_manager3.NoyaManager(noyaAppInitialState, options)
7873
+ () => new import_state_manager3.NoyaManager(noyaAppInitialState, {
7874
+ ...options,
7875
+ resourceUrlBase: options?.resourceUrlBase ?? parentOrigin ?? (typeof globalThis.location === "undefined" ? void 0 : globalThis.location.origin === "null" ? void 0 : globalThis.location.origin)
7876
+ })
7859
7877
  );
7860
7878
  (0, import_react20.useEffect)(() => {
7861
7879
  if (!userId) return;
@@ -7912,7 +7930,10 @@ function initializeNoyaSingleton(options) {
7912
7930
  } : void 0;
7913
7931
  noyaManagerSingleton = new import_state_manager4.NoyaManager(
7914
7932
  appData.initialState,
7915
- managerOptions
7933
+ {
7934
+ ...managerOptions,
7935
+ resourceUrlBase: managerOptions.resourceUrlBase ?? appData.parentOrigin ?? (typeof globalThis.location === "undefined" ? void 0 : globalThis.location.origin === "null" ? void 0 : globalThis.location.origin)
7936
+ }
7916
7937
  );
7917
7938
  if (appData.userId) {
7918
7939
  noyaManagerSingleton.sharedConnectionDataManager.setCurrentConnectionId(
@@ -7927,7 +7948,9 @@ function initializeNoyaSingleton(options) {
7927
7948
  debug: managerOptions?.debug,
7928
7949
  serverScripts: managerOptions?.serverScripts,
7929
7950
  git: managerOptions?.git,
7930
- policyAuthContext
7951
+ policyAuthContext,
7952
+ parentOrigin: appData.parentOrigin,
7953
+ enableDocumentAI: appData.enableDocumentAI
7931
7954
  });
7932
7955
  try {
7933
7956
  resolvedSync({ noyaManager: noyaManagerSingleton });
@@ -8043,22 +8066,23 @@ function buildResourcePatchPayload({
8043
8066
  return patch;
8044
8067
  }
8045
8068
  var AnyNoyaStateContext = (0, import_react22.createContext)(void 0);
8046
- function useAnyNoyaStateContext() {
8069
+ function useOptionalAnyNoyaStateContext() {
8047
8070
  const value = (0, import_react22.useContext)(AnyNoyaStateContext);
8048
- if (!value) {
8049
- const bindings = getNoyaSingletonBindings();
8050
- if (bindings) {
8051
- return {
8052
- noyaManager: getNoyaManagerSingleton(),
8053
- theme: bindings.theme,
8054
- viewType: bindings.viewType
8055
- };
8056
- }
8057
- throw new Error(
8058
- "useNoyaStateContext must be used within a NoyaStateProvider"
8059
- );
8060
- }
8061
- return value;
8071
+ const bindings = getNoyaSingletonBindings();
8072
+ if (value) return value;
8073
+ if (!bindings) return void 0;
8074
+ return {
8075
+ noyaManager: getNoyaManagerSingleton(),
8076
+ theme: bindings.theme,
8077
+ viewType: bindings.viewType
8078
+ };
8079
+ }
8080
+ function useAnyNoyaStateContext() {
8081
+ const value = useOptionalAnyNoyaStateContext();
8082
+ if (value) return value;
8083
+ throw new Error(
8084
+ "useNoyaStateContext must be used within a NoyaStateProvider"
8085
+ );
8062
8086
  }
8063
8087
  function useAnyNoyaManager() {
8064
8088
  const { noyaManager } = useAnyNoyaStateContext();
@@ -8532,18 +8556,30 @@ var UserPointersOverlay = (0, import_react_utils4.memoGeneric)(function UserPoin
8532
8556
  }));
8533
8557
  });
8534
8558
 
8535
- // src/WebSocketConnection.ts
8559
+ // src/useResourceUrl.ts
8536
8560
  var import_state_manager6 = require("@noya-app/state-manager");
8561
+ function useResourceUrl(idOrStableId) {
8562
+ const { noyaManager } = useAnyNoyaStateContext();
8563
+ const resources = useObservable(
8564
+ noyaManager.resourceManager.optimisticResources$
8565
+ );
8566
+ const assets = useObservable(noyaManager.assetManager.assets$);
8567
+ if (!idOrStableId) return void 0;
8568
+ return (0, import_state_manager6.getResourceUrl)(idOrStableId, resources, assets);
8569
+ }
8570
+
8571
+ // src/WebSocketConnection.ts
8572
+ var import_state_manager7 = require("@noya-app/state-manager");
8537
8573
  var WebSocketConnection = class {
8538
8574
  constructor(url, options = {}) {
8539
8575
  this.url = url;
8540
8576
  this.options = options;
8541
- this.ws = new import_state_manager6.ReconnectingWebSocket({
8577
+ this.ws = new import_state_manager7.ReconnectingWebSocket({
8542
8578
  debug: options.debug,
8543
8579
  onopen: this.handleOpen,
8544
8580
  onmessage: this.handleMessage,
8545
8581
  onclose: this.handleClose,
8546
- activityDetector: new import_state_manager6.UserActivityDetector()
8582
+ activityDetector: new import_state_manager7.UserActivityDetector()
8547
8583
  });
8548
8584
  }
8549
8585
  ws;
@@ -8668,11 +8704,13 @@ var WebSocketConnection = class {
8668
8704
  useNoyaUserManager,
8669
8705
  useNoyaUsers,
8670
8706
  useObservable,
8707
+ useOptionalAnyNoyaStateContext,
8671
8708
  useOutputTransforms,
8672
8709
  usePipelineManager,
8673
8710
  usePublish,
8674
8711
  useRegisterAITool,
8675
8712
  useResourceManager,
8713
+ useResourceUrl,
8676
8714
  useResources,
8677
8715
  useScriptEvaluator,
8678
8716
  useSecret,