typeferry 0.6.0
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/README.md +88 -0
- package/dist/auth/client/cross-tab-sync.d.ts +21 -0
- package/dist/auth/client/cross-tab-sync.js +56 -0
- package/dist/auth/client/cross-tab-sync.js.map +1 -0
- package/dist/auth/client/index.d.ts +2 -0
- package/dist/auth/client/index.js +3 -0
- package/dist/auth/client/index.js.map +1 -0
- package/dist/auth/client/oauth/google-provider.d.ts +11 -0
- package/dist/auth/client/oauth/google-provider.js +11 -0
- package/dist/auth/client/oauth/google-provider.js.map +1 -0
- package/dist/auth/client/oauth/index.d.ts +4 -0
- package/dist/auth/client/oauth/index.js +3 -0
- package/dist/auth/client/oauth/index.js.map +1 -0
- package/dist/auth/client/oauth/use-google-login.d.ts +39 -0
- package/dist/auth/client/oauth/use-google-login.js +55 -0
- package/dist/auth/client/oauth/use-google-login.js.map +1 -0
- package/dist/auth/client/token-refresh.d.ts +21 -0
- package/dist/auth/client/token-refresh.js +212 -0
- package/dist/auth/client/token-refresh.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.js +9 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/server/cookie-utils.d.ts +42 -0
- package/dist/auth/server/cookie-utils.js +91 -0
- package/dist/auth/server/cookie-utils.js.map +1 -0
- package/dist/auth/server/device-info.d.ts +23 -0
- package/dist/auth/server/device-info.js +52 -0
- package/dist/auth/server/device-info.js.map +1 -0
- package/dist/auth/server/index.d.ts +4 -0
- package/dist/auth/server/index.js +5 -0
- package/dist/auth/server/index.js.map +1 -0
- package/dist/auth/server/jwt-utils.d.ts +29 -0
- package/dist/auth/server/jwt-utils.js +53 -0
- package/dist/auth/server/jwt-utils.js.map +1 -0
- package/dist/auth/server/oauth/google.d.ts +31 -0
- package/dist/auth/server/oauth/google.js +40 -0
- package/dist/auth/server/oauth/google.js.map +1 -0
- package/dist/auth/server/oauth/index.d.ts +3 -0
- package/dist/auth/server/oauth/index.js +2 -0
- package/dist/auth/server/oauth/index.js.map +1 -0
- package/dist/auth/server/oauth/types.d.ts +37 -0
- package/dist/auth/server/oauth/types.js +2 -0
- package/dist/auth/server/oauth/types.js.map +1 -0
- package/dist/auth/server/session-manager.d.ts +46 -0
- package/dist/auth/server/session-manager.js +167 -0
- package/dist/auth/server/session-manager.js.map +1 -0
- package/dist/auth/types.d.ts +197 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/client/call-method-proxy.d.ts +2 -0
- package/dist/client/call-method-proxy.js +22 -0
- package/dist/client/call-method-proxy.js.map +1 -0
- package/dist/client/client-channel.d.ts +43 -0
- package/dist/client/client-channel.js +148 -0
- package/dist/client/client-channel.js.map +1 -0
- package/dist/client/client-http.d.ts +27 -0
- package/dist/client/client-http.js +106 -0
- package/dist/client/client-http.js.map +1 -0
- package/dist/client/client-socket.d.ts +85 -0
- package/dist/client/client-socket.js +317 -0
- package/dist/client/client-socket.js.map +1 -0
- package/dist/client/client.d.ts +149 -0
- package/dist/client/client.js +401 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/context-manager.d.ts +54 -0
- package/dist/client/context-manager.js +89 -0
- package/dist/client/context-manager.js.map +1 -0
- package/dist/client/idle-timer.d.ts +35 -0
- package/dist/client/idle-timer.js +101 -0
- package/dist/client/idle-timer.js.map +1 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +7 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/logger.d.ts +76 -0
- package/dist/client/logger.js +129 -0
- package/dist/client/logger.js.map +1 -0
- package/dist/client/visibility-manager.d.ts +62 -0
- package/dist/client/visibility-manager.js +177 -0
- package/dist/client/visibility-manager.js.map +1 -0
- package/dist/ejson/adjust-types-from-json-value.d.ts +1 -0
- package/dist/ejson/adjust-types-from-json-value.js +35 -0
- package/dist/ejson/adjust-types-from-json-value.js.map +1 -0
- package/dist/ejson/base64.d.ts +11 -0
- package/dist/ejson/base64.js +87 -0
- package/dist/ejson/base64.js.map +1 -0
- package/dist/ejson/built-in-converters.d.ts +1 -0
- package/dist/ejson/built-in-converters.js +137 -0
- package/dist/ejson/built-in-converters.js.map +1 -0
- package/dist/ejson/clone.d.ts +1 -0
- package/dist/ejson/clone.js +80 -0
- package/dist/ejson/clone.js.map +1 -0
- package/dist/ejson/custom-models.d.ts +38 -0
- package/dist/ejson/custom-models.js +76 -0
- package/dist/ejson/custom-models.js.map +1 -0
- package/dist/ejson/custom-types.d.ts +1 -0
- package/dist/ejson/custom-types.js +2 -0
- package/dist/ejson/custom-types.js.map +1 -0
- package/dist/ejson/equals.d.ts +1 -0
- package/dist/ejson/equals.js +117 -0
- package/dist/ejson/equals.js.map +1 -0
- package/dist/ejson/from-json-value.d.ts +1 -0
- package/dist/ejson/from-json-value.js +13 -0
- package/dist/ejson/from-json-value.js.map +1 -0
- package/dist/ejson/helpers/adjust-types-to-json-value.d.ts +1 -0
- package/dist/ejson/helpers/adjust-types-to-json-value.js +36 -0
- package/dist/ejson/helpers/adjust-types-to-json-value.js.map +1 -0
- package/dist/ejson/helpers/from-json-value-helper.d.ts +1 -0
- package/dist/ejson/helpers/from-json-value-helper.js +24 -0
- package/dist/ejson/helpers/from-json-value-helper.js.map +1 -0
- package/dist/ejson/helpers/to-json-value-helper.d.ts +1 -0
- package/dist/ejson/helpers/to-json-value-helper.js +15 -0
- package/dist/ejson/helpers/to-json-value-helper.js.map +1 -0
- package/dist/ejson/index.d.ts +27 -0
- package/dist/ejson/index.js +54 -0
- package/dist/ejson/index.js.map +1 -0
- package/dist/ejson/is-binary.d.ts +2 -0
- package/dist/ejson/is-binary.js +5 -0
- package/dist/ejson/is-binary.js.map +1 -0
- package/dist/ejson/parse.d.ts +6 -0
- package/dist/ejson/parse.js +12 -0
- package/dist/ejson/parse.js.map +1 -0
- package/dist/ejson/stable-stringify.d.ts +10 -0
- package/dist/ejson/stable-stringify.js +25 -0
- package/dist/ejson/stable-stringify.js.map +1 -0
- package/dist/ejson/stringify.d.ts +5 -0
- package/dist/ejson/stringify.js +15 -0
- package/dist/ejson/stringify.js.map +1 -0
- package/dist/ejson/to-json-value.d.ts +1 -0
- package/dist/ejson/to-json-value.js +17 -0
- package/dist/ejson/to-json-value.js.map +1 -0
- package/dist/ejson/utils.d.ts +18 -0
- package/dist/ejson/utils.js +43 -0
- package/dist/ejson/utils.js.map +1 -0
- package/dist/mongodb/change-streams.d.ts +31 -0
- package/dist/mongodb/change-streams.js +142 -0
- package/dist/mongodb/change-streams.js.map +1 -0
- package/dist/mongodb/client.d.ts +13 -0
- package/dist/mongodb/client.js +30 -0
- package/dist/mongodb/client.js.map +1 -0
- package/dist/mongodb/decorators/collection.d.ts +9 -0
- package/dist/mongodb/decorators/collection.js +26 -0
- package/dist/mongodb/decorators/collection.js.map +1 -0
- package/dist/mongodb/decorators/index.d.ts +4 -0
- package/dist/mongodb/decorators/index.js +5 -0
- package/dist/mongodb/decorators/index.js.map +1 -0
- package/dist/mongodb/decorators/metadata.d.ts +21 -0
- package/dist/mongodb/decorators/metadata.js +29 -0
- package/dist/mongodb/decorators/metadata.js.map +1 -0
- package/dist/mongodb/decorators/register.d.ts +3 -0
- package/dist/mongodb/decorators/register.js +10 -0
- package/dist/mongodb/decorators/register.js.map +1 -0
- package/dist/mongodb/decorators/watch.d.ts +4 -0
- package/dist/mongodb/decorators/watch.js +10 -0
- package/dist/mongodb/decorators/watch.js.map +1 -0
- package/dist/mongodb/filters.d.ts +20 -0
- package/dist/mongodb/filters.js +40 -0
- package/dist/mongodb/filters.js.map +1 -0
- package/dist/mongodb/find-one-or-create.d.ts +4 -0
- package/dist/mongodb/find-one-or-create.js +16 -0
- package/dist/mongodb/find-one-or-create.js.map +1 -0
- package/dist/mongodb/index.d.ts +10 -0
- package/dist/mongodb/index.js +11 -0
- package/dist/mongodb/index.js.map +1 -0
- package/dist/mongodb/live/client.d.ts +52 -0
- package/dist/mongodb/live/client.js +266 -0
- package/dist/mongodb/live/client.js.map +1 -0
- package/dist/mongodb/live/engine.d.ts +55 -0
- package/dist/mongodb/live/engine.js +440 -0
- package/dist/mongodb/live/engine.js.map +1 -0
- package/dist/mongodb/live/index.d.ts +5 -0
- package/dist/mongodb/live/index.js +6 -0
- package/dist/mongodb/live/index.js.map +1 -0
- package/dist/mongodb/live/observer.d.ts +58 -0
- package/dist/mongodb/live/observer.js +246 -0
- package/dist/mongodb/live/observer.js.map +1 -0
- package/dist/mongodb/live/publication.d.ts +4 -0
- package/dist/mongodb/live/publication.js +30 -0
- package/dist/mongodb/live/publication.js.map +1 -0
- package/dist/mongodb/live/source.d.ts +55 -0
- package/dist/mongodb/live/source.js +197 -0
- package/dist/mongodb/live/source.js.map +1 -0
- package/dist/mongodb/live/types.d.ts +266 -0
- package/dist/mongodb/live/types.js +29 -0
- package/dist/mongodb/live/types.js.map +1 -0
- package/dist/mongodb/live/window.d.ts +7 -0
- package/dist/mongodb/live/window.js +93 -0
- package/dist/mongodb/live/window.js.map +1 -0
- package/dist/mongodb/registry.d.ts +35 -0
- package/dist/mongodb/registry.js +129 -0
- package/dist/mongodb/registry.js.map +1 -0
- package/dist/mongodb/schema.d.ts +16 -0
- package/dist/mongodb/schema.js +43 -0
- package/dist/mongodb/schema.js.map +1 -0
- package/dist/mongodb/timestamps.d.ts +17 -0
- package/dist/mongodb/timestamps.js +27 -0
- package/dist/mongodb/timestamps.js.map +1 -0
- package/dist/mongodb/types.d.ts +120 -0
- package/dist/mongodb/types.js +10 -0
- package/dist/mongodb/types.js.map +1 -0
- package/dist/react/components/client-provider.d.ts +8 -0
- package/dist/react/components/client-provider.js +23 -0
- package/dist/react/components/client-provider.js.map +1 -0
- package/dist/react/components/index.d.ts +1 -0
- package/dist/react/components/index.js +2 -0
- package/dist/react/components/index.js.map +1 -0
- package/dist/react/hooks/index.d.ts +13 -0
- package/dist/react/hooks/index.js +14 -0
- package/dist/react/hooks/index.js.map +1 -0
- package/dist/react/hooks/use-auth.d.ts +4 -0
- package/dist/react/hooks/use-auth.js +35 -0
- package/dist/react/hooks/use-auth.js.map +1 -0
- package/dist/react/hooks/use-caller.d.ts +5 -0
- package/dist/react/hooks/use-caller.js +13 -0
- package/dist/react/hooks/use-caller.js.map +1 -0
- package/dist/react/hooks/use-channel.d.ts +1 -0
- package/dist/react/hooks/use-channel.js +7 -0
- package/dist/react/hooks/use-channel.js.map +1 -0
- package/dist/react/hooks/use-circuit-breaker.d.ts +6 -0
- package/dist/react/hooks/use-circuit-breaker.js +16 -0
- package/dist/react/hooks/use-circuit-breaker.js.map +1 -0
- package/dist/react/hooks/use-client.d.ts +3 -0
- package/dist/react/hooks/use-client.js +13 -0
- package/dist/react/hooks/use-client.js.map +1 -0
- package/dist/react/hooks/use-connection-state.d.ts +13 -0
- package/dist/react/hooks/use-connection-state.js +55 -0
- package/dist/react/hooks/use-connection-state.js.map +1 -0
- package/dist/react/hooks/use-creation.d.ts +5 -0
- package/dist/react/hooks/use-creation.js +17 -0
- package/dist/react/hooks/use-creation.js.map +1 -0
- package/dist/react/hooks/use-deps-change.d.ts +1 -0
- package/dist/react/hooks/use-deps-change.js +11 -0
- package/dist/react/hooks/use-deps-change.js.map +1 -0
- package/dist/react/hooks/use-local-event.d.ts +13 -0
- package/dist/react/hooks/use-local-event.js +32 -0
- package/dist/react/hooks/use-local-event.js.map +1 -0
- package/dist/react/hooks/use-method-refresh.d.ts +15 -0
- package/dist/react/hooks/use-method-refresh.js +48 -0
- package/dist/react/hooks/use-method-refresh.js.map +1 -0
- package/dist/react/hooks/use-method.d.ts +26 -0
- package/dist/react/hooks/use-method.js +161 -0
- package/dist/react/hooks/use-method.js.map +1 -0
- package/dist/react/hooks/use-mongodb-live-publication.d.ts +13 -0
- package/dist/react/hooks/use-mongodb-live-publication.js +26 -0
- package/dist/react/hooks/use-mongodb-live-publication.js.map +1 -0
- package/dist/react/hooks/use-object.d.ts +2 -0
- package/dist/react/hooks/use-object.js +22 -0
- package/dist/react/hooks/use-object.js.map +1 -0
- package/dist/react/hooks/use-subscribe.d.ts +8 -0
- package/dist/react/hooks/use-subscribe.js +49 -0
- package/dist/react/hooks/use-subscribe.js.map +1 -0
- package/dist/react/hooks/use-throttled-events.d.ts +7 -0
- package/dist/react/hooks/use-throttled-events.js +11 -0
- package/dist/react/hooks/use-throttled-events.js.map +1 -0
- package/dist/react/hooks/use-token-refresh.d.ts +13 -0
- package/dist/react/hooks/use-token-refresh.js +40 -0
- package/dist/react/hooks/use-token-refresh.js.map +1 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.js +3 -0
- package/dist/react/index.js.map +1 -0
- package/dist/server/client-node.d.ts +76 -0
- package/dist/server/client-node.js +159 -0
- package/dist/server/client-node.js.map +1 -0
- package/dist/server/create-method-proxy.d.ts +2 -0
- package/dist/server/create-method-proxy.js +16 -0
- package/dist/server/create-method-proxy.js.map +1 -0
- package/dist/server/decorators/cached.d.ts +37 -0
- package/dist/server/decorators/cached.js +65 -0
- package/dist/server/decorators/cached.js.map +1 -0
- package/dist/server/decorators/index.d.ts +14 -0
- package/dist/server/decorators/index.js +13 -0
- package/dist/server/decorators/index.js.map +1 -0
- package/dist/server/decorators/infer.d.ts +78 -0
- package/dist/server/decorators/infer.js +11 -0
- package/dist/server/decorators/infer.js.map +1 -0
- package/dist/server/decorators/metadata.d.ts +60 -0
- package/dist/server/decorators/metadata.js +77 -0
- package/dist/server/decorators/metadata.js.map +1 -0
- package/dist/server/decorators/method.d.ts +14 -0
- package/dist/server/decorators/method.js +25 -0
- package/dist/server/decorators/method.js.map +1 -0
- package/dist/server/decorators/namespace.d.ts +25 -0
- package/dist/server/decorators/namespace.js +34 -0
- package/dist/server/decorators/namespace.js.map +1 -0
- package/dist/server/decorators/protected.d.ts +36 -0
- package/dist/server/decorators/protected.js +61 -0
- package/dist/server/decorators/protected.js.map +1 -0
- package/dist/server/decorators/register.d.ts +25 -0
- package/dist/server/decorators/register.js +72 -0
- package/dist/server/decorators/register.js.map +1 -0
- package/dist/server/decorators/schema.d.ts +17 -0
- package/dist/server/decorators/schema.js +27 -0
- package/dist/server/decorators/schema.js.map +1 -0
- package/dist/server/decorators/use.d.ts +22 -0
- package/dist/server/decorators/use.js +32 -0
- package/dist/server/decorators/use.js.map +1 -0
- package/dist/server/default-methods.d.ts +8 -0
- package/dist/server/default-methods.js +8 -0
- package/dist/server/default-methods.js.map +1 -0
- package/dist/server/event.d.ts +42 -0
- package/dist/server/event.js +53 -0
- package/dist/server/event.js.map +1 -0
- package/dist/server/index.d.ts +10 -0
- package/dist/server/index.js +11 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/method.d.ts +95 -0
- package/dist/server/method.js +113 -0
- package/dist/server/method.js.map +1 -0
- package/dist/server/methods.d.ts +11 -0
- package/dist/server/methods.js +74 -0
- package/dist/server/methods.js.map +1 -0
- package/dist/server/request-types.d.ts +20 -0
- package/dist/server/request-types.js +8 -0
- package/dist/server/request-types.js.map +1 -0
- package/dist/server/room-registry.d.ts +28 -0
- package/dist/server/room-registry.js +83 -0
- package/dist/server/room-registry.js.map +1 -0
- package/dist/server/server-channel.d.ts +32 -0
- package/dist/server/server-channel.js +104 -0
- package/dist/server/server-channel.js.map +1 -0
- package/dist/server/server.d.ts +124 -0
- package/dist/server/server.js +243 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/transports/hono-rate-limit.d.ts +15 -0
- package/dist/server/transports/hono-rate-limit.js +36 -0
- package/dist/server/transports/hono-rate-limit.js.map +1 -0
- package/dist/server/transports/index.d.ts +4 -0
- package/dist/server/transports/index.js +5 -0
- package/dist/server/transports/index.js.map +1 -0
- package/dist/server/transports/node-hono-transport-contract.d.ts +16 -0
- package/dist/server/transports/node-hono-transport-contract.js +18 -0
- package/dist/server/transports/node-hono-transport-contract.js.map +1 -0
- package/dist/server/transports/node-hono-transport.d.ts +47 -0
- package/dist/server/transports/node-hono-transport.js +327 -0
- package/dist/server/transports/node-hono-transport.js.map +1 -0
- package/dist/server/transports/redis-transport.d.ts +34 -0
- package/dist/server/transports/redis-transport.js +84 -0
- package/dist/server/transports/redis-transport.js.map +1 -0
- package/dist/server/transports/websocket-transport.d.ts +42 -0
- package/dist/server/transports/websocket-transport.js +174 -0
- package/dist/server/transports/websocket-transport.js.map +1 -0
- package/dist/server/transports/ws-shared.d.ts +37 -0
- package/dist/server/transports/ws-shared.js +188 -0
- package/dist/server/transports/ws-shared.js.map +1 -0
- package/dist/server/typeferry-async-local-storage.d.ts +5 -0
- package/dist/server/typeferry-async-local-storage.js +6 -0
- package/dist/server/typeferry-async-local-storage.js.map +1 -0
- package/dist/server/types.d.ts +27 -0
- package/dist/server/types.js +11 -0
- package/dist/server/types.js.map +1 -0
- package/dist/utils/constants.d.ts +72 -0
- package/dist/utils/constants.js +79 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/environment.d.ts +8 -0
- package/dist/utils/environment.js +17 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/errors.d.ts +26 -0
- package/dist/utils/errors.js +35 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/event-emitter.d.ts +37 -0
- package/dist/utils/event-emitter.js +104 -0
- package/dist/utils/event-emitter.js.map +1 -0
- package/dist/utils/events.d.ts +7 -0
- package/dist/utils/events.js +23 -0
- package/dist/utils/events.js.map +1 -0
- package/dist/utils/helpers.d.ts +14 -0
- package/dist/utils/helpers.js +40 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/intercept.d.ts +7 -0
- package/dist/utils/intercept.js +21 -0
- package/dist/utils/intercept.js.map +1 -0
- package/dist/utils/iterator.d.ts +9 -0
- package/dist/utils/iterator.js +28 -0
- package/dist/utils/iterator.js.map +1 -0
- package/dist/utils/lodash.d.ts +33 -0
- package/dist/utils/lodash.js +123 -0
- package/dist/utils/lodash.js.map +1 -0
- package/dist/utils/presentation.d.ts +19 -0
- package/dist/utils/presentation.js +25 -0
- package/dist/utils/presentation.js.map +1 -0
- package/dist/utils/promise.d.ts +6 -0
- package/dist/utils/promise.js +17 -0
- package/dist/utils/promise.js.map +1 -0
- package/dist/utils/protocol.d.ts +110 -0
- package/dist/utils/protocol.js +59 -0
- package/dist/utils/protocol.js.map +1 -0
- package/dist/utils/types.d.ts +23 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/types.js.map +1 -0
- package/package.json +187 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Document } from 'mongodb';
|
|
2
|
+
/** Options for timestamp helpers that need deterministic clocks in tests. */
|
|
3
|
+
export interface TimestampOptions {
|
|
4
|
+
/** Timestamp to apply instead of `new Date()`. */
|
|
5
|
+
readonly now?: Date;
|
|
6
|
+
}
|
|
7
|
+
/** Document fields added by insert timestamp helpers. */
|
|
8
|
+
export interface InsertTimestamps {
|
|
9
|
+
/** Creation timestamp. */
|
|
10
|
+
readonly createdAt: Date;
|
|
11
|
+
/** Last update timestamp. */
|
|
12
|
+
readonly updatedAt: Date;
|
|
13
|
+
}
|
|
14
|
+
/** Adds `createdAt` and `updatedAt` to a document before insertion. */
|
|
15
|
+
export declare function withInsertTimestamps<TInput extends Document>(input: TInput, options?: TimestampOptions): TInput & InsertTimestamps;
|
|
16
|
+
/** Adds `updatedAt` to a native MongoDB update document without changing other operators. */
|
|
17
|
+
export declare function withUpdateTimestamp<TUpdate extends Document>(update: TUpdate, options?: TimestampOptions): TUpdate;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Adds `createdAt` and `updatedAt` to a document before insertion. */
|
|
2
|
+
export function withInsertTimestamps(input, options = {}) {
|
|
3
|
+
const now = options.now ?? new Date();
|
|
4
|
+
return {
|
|
5
|
+
...input,
|
|
6
|
+
createdAt: now,
|
|
7
|
+
updatedAt: now,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/** Adds `updatedAt` to a native MongoDB update document without changing other operators. */
|
|
11
|
+
export function withUpdateTimestamp(update, options = {}) {
|
|
12
|
+
const now = options.now ?? new Date();
|
|
13
|
+
const setOperator = readObjectRecord(update.$set);
|
|
14
|
+
return {
|
|
15
|
+
...update,
|
|
16
|
+
$set: {
|
|
17
|
+
...setOperator,
|
|
18
|
+
updatedAt: now,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function readObjectRecord(value) {
|
|
23
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
24
|
+
return {};
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=timestamps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timestamps.js","sourceRoot":"","sources":["../../src/mongodb/timestamps.ts"],"names":[],"mappings":"AAgBA,uEAAuE;AACvE,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,UAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;IACrC,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAA;AACH,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,mBAAmB,CACjC,MAAe,EACf,UAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAA;IACrC,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAEjD,OAAO;QACL,GAAG,MAAM;QACT,IAAI,EAAE;YACJ,GAAG,WAAW;YACd,SAAS,EAAE,GAAG;SACf;KACS,CAAA;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAC1E,OAAO,KAAgC,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { ChangeStreamDocument, ChangeStreamOptions, ClientSession, Collection, CreateIndexesOptions, Db, Document, IndexSpecification, MongoClient, MongoClientOptions, ObjectId } from 'mongodb';
|
|
2
|
+
import type { z } from 'zod';
|
|
3
|
+
import type { EventOptions, Server } from '../server/index.js';
|
|
4
|
+
import type { MongoLiveOptions } from './live/types.js';
|
|
5
|
+
/** Runtime brand used by typed collection tokens to carry document types. */
|
|
6
|
+
export declare const MONGO_COLLECTION_DOCUMENT: unique symbol;
|
|
7
|
+
/** Constructor accepted by MongoDB collection decorators. */
|
|
8
|
+
export type MongoCollectionClass = abstract new (...args: never[]) => unknown;
|
|
9
|
+
/** Compile-time collection token that binds a decorated class to a document type. */
|
|
10
|
+
export interface MongoCollectionToken<TDocument extends Document> {
|
|
11
|
+
/** Decorated class that owns runtime collection metadata. */
|
|
12
|
+
readonly Class: MongoCollectionClass;
|
|
13
|
+
/** Phantom document type carried by the token for collection inference. */
|
|
14
|
+
readonly [MONGO_COLLECTION_DOCUMENT]: TDocument;
|
|
15
|
+
}
|
|
16
|
+
/** Binds a decorated collection class to a compile-time document type. */
|
|
17
|
+
export declare function typedMongoCollection<TDocument extends Document>(Class: MongoCollectionClass): MongoCollectionToken<TDocument>;
|
|
18
|
+
/** Extracts the document type carried by a MongoDB collection token. */
|
|
19
|
+
export type MongoDocumentOf<TToken> = TToken extends MongoCollectionToken<infer TDocument> ? TDocument : never;
|
|
20
|
+
/** Collection class or typed token accepted by runtime metadata readers. */
|
|
21
|
+
export type MongoCollectionTarget = MongoCollectionClass | MongoCollectionToken<Document>;
|
|
22
|
+
/** Index metadata declared through `@MongoIndex`. */
|
|
23
|
+
export interface MongoIndexDefinition {
|
|
24
|
+
/** Native MongoDB index specification passed to `createIndexes`. */
|
|
25
|
+
readonly spec: IndexSpecification;
|
|
26
|
+
/** Native MongoDB index options passed through unchanged. */
|
|
27
|
+
readonly options?: CreateIndexesOptions;
|
|
28
|
+
}
|
|
29
|
+
/** Channel selection returned by a MongoDB watch definition. */
|
|
30
|
+
export type MongoWatchChannel = string | readonly string[] | null | undefined;
|
|
31
|
+
/** Function that maps a changed document into one or more TypeFerry channels. */
|
|
32
|
+
export type MongoWatchChannelResolver<TDocument extends Document> = (document: TDocument, change: ChangeStreamDocument<TDocument>) => MongoWatchChannel | Promise<MongoWatchChannel>;
|
|
33
|
+
/** Watch metadata declared through `@MongoWatch`. */
|
|
34
|
+
export interface MongoWatchDefinition<TDocument extends Document = Document> {
|
|
35
|
+
/** TypeFerry event name emitted for matching collection changes. */
|
|
36
|
+
readonly event: string;
|
|
37
|
+
/** TypeFerry event options used when registering the event on the server. */
|
|
38
|
+
readonly eventOptions?: EventOptions;
|
|
39
|
+
/** Optional resolver for channel-scoped event emission. */
|
|
40
|
+
readonly getChannel?: MongoWatchChannelResolver<TDocument>;
|
|
41
|
+
/** Fields that should not trigger event emission when they are the only updates. */
|
|
42
|
+
readonly excludeFields?: readonly string[];
|
|
43
|
+
/** Native change-stream pipeline passed to `collection.watch`. */
|
|
44
|
+
readonly pipeline?: readonly Document[];
|
|
45
|
+
/** Native `fullDocument` option; defaults to `updateLookup`. */
|
|
46
|
+
readonly fullDocument?: ChangeStreamOptions['fullDocument'];
|
|
47
|
+
/** Native pre-image option used to resolve delete channels when enabled. */
|
|
48
|
+
readonly fullDocumentBeforeChange?: ChangeStreamOptions['fullDocumentBeforeChange'];
|
|
49
|
+
/** Native change-stream options passed through unchanged. */
|
|
50
|
+
readonly options?: ChangeStreamOptions;
|
|
51
|
+
}
|
|
52
|
+
/** Complete collection metadata accumulated by decorators. */
|
|
53
|
+
export interface MongoCollectionDefinition<TDocument extends Document = Document> {
|
|
54
|
+
/** Decorated class that owns this metadata. */
|
|
55
|
+
readonly Class: MongoCollectionClass;
|
|
56
|
+
/** MongoDB collection name. */
|
|
57
|
+
readonly name: string;
|
|
58
|
+
/** Optional Zod schema used by explicit parse helpers. */
|
|
59
|
+
readonly schema?: z.ZodType<TDocument>;
|
|
60
|
+
/** Indexes declared for explicit or opt-in startup creation. */
|
|
61
|
+
readonly indexes: readonly MongoIndexDefinition[];
|
|
62
|
+
/** Change-stream definitions declared for TypeFerry event bridging. */
|
|
63
|
+
readonly watches: readonly MongoWatchDefinition<TDocument>[];
|
|
64
|
+
}
|
|
65
|
+
/** Options accepted by `createTypeFerryMongo`. */
|
|
66
|
+
export interface TypeFerryMongoOptions {
|
|
67
|
+
/** Optional TypeFerry server used for change-stream event bridging. */
|
|
68
|
+
readonly server?: Server;
|
|
69
|
+
/** MongoDB connection string used when no `client` or `db` is supplied. */
|
|
70
|
+
readonly uri?: string;
|
|
71
|
+
/** External MongoDB client to reuse. */
|
|
72
|
+
readonly client?: MongoClient;
|
|
73
|
+
/** External MongoDB database handle to reuse. */
|
|
74
|
+
readonly db?: Db;
|
|
75
|
+
/** Database name used with `uri` or `client`. */
|
|
76
|
+
readonly dbName?: string;
|
|
77
|
+
/** Native MongoDB client options used when connecting from `uri`. */
|
|
78
|
+
readonly clientOptions?: MongoClientOptions;
|
|
79
|
+
/** Decorated collection classes or typed tokens to register. */
|
|
80
|
+
readonly collections: readonly MongoCollectionTarget[];
|
|
81
|
+
/** Whether to create declared indexes during startup. */
|
|
82
|
+
readonly ensureIndexes?: boolean;
|
|
83
|
+
/** Whether `close()` should close an externally supplied client. */
|
|
84
|
+
readonly closeExternalClient?: boolean;
|
|
85
|
+
/** Optional named MongoDB live-view extension. */
|
|
86
|
+
readonly live?: MongoLiveOptions;
|
|
87
|
+
}
|
|
88
|
+
/** Runtime returned by `createTypeFerryMongo`. */
|
|
89
|
+
export interface TypeFerryMongo {
|
|
90
|
+
/** Native database handle used by registered collections. */
|
|
91
|
+
readonly db: Db;
|
|
92
|
+
/** Native client when one is known; `null` when constructed from an external `Db`. */
|
|
93
|
+
readonly client: MongoClient | null;
|
|
94
|
+
/** Returns a native driver collection inferred from a typed collection token. */
|
|
95
|
+
collection<TToken extends MongoCollectionToken<Document>>(token: TToken): Collection<MongoDocumentOf<TToken>>;
|
|
96
|
+
/** Returns a native driver collection by name when no typed token is available. */
|
|
97
|
+
collectionByName<TDocument extends Document = Document>(name: string): Collection<TDocument>;
|
|
98
|
+
/** Returns decorator metadata for a registered collection. */
|
|
99
|
+
meta(target: MongoCollectionTarget): MongoCollectionDefinition;
|
|
100
|
+
/** Creates all declared indexes without dropping or reconciling existing indexes. */
|
|
101
|
+
ensureIndexes(): Promise<void>;
|
|
102
|
+
/** Closes change streams and the owned MongoDB client when applicable. */
|
|
103
|
+
close(): Promise<void>;
|
|
104
|
+
}
|
|
105
|
+
/** Payload emitted from MongoDB change streams through TypeFerry events. */
|
|
106
|
+
export interface MongoWatchPayload<TDocument extends Document> {
|
|
107
|
+
/** Driver resume token string for client-side deduplication. */
|
|
108
|
+
readonly eventId: string;
|
|
109
|
+
/** Changed document identifier. */
|
|
110
|
+
readonly _id: ObjectId;
|
|
111
|
+
/** Full document after the change, or `null` for deletes. */
|
|
112
|
+
readonly doc: TDocument | null;
|
|
113
|
+
/** Whether the change represents a delete event. */
|
|
114
|
+
readonly deleted: boolean;
|
|
115
|
+
}
|
|
116
|
+
/** Options passed to pure helpers that forward native sessions. */
|
|
117
|
+
export interface MongoSessionOptions {
|
|
118
|
+
/** Native MongoDB session to forward to driver calls. */
|
|
119
|
+
readonly session?: ClientSession;
|
|
120
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Runtime brand used by typed collection tokens to carry document types. */
|
|
2
|
+
export const MONGO_COLLECTION_DOCUMENT = Symbol('typeferry.mongodb.collection.document');
|
|
3
|
+
/** Binds a decorated collection class to a compile-time document type. */
|
|
4
|
+
export function typedMongoCollection(Class) {
|
|
5
|
+
return {
|
|
6
|
+
Class,
|
|
7
|
+
[MONGO_COLLECTION_DOCUMENT]: undefined,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mongodb/types.ts"],"names":[],"mappings":"AAkBA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAkB,MAAM,CAC5D,uCAAuC,CACxC,CAAA;AAeD,0EAA0E;AAC1E,MAAM,UAAU,oBAAoB,CAClC,KAA2B;IAE3B,OAAO;QACL,KAAK;QACL,CAAC,yBAAyB,CAAC,EAAE,SAAiC;KAC/D,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PropsWithChildren } from 'react';
|
|
2
|
+
import type { ClientOptions } from '../../client/index.js';
|
|
3
|
+
import { Client } from '../../client/index.js';
|
|
4
|
+
export declare const ClientContext: any;
|
|
5
|
+
export declare const ClientProvider: ({ clientInstance, clientOptions, children, }: PropsWithChildren<{
|
|
6
|
+
clientOptions?: ClientOptions;
|
|
7
|
+
clientInstance?: Client;
|
|
8
|
+
}>) => any;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect } from 'react';
|
|
3
|
+
import { Client } from '../../client/index.js';
|
|
4
|
+
import { useCreation } from '../hooks/use-creation.js';
|
|
5
|
+
export const ClientContext = React.createContext(undefined);
|
|
6
|
+
ClientContext.displayName = 'TypeFerryClientContext';
|
|
7
|
+
export const ClientProvider = ({ clientInstance = null, clientOptions, children, }) => {
|
|
8
|
+
const client = useCreation(() => {
|
|
9
|
+
return clientInstance ?? new Client(clientOptions);
|
|
10
|
+
}, []);
|
|
11
|
+
/**
|
|
12
|
+
* Close the client on unmount to prevent ghost WebSocket connections
|
|
13
|
+
* during HMR. Without this, each hot reload of App or ClientProvider
|
|
14
|
+
* orphans the old Client's socket, leaking server-side connections.
|
|
15
|
+
*/
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
return () => {
|
|
18
|
+
client?.close();
|
|
19
|
+
};
|
|
20
|
+
}, [client]);
|
|
21
|
+
return (_jsx(ClientContext.Provider, { value: client, children: client ? children : null }));
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=client-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-provider.js","sourceRoot":"","sources":["../../../src/react/components/client-provider.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;AAE3D,aAAa,CAAC,WAAW,GAAG,wBAAwB,CAAA;AAEpD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,cAAc,GAAG,IAAI,EACrB,aAAa,EACb,QAAQ,GAIR,EAAE,EAAE;IACJ,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,OAAO,cAAc,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,CAAA;IACpD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,MAAM,EAAE,KAAK,EAAE,CAAA;QACjB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YAClC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GACF,CAC1B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './client-provider.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './use-auth.js';
|
|
2
|
+
export * from './use-channel.js';
|
|
3
|
+
export * from './use-client.js';
|
|
4
|
+
export * from './use-connection-state.js';
|
|
5
|
+
export * from './use-creation.js';
|
|
6
|
+
export * from './use-deps-change.js';
|
|
7
|
+
export * from './use-local-event.js';
|
|
8
|
+
export * from './use-method.js';
|
|
9
|
+
export * from './use-mongodb-live-publication.js';
|
|
10
|
+
export * from './use-object.js';
|
|
11
|
+
export * from './use-subscribe.js';
|
|
12
|
+
export * from './use-throttled-events.js';
|
|
13
|
+
export * from './use-token-refresh.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './use-auth.js';
|
|
2
|
+
export * from './use-channel.js';
|
|
3
|
+
export * from './use-client.js';
|
|
4
|
+
export * from './use-connection-state.js';
|
|
5
|
+
export * from './use-creation.js';
|
|
6
|
+
export * from './use-deps-change.js';
|
|
7
|
+
export * from './use-local-event.js';
|
|
8
|
+
export * from './use-method.js';
|
|
9
|
+
export * from './use-mongodb-live-publication.js';
|
|
10
|
+
export * from './use-object.js';
|
|
11
|
+
export * from './use-subscribe.js';
|
|
12
|
+
export * from './use-throttled-events.js';
|
|
13
|
+
export * from './use-token-refresh.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,gCAAgC,CAAA;AAC9C,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import { ClientEvents } from '../../utils/index.js';
|
|
3
|
+
import { useClient } from './use-client.js';
|
|
4
|
+
import { useObject } from './use-object.js';
|
|
5
|
+
import { useThrottledEvents } from './use-throttled-events.js';
|
|
6
|
+
/**
|
|
7
|
+
* Returns React state synchronized with the active TypeFerry authentication state.
|
|
8
|
+
*/
|
|
9
|
+
export function useAuth() {
|
|
10
|
+
const client = useClient();
|
|
11
|
+
const [authenticated, setAuthenticated] = useState(() => client.authenticated);
|
|
12
|
+
const [context, setContext] = useState(() => client.context);
|
|
13
|
+
const updateState = useCallback(() => {
|
|
14
|
+
setAuthenticated(client.authenticated);
|
|
15
|
+
setContext(client.context);
|
|
16
|
+
}, [client]);
|
|
17
|
+
useThrottledEvents(client, [
|
|
18
|
+
ClientEvents.INITIALIZED,
|
|
19
|
+
ClientEvents.LOGOUT,
|
|
20
|
+
ClientEvents.CONTEXT_CHANGED,
|
|
21
|
+
], updateState, [updateState], 16);
|
|
22
|
+
/**
|
|
23
|
+
* Reconcile after the passive subscription is installed so an auth event
|
|
24
|
+
* delivered between render and effect cannot be lost.
|
|
25
|
+
*/
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
updateState();
|
|
28
|
+
}, [updateState]);
|
|
29
|
+
return useObject({
|
|
30
|
+
client,
|
|
31
|
+
authenticated,
|
|
32
|
+
context,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=use-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-auth.js","sourceRoot":"","sources":["../../../src/react/hooks/use-auth.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IAC9E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE5D,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QACtC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,kBAAkB,CAChB,MAAM,EACN;QACE,YAAY,CAAC,WAAW;QACxB,YAAY,CAAC,MAAM;QACnB,YAAY,CAAC,eAAe;KAC7B,EACD,WAAW,EACX,CAAC,WAAW,CAAC,EACb,EAAE,CACH,CAAA;IAED;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,EAAE,CAAA;IACf,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,SAAS,CAAC;QACf,MAAM;QACN,aAAa;QACb,OAAO;KACR,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import memoizee from 'memoizee';
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { EJSON } from '../../ejson/index.js';
|
|
4
|
+
export const useCaller = ({ client, cache, maxAge }) => {
|
|
5
|
+
return useCallback(cache
|
|
6
|
+
? memoizee(client?.call, {
|
|
7
|
+
maxAge,
|
|
8
|
+
promise: true,
|
|
9
|
+
normalizer: p => EJSON.stringify(p),
|
|
10
|
+
})
|
|
11
|
+
: client?.call, [cache, client]);
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=use-caller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-caller.js","sourceRoot":"","sources":["../../../src/react/hooks/use-caller.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;IACrD,OAAO,WAAW,CAChB,KAAK;QACH,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE;YACrB,MAAM;YACN,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;SACpC,CAAC;QACJ,CAAC,CAAC,MAAM,EAAE,IAAI,EAChB,CAAC,KAAK,EAAE,MAAM,CAAC,CAChB,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useChannel(channel?: string): import("../../client/index.js").ClientChannel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-channel.js","sourceRoot":"","sources":["../../../src/react/hooks/use-channel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,MAAM,UAAU,UAAU,CAAC,UAAkB,UAAU;IACrD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { isEmpty } from '../../utils/lodash.js';
|
|
3
|
+
export function useCircuitBreaker({ parse, params, required, deps }) {
|
|
4
|
+
return useMemo(() => {
|
|
5
|
+
const result = typeof parse === 'function' ? parse(params) : void 0;
|
|
6
|
+
const hasAllRequiredParams = isEmpty(required) || required.every(key => params?.[key] != null);
|
|
7
|
+
if (result !== void 0 || !hasAllRequiredParams) {
|
|
8
|
+
return {
|
|
9
|
+
shouldCall: false,
|
|
10
|
+
placeholderValue: result,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return { shouldCall: true };
|
|
14
|
+
}, [params, parse, required, ...deps]);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=use-circuit-breaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-circuit-breaker.js","sourceRoot":"","sources":["../../../src/react/hooks/use-circuit-breaker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,MAAM,UAAU,iBAAiB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACjE,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QAEnE,MAAM,oBAAoB,GACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;QAEnE,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/C,OAAO;gBACL,UAAU,EAAE,KAAK;gBACjB,gBAAgB,EAAE,MAAM;aACzB,CAAA;QACH,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useContext } from 'react';
|
|
2
|
+
import { Environment } from '../../utils/index.js';
|
|
3
|
+
import { ClientContext } from '../components/index.js';
|
|
4
|
+
export function useClient() {
|
|
5
|
+
const client = useContext(ClientContext);
|
|
6
|
+
if (Environment.isServer)
|
|
7
|
+
return null;
|
|
8
|
+
if (!client) {
|
|
9
|
+
throw new Error('Client Not Found');
|
|
10
|
+
}
|
|
11
|
+
return client;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=use-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-client.js","sourceRoot":"","sources":["../../../src/react/hooks/use-client.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAIlC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,UAAU,SAAS;IAGvB,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;IAExC,IAAI,WAAW,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAErC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React hook for tracking TypeFerry client connection state.
|
|
3
|
+
*
|
|
4
|
+
* Uses event-driven updates via `useThrottledEvents` rather than polling.
|
|
5
|
+
* This prevents performance violations when tabs wake from sleep, where
|
|
6
|
+
* accumulated setInterval callbacks would fire all at once.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useConnectionState(): {
|
|
9
|
+
isOffline: any;
|
|
10
|
+
isOnline: any;
|
|
11
|
+
isConnecting: any;
|
|
12
|
+
isReconnecting: any;
|
|
13
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import { ClientEvents } from '../../utils/index.js';
|
|
3
|
+
import { useClient } from './use-client.js';
|
|
4
|
+
import { useThrottledEvents } from './use-throttled-events.js';
|
|
5
|
+
/**
|
|
6
|
+
* React hook for tracking TypeFerry client connection state.
|
|
7
|
+
*
|
|
8
|
+
* Uses event-driven updates via `useThrottledEvents` rather than polling.
|
|
9
|
+
* This prevents performance violations when tabs wake from sleep, where
|
|
10
|
+
* accumulated setInterval callbacks would fire all at once.
|
|
11
|
+
*/
|
|
12
|
+
export function useConnectionState() {
|
|
13
|
+
const client = useClient();
|
|
14
|
+
const [isOffline, setOffline] = useState(true);
|
|
15
|
+
const [isOnline, setOnline] = useState(false);
|
|
16
|
+
const [isConnecting, setConnecting] = useState(false);
|
|
17
|
+
const [isReconnecting, setReconnecting] = useState(false);
|
|
18
|
+
const updateConnectionState = useCallback(() => {
|
|
19
|
+
setOffline(client.isOffline);
|
|
20
|
+
setOnline(client.isOnline);
|
|
21
|
+
setConnecting(client.isConnecting);
|
|
22
|
+
}, [client]);
|
|
23
|
+
// Update state on connection events (throttled to 16ms for performance)
|
|
24
|
+
useThrottledEvents(client, [
|
|
25
|
+
ClientEvents.INITIALIZED,
|
|
26
|
+
ClientEvents.WEBSOCKET_CLOSED,
|
|
27
|
+
ClientEvents.CONNECTING,
|
|
28
|
+
], updateConnectionState, [updateConnectionState], 16);
|
|
29
|
+
// Track reconnecting state separately (emitted by VisibilityManager on visibility change)
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
if (!client)
|
|
32
|
+
return;
|
|
33
|
+
const onReconnecting = () => setReconnecting(true);
|
|
34
|
+
const onConnected = () => setReconnecting(false);
|
|
35
|
+
client.on(ClientEvents.WEBSOCKET_RECONNECTING, onReconnecting);
|
|
36
|
+
client.on(ClientEvents.INITIALIZED, onConnected);
|
|
37
|
+
return () => {
|
|
38
|
+
client.off(ClientEvents.WEBSOCKET_RECONNECTING, onReconnecting);
|
|
39
|
+
client.off(ClientEvents.INITIALIZED, onConnected);
|
|
40
|
+
};
|
|
41
|
+
}, [client]);
|
|
42
|
+
// Initialize state on mount
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
if (!client)
|
|
45
|
+
return;
|
|
46
|
+
updateConnectionState();
|
|
47
|
+
}, [client, updateConnectionState]);
|
|
48
|
+
return {
|
|
49
|
+
isOffline,
|
|
50
|
+
isOnline,
|
|
51
|
+
isConnecting,
|
|
52
|
+
isReconnecting,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=use-connection-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-connection-state.js","sourceRoot":"","sources":["../../../src/react/hooks/use-connection-state.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC9C,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrD,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEzD,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7C,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC5B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1B,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACpC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,wEAAwE;IACxE,kBAAkB,CAChB,MAAM,EACN;QACE,YAAY,CAAC,WAAW;QACxB,YAAY,CAAC,gBAAgB;QAC7B,YAAY,CAAC,UAAU;KACxB,EACD,qBAAqB,EACrB,CAAC,qBAAqB,CAAC,EACvB,EAAE,CACH,CAAA;IAED,0FAA0F;IAC1F,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAClD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QAEhD,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAA;QAC9D,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QAEhD,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAA;YAC/D,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QACnD,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,4BAA4B;IAC5B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,qBAAqB,EAAE,CAAA;IACzB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAA;IAEnC,OAAO;QACL,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,cAAc;KACf,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Avoids CommonJS interop in published browser bundles while preserving the
|
|
4
|
+
* stable instance semantics TypeFerry's providers and event hooks depend on.
|
|
5
|
+
*/
|
|
6
|
+
export function useCreation(factory, deps) {
|
|
7
|
+
const cache = useRef(null);
|
|
8
|
+
if (!cache.current || !areDepsEqual(cache.current.deps, deps)) {
|
|
9
|
+
cache.current = { deps: [...deps], value: factory() };
|
|
10
|
+
}
|
|
11
|
+
return cache.current.value;
|
|
12
|
+
}
|
|
13
|
+
function areDepsEqual(previousDeps, nextDeps) {
|
|
14
|
+
return (previousDeps.length === nextDeps.length &&
|
|
15
|
+
previousDeps.every((dep, index) => Object.is(dep, nextDeps[index])));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=use-creation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-creation.js","sourceRoot":"","sources":["../../../src/react/hooks/use-creation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAO9B;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAI,OAAgB,EAAE,IAAwB;IACvE,MAAM,KAAK,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAA;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAA;IACvD,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;AAC5B,CAAC;AAED,SAAS,YAAY,CACnB,YAAgC,EAChC,QAA4B;IAE5B,OAAO,CACL,YAAY,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QACvC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CACpE,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useDepsChange(deps: any, data?: {}): void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
export function useDepsChange(deps, data = {}) {
|
|
3
|
+
const prevDeps = useRef([]);
|
|
4
|
+
deps.forEach((value, index) => {
|
|
5
|
+
if (prevDeps.current[index] !== value) {
|
|
6
|
+
console.debug('Dep Changed', index, { prev: prevDeps.current[index] }, { next: value }, data);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
prevDeps.current = [...deps];
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=use-deps-change.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-deps-change.js","sourceRoot":"","sources":["../../../src/react/hooks/use-deps-change.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9B,MAAM,UAAU,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;IAE3B,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CACX,aAAa,EACb,KAAK,EACL,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EACjC,EAAE,IAAI,EAAE,KAAK,EAAE,EACf,IAAI,CACL,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Parameters for local event subscription — string shorthand or object config. */
|
|
2
|
+
export type UseEventParams = {
|
|
3
|
+
event: string;
|
|
4
|
+
channel?: string;
|
|
5
|
+
active?: boolean;
|
|
6
|
+
} | string;
|
|
7
|
+
/**
|
|
8
|
+
* Subscribe to a local EventEmitter2 event with automatic cleanup.
|
|
9
|
+
* Supports both string shorthand (`"eventName"`) and object config.
|
|
10
|
+
* The `active` flag (default `true`) controls whether the subscription is live.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useLocalEvent(params: UseEventParams, fn: (...args: unknown[]) => void, deps?: unknown[]): void;
|
|
13
|
+
export declare function useRemoteEvent({ event, channel, active, }: Exclude<UseEventParams, string>, fn: (...args: unknown[]) => void, deps?: unknown[]): boolean;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useCallback, useEffect } from 'react';
|
|
2
|
+
import { NO_CHANNEL } from '../../utils/index.js';
|
|
3
|
+
import { useClient } from './use-client.js';
|
|
4
|
+
import { useCreation } from './use-creation.js';
|
|
5
|
+
import { useSubscribe } from './use-subscribe.js';
|
|
6
|
+
/**
|
|
7
|
+
* Subscribe to a local EventEmitter2 event with automatic cleanup.
|
|
8
|
+
* Supports both string shorthand (`"eventName"`) and object config.
|
|
9
|
+
* The `active` flag (default `true`) controls whether the subscription is live.
|
|
10
|
+
*/
|
|
11
|
+
export function useLocalEvent(params, fn, deps = []) {
|
|
12
|
+
const { event, channel = NO_CHANNEL, active = true, } = typeof params === 'string' ? { event: params } : params;
|
|
13
|
+
const callback = useCallback(fn, deps);
|
|
14
|
+
const client = useClient();
|
|
15
|
+
const ch = useCreation(() => (typeof channel === 'string' ? client.channel(channel) : client), [channel]);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (!active)
|
|
18
|
+
return;
|
|
19
|
+
ch.on(event, callback);
|
|
20
|
+
return () => {
|
|
21
|
+
ch.off(event, callback);
|
|
22
|
+
};
|
|
23
|
+
}, [event, active, callback, ch]);
|
|
24
|
+
}
|
|
25
|
+
export function useRemoteEvent({ event, channel = NO_CHANNEL, active = true, }, fn, deps = []) {
|
|
26
|
+
return useSubscribe({
|
|
27
|
+
event,
|
|
28
|
+
channel,
|
|
29
|
+
active,
|
|
30
|
+
}, fn, deps);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=use-local-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-local-event.js","sourceRoot":"","sources":["../../../src/react/hooks/use-local-event.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAO9C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAsB,EACtB,EAAgC,EAChC,OAAkB,EAAE;IAEpB,MAAM,EACJ,KAAK,EACL,OAAO,GAAG,UAAU,EACpB,MAAM,GAAG,IAAI,GACd,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAE3D,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,MAAM,EAAE,GAAG,WAAW,CACpB,GAAG,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EACtE,CAAC,OAAO,CAAC,CACV,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAEtB,OAAO,GAAG,EAAE;YACV,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QACzB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,EACE,KAAK,EACL,OAAO,GAAG,UAAU,EACpB,MAAM,GAAG,IAAI,GACmB,EAClC,EAAgC,EAChC,OAAkB,EAAE;IAEpB,OAAO,YAAY,CACjB;QACE,KAAK;QACL,OAAO;QACP,MAAM;KACP,EACD,EAAE,EACF,IAAI,CACL,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const useMethodRefresh: ({ authenticated, caller, client, params, method, setError, setLoading, setResult, shouldCall, startLoading, methodOptions, defaultValue, deps, }: {
|
|
2
|
+
authenticated: any;
|
|
3
|
+
caller: any;
|
|
4
|
+
client: any;
|
|
5
|
+
params: any;
|
|
6
|
+
method: any;
|
|
7
|
+
setError: any;
|
|
8
|
+
setLoading: any;
|
|
9
|
+
setResult: any;
|
|
10
|
+
shouldCall: any;
|
|
11
|
+
startLoading: any;
|
|
12
|
+
methodOptions: any;
|
|
13
|
+
defaultValue: any;
|
|
14
|
+
deps: any;
|
|
15
|
+
}) => any;
|