@instantdb/solidjs 1.0.28 → 1.0.29-branch-drewh-memory-limit.25814701142.1
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/.turbo/turbo-build.log +8 -8
- package/README.md +58 -0
- package/dist/commonjs/InstantSolidDatabase.d.ts +2 -1
- package/dist/commonjs/InstantSolidDatabase.d.ts.map +1 -1
- package/dist/commonjs/InstantSolidDatabase.js +2 -0
- package/dist/commonjs/InstantSolidDatabase.js.map +1 -1
- package/dist/esm/InstantSolidDatabase.d.ts +2 -1
- package/dist/esm/InstantSolidDatabase.d.ts.map +1 -1
- package/dist/esm/InstantSolidDatabase.js +2 -0
- package/dist/esm/InstantSolidDatabase.js.map +1 -1
- package/dist/standalone/index.js +3 -2
- package/dist/standalone/index.umd.cjs +3 -3
- package/package.json +3 -3
- package/src/InstantSolidDatabase.ts +3 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
|
|
2
|
-
> @instantdb/solidjs@1.0.
|
|
2
|
+
> @instantdb/solidjs@1.0.29-branch-drewh-memory-limit.25814701142.1 build /home/runner/work/instant/instant/client/packages/solidjs
|
|
3
3
|
> rm -rf dist; npm run build:tshy && npm run build:standalone && npm run check-exports
|
|
4
4
|
|
|
5
5
|
npm warn Unknown env config "verify-deps-before-run". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
|
|
6
6
|
npm warn Unknown user config "always-auth". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
|
|
7
7
|
|
|
8
|
-
> @instantdb/solidjs@1.0.
|
|
8
|
+
> @instantdb/solidjs@1.0.29-branch-drewh-memory-limit.25814701142.1 build:tshy
|
|
9
9
|
> tshy
|
|
10
10
|
|
|
11
11
|
npm warn Unknown env config "verify-deps-before-run". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
|
|
12
12
|
npm warn Unknown user config "always-auth". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
|
|
13
13
|
|
|
14
|
-
> @instantdb/solidjs@1.0.
|
|
14
|
+
> @instantdb/solidjs@1.0.29-branch-drewh-memory-limit.25814701142.1 build:standalone
|
|
15
15
|
> vite build
|
|
16
16
|
|
|
17
17
|
[36mvite v5.4.14 [32mbuilding for production...[36m[39m
|
|
@@ -19,17 +19,17 @@ transforming...
|
|
|
19
19
|
[32m✓[39m 71 modules transformed.
|
|
20
20
|
rendering chunks...
|
|
21
21
|
computing gzip size...
|
|
22
|
-
[2mdist/standalone/[22m[36mindex.umd.cjs [39m[1m[2m159.
|
|
23
|
-
[2mdist/standalone/[22m[36mindex.js [39m[1m[2m244.
|
|
24
|
-
[32m✓ built in 1.
|
|
22
|
+
[2mdist/standalone/[22m[36mindex.umd.cjs [39m[1m[2m159.96 kB[22m[1m[22m[2m │ gzip: 48.79 kB[22m
|
|
23
|
+
[2mdist/standalone/[22m[36mindex.js [39m[1m[2m244.15 kB[22m[1m[22m[2m │ gzip: 63.05 kB[22m
|
|
24
|
+
[32m✓ built in 1.82s[39m
|
|
25
25
|
npm warn Unknown env config "verify-deps-before-run". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
|
|
26
26
|
npm warn Unknown user config "always-auth". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
|
|
27
27
|
|
|
28
|
-
> @instantdb/solidjs@1.0.
|
|
28
|
+
> @instantdb/solidjs@1.0.29-branch-drewh-memory-limit.25814701142.1 check-exports
|
|
29
29
|
> attw --pack .
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
@instantdb/solidjs v1.0.
|
|
32
|
+
@instantdb/solidjs v1.0.29-branch-drewh-memory-limit.25814701142.1
|
|
33
33
|
|
|
34
34
|
Build tools:
|
|
35
35
|
- @arethetypeswrong/cli@^0.17.4
|
package/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://instantdb.com">
|
|
3
|
+
<img alt="Shows the Instant logo" src="https://instantdb.com/img/icon/android-chrome-512x512.png" width="10%">
|
|
4
|
+
</a>
|
|
5
|
+
<h1 align="center">@instantdb/solidjs</h1>
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a
|
|
10
|
+
href="https://discord.com/invite/VU53p7uQcE" >
|
|
11
|
+
<img height=20 src="https://img.shields.io/discord/1031957483243188235" />
|
|
12
|
+
</a>
|
|
13
|
+
<img src="https://img.shields.io/github/stars/instantdb/instant" alt="stars">
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="https://www.instantdb.com/docs/start-solidjs">Get Started</a> ·
|
|
18
|
+
<a href="https://instantdb.com/examples">Examples</a> ·
|
|
19
|
+
<a href="https://www.instantdb.com/docs/start-solidjs">Docs</a> ·
|
|
20
|
+
<a href="https://discord.com/invite/VU53p7uQcE">Discord</a>
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
Welcome to [Instant's](http://instantdb.com) SolidJS SDK.
|
|
24
|
+
|
|
25
|
+
```javascript
|
|
26
|
+
// ༼ つ ◕_◕ ༽つ Real-time Chat
|
|
27
|
+
// ----------------------------------
|
|
28
|
+
// * Updates instantly
|
|
29
|
+
// * Multiplayer
|
|
30
|
+
// * Works offline
|
|
31
|
+
|
|
32
|
+
import { init, id } from '@instantdb/solidjs';
|
|
33
|
+
|
|
34
|
+
const db = init({
|
|
35
|
+
appId: import.meta.env.VITE_INSTANT_APP_ID,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
function Chat() {
|
|
39
|
+
// 1. Read
|
|
40
|
+
const query = db.useQuery({ messages: {} });
|
|
41
|
+
|
|
42
|
+
// 2. Write
|
|
43
|
+
const addMessage = (message) => {
|
|
44
|
+
db.transact(db.tx.messages[id()].update(message));
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// 3. Render!
|
|
48
|
+
return <UI data={query().data} onAdd={addMessage} />;
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
# Get Started
|
|
53
|
+
|
|
54
|
+
Follow the [getting started](https://www.instantdb.com/docs/start-solidjs) tutorial to set up a live SolidJS app in under 5 minutes!
|
|
55
|
+
|
|
56
|
+
# Questions?
|
|
57
|
+
|
|
58
|
+
If you have any questions, feel free to drop us a line on our [Discord](https://discord.com/invite/VU53p7uQcE)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AuthState, type User, type ConnectionStatus, type TransactionChunk, type RoomSchemaShape, type InstaQLOptions, type InstantConfig, type PageInfoResponse, type InstaQLLifecycleState, type InstaQLResponse, type ValidQuery, Auth, Storage, InstantCoreDatabase, InstantSchemaDef, RoomsOf, IInstantDatabase } from '@instantdb/core';
|
|
1
|
+
import { type AuthState, type User, type ConnectionStatus, type TransactionChunk, type RoomSchemaShape, type InstaQLOptions, type InstantConfig, type PageInfoResponse, type InstaQLLifecycleState, type InstaQLResponse, type ValidQuery, Auth, Storage, Streams, InstantCoreDatabase, InstantSchemaDef, RoomsOf, IInstantDatabase } from '@instantdb/core';
|
|
2
2
|
import type { Accessor } from 'solid-js';
|
|
3
3
|
import { InstantSolidRoom } from './InstantSolidRoom.js';
|
|
4
4
|
export type InfiniteQueryState<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean> = {
|
|
@@ -14,6 +14,7 @@ export declare class InstantSolidDatabase<Schema extends InstantSchemaDef<any, a
|
|
|
14
14
|
tx: import("@instantdb/core").TxChunk<Schema>;
|
|
15
15
|
auth: Auth;
|
|
16
16
|
storage: Storage;
|
|
17
|
+
streams: Streams;
|
|
17
18
|
core: InstantCoreDatabase<Schema, UseDates>;
|
|
18
19
|
constructor(core: InstantCoreDatabase<Schema, UseDates>);
|
|
19
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstantSolidDatabase.d.ts","sourceRoot":"","sources":["../../src/InstantSolidDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EAEpB,KAAK,UAAU,EAEf,IAAI,EACJ,OAAO,EAEP,mBAAmB,EAInB,gBAAgB,EAChB,OAAO,EAEP,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAS,MAAM,uBAAuB,CAAC;AAUhE,MAAM,MAAM,kBAAkB,CAC5B,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAC/B,QAAQ,SAAS,OAAO,IACtB;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACvC,IAAI,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;IACvD,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAkBF,qBAAa,oBAAoB,CAC/B,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,QAAQ,SAAS,OAAO,GAAG,KAAK,EAChC,KAAK,SAAS,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAC/C,YAAW,gBAAgB,CAAC,MAAM,CAAC;IAE5B,EAAE,4CAAoB;IAEtB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAEvC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"InstantSolidDatabase.d.ts","sourceRoot":"","sources":["../../src/InstantSolidDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,11 +33,13 @@ class InstantSolidDatabase {
|
|
|
33
33
|
tx = (0, core_1.txInit)();
|
|
34
34
|
auth;
|
|
35
35
|
storage;
|
|
36
|
+
streams;
|
|
36
37
|
core;
|
|
37
38
|
constructor(core) {
|
|
38
39
|
this.core = core;
|
|
39
40
|
this.auth = this.core.auth;
|
|
40
41
|
this.storage = this.core.storage;
|
|
42
|
+
this.streams = this.core.streams;
|
|
41
43
|
}
|
|
42
44
|
/**
|
|
43
45
|
* Returns a unique ID for a given `name`. It's stored in local storage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstantSolidDatabase.js","sourceRoot":"","sources":["../../src/InstantSolidDatabase.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n // types\n type AuthState,\n type User,\n type ConnectionStatus,\n type TransactionChunk,\n type RoomSchemaShape,\n type InstaQLOptions,\n type InstantConfig,\n type PageInfoResponse,\n type InstaQLLifecycleState,\n type InstaQLResponse,\n type InfiniteQuerySubscription,\n type ValidQuery,\n // classes\n Auth,\n Storage,\n txInit,\n InstantCoreDatabase,\n init as core_init,\n coerceQuery,\n getInfiniteQueryInitialSnapshot,\n InstantSchemaDef,\n RoomsOf,\n InstantError,\n IInstantDatabase,\n} from '@instantdb/core';\n\nimport { createSignal, createEffect, onCleanup, createMemo } from 'solid-js';\nimport type { Accessor } from 'solid-js';\n\nimport { InstantSolidRoom, rooms } from './InstantSolidRoom.js';\nimport version from './version.js';\n\nconst defaultState = {\n isLoading: true,\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n} as const;\n\nexport type InfiniteQueryState<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = {\n isLoading: boolean;\n error: { message: string } | undefined;\n data: InstaQLResponse<Schema, Q, UseDates> | undefined;\n canLoadNextPage: boolean;\n loadNextPage: () => void;\n};\n\nconst defaultAuthState: AuthState = {\n isLoading: true,\n user: undefined,\n error: undefined,\n};\n\nfunction stateForResult(result: any) {\n return {\n isLoading: !Boolean(result),\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n ...(result ? result : {}),\n };\n}\n\nexport class InstantSolidDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n Rooms extends RoomSchemaShape = RoomsOf<Schema>,\n> implements IInstantDatabase<Schema>\n{\n public tx = txInit<Schema>();\n\n public auth: Auth;\n public storage: Storage;\n public core: InstantCoreDatabase<Schema, UseDates>;\n\n constructor(core: InstantCoreDatabase<Schema, UseDates>) {\n this.core = core;\n this.auth = this.core.auth;\n this.storage = this.core.storage;\n }\n\n /**\n * Returns a unique ID for a given `name`. It's stored in local storage,\n * so you will get the same ID across sessions.\n *\n * @example\n * const deviceId = await db.getLocalId('device');\n */\n getLocalId = (name: string): Promise<string> => {\n return this.core.getLocalId(name);\n };\n\n /**\n * Use this to write data! You can create, update, delete, and link objects\n *\n * @see https://instantdb.com/docs/instaml\n *\n * @example\n * const goalId = id();\n * db.transact(db.tx.goals[goalId].update({title: \"Get fit\"}))\n */\n transact = (\n chunks: TransactionChunk<any, any> | TransactionChunk<any, any>[],\n ) => {\n return this.core.transact(chunks);\n };\n\n /**\n * One time query for the logged in state.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const user = await db.getAuth();\n * console.log('logged in as', user.email)\n */\n getAuth(): Promise<User | null> {\n return this.core.getAuth();\n }\n\n /**\n * Use this for one-off queries.\n * Returns local data if available, otherwise fetches from the server.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const resp = await db.queryOnce({ goals: {} });\n * console.log(resp.data.goals)\n */\n queryOnce = <Q extends ValidQuery<Q, Schema>>(\n query: Q,\n opts?: InstaQLOptions,\n ): Promise<{\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q>;\n }> => {\n return this.core.queryOnce(query, opts);\n };\n\n // -----------\n // Solid reactive hooks\n\n /**\n * Use this to query your data!\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const state = db.useQuery({ goals: {} });\n * // state().isLoading, state().error, state().data\n */\n useQuery = <Q extends ValidQuery<Q, Schema>>(\n query: (() => null | Q) | null | Q,\n opts?: InstaQLOptions,\n ): Accessor<InstaQLLifecycleState<Schema, Q, UseDates>> => {\n const [state, setState] = createSignal<\n InstaQLLifecycleState<Schema, Q, UseDates>\n >(defaultState as InstaQLLifecycleState<Schema, Q, UseDates>);\n\n createEffect(() => {\n const resolvedQuery = typeof query === 'function' ? query() : query;\n\n if (!resolvedQuery) {\n setState(\n () => defaultState as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n return;\n }\n\n let q = resolvedQuery;\n if (opts && 'ruleParams' in opts) {\n q = { $$ruleParams: (opts as any)['ruleParams'], ...q };\n }\n\n const coerced = coerceQuery(q);\n const prev = this.core._reactor.getPreviousResult(coerced);\n if (prev) {\n setState(\n () =>\n stateForResult(prev) as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n }\n\n const unsub = this.core.subscribeQuery<Q, UseDates>(coerced, (result) => {\n setState(\n () =>\n Object.assign(\n {\n isLoading: false,\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n },\n result,\n ) as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n });\n\n onCleanup(unsub);\n });\n\n return state;\n };\n\n /**\n * Subscribe to a query and incrementally load more items.\n *\n * Only one top level namespace in the query is allowed.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const state = db.useInfiniteQuery({\n * posts: {\n * $: {\n * limit: 20,\n * order: { createdAt: 'desc' },\n * },\n * },\n * });\n * // state().data, state().isLoading, state().error,\n * // state().canLoadNextPage, state().loadNextPage()\n */\n useInfiniteQuery = <Q extends ValidQuery<Q, Schema>>(\n query: (() => null | Q) | null | Q,\n opts?: InstaQLOptions,\n ): Accessor<InfiniteQueryState<Schema, Q, UseDates>> => {\n let sub: InfiniteQuerySubscription | null = null;\n const loadNextPage = () => sub?.loadNextPage();\n\n const [state, setState] = createSignal<\n InfiniteQueryState<Schema, Q, UseDates>\n >({\n isLoading: true,\n error: undefined,\n data: undefined,\n canLoadNextPage: false,\n loadNextPage,\n });\n\n createEffect(() => {\n const resolvedQuery = typeof query === 'function' ? query() : query;\n\n if (!resolvedQuery) {\n sub = null;\n setState(() => ({\n isLoading: true,\n error: undefined,\n data: undefined,\n canLoadNextPage: false,\n loadNextPage,\n }));\n return;\n }\n\n const snapshot = getInfiniteQueryInitialSnapshot<Schema, Q, UseDates>(\n this.core,\n resolvedQuery,\n opts,\n );\n setState(() => ({\n ...snapshot,\n isLoading: !snapshot.data && !snapshot.error,\n loadNextPage,\n }));\n\n sub = this.core.subscribeInfiniteQuery<Q>(\n resolvedQuery,\n (resp) => {\n setState(() => ({\n ...resp,\n isLoading: false,\n loadNextPage,\n }));\n },\n opts,\n );\n\n onCleanup(() => {\n sub?.unsubscribe();\n sub = null;\n });\n });\n\n return state;\n };\n\n /**\n * Listen for the logged in state. This is useful\n * for deciding when to show a login screen.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * function App() {\n * const auth = db.useAuth();\n * // auth().isLoading, auth().user, auth().error\n * }\n */\n useAuth = (): Accessor<AuthState> => {\n const [state, setState] = createSignal<AuthState>(\n this.core._reactor._currentUserCached ?? defaultAuthState,\n );\n\n createEffect(() => {\n const unsub = this.core.subscribeAuth((auth) => {\n setState({ isLoading: false, ...auth });\n });\n\n onCleanup(unsub);\n });\n\n return state;\n };\n\n /**\n * Subscribe to the currently logged in user.\n * If the user is not logged in, this will throw an Error.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * function UserDisplay() {\n * const user = db.useUser();\n * return <div>Logged in as: {user().email}</div>\n * }\n */\n useUser = (): Accessor<User> => {\n const auth = this.useAuth();\n return createMemo(() => {\n const { user } = auth();\n if (!user) {\n throw new InstantError(\n 'useUser must be used within an auth-protected route',\n );\n }\n return user;\n });\n };\n\n /**\n * Listen for connection status changes to Instant.\n *\n * @see https://www.instantdb.com/docs/patterns#connection-status\n * @example\n * function App() {\n * const status = db.useConnectionStatus();\n * return <div>Connection state: {status()}</div>\n * }\n */\n useConnectionStatus = (): Accessor<ConnectionStatus> => {\n const [status, setStatus] = createSignal<ConnectionStatus>(\n this.core._reactor.status as ConnectionStatus,\n );\n\n createEffect(() => {\n const unsub = this.core.subscribeConnectionStatus((newStatus) => {\n setStatus(() => newStatus);\n });\n\n onCleanup(unsub);\n });\n\n return status;\n };\n\n /**\n * A hook that returns a unique ID for a given `name`. localIds are\n * stored in local storage, so you will get the same ID across sessions.\n *\n * Initially returns `null`, and then loads the localId.\n *\n * @example\n * const deviceId = db.useLocalId('device');\n * // deviceId() is null initially, then the ID string\n */\n useLocalId = (name: string): Accessor<string | null> => {\n const [localId, setLocalId] = createSignal<string | null>(null);\n\n createEffect(() => {\n let mounted = true;\n this.getLocalId(name).then((id) => {\n if (mounted) {\n setLocalId(() => id);\n }\n });\n onCleanup(() => {\n mounted = false;\n });\n });\n\n return localId;\n };\n\n /**\n * Obtain a handle to a room, which allows you to listen to topics and presence data\n *\n * @see https://instantdb.com/docs/presence-and-topics\n *\n * @example\n * const room = db.room('chat', roomId);\n * const presence = db.rooms.usePresence(room);\n */\n room<RoomType extends keyof Rooms>(\n type: RoomType = '_defaultRoomType' as RoomType,\n id: string = '_defaultRoomId',\n ) {\n return new InstantSolidRoom<Schema, Rooms, RoomType>(this.core, type, id);\n }\n\n /**\n * Hooks for working with rooms\n *\n * @see https://instantdb.com/docs/presence-and-topics\n *\n * @example\n * const room = db.room('chat', roomId);\n * const presence = db.rooms.usePresence(room);\n * const publish = db.rooms.usePublishTopic(room, 'emoji');\n */\n rooms = rooms;\n}\n\n// -----------\n// init\n\n/**\n * The first step: init your application!\n *\n * Visit https://instantdb.com/dash to get your `appId` :)\n *\n * @example\n * import { init } from \"@instantdb/solidjs\"\n *\n * const db = init({ appId: \"my-app-id\" })\n *\n * // You can also provide a schema for type safety and editor autocomplete!\n *\n * import { init } from \"@instantdb/solidjs\"\n * import schema from \"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n */\nexport function init<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n>(\n config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {\n useDateObjects?: UseDates;\n },\n): InstantSolidDatabase<Schema, UseDates> {\n const coreDb = core_init<Schema, UseDates>(config, undefined, undefined, {\n '@instantdb/solidjs': version,\n });\n return new InstantSolidDatabase<Schema, UseDates>(coreDb);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InstantSolidDatabase.js","sourceRoot":"","sources":["../../src/InstantSolidDatabase.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n // types\n type AuthState,\n type User,\n type ConnectionStatus,\n type TransactionChunk,\n type RoomSchemaShape,\n type InstaQLOptions,\n type InstantConfig,\n type PageInfoResponse,\n type InstaQLLifecycleState,\n type InstaQLResponse,\n type InfiniteQuerySubscription,\n type ValidQuery,\n // classes\n Auth,\n Storage,\n Streams,\n txInit,\n InstantCoreDatabase,\n init as core_init,\n coerceQuery,\n getInfiniteQueryInitialSnapshot,\n InstantSchemaDef,\n RoomsOf,\n InstantError,\n IInstantDatabase,\n} from '@instantdb/core';\n\nimport { createSignal, createEffect, onCleanup, createMemo } from 'solid-js';\nimport type { Accessor } from 'solid-js';\n\nimport { InstantSolidRoom, rooms } from './InstantSolidRoom.js';\nimport version from './version.js';\n\nconst defaultState = {\n isLoading: true,\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n} as const;\n\nexport type InfiniteQueryState<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = {\n isLoading: boolean;\n error: { message: string } | undefined;\n data: InstaQLResponse<Schema, Q, UseDates> | undefined;\n canLoadNextPage: boolean;\n loadNextPage: () => void;\n};\n\nconst defaultAuthState: AuthState = {\n isLoading: true,\n user: undefined,\n error: undefined,\n};\n\nfunction stateForResult(result: any) {\n return {\n isLoading: !Boolean(result),\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n ...(result ? result : {}),\n };\n}\n\nexport class InstantSolidDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n Rooms extends RoomSchemaShape = RoomsOf<Schema>,\n> implements IInstantDatabase<Schema>\n{\n public tx = txInit<Schema>();\n\n public auth: Auth;\n public storage: Storage;\n public streams: Streams;\n public core: InstantCoreDatabase<Schema, UseDates>;\n\n constructor(core: InstantCoreDatabase<Schema, UseDates>) {\n this.core = core;\n this.auth = this.core.auth;\n this.storage = this.core.storage;\n this.streams = this.core.streams;\n }\n\n /**\n * Returns a unique ID for a given `name`. It's stored in local storage,\n * so you will get the same ID across sessions.\n *\n * @example\n * const deviceId = await db.getLocalId('device');\n */\n getLocalId = (name: string): Promise<string> => {\n return this.core.getLocalId(name);\n };\n\n /**\n * Use this to write data! You can create, update, delete, and link objects\n *\n * @see https://instantdb.com/docs/instaml\n *\n * @example\n * const goalId = id();\n * db.transact(db.tx.goals[goalId].update({title: \"Get fit\"}))\n */\n transact = (\n chunks: TransactionChunk<any, any> | TransactionChunk<any, any>[],\n ) => {\n return this.core.transact(chunks);\n };\n\n /**\n * One time query for the logged in state.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const user = await db.getAuth();\n * console.log('logged in as', user.email)\n */\n getAuth(): Promise<User | null> {\n return this.core.getAuth();\n }\n\n /**\n * Use this for one-off queries.\n * Returns local data if available, otherwise fetches from the server.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const resp = await db.queryOnce({ goals: {} });\n * console.log(resp.data.goals)\n */\n queryOnce = <Q extends ValidQuery<Q, Schema>>(\n query: Q,\n opts?: InstaQLOptions,\n ): Promise<{\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q>;\n }> => {\n return this.core.queryOnce(query, opts);\n };\n\n // -----------\n // Solid reactive hooks\n\n /**\n * Use this to query your data!\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const state = db.useQuery({ goals: {} });\n * // state().isLoading, state().error, state().data\n */\n useQuery = <Q extends ValidQuery<Q, Schema>>(\n query: (() => null | Q) | null | Q,\n opts?: InstaQLOptions,\n ): Accessor<InstaQLLifecycleState<Schema, Q, UseDates>> => {\n const [state, setState] = createSignal<\n InstaQLLifecycleState<Schema, Q, UseDates>\n >(defaultState as InstaQLLifecycleState<Schema, Q, UseDates>);\n\n createEffect(() => {\n const resolvedQuery = typeof query === 'function' ? query() : query;\n\n if (!resolvedQuery) {\n setState(\n () => defaultState as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n return;\n }\n\n let q = resolvedQuery;\n if (opts && 'ruleParams' in opts) {\n q = { $$ruleParams: (opts as any)['ruleParams'], ...q };\n }\n\n const coerced = coerceQuery(q);\n const prev = this.core._reactor.getPreviousResult(coerced);\n if (prev) {\n setState(\n () =>\n stateForResult(prev) as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n }\n\n const unsub = this.core.subscribeQuery<Q, UseDates>(coerced, (result) => {\n setState(\n () =>\n Object.assign(\n {\n isLoading: false,\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n },\n result,\n ) as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n });\n\n onCleanup(unsub);\n });\n\n return state;\n };\n\n /**\n * Subscribe to a query and incrementally load more items.\n *\n * Only one top level namespace in the query is allowed.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const state = db.useInfiniteQuery({\n * posts: {\n * $: {\n * limit: 20,\n * order: { createdAt: 'desc' },\n * },\n * },\n * });\n * // state().data, state().isLoading, state().error,\n * // state().canLoadNextPage, state().loadNextPage()\n */\n useInfiniteQuery = <Q extends ValidQuery<Q, Schema>>(\n query: (() => null | Q) | null | Q,\n opts?: InstaQLOptions,\n ): Accessor<InfiniteQueryState<Schema, Q, UseDates>> => {\n let sub: InfiniteQuerySubscription | null = null;\n const loadNextPage = () => sub?.loadNextPage();\n\n const [state, setState] = createSignal<\n InfiniteQueryState<Schema, Q, UseDates>\n >({\n isLoading: true,\n error: undefined,\n data: undefined,\n canLoadNextPage: false,\n loadNextPage,\n });\n\n createEffect(() => {\n const resolvedQuery = typeof query === 'function' ? query() : query;\n\n if (!resolvedQuery) {\n sub = null;\n setState(() => ({\n isLoading: true,\n error: undefined,\n data: undefined,\n canLoadNextPage: false,\n loadNextPage,\n }));\n return;\n }\n\n const snapshot = getInfiniteQueryInitialSnapshot<Schema, Q, UseDates>(\n this.core,\n resolvedQuery,\n opts,\n );\n setState(() => ({\n ...snapshot,\n isLoading: !snapshot.data && !snapshot.error,\n loadNextPage,\n }));\n\n sub = this.core.subscribeInfiniteQuery<Q>(\n resolvedQuery,\n (resp) => {\n setState(() => ({\n ...resp,\n isLoading: false,\n loadNextPage,\n }));\n },\n opts,\n );\n\n onCleanup(() => {\n sub?.unsubscribe();\n sub = null;\n });\n });\n\n return state;\n };\n\n /**\n * Listen for the logged in state. This is useful\n * for deciding when to show a login screen.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * function App() {\n * const auth = db.useAuth();\n * // auth().isLoading, auth().user, auth().error\n * }\n */\n useAuth = (): Accessor<AuthState> => {\n const [state, setState] = createSignal<AuthState>(\n this.core._reactor._currentUserCached ?? defaultAuthState,\n );\n\n createEffect(() => {\n const unsub = this.core.subscribeAuth((auth) => {\n setState({ isLoading: false, ...auth });\n });\n\n onCleanup(unsub);\n });\n\n return state;\n };\n\n /**\n * Subscribe to the currently logged in user.\n * If the user is not logged in, this will throw an Error.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * function UserDisplay() {\n * const user = db.useUser();\n * return <div>Logged in as: {user().email}</div>\n * }\n */\n useUser = (): Accessor<User> => {\n const auth = this.useAuth();\n return createMemo(() => {\n const { user } = auth();\n if (!user) {\n throw new InstantError(\n 'useUser must be used within an auth-protected route',\n );\n }\n return user;\n });\n };\n\n /**\n * Listen for connection status changes to Instant.\n *\n * @see https://www.instantdb.com/docs/patterns#connection-status\n * @example\n * function App() {\n * const status = db.useConnectionStatus();\n * return <div>Connection state: {status()}</div>\n * }\n */\n useConnectionStatus = (): Accessor<ConnectionStatus> => {\n const [status, setStatus] = createSignal<ConnectionStatus>(\n this.core._reactor.status as ConnectionStatus,\n );\n\n createEffect(() => {\n const unsub = this.core.subscribeConnectionStatus((newStatus) => {\n setStatus(() => newStatus);\n });\n\n onCleanup(unsub);\n });\n\n return status;\n };\n\n /**\n * A hook that returns a unique ID for a given `name`. localIds are\n * stored in local storage, so you will get the same ID across sessions.\n *\n * Initially returns `null`, and then loads the localId.\n *\n * @example\n * const deviceId = db.useLocalId('device');\n * // deviceId() is null initially, then the ID string\n */\n useLocalId = (name: string): Accessor<string | null> => {\n const [localId, setLocalId] = createSignal<string | null>(null);\n\n createEffect(() => {\n let mounted = true;\n this.getLocalId(name).then((id) => {\n if (mounted) {\n setLocalId(() => id);\n }\n });\n onCleanup(() => {\n mounted = false;\n });\n });\n\n return localId;\n };\n\n /**\n * Obtain a handle to a room, which allows you to listen to topics and presence data\n *\n * @see https://instantdb.com/docs/presence-and-topics\n *\n * @example\n * const room = db.room('chat', roomId);\n * const presence = db.rooms.usePresence(room);\n */\n room<RoomType extends keyof Rooms>(\n type: RoomType = '_defaultRoomType' as RoomType,\n id: string = '_defaultRoomId',\n ) {\n return new InstantSolidRoom<Schema, Rooms, RoomType>(this.core, type, id);\n }\n\n /**\n * Hooks for working with rooms\n *\n * @see https://instantdb.com/docs/presence-and-topics\n *\n * @example\n * const room = db.room('chat', roomId);\n * const presence = db.rooms.usePresence(room);\n * const publish = db.rooms.usePublishTopic(room, 'emoji');\n */\n rooms = rooms;\n}\n\n// -----------\n// init\n\n/**\n * The first step: init your application!\n *\n * Visit https://instantdb.com/dash to get your `appId` :)\n *\n * @example\n * import { init } from \"@instantdb/solidjs\"\n *\n * const db = init({ appId: \"my-app-id\" })\n *\n * // You can also provide a schema for type safety and editor autocomplete!\n *\n * import { init } from \"@instantdb/solidjs\"\n * import schema from \"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n */\nexport function init<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n>(\n config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {\n useDateObjects?: UseDates;\n },\n): InstantSolidDatabase<Schema, UseDates> {\n const coreDb = core_init<Schema, UseDates>(config, undefined, undefined, {\n '@instantdb/solidjs': version,\n });\n return new InstantSolidDatabase<Schema, UseDates>(coreDb);\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AuthState, type User, type ConnectionStatus, type TransactionChunk, type RoomSchemaShape, type InstaQLOptions, type InstantConfig, type PageInfoResponse, type InstaQLLifecycleState, type InstaQLResponse, type ValidQuery, Auth, Storage, InstantCoreDatabase, InstantSchemaDef, RoomsOf, IInstantDatabase } from '@instantdb/core';
|
|
1
|
+
import { type AuthState, type User, type ConnectionStatus, type TransactionChunk, type RoomSchemaShape, type InstaQLOptions, type InstantConfig, type PageInfoResponse, type InstaQLLifecycleState, type InstaQLResponse, type ValidQuery, Auth, Storage, Streams, InstantCoreDatabase, InstantSchemaDef, RoomsOf, IInstantDatabase } from '@instantdb/core';
|
|
2
2
|
import type { Accessor } from 'solid-js';
|
|
3
3
|
import { InstantSolidRoom } from './InstantSolidRoom.js';
|
|
4
4
|
export type InfiniteQueryState<Schema extends InstantSchemaDef<any, any, any>, Q extends ValidQuery<Q, Schema>, UseDates extends boolean> = {
|
|
@@ -14,6 +14,7 @@ export declare class InstantSolidDatabase<Schema extends InstantSchemaDef<any, a
|
|
|
14
14
|
tx: import("@instantdb/core").TxChunk<Schema>;
|
|
15
15
|
auth: Auth;
|
|
16
16
|
storage: Storage;
|
|
17
|
+
streams: Streams;
|
|
17
18
|
core: InstantCoreDatabase<Schema, UseDates>;
|
|
18
19
|
constructor(core: InstantCoreDatabase<Schema, UseDates>);
|
|
19
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstantSolidDatabase.d.ts","sourceRoot":"","sources":["../../src/InstantSolidDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EAEpB,KAAK,UAAU,EAEf,IAAI,EACJ,OAAO,EAEP,mBAAmB,EAInB,gBAAgB,EAChB,OAAO,EAEP,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAS,MAAM,uBAAuB,CAAC;AAUhE,MAAM,MAAM,kBAAkB,CAC5B,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,CAAC,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAC/B,QAAQ,SAAS,OAAO,IACtB;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACvC,IAAI,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;IACvD,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAkBF,qBAAa,oBAAoB,CAC/B,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,QAAQ,SAAS,OAAO,GAAG,KAAK,EAChC,KAAK,SAAS,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAC/C,YAAW,gBAAgB,CAAC,MAAM,CAAC;IAE5B,EAAE,4CAAoB;IAEtB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAEvC,IAAI,EAAE,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"InstantSolidDatabase.d.ts","sourceRoot":"","sources":["../../src/InstantSolidDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,11 +26,13 @@ export class InstantSolidDatabase {
|
|
|
26
26
|
tx = txInit();
|
|
27
27
|
auth;
|
|
28
28
|
storage;
|
|
29
|
+
streams;
|
|
29
30
|
core;
|
|
30
31
|
constructor(core) {
|
|
31
32
|
this.core = core;
|
|
32
33
|
this.auth = this.core.auth;
|
|
33
34
|
this.storage = this.core.storage;
|
|
35
|
+
this.streams = this.core.streams;
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* Returns a unique ID for a given `name`. It's stored in local storage,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstantSolidDatabase.js","sourceRoot":"","sources":["../../src/InstantSolidDatabase.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n // types\n type AuthState,\n type User,\n type ConnectionStatus,\n type TransactionChunk,\n type RoomSchemaShape,\n type InstaQLOptions,\n type InstantConfig,\n type PageInfoResponse,\n type InstaQLLifecycleState,\n type InstaQLResponse,\n type InfiniteQuerySubscription,\n type ValidQuery,\n // classes\n Auth,\n Storage,\n txInit,\n InstantCoreDatabase,\n init as core_init,\n coerceQuery,\n getInfiniteQueryInitialSnapshot,\n InstantSchemaDef,\n RoomsOf,\n InstantError,\n IInstantDatabase,\n} from '@instantdb/core';\n\nimport { createSignal, createEffect, onCleanup, createMemo } from 'solid-js';\nimport type { Accessor } from 'solid-js';\n\nimport { InstantSolidRoom, rooms } from './InstantSolidRoom.js';\nimport version from './version.js';\n\nconst defaultState = {\n isLoading: true,\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n} as const;\n\nexport type InfiniteQueryState<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = {\n isLoading: boolean;\n error: { message: string } | undefined;\n data: InstaQLResponse<Schema, Q, UseDates> | undefined;\n canLoadNextPage: boolean;\n loadNextPage: () => void;\n};\n\nconst defaultAuthState: AuthState = {\n isLoading: true,\n user: undefined,\n error: undefined,\n};\n\nfunction stateForResult(result: any) {\n return {\n isLoading: !Boolean(result),\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n ...(result ? result : {}),\n };\n}\n\nexport class InstantSolidDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n Rooms extends RoomSchemaShape = RoomsOf<Schema>,\n> implements IInstantDatabase<Schema>\n{\n public tx = txInit<Schema>();\n\n public auth: Auth;\n public storage: Storage;\n public core: InstantCoreDatabase<Schema, UseDates>;\n\n constructor(core: InstantCoreDatabase<Schema, UseDates>) {\n this.core = core;\n this.auth = this.core.auth;\n this.storage = this.core.storage;\n }\n\n /**\n * Returns a unique ID for a given `name`. It's stored in local storage,\n * so you will get the same ID across sessions.\n *\n * @example\n * const deviceId = await db.getLocalId('device');\n */\n getLocalId = (name: string): Promise<string> => {\n return this.core.getLocalId(name);\n };\n\n /**\n * Use this to write data! You can create, update, delete, and link objects\n *\n * @see https://instantdb.com/docs/instaml\n *\n * @example\n * const goalId = id();\n * db.transact(db.tx.goals[goalId].update({title: \"Get fit\"}))\n */\n transact = (\n chunks: TransactionChunk<any, any> | TransactionChunk<any, any>[],\n ) => {\n return this.core.transact(chunks);\n };\n\n /**\n * One time query for the logged in state.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const user = await db.getAuth();\n * console.log('logged in as', user.email)\n */\n getAuth(): Promise<User | null> {\n return this.core.getAuth();\n }\n\n /**\n * Use this for one-off queries.\n * Returns local data if available, otherwise fetches from the server.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const resp = await db.queryOnce({ goals: {} });\n * console.log(resp.data.goals)\n */\n queryOnce = <Q extends ValidQuery<Q, Schema>>(\n query: Q,\n opts?: InstaQLOptions,\n ): Promise<{\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q>;\n }> => {\n return this.core.queryOnce(query, opts);\n };\n\n // -----------\n // Solid reactive hooks\n\n /**\n * Use this to query your data!\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const state = db.useQuery({ goals: {} });\n * // state().isLoading, state().error, state().data\n */\n useQuery = <Q extends ValidQuery<Q, Schema>>(\n query: (() => null | Q) | null | Q,\n opts?: InstaQLOptions,\n ): Accessor<InstaQLLifecycleState<Schema, Q, UseDates>> => {\n const [state, setState] = createSignal<\n InstaQLLifecycleState<Schema, Q, UseDates>\n >(defaultState as InstaQLLifecycleState<Schema, Q, UseDates>);\n\n createEffect(() => {\n const resolvedQuery = typeof query === 'function' ? query() : query;\n\n if (!resolvedQuery) {\n setState(\n () => defaultState as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n return;\n }\n\n let q = resolvedQuery;\n if (opts && 'ruleParams' in opts) {\n q = { $$ruleParams: (opts as any)['ruleParams'], ...q };\n }\n\n const coerced = coerceQuery(q);\n const prev = this.core._reactor.getPreviousResult(coerced);\n if (prev) {\n setState(\n () =>\n stateForResult(prev) as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n }\n\n const unsub = this.core.subscribeQuery<Q, UseDates>(coerced, (result) => {\n setState(\n () =>\n Object.assign(\n {\n isLoading: false,\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n },\n result,\n ) as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n });\n\n onCleanup(unsub);\n });\n\n return state;\n };\n\n /**\n * Subscribe to a query and incrementally load more items.\n *\n * Only one top level namespace in the query is allowed.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const state = db.useInfiniteQuery({\n * posts: {\n * $: {\n * limit: 20,\n * order: { createdAt: 'desc' },\n * },\n * },\n * });\n * // state().data, state().isLoading, state().error,\n * // state().canLoadNextPage, state().loadNextPage()\n */\n useInfiniteQuery = <Q extends ValidQuery<Q, Schema>>(\n query: (() => null | Q) | null | Q,\n opts?: InstaQLOptions,\n ): Accessor<InfiniteQueryState<Schema, Q, UseDates>> => {\n let sub: InfiniteQuerySubscription | null = null;\n const loadNextPage = () => sub?.loadNextPage();\n\n const [state, setState] = createSignal<\n InfiniteQueryState<Schema, Q, UseDates>\n >({\n isLoading: true,\n error: undefined,\n data: undefined,\n canLoadNextPage: false,\n loadNextPage,\n });\n\n createEffect(() => {\n const resolvedQuery = typeof query === 'function' ? query() : query;\n\n if (!resolvedQuery) {\n sub = null;\n setState(() => ({\n isLoading: true,\n error: undefined,\n data: undefined,\n canLoadNextPage: false,\n loadNextPage,\n }));\n return;\n }\n\n const snapshot = getInfiniteQueryInitialSnapshot<Schema, Q, UseDates>(\n this.core,\n resolvedQuery,\n opts,\n );\n setState(() => ({\n ...snapshot,\n isLoading: !snapshot.data && !snapshot.error,\n loadNextPage,\n }));\n\n sub = this.core.subscribeInfiniteQuery<Q>(\n resolvedQuery,\n (resp) => {\n setState(() => ({\n ...resp,\n isLoading: false,\n loadNextPage,\n }));\n },\n opts,\n );\n\n onCleanup(() => {\n sub?.unsubscribe();\n sub = null;\n });\n });\n\n return state;\n };\n\n /**\n * Listen for the logged in state. This is useful\n * for deciding when to show a login screen.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * function App() {\n * const auth = db.useAuth();\n * // auth().isLoading, auth().user, auth().error\n * }\n */\n useAuth = (): Accessor<AuthState> => {\n const [state, setState] = createSignal<AuthState>(\n this.core._reactor._currentUserCached ?? defaultAuthState,\n );\n\n createEffect(() => {\n const unsub = this.core.subscribeAuth((auth) => {\n setState({ isLoading: false, ...auth });\n });\n\n onCleanup(unsub);\n });\n\n return state;\n };\n\n /**\n * Subscribe to the currently logged in user.\n * If the user is not logged in, this will throw an Error.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * function UserDisplay() {\n * const user = db.useUser();\n * return <div>Logged in as: {user().email}</div>\n * }\n */\n useUser = (): Accessor<User> => {\n const auth = this.useAuth();\n return createMemo(() => {\n const { user } = auth();\n if (!user) {\n throw new InstantError(\n 'useUser must be used within an auth-protected route',\n );\n }\n return user;\n });\n };\n\n /**\n * Listen for connection status changes to Instant.\n *\n * @see https://www.instantdb.com/docs/patterns#connection-status\n * @example\n * function App() {\n * const status = db.useConnectionStatus();\n * return <div>Connection state: {status()}</div>\n * }\n */\n useConnectionStatus = (): Accessor<ConnectionStatus> => {\n const [status, setStatus] = createSignal<ConnectionStatus>(\n this.core._reactor.status as ConnectionStatus,\n );\n\n createEffect(() => {\n const unsub = this.core.subscribeConnectionStatus((newStatus) => {\n setStatus(() => newStatus);\n });\n\n onCleanup(unsub);\n });\n\n return status;\n };\n\n /**\n * A hook that returns a unique ID for a given `name`. localIds are\n * stored in local storage, so you will get the same ID across sessions.\n *\n * Initially returns `null`, and then loads the localId.\n *\n * @example\n * const deviceId = db.useLocalId('device');\n * // deviceId() is null initially, then the ID string\n */\n useLocalId = (name: string): Accessor<string | null> => {\n const [localId, setLocalId] = createSignal<string | null>(null);\n\n createEffect(() => {\n let mounted = true;\n this.getLocalId(name).then((id) => {\n if (mounted) {\n setLocalId(() => id);\n }\n });\n onCleanup(() => {\n mounted = false;\n });\n });\n\n return localId;\n };\n\n /**\n * Obtain a handle to a room, which allows you to listen to topics and presence data\n *\n * @see https://instantdb.com/docs/presence-and-topics\n *\n * @example\n * const room = db.room('chat', roomId);\n * const presence = db.rooms.usePresence(room);\n */\n room<RoomType extends keyof Rooms>(\n type: RoomType = '_defaultRoomType' as RoomType,\n id: string = '_defaultRoomId',\n ) {\n return new InstantSolidRoom<Schema, Rooms, RoomType>(this.core, type, id);\n }\n\n /**\n * Hooks for working with rooms\n *\n * @see https://instantdb.com/docs/presence-and-topics\n *\n * @example\n * const room = db.room('chat', roomId);\n * const presence = db.rooms.usePresence(room);\n * const publish = db.rooms.usePublishTopic(room, 'emoji');\n */\n rooms = rooms;\n}\n\n// -----------\n// init\n\n/**\n * The first step: init your application!\n *\n * Visit https://instantdb.com/dash to get your `appId` :)\n *\n * @example\n * import { init } from \"@instantdb/solidjs\"\n *\n * const db = init({ appId: \"my-app-id\" })\n *\n * // You can also provide a schema for type safety and editor autocomplete!\n *\n * import { init } from \"@instantdb/solidjs\"\n * import schema from \"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n */\nexport function init<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n>(\n config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {\n useDateObjects?: UseDates;\n },\n): InstantSolidDatabase<Schema, UseDates> {\n const coreDb = core_init<Schema, UseDates>(config, undefined, undefined, {\n '@instantdb/solidjs': version,\n });\n return new InstantSolidDatabase<Schema, UseDates>(coreDb);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InstantSolidDatabase.js","sourceRoot":"","sources":["../../src/InstantSolidDatabase.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n // types\n type AuthState,\n type User,\n type ConnectionStatus,\n type TransactionChunk,\n type RoomSchemaShape,\n type InstaQLOptions,\n type InstantConfig,\n type PageInfoResponse,\n type InstaQLLifecycleState,\n type InstaQLResponse,\n type InfiniteQuerySubscription,\n type ValidQuery,\n // classes\n Auth,\n Storage,\n Streams,\n txInit,\n InstantCoreDatabase,\n init as core_init,\n coerceQuery,\n getInfiniteQueryInitialSnapshot,\n InstantSchemaDef,\n RoomsOf,\n InstantError,\n IInstantDatabase,\n} from '@instantdb/core';\n\nimport { createSignal, createEffect, onCleanup, createMemo } from 'solid-js';\nimport type { Accessor } from 'solid-js';\n\nimport { InstantSolidRoom, rooms } from './InstantSolidRoom.js';\nimport version from './version.js';\n\nconst defaultState = {\n isLoading: true,\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n} as const;\n\nexport type InfiniteQueryState<\n Schema extends InstantSchemaDef<any, any, any>,\n Q extends ValidQuery<Q, Schema>,\n UseDates extends boolean,\n> = {\n isLoading: boolean;\n error: { message: string } | undefined;\n data: InstaQLResponse<Schema, Q, UseDates> | undefined;\n canLoadNextPage: boolean;\n loadNextPage: () => void;\n};\n\nconst defaultAuthState: AuthState = {\n isLoading: true,\n user: undefined,\n error: undefined,\n};\n\nfunction stateForResult(result: any) {\n return {\n isLoading: !Boolean(result),\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n ...(result ? result : {}),\n };\n}\n\nexport class InstantSolidDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n Rooms extends RoomSchemaShape = RoomsOf<Schema>,\n> implements IInstantDatabase<Schema>\n{\n public tx = txInit<Schema>();\n\n public auth: Auth;\n public storage: Storage;\n public streams: Streams;\n public core: InstantCoreDatabase<Schema, UseDates>;\n\n constructor(core: InstantCoreDatabase<Schema, UseDates>) {\n this.core = core;\n this.auth = this.core.auth;\n this.storage = this.core.storage;\n this.streams = this.core.streams;\n }\n\n /**\n * Returns a unique ID for a given `name`. It's stored in local storage,\n * so you will get the same ID across sessions.\n *\n * @example\n * const deviceId = await db.getLocalId('device');\n */\n getLocalId = (name: string): Promise<string> => {\n return this.core.getLocalId(name);\n };\n\n /**\n * Use this to write data! You can create, update, delete, and link objects\n *\n * @see https://instantdb.com/docs/instaml\n *\n * @example\n * const goalId = id();\n * db.transact(db.tx.goals[goalId].update({title: \"Get fit\"}))\n */\n transact = (\n chunks: TransactionChunk<any, any> | TransactionChunk<any, any>[],\n ) => {\n return this.core.transact(chunks);\n };\n\n /**\n * One time query for the logged in state.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const user = await db.getAuth();\n * console.log('logged in as', user.email)\n */\n getAuth(): Promise<User | null> {\n return this.core.getAuth();\n }\n\n /**\n * Use this for one-off queries.\n * Returns local data if available, otherwise fetches from the server.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const resp = await db.queryOnce({ goals: {} });\n * console.log(resp.data.goals)\n */\n queryOnce = <Q extends ValidQuery<Q, Schema>>(\n query: Q,\n opts?: InstaQLOptions,\n ): Promise<{\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q>;\n }> => {\n return this.core.queryOnce(query, opts);\n };\n\n // -----------\n // Solid reactive hooks\n\n /**\n * Use this to query your data!\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const state = db.useQuery({ goals: {} });\n * // state().isLoading, state().error, state().data\n */\n useQuery = <Q extends ValidQuery<Q, Schema>>(\n query: (() => null | Q) | null | Q,\n opts?: InstaQLOptions,\n ): Accessor<InstaQLLifecycleState<Schema, Q, UseDates>> => {\n const [state, setState] = createSignal<\n InstaQLLifecycleState<Schema, Q, UseDates>\n >(defaultState as InstaQLLifecycleState<Schema, Q, UseDates>);\n\n createEffect(() => {\n const resolvedQuery = typeof query === 'function' ? query() : query;\n\n if (!resolvedQuery) {\n setState(\n () => defaultState as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n return;\n }\n\n let q = resolvedQuery;\n if (opts && 'ruleParams' in opts) {\n q = { $$ruleParams: (opts as any)['ruleParams'], ...q };\n }\n\n const coerced = coerceQuery(q);\n const prev = this.core._reactor.getPreviousResult(coerced);\n if (prev) {\n setState(\n () =>\n stateForResult(prev) as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n }\n\n const unsub = this.core.subscribeQuery<Q, UseDates>(coerced, (result) => {\n setState(\n () =>\n Object.assign(\n {\n isLoading: false,\n data: undefined,\n pageInfo: undefined,\n error: undefined,\n },\n result,\n ) as InstaQLLifecycleState<Schema, Q, UseDates>,\n );\n });\n\n onCleanup(unsub);\n });\n\n return state;\n };\n\n /**\n * Subscribe to a query and incrementally load more items.\n *\n * Only one top level namespace in the query is allowed.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * const state = db.useInfiniteQuery({\n * posts: {\n * $: {\n * limit: 20,\n * order: { createdAt: 'desc' },\n * },\n * },\n * });\n * // state().data, state().isLoading, state().error,\n * // state().canLoadNextPage, state().loadNextPage()\n */\n useInfiniteQuery = <Q extends ValidQuery<Q, Schema>>(\n query: (() => null | Q) | null | Q,\n opts?: InstaQLOptions,\n ): Accessor<InfiniteQueryState<Schema, Q, UseDates>> => {\n let sub: InfiniteQuerySubscription | null = null;\n const loadNextPage = () => sub?.loadNextPage();\n\n const [state, setState] = createSignal<\n InfiniteQueryState<Schema, Q, UseDates>\n >({\n isLoading: true,\n error: undefined,\n data: undefined,\n canLoadNextPage: false,\n loadNextPage,\n });\n\n createEffect(() => {\n const resolvedQuery = typeof query === 'function' ? query() : query;\n\n if (!resolvedQuery) {\n sub = null;\n setState(() => ({\n isLoading: true,\n error: undefined,\n data: undefined,\n canLoadNextPage: false,\n loadNextPage,\n }));\n return;\n }\n\n const snapshot = getInfiniteQueryInitialSnapshot<Schema, Q, UseDates>(\n this.core,\n resolvedQuery,\n opts,\n );\n setState(() => ({\n ...snapshot,\n isLoading: !snapshot.data && !snapshot.error,\n loadNextPage,\n }));\n\n sub = this.core.subscribeInfiniteQuery<Q>(\n resolvedQuery,\n (resp) => {\n setState(() => ({\n ...resp,\n isLoading: false,\n loadNextPage,\n }));\n },\n opts,\n );\n\n onCleanup(() => {\n sub?.unsubscribe();\n sub = null;\n });\n });\n\n return state;\n };\n\n /**\n * Listen for the logged in state. This is useful\n * for deciding when to show a login screen.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * function App() {\n * const auth = db.useAuth();\n * // auth().isLoading, auth().user, auth().error\n * }\n */\n useAuth = (): Accessor<AuthState> => {\n const [state, setState] = createSignal<AuthState>(\n this.core._reactor._currentUserCached ?? defaultAuthState,\n );\n\n createEffect(() => {\n const unsub = this.core.subscribeAuth((auth) => {\n setState({ isLoading: false, ...auth });\n });\n\n onCleanup(unsub);\n });\n\n return state;\n };\n\n /**\n * Subscribe to the currently logged in user.\n * If the user is not logged in, this will throw an Error.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * function UserDisplay() {\n * const user = db.useUser();\n * return <div>Logged in as: {user().email}</div>\n * }\n */\n useUser = (): Accessor<User> => {\n const auth = this.useAuth();\n return createMemo(() => {\n const { user } = auth();\n if (!user) {\n throw new InstantError(\n 'useUser must be used within an auth-protected route',\n );\n }\n return user;\n });\n };\n\n /**\n * Listen for connection status changes to Instant.\n *\n * @see https://www.instantdb.com/docs/patterns#connection-status\n * @example\n * function App() {\n * const status = db.useConnectionStatus();\n * return <div>Connection state: {status()}</div>\n * }\n */\n useConnectionStatus = (): Accessor<ConnectionStatus> => {\n const [status, setStatus] = createSignal<ConnectionStatus>(\n this.core._reactor.status as ConnectionStatus,\n );\n\n createEffect(() => {\n const unsub = this.core.subscribeConnectionStatus((newStatus) => {\n setStatus(() => newStatus);\n });\n\n onCleanup(unsub);\n });\n\n return status;\n };\n\n /**\n * A hook that returns a unique ID for a given `name`. localIds are\n * stored in local storage, so you will get the same ID across sessions.\n *\n * Initially returns `null`, and then loads the localId.\n *\n * @example\n * const deviceId = db.useLocalId('device');\n * // deviceId() is null initially, then the ID string\n */\n useLocalId = (name: string): Accessor<string | null> => {\n const [localId, setLocalId] = createSignal<string | null>(null);\n\n createEffect(() => {\n let mounted = true;\n this.getLocalId(name).then((id) => {\n if (mounted) {\n setLocalId(() => id);\n }\n });\n onCleanup(() => {\n mounted = false;\n });\n });\n\n return localId;\n };\n\n /**\n * Obtain a handle to a room, which allows you to listen to topics and presence data\n *\n * @see https://instantdb.com/docs/presence-and-topics\n *\n * @example\n * const room = db.room('chat', roomId);\n * const presence = db.rooms.usePresence(room);\n */\n room<RoomType extends keyof Rooms>(\n type: RoomType = '_defaultRoomType' as RoomType,\n id: string = '_defaultRoomId',\n ) {\n return new InstantSolidRoom<Schema, Rooms, RoomType>(this.core, type, id);\n }\n\n /**\n * Hooks for working with rooms\n *\n * @see https://instantdb.com/docs/presence-and-topics\n *\n * @example\n * const room = db.room('chat', roomId);\n * const presence = db.rooms.usePresence(room);\n * const publish = db.rooms.usePublishTopic(room, 'emoji');\n */\n rooms = rooms;\n}\n\n// -----------\n// init\n\n/**\n * The first step: init your application!\n *\n * Visit https://instantdb.com/dash to get your `appId` :)\n *\n * @example\n * import { init } from \"@instantdb/solidjs\"\n *\n * const db = init({ appId: \"my-app-id\" })\n *\n * // You can also provide a schema for type safety and editor autocomplete!\n *\n * import { init } from \"@instantdb/solidjs\"\n * import schema from \"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n */\nexport function init<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n>(\n config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {\n useDateObjects?: UseDates;\n },\n): InstantSolidDatabase<Schema, UseDates> {\n const coreDb = core_init<Schema, UseDates>(config, undefined, undefined, {\n '@instantdb/solidjs': version,\n });\n return new InstantSolidDatabase<Schema, UseDates>(coreDb);\n}\n"]}
|
package/dist/standalone/index.js
CHANGED
|
@@ -3506,7 +3506,7 @@ function $n(t) {
|
|
|
3506
3506
|
}, e;
|
|
3507
3507
|
}, {});
|
|
3508
3508
|
}
|
|
3509
|
-
const cn = "v1.0.
|
|
3509
|
+
const cn = "v1.0.29-branch-drewh-memory-limit.25814701142.1";
|
|
3510
3510
|
function $o(t, e) {
|
|
3511
3511
|
return {
|
|
3512
3512
|
info: t ? (...n) => console.info(...n, e()) : () => {
|
|
@@ -7797,6 +7797,7 @@ class lc {
|
|
|
7797
7797
|
h(this, "tx", on());
|
|
7798
7798
|
h(this, "auth");
|
|
7799
7799
|
h(this, "storage");
|
|
7800
|
+
h(this, "streams");
|
|
7800
7801
|
h(this, "core");
|
|
7801
7802
|
/**
|
|
7802
7803
|
* Returns a unique ID for a given `name`. It's stored in local storage,
|
|
@@ -8031,7 +8032,7 @@ class lc {
|
|
|
8031
8032
|
* const publish = db.rooms.usePublishTopic(room, 'emoji');
|
|
8032
8033
|
*/
|
|
8033
8034
|
h(this, "rooms", zr);
|
|
8034
|
-
this.core = e, this.auth = this.core.auth, this.storage = this.core.storage;
|
|
8035
|
+
this.core = e, this.auth = this.core.auth, this.storage = this.core.storage, this.streams = this.core.streams;
|
|
8035
8036
|
}
|
|
8036
8037
|
/**
|
|
8037
8038
|
* One time query for the logged in state.
|