@instantdb/react 0.22.73-experimental.test-type-tests.19720374813.1 → 0.22.74-experimental.drewh-docs-header.19831292909.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.
Files changed (44) hide show
  1. package/dist/commonjs/Cursors.js +1 -1
  2. package/dist/commonjs/Cursors.js.map +1 -1
  3. package/dist/commonjs/InstantReactWebDatabase.d.ts +1 -1
  4. package/dist/commonjs/InstantReactWebDatabase.d.ts.map +1 -1
  5. package/dist/commonjs/InstantReactWebDatabase.js.map +1 -1
  6. package/dist/commonjs/init.d.ts +1 -3
  7. package/dist/commonjs/init.d.ts.map +1 -1
  8. package/dist/commonjs/init.js +2 -7
  9. package/dist/commonjs/init.js.map +1 -1
  10. package/dist/esm/Cursors.js +1 -1
  11. package/dist/esm/Cursors.js.map +1 -1
  12. package/dist/esm/InstantReactWebDatabase.d.ts +1 -1
  13. package/dist/esm/InstantReactWebDatabase.d.ts.map +1 -1
  14. package/dist/esm/InstantReactWebDatabase.js.map +1 -1
  15. package/dist/esm/init.d.ts +1 -3
  16. package/dist/esm/init.d.ts.map +1 -1
  17. package/dist/esm/init.js +2 -7
  18. package/dist/esm/init.js.map +1 -1
  19. package/dist/standalone/index.js +27 -40
  20. package/dist/standalone/index.umd.cjs +10 -10
  21. package/package.json +4 -6
  22. package/src/Cursors.tsx +2 -2
  23. package/src/InstantReactWebDatabase.ts +3 -4
  24. package/src/init.ts +8 -17
  25. package/tsconfig.json +2 -3
  26. package/dist/commonjs/__types__/typeUtils.d.ts +0 -20
  27. package/dist/commonjs/__types__/typeUtils.d.ts.map +0 -1
  28. package/dist/commonjs/__types__/typeUtils.js +0 -5
  29. package/dist/commonjs/__types__/typeUtils.js.map +0 -1
  30. package/dist/commonjs/__types__/typesTests.d.ts +0 -2
  31. package/dist/commonjs/__types__/typesTests.d.ts.map +0 -1
  32. package/dist/commonjs/__types__/typesTests.js +0 -53
  33. package/dist/commonjs/__types__/typesTests.js.map +0 -1
  34. package/dist/esm/__types__/typeUtils.d.ts +0 -20
  35. package/dist/esm/__types__/typeUtils.d.ts.map +0 -1
  36. package/dist/esm/__types__/typeUtils.js +0 -4
  37. package/dist/esm/__types__/typeUtils.js.map +0 -1
  38. package/dist/esm/__types__/typesTests.d.ts +0 -2
  39. package/dist/esm/__types__/typesTests.d.ts.map +0 -1
  40. package/dist/esm/__types__/typesTests.js +0 -51
  41. package/dist/esm/__types__/typesTests.js.map +0 -1
  42. package/src/__types__/typeUtils.ts +0 -39
  43. package/src/__types__/typesTests.ts +0 -86
  44. package/tsconfig.test.json +0 -5
@@ -69,7 +69,7 @@ function Cursors({ as = 'div', spaceId: _spaceId, room, className, style, userCu
69
69
  return null;
70
70
  return ((0, jsx_runtime_1.jsx)("div", { style: Object.assign(Object.assign({}, absStyles), { transform: `translate(${cursor.xPercent}%, ${cursor.yPercent}%)`, transformOrigin: '0 0', transition: 'transform 100ms' }), children: renderCursor ? (renderCursor({
71
71
  color: cursor.color,
72
- presence: fullPresence === null || fullPresence === void 0 ? void 0 : fullPresence.peers[id],
72
+ presence: fullPresence.peers[id],
73
73
  })) : ((0, jsx_runtime_1.jsx)(Cursor, Object.assign({}, cursor))) }, id));
74
74
  }) }, spaceId),
75
75
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"Cursors.js","sourceRoot":"","sources":["../../src/Cursors.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createElement,\n type ReactNode,\n type MouseEvent,\n type TouchEvent,\n type CSSProperties,\n} from 'react';\nimport { type InstantReactRoom } from '@instantdb/react-common';\nimport type { RoomSchemaShape } from '@instantdb/core';\n\nexport function Cursors<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n>({\n as = 'div',\n spaceId: _spaceId,\n room,\n className,\n style,\n userCursorColor,\n children,\n renderCursor,\n propagate,\n zIndex,\n}: {\n spaceId?: string;\n room: InstantReactRoom<any, RoomSchema, RoomType>;\n style?: React.CSSProperties;\n userCursorColor?: string;\n as?: any;\n className?: string;\n children?: ReactNode;\n renderCursor?: (props: {\n color: string;\n presence: RoomSchema[RoomType]['presence'];\n }) => ReactNode;\n propagate?: boolean;\n zIndex?: number;\n}) {\n const spaceId =\n _spaceId || `cursors-space-default--${String(room.type)}-${room.id}`;\n\n const cursorsPresence = room.usePresence({\n keys: [spaceId] as (keyof RoomSchema[RoomType]['presence'])[],\n });\n\n const fullPresence = room._core._reactor.getPresence(room.type, room.id);\n\n function publishCursor(\n rect: DOMRect,\n touch: { clientX: number; clientY: number },\n ) {\n const x = touch.clientX;\n const y = touch.clientY;\n const xPercent = ((x - rect.left) / rect.width) * 100;\n const yPercent = ((y - rect.top) / rect.height) * 100;\n cursorsPresence.publishPresence({\n [spaceId]: {\n x,\n y,\n xPercent,\n yPercent,\n color: userCursorColor,\n },\n } as RoomSchema[RoomType]['presence']);\n }\n\n function onMouseMove(e: MouseEvent) {\n if (!propagate) {\n e.stopPropagation();\n }\n\n const rect = e.currentTarget.getBoundingClientRect();\n publishCursor(rect, e);\n }\n\n function onMouseOut(e: MouseEvent) {\n cursorsPresence.publishPresence({\n [spaceId]: undefined,\n } as RoomSchema[RoomType]['presence']);\n }\n\n function onTouchMove(e: TouchEvent) {\n if (e.touches.length !== 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (touch.target instanceof Element) {\n if (!propagate) {\n e.stopPropagation();\n }\n const rect = touch.target.getBoundingClientRect();\n publishCursor(rect, touch);\n }\n }\n\n function onTouchEnd(e: TouchEvent) {\n cursorsPresence.publishPresence({\n [spaceId]: undefined,\n } as RoomSchema[RoomType]['presence']);\n }\n\n return createElement(\n as,\n {\n onMouseMove,\n onMouseOut,\n onTouchMove,\n onTouchEnd,\n className,\n style: {\n position: 'relative',\n ...style,\n },\n },\n [\n children,\n <div\n key={spaceId}\n style={{\n ...absStyles,\n ...inertStyles,\n zIndex: zIndex !== undefined ? zIndex : defaultZ,\n }}\n >\n {Object.entries(cursorsPresence.peers).map(([id, presence]) => {\n const cursor = presence[spaceId];\n if (!cursor) return null;\n\n return (\n <div\n key={id}\n style={{\n ...absStyles,\n transform: `translate(${cursor.xPercent}%, ${cursor.yPercent}%)`,\n transformOrigin: '0 0',\n transition: 'transform 100ms',\n }}\n >\n {renderCursor ? (\n renderCursor({\n color: cursor.color,\n presence: fullPresence?.peers[id],\n })\n ) : (\n <Cursor {...cursor} />\n )}\n </div>\n );\n })}\n </div>,\n ],\n );\n}\n\nfunction Cursor({ color }: { color: string }) {\n const size = 35;\n const fill = color || 'black';\n\n return (\n <svg\n style={{ height: size, width: size }}\n viewBox={`0 0 ${size} ${size}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n fill=\"rgba(0,0,0,.2)\"\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z\" />\n <path d=\"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z\" />\n </g>\n <g\n fill=\"white\"\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z\" />\n <path d=\"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z\" />\n </g>\n <g\n fill={fill}\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z\" />\n <path d=\"m13 10.814v11.188l2.969-2.866.428-.139h4.768z\" />\n </g>\n </svg>\n );\n}\n\nconst absStyles: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\nconst inertStyles: CSSProperties = {\n overflow: 'hidden',\n pointerEvents: 'none',\n userSelect: 'none',\n};\n\nconst defaultZ = 99999;\n"]}
1
+ {"version":3,"file":"Cursors.js","sourceRoot":"","sources":["../../src/Cursors.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createElement,\n type ReactNode,\n type MouseEvent,\n type TouchEvent,\n type CSSProperties,\n} from 'react';\nimport { type InstantReactRoom } from '@instantdb/react-common';\nimport type { RoomSchemaShape } from '@instantdb/core';\n\nexport function Cursors<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n>({\n as = 'div',\n spaceId: _spaceId,\n room,\n className,\n style,\n userCursorColor,\n children,\n renderCursor,\n propagate,\n zIndex,\n}: {\n spaceId?: string;\n room: InstantReactRoom<any, RoomSchema, RoomType>;\n style?: React.CSSProperties;\n userCursorColor?: string;\n as?: any;\n className?: string;\n children?: ReactNode;\n renderCursor?: (props: {\n color: string;\n presence: RoomSchema[RoomType]['presence'];\n }) => ReactNode;\n propagate?: boolean;\n zIndex?: number;\n}) {\n const spaceId =\n _spaceId || `cursors-space-default--${String(room.type)}-${room.id}`;\n\n const cursorsPresence = room.usePresence({\n keys: [spaceId],\n });\n\n const fullPresence = room._core._reactor.getPresence(room.type, room.id);\n\n function publishCursor(\n rect: DOMRect,\n touch: { clientX: number; clientY: number },\n ) {\n const x = touch.clientX;\n const y = touch.clientY;\n const xPercent = ((x - rect.left) / rect.width) * 100;\n const yPercent = ((y - rect.top) / rect.height) * 100;\n cursorsPresence.publishPresence({\n [spaceId]: {\n x,\n y,\n xPercent,\n yPercent,\n color: userCursorColor,\n },\n } as RoomSchema[RoomType]['presence']);\n }\n\n function onMouseMove(e: MouseEvent) {\n if (!propagate) {\n e.stopPropagation();\n }\n\n const rect = e.currentTarget.getBoundingClientRect();\n publishCursor(rect, e);\n }\n\n function onMouseOut(e: MouseEvent) {\n cursorsPresence.publishPresence({\n [spaceId]: undefined,\n } as RoomSchema[RoomType]['presence']);\n }\n\n function onTouchMove(e: TouchEvent) {\n if (e.touches.length !== 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (touch.target instanceof Element) {\n if (!propagate) {\n e.stopPropagation();\n }\n const rect = touch.target.getBoundingClientRect();\n publishCursor(rect, touch);\n }\n }\n\n function onTouchEnd(e: TouchEvent) {\n cursorsPresence.publishPresence({\n [spaceId]: undefined,\n } as RoomSchema[RoomType]['presence']);\n }\n\n return createElement(\n as,\n {\n onMouseMove,\n onMouseOut,\n onTouchMove,\n onTouchEnd,\n className,\n style: {\n position: 'relative',\n ...style,\n },\n },\n [\n children,\n <div\n key={spaceId}\n style={{\n ...absStyles,\n ...inertStyles,\n zIndex: zIndex !== undefined ? zIndex : defaultZ,\n }}\n >\n {Object.entries(cursorsPresence.peers).map(([id, presence]) => {\n const cursor = presence[spaceId];\n if (!cursor) return null;\n\n return (\n <div\n key={id}\n style={{\n ...absStyles,\n transform: `translate(${cursor.xPercent}%, ${cursor.yPercent}%)`,\n transformOrigin: '0 0',\n transition: 'transform 100ms',\n }}\n >\n {renderCursor ? (\n renderCursor({\n color: cursor.color,\n presence: fullPresence.peers[id],\n })\n ) : (\n <Cursor {...cursor} />\n )}\n </div>\n );\n })}\n </div>,\n ],\n );\n}\n\nfunction Cursor({ color }: { color: string }) {\n const size = 35;\n const fill = color || 'black';\n\n return (\n <svg\n style={{ height: size, width: size }}\n viewBox={`0 0 ${size} ${size}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n fill=\"rgba(0,0,0,.2)\"\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z\" />\n <path d=\"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z\" />\n </g>\n <g\n fill=\"white\"\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z\" />\n <path d=\"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z\" />\n </g>\n <g\n fill={fill}\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z\" />\n <path d=\"m13 10.814v11.188l2.969-2.866.428-.139h4.768z\" />\n </g>\n </svg>\n );\n}\n\nconst absStyles: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\nconst inertStyles: CSSProperties = {\n overflow: 'hidden',\n pointerEvents: 'none',\n userSelect: 'none',\n};\n\nconst defaultZ = 99999;\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { InstantConfig, InstantSchemaDef } from '@instantdb/core';
2
2
  import { InstantReactAbstractDatabase } from '@instantdb/react-common';
3
3
  import { EventSource } from 'eventsource';
4
- export default class InstantReactWebDatabase<Schema extends InstantSchemaDef<any, any, any>, UseDates extends boolean = false, Config extends InstantConfig<Schema, UseDates> = InstantConfig<Schema, UseDates>> extends InstantReactAbstractDatabase<Schema, UseDates, Config> {
4
+ export default class InstantReactWebDatabase<Schema extends InstantSchemaDef<any, any, any>, Config extends InstantConfig<Schema, boolean> = InstantConfig<Schema, boolean>> extends InstantReactAbstractDatabase<Schema, Config> {
5
5
  static EventSourceImpl: typeof EventSource;
6
6
  }
7
7
  //# sourceMappingURL=InstantReactWebDatabase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InstantReactWebDatabase.d.ts","sourceRoot":"","sources":["../../src/InstantReactWebDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,uBAAuB,CAC1C,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,QAAQ,SAAS,OAAO,GAAG,KAAK,EAChC,MAAM,SAAS,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,aAAa,CAC5D,MAAM,EACN,QAAQ,CACT,CACD,SAAQ,4BAA4B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC9D,MAAM,CAAC,eAAe,qBAAe;CACtC"}
1
+ {"version":3,"file":"InstantReactWebDatabase.d.ts","sourceRoot":"","sources":["../../src/InstantReactWebDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,uBAAuB,CAC1C,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,MAAM,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAC3D,MAAM,EACN,OAAO,CACR,CACD,SAAQ,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,MAAM,CAAC,eAAe,qBAAe;CACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"InstantReactWebDatabase.js","sourceRoot":"","sources":["../../src/InstantReactWebDatabase.ts"],"names":[],"mappings":";;AACA,0DAAuE;AACvE,6CAA0C;AAE1C,MAAqB,uBAOnB,SAAQ,2CAAsD;;AACvD,uCAAe,GAAG,yBAAW,CAAC;kBARlB,uBAAuB","sourcesContent":["import type { InstantConfig, InstantSchemaDef } from '@instantdb/core';\nimport { InstantReactAbstractDatabase } from '@instantdb/react-common';\nimport { EventSource } from 'eventsource';\n\nexport default class InstantReactWebDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n Config extends InstantConfig<Schema, UseDates> = InstantConfig<\n Schema,\n UseDates\n >,\n> extends InstantReactAbstractDatabase<Schema, UseDates, Config> {\n static EventSourceImpl = EventSource;\n}\n"]}
1
+ {"version":3,"file":"InstantReactWebDatabase.js","sourceRoot":"","sources":["../../src/InstantReactWebDatabase.ts"],"names":[],"mappings":";;AACA,0DAAuE;AACvE,6CAA0C;AAE1C,MAAqB,uBAMnB,SAAQ,2CAA4C;;AAC7C,uCAAe,GAAG,yBAAW,CAAC;kBAPlB,uBAAuB","sourcesContent":["import type { InstantConfig, InstantSchemaDef } from '@instantdb/core';\nimport { InstantReactAbstractDatabase } from '@instantdb/react-common';\nimport { EventSource } from 'eventsource';\n\nexport default class InstantReactWebDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n Config extends InstantConfig<Schema, boolean> = InstantConfig<\n Schema,\n boolean\n >,\n> extends InstantReactAbstractDatabase<Schema, Config> {\n static EventSourceImpl = EventSource;\n}\n"]}
@@ -20,9 +20,7 @@ import InstantReactWebDatabase from './InstantReactWebDatabase.ts';
20
20
  *
21
21
  * // To learn more: https://instantdb.com/docs/modeling-data
22
22
  */
23
- export declare function init<Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema, UseDates extends boolean = false>(config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {
24
- useDateObjects?: UseDates;
25
- }): InstantReactWebDatabase<Schema, UseDates, InstantConfig<Schema, UseDates>>;
23
+ export declare function init<Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema, UseDates extends boolean = false>(config: InstantConfig<Schema, UseDates>): InstantReactWebDatabase<Schema, InstantConfig<Schema, UseDates>>;
26
24
  /**
27
25
  * @deprecated
28
26
  * `init_experimental` is deprecated. You can replace it with `init`.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,IAAI,CAClB,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,EACrE,QAAQ,SAAS,OAAO,GAAG,KAAK,EAIhC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAC,GAAG;IAChE,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC3B,GACA,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAY5E;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,aAAO,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,IAAI,CAClB,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,EACrE,QAAQ,SAAS,OAAO,GAAG,KAAK,EAEhC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtC,uBAAuB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAOlE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,aAAO,CAAC"}
@@ -27,13 +27,8 @@ const version_ts_1 = __importDefault(require("./version.js"));
27
27
  *
28
28
  * // To learn more: https://instantdb.com/docs/modeling-data
29
29
  */
30
- function init(
31
- // Allows config with missing `useDateObjects`, but keeps `UseDates`
32
- // as a non-nullable in the InstantConfig type.
33
- config) {
34
- var _a;
35
- const configStrict = Object.assign(Object.assign({}, config), { useDateObjects: ((_a = config.useDateObjects) !== null && _a !== void 0 ? _a : false) });
36
- return new InstantReactWebDatabase_ts_1.default(configStrict, {
30
+ function init(config) {
31
+ return new InstantReactWebDatabase_ts_1.default(config, {
37
32
  '@instantdb/react': version_ts_1.default,
38
33
  });
39
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":";;;;;;AA6BA,oBAqBC;AA5CD,8FAAmE;AACnE,8DAAmC;AAEnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,IAAI;AAIlB,oEAAoE;AACpE,+CAA+C;AAC/C,MAEC;;IAED,MAAM,YAAY,mCACb,MAAM,KACT,cAAc,EAAE,CAAC,MAAA,MAAM,CAAC,cAAc,mCAAI,KAAK,CAAa,GAC7D,CAAC;IACF,OAAO,IAAI,oCAAuB,CAIhC,YAAY,EAAE;QACd,kBAAkB,EAAE,oBAAO;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACU,QAAA,iBAAiB,GAAG,IAAI,CAAC","sourcesContent":["import type {\n InstantConfig,\n InstantSchemaDef,\n InstantUnknownSchema,\n} from '@instantdb/core';\n\nimport InstantReactWebDatabase from './InstantReactWebDatabase.ts';\nimport version from './version.ts';\n\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/react\"\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/react\"\n * import schema from \"\"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n *\n * // To learn more: https://instantdb.com/docs/modeling-data\n */\nexport function init<\n Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema,\n UseDates extends boolean = false,\n>(\n // Allows config with missing `useDateObjects`, but keeps `UseDates`\n // as a non-nullable in the InstantConfig type.\n config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {\n useDateObjects?: UseDates;\n },\n): InstantReactWebDatabase<Schema, UseDates, InstantConfig<Schema, UseDates>> {\n const configStrict = {\n ...config,\n useDateObjects: (config.useDateObjects ?? false) as UseDates,\n };\n return new InstantReactWebDatabase<\n Schema,\n UseDates,\n InstantConfig<Schema, UseDates>\n >(configStrict, {\n '@instantdb/react': version,\n });\n}\n\n/**\n * @deprecated\n * `init_experimental` is deprecated. You can replace it with `init`.\n *\n * @example\n *\n * // Before\n * import { init_experimental } from \"@instantdb/react\"\n * const db = init_experimental({ ... });\n *\n * // After\n * import { init } from \"@instantdb/react\"\n * const db = init({ ... });\n */\nexport const init_experimental = init;\n"]}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":";;;;;;AA6BA,oBAYC;AAnCD,8FAAmE;AACnE,8DAAmC;AAEnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,IAAI,CAIlB,MAAuC;IAEvC,OAAO,IAAI,oCAAuB,CAChC,MAAM,EACN;QACE,kBAAkB,EAAE,oBAAO;KAC5B,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACU,QAAA,iBAAiB,GAAG,IAAI,CAAC","sourcesContent":["import type {\n InstantConfig,\n InstantSchemaDef,\n InstantUnknownSchema,\n} from '@instantdb/core';\n\nimport InstantReactWebDatabase from './InstantReactWebDatabase.ts';\nimport version from './version.ts';\n\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/react\"\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/react\"\n * import schema from \"\"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n *\n * // To learn more: https://instantdb.com/docs/modeling-data\n */\nexport function init<\n Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema,\n UseDates extends boolean = false,\n>(\n config: InstantConfig<Schema, UseDates>,\n): InstantReactWebDatabase<Schema, InstantConfig<Schema, UseDates>> {\n return new InstantReactWebDatabase<Schema, InstantConfig<Schema, UseDates>>(\n config,\n {\n '@instantdb/react': version,\n },\n );\n}\n\n/**\n * @deprecated\n * `init_experimental` is deprecated. You can replace it with `init`.\n *\n * @example\n *\n * // Before\n * import { init_experimental } from \"@instantdb/react\"\n * const db = init_experimental({ ... });\n *\n * // After\n * import { init } from \"@instantdb/react\"\n * const db = init({ ... });\n */\nexport const init_experimental = init;\n"]}
@@ -66,7 +66,7 @@ export function Cursors({ as = 'div', spaceId: _spaceId, room, className, style,
66
66
  return null;
67
67
  return (_jsx("div", { style: Object.assign(Object.assign({}, absStyles), { transform: `translate(${cursor.xPercent}%, ${cursor.yPercent}%)`, transformOrigin: '0 0', transition: 'transform 100ms' }), children: renderCursor ? (renderCursor({
68
68
  color: cursor.color,
69
- presence: fullPresence === null || fullPresence === void 0 ? void 0 : fullPresence.peers[id],
69
+ presence: fullPresence.peers[id],
70
70
  })) : (_jsx(Cursor, Object.assign({}, cursor))) }, id));
71
71
  }) }, spaceId),
72
72
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"Cursors.js","sourceRoot":"","sources":["../../src/Cursors.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createElement,\n type ReactNode,\n type MouseEvent,\n type TouchEvent,\n type CSSProperties,\n} from 'react';\nimport { type InstantReactRoom } from '@instantdb/react-common';\nimport type { RoomSchemaShape } from '@instantdb/core';\n\nexport function Cursors<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n>({\n as = 'div',\n spaceId: _spaceId,\n room,\n className,\n style,\n userCursorColor,\n children,\n renderCursor,\n propagate,\n zIndex,\n}: {\n spaceId?: string;\n room: InstantReactRoom<any, RoomSchema, RoomType>;\n style?: React.CSSProperties;\n userCursorColor?: string;\n as?: any;\n className?: string;\n children?: ReactNode;\n renderCursor?: (props: {\n color: string;\n presence: RoomSchema[RoomType]['presence'];\n }) => ReactNode;\n propagate?: boolean;\n zIndex?: number;\n}) {\n const spaceId =\n _spaceId || `cursors-space-default--${String(room.type)}-${room.id}`;\n\n const cursorsPresence = room.usePresence({\n keys: [spaceId] as (keyof RoomSchema[RoomType]['presence'])[],\n });\n\n const fullPresence = room._core._reactor.getPresence(room.type, room.id);\n\n function publishCursor(\n rect: DOMRect,\n touch: { clientX: number; clientY: number },\n ) {\n const x = touch.clientX;\n const y = touch.clientY;\n const xPercent = ((x - rect.left) / rect.width) * 100;\n const yPercent = ((y - rect.top) / rect.height) * 100;\n cursorsPresence.publishPresence({\n [spaceId]: {\n x,\n y,\n xPercent,\n yPercent,\n color: userCursorColor,\n },\n } as RoomSchema[RoomType]['presence']);\n }\n\n function onMouseMove(e: MouseEvent) {\n if (!propagate) {\n e.stopPropagation();\n }\n\n const rect = e.currentTarget.getBoundingClientRect();\n publishCursor(rect, e);\n }\n\n function onMouseOut(e: MouseEvent) {\n cursorsPresence.publishPresence({\n [spaceId]: undefined,\n } as RoomSchema[RoomType]['presence']);\n }\n\n function onTouchMove(e: TouchEvent) {\n if (e.touches.length !== 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (touch.target instanceof Element) {\n if (!propagate) {\n e.stopPropagation();\n }\n const rect = touch.target.getBoundingClientRect();\n publishCursor(rect, touch);\n }\n }\n\n function onTouchEnd(e: TouchEvent) {\n cursorsPresence.publishPresence({\n [spaceId]: undefined,\n } as RoomSchema[RoomType]['presence']);\n }\n\n return createElement(\n as,\n {\n onMouseMove,\n onMouseOut,\n onTouchMove,\n onTouchEnd,\n className,\n style: {\n position: 'relative',\n ...style,\n },\n },\n [\n children,\n <div\n key={spaceId}\n style={{\n ...absStyles,\n ...inertStyles,\n zIndex: zIndex !== undefined ? zIndex : defaultZ,\n }}\n >\n {Object.entries(cursorsPresence.peers).map(([id, presence]) => {\n const cursor = presence[spaceId];\n if (!cursor) return null;\n\n return (\n <div\n key={id}\n style={{\n ...absStyles,\n transform: `translate(${cursor.xPercent}%, ${cursor.yPercent}%)`,\n transformOrigin: '0 0',\n transition: 'transform 100ms',\n }}\n >\n {renderCursor ? (\n renderCursor({\n color: cursor.color,\n presence: fullPresence?.peers[id],\n })\n ) : (\n <Cursor {...cursor} />\n )}\n </div>\n );\n })}\n </div>,\n ],\n );\n}\n\nfunction Cursor({ color }: { color: string }) {\n const size = 35;\n const fill = color || 'black';\n\n return (\n <svg\n style={{ height: size, width: size }}\n viewBox={`0 0 ${size} ${size}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n fill=\"rgba(0,0,0,.2)\"\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z\" />\n <path d=\"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z\" />\n </g>\n <g\n fill=\"white\"\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z\" />\n <path d=\"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z\" />\n </g>\n <g\n fill={fill}\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z\" />\n <path d=\"m13 10.814v11.188l2.969-2.866.428-.139h4.768z\" />\n </g>\n </svg>\n );\n}\n\nconst absStyles: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\nconst inertStyles: CSSProperties = {\n overflow: 'hidden',\n pointerEvents: 'none',\n userSelect: 'none',\n};\n\nconst defaultZ = 99999;\n"]}
1
+ {"version":3,"file":"Cursors.js","sourceRoot":"","sources":["../../src/Cursors.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createElement,\n type ReactNode,\n type MouseEvent,\n type TouchEvent,\n type CSSProperties,\n} from 'react';\nimport { type InstantReactRoom } from '@instantdb/react-common';\nimport type { RoomSchemaShape } from '@instantdb/core';\n\nexport function Cursors<\n RoomSchema extends RoomSchemaShape,\n RoomType extends keyof RoomSchema,\n>({\n as = 'div',\n spaceId: _spaceId,\n room,\n className,\n style,\n userCursorColor,\n children,\n renderCursor,\n propagate,\n zIndex,\n}: {\n spaceId?: string;\n room: InstantReactRoom<any, RoomSchema, RoomType>;\n style?: React.CSSProperties;\n userCursorColor?: string;\n as?: any;\n className?: string;\n children?: ReactNode;\n renderCursor?: (props: {\n color: string;\n presence: RoomSchema[RoomType]['presence'];\n }) => ReactNode;\n propagate?: boolean;\n zIndex?: number;\n}) {\n const spaceId =\n _spaceId || `cursors-space-default--${String(room.type)}-${room.id}`;\n\n const cursorsPresence = room.usePresence({\n keys: [spaceId],\n });\n\n const fullPresence = room._core._reactor.getPresence(room.type, room.id);\n\n function publishCursor(\n rect: DOMRect,\n touch: { clientX: number; clientY: number },\n ) {\n const x = touch.clientX;\n const y = touch.clientY;\n const xPercent = ((x - rect.left) / rect.width) * 100;\n const yPercent = ((y - rect.top) / rect.height) * 100;\n cursorsPresence.publishPresence({\n [spaceId]: {\n x,\n y,\n xPercent,\n yPercent,\n color: userCursorColor,\n },\n } as RoomSchema[RoomType]['presence']);\n }\n\n function onMouseMove(e: MouseEvent) {\n if (!propagate) {\n e.stopPropagation();\n }\n\n const rect = e.currentTarget.getBoundingClientRect();\n publishCursor(rect, e);\n }\n\n function onMouseOut(e: MouseEvent) {\n cursorsPresence.publishPresence({\n [spaceId]: undefined,\n } as RoomSchema[RoomType]['presence']);\n }\n\n function onTouchMove(e: TouchEvent) {\n if (e.touches.length !== 1) {\n return;\n }\n\n const touch = e.touches[0];\n\n if (touch.target instanceof Element) {\n if (!propagate) {\n e.stopPropagation();\n }\n const rect = touch.target.getBoundingClientRect();\n publishCursor(rect, touch);\n }\n }\n\n function onTouchEnd(e: TouchEvent) {\n cursorsPresence.publishPresence({\n [spaceId]: undefined,\n } as RoomSchema[RoomType]['presence']);\n }\n\n return createElement(\n as,\n {\n onMouseMove,\n onMouseOut,\n onTouchMove,\n onTouchEnd,\n className,\n style: {\n position: 'relative',\n ...style,\n },\n },\n [\n children,\n <div\n key={spaceId}\n style={{\n ...absStyles,\n ...inertStyles,\n zIndex: zIndex !== undefined ? zIndex : defaultZ,\n }}\n >\n {Object.entries(cursorsPresence.peers).map(([id, presence]) => {\n const cursor = presence[spaceId];\n if (!cursor) return null;\n\n return (\n <div\n key={id}\n style={{\n ...absStyles,\n transform: `translate(${cursor.xPercent}%, ${cursor.yPercent}%)`,\n transformOrigin: '0 0',\n transition: 'transform 100ms',\n }}\n >\n {renderCursor ? (\n renderCursor({\n color: cursor.color,\n presence: fullPresence.peers[id],\n })\n ) : (\n <Cursor {...cursor} />\n )}\n </div>\n );\n })}\n </div>,\n ],\n );\n}\n\nfunction Cursor({ color }: { color: string }) {\n const size = 35;\n const fill = color || 'black';\n\n return (\n <svg\n style={{ height: size, width: size }}\n viewBox={`0 0 ${size} ${size}`}\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g\n fill=\"rgba(0,0,0,.2)\"\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z\" />\n <path d=\"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z\" />\n </g>\n <g\n fill=\"white\"\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m12 24.4219v-16.015l11.591 11.619h-6.781l-.411.124z\" />\n <path d=\"m21.0845 25.0962-3.605 1.535-4.682-11.089 3.686-1.553z\" />\n </g>\n <g\n fill={fill}\n transform=\"matrix(1, 0, 0, 1, -11.999999046325684, -8.406899452209473)\"\n >\n <path d=\"m19.751 24.4155-1.844.774-3.1-7.374 1.841-.775z\" />\n <path d=\"m13 10.814v11.188l2.969-2.866.428-.139h4.768z\" />\n </g>\n </svg>\n );\n}\n\nconst absStyles: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\nconst inertStyles: CSSProperties = {\n overflow: 'hidden',\n pointerEvents: 'none',\n userSelect: 'none',\n};\n\nconst defaultZ = 99999;\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { InstantConfig, InstantSchemaDef } from '@instantdb/core';
2
2
  import { InstantReactAbstractDatabase } from '@instantdb/react-common';
3
3
  import { EventSource } from 'eventsource';
4
- export default class InstantReactWebDatabase<Schema extends InstantSchemaDef<any, any, any>, UseDates extends boolean = false, Config extends InstantConfig<Schema, UseDates> = InstantConfig<Schema, UseDates>> extends InstantReactAbstractDatabase<Schema, UseDates, Config> {
4
+ export default class InstantReactWebDatabase<Schema extends InstantSchemaDef<any, any, any>, Config extends InstantConfig<Schema, boolean> = InstantConfig<Schema, boolean>> extends InstantReactAbstractDatabase<Schema, Config> {
5
5
  static EventSourceImpl: typeof EventSource;
6
6
  }
7
7
  //# sourceMappingURL=InstantReactWebDatabase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InstantReactWebDatabase.d.ts","sourceRoot":"","sources":["../../src/InstantReactWebDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,uBAAuB,CAC1C,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,QAAQ,SAAS,OAAO,GAAG,KAAK,EAChC,MAAM,SAAS,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,aAAa,CAC5D,MAAM,EACN,QAAQ,CACT,CACD,SAAQ,4BAA4B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC9D,MAAM,CAAC,eAAe,qBAAe;CACtC"}
1
+ {"version":3,"file":"InstantReactWebDatabase.d.ts","sourceRoot":"","sources":["../../src/InstantReactWebDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,uBAAuB,CAC1C,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC9C,MAAM,SAAS,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,CAC3D,MAAM,EACN,OAAO,CACR,CACD,SAAQ,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC;IACpD,MAAM,CAAC,eAAe,qBAAe;CACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"InstantReactWebDatabase.js","sourceRoot":"","sources":["../../src/InstantReactWebDatabase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAqB,uBAOnB,SAAQ,4BAAsD;;AACvD,uCAAe,GAAG,WAAW,CAAC;eARlB,uBAAuB","sourcesContent":["import type { InstantConfig, InstantSchemaDef } from '@instantdb/core';\nimport { InstantReactAbstractDatabase } from '@instantdb/react-common';\nimport { EventSource } from 'eventsource';\n\nexport default class InstantReactWebDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n Config extends InstantConfig<Schema, UseDates> = InstantConfig<\n Schema,\n UseDates\n >,\n> extends InstantReactAbstractDatabase<Schema, UseDates, Config> {\n static EventSourceImpl = EventSource;\n}\n"]}
1
+ {"version":3,"file":"InstantReactWebDatabase.js","sourceRoot":"","sources":["../../src/InstantReactWebDatabase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAqB,uBAMnB,SAAQ,4BAA4C;;AAC7C,uCAAe,GAAG,WAAW,CAAC;eAPlB,uBAAuB","sourcesContent":["import type { InstantConfig, InstantSchemaDef } from '@instantdb/core';\nimport { InstantReactAbstractDatabase } from '@instantdb/react-common';\nimport { EventSource } from 'eventsource';\n\nexport default class InstantReactWebDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n Config extends InstantConfig<Schema, boolean> = InstantConfig<\n Schema,\n boolean\n >,\n> extends InstantReactAbstractDatabase<Schema, Config> {\n static EventSourceImpl = EventSource;\n}\n"]}
@@ -20,9 +20,7 @@ import InstantReactWebDatabase from './InstantReactWebDatabase.ts';
20
20
  *
21
21
  * // To learn more: https://instantdb.com/docs/modeling-data
22
22
  */
23
- export declare function init<Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema, UseDates extends boolean = false>(config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {
24
- useDateObjects?: UseDates;
25
- }): InstantReactWebDatabase<Schema, UseDates, InstantConfig<Schema, UseDates>>;
23
+ export declare function init<Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema, UseDates extends boolean = false>(config: InstantConfig<Schema, UseDates>): InstantReactWebDatabase<Schema, InstantConfig<Schema, UseDates>>;
26
24
  /**
27
25
  * @deprecated
28
26
  * `init_experimental` is deprecated. You can replace it with `init`.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,IAAI,CAClB,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,EACrE,QAAQ,SAAS,OAAO,GAAG,KAAK,EAIhC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,CAAC,GAAG;IAChE,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC3B,GACA,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAY5E;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,aAAO,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,IAAI,CAClB,MAAM,SAAS,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,EACrE,QAAQ,SAAS,OAAO,GAAG,KAAK,EAEhC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtC,uBAAuB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAOlE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,aAAO,CAAC"}
package/dist/esm/init.js CHANGED
@@ -20,13 +20,8 @@ import version from "./version.js";
20
20
  *
21
21
  * // To learn more: https://instantdb.com/docs/modeling-data
22
22
  */
23
- export function init(
24
- // Allows config with missing `useDateObjects`, but keeps `UseDates`
25
- // as a non-nullable in the InstantConfig type.
26
- config) {
27
- var _a;
28
- const configStrict = Object.assign(Object.assign({}, config), { useDateObjects: ((_a = config.useDateObjects) !== null && _a !== void 0 ? _a : false) });
29
- return new InstantReactWebDatabase(configStrict, {
23
+ export function init(config) {
24
+ return new InstantReactWebDatabase(config, {
30
25
  '@instantdb/react': version,
31
26
  });
32
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,IAAI;AAIlB,oEAAoE;AACpE,+CAA+C;AAC/C,MAEC;;IAED,MAAM,YAAY,mCACb,MAAM,KACT,cAAc,EAAE,CAAC,MAAA,MAAM,CAAC,cAAc,mCAAI,KAAK,CAAa,GAC7D,CAAC;IACF,OAAO,IAAI,uBAAuB,CAIhC,YAAY,EAAE;QACd,kBAAkB,EAAE,OAAO;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC","sourcesContent":["import type {\n InstantConfig,\n InstantSchemaDef,\n InstantUnknownSchema,\n} from '@instantdb/core';\n\nimport InstantReactWebDatabase from './InstantReactWebDatabase.ts';\nimport version from './version.ts';\n\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/react\"\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/react\"\n * import schema from \"\"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n *\n * // To learn more: https://instantdb.com/docs/modeling-data\n */\nexport function init<\n Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema,\n UseDates extends boolean = false,\n>(\n // Allows config with missing `useDateObjects`, but keeps `UseDates`\n // as a non-nullable in the InstantConfig type.\n config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {\n useDateObjects?: UseDates;\n },\n): InstantReactWebDatabase<Schema, UseDates, InstantConfig<Schema, UseDates>> {\n const configStrict = {\n ...config,\n useDateObjects: (config.useDateObjects ?? false) as UseDates,\n };\n return new InstantReactWebDatabase<\n Schema,\n UseDates,\n InstantConfig<Schema, UseDates>\n >(configStrict, {\n '@instantdb/react': version,\n });\n}\n\n/**\n * @deprecated\n * `init_experimental` is deprecated. You can replace it with `init`.\n *\n * @example\n *\n * // Before\n * import { init_experimental } from \"@instantdb/react\"\n * const db = init_experimental({ ... });\n *\n * // After\n * import { init } from \"@instantdb/react\"\n * const db = init({ ... });\n */\nexport const init_experimental = init;\n"]}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,IAAI,CAIlB,MAAuC;IAEvC,OAAO,IAAI,uBAAuB,CAChC,MAAM,EACN;QACE,kBAAkB,EAAE,OAAO;KAC5B,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC","sourcesContent":["import type {\n InstantConfig,\n InstantSchemaDef,\n InstantUnknownSchema,\n} from '@instantdb/core';\n\nimport InstantReactWebDatabase from './InstantReactWebDatabase.ts';\nimport version from './version.ts';\n\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/react\"\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/react\"\n * import schema from \"\"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n *\n * // To learn more: https://instantdb.com/docs/modeling-data\n */\nexport function init<\n Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema,\n UseDates extends boolean = false,\n>(\n config: InstantConfig<Schema, UseDates>,\n): InstantReactWebDatabase<Schema, InstantConfig<Schema, UseDates>> {\n return new InstantReactWebDatabase<Schema, InstantConfig<Schema, UseDates>>(\n config,\n {\n '@instantdb/react': version,\n },\n );\n}\n\n/**\n * @deprecated\n * `init_experimental` is deprecated. You can replace it with `init`.\n *\n * @example\n *\n * // Before\n * import { init_experimental } from \"@instantdb/react\"\n * const db = init_experimental({ ... });\n *\n * // After\n * import { init } from \"@instantdb/react\"\n * const db = init({ ... });\n */\nexport const init_experimental = init;\n"]}
@@ -3550,7 +3550,7 @@ function Nr(t) {
3550
3550
  }, e;
3551
3551
  }, {});
3552
3552
  }
3553
- const Bn = "v0.22.73-experimental.test-type-tests.19720374813.1";
3553
+ const Bn = "v0.22.74-experimental.drewh-docs-header.19831292909.1";
3554
3554
  function fu(t, e) {
3555
3555
  return {
3556
3556
  info: t ? (...n) => console.info(...n, e()) : () => {
@@ -4574,17 +4574,18 @@ class Ku {
4574
4574
  return f || c;
4575
4575
  }
4576
4576
  }, this.getPreviousResult = (d) => {
4577
- const c = z(d);
4578
- return this.dataForQuery(c);
4577
+ var c;
4578
+ const f = z(d);
4579
+ return (c = this.dataForQuery(f)) === null || c === void 0 ? void 0 : c.data;
4579
4580
  }, this.notifyOne = (d) => {
4580
4581
  var c, f;
4581
4582
  const l = (c = this.queryCbs[d]) !== null && c !== void 0 ? c : [], p = (f = this._dataForQueryCache[d]) === null || f === void 0 ? void 0 : f.data, y = this.dataForQuery(d);
4582
- y && (Ot(y, p) || l.forEach((b) => b.cb(y)));
4583
+ y != null && y.data && (this._dataForQueryCache[d] = y, !Ot(y.data, p) && l.forEach((b) => b.cb(y.data)));
4583
4584
  }, this.notifyOneQueryOnce = (d) => {
4584
- var c;
4585
- const f = (c = this.queryOnceDfds[d]) !== null && c !== void 0 ? c : [], l = this.dataForQuery(d);
4586
- f.forEach((p) => {
4587
- this._completeQueryOnce(p.q, d, p.dfd), p.dfd.resolve(l);
4585
+ var c, f;
4586
+ const l = (c = this.queryOnceDfds[d]) !== null && c !== void 0 ? c : [], p = (f = this.dataForQuery(d)) === null || f === void 0 ? void 0 : f.data;
4587
+ l.forEach((y) => {
4588
+ this._completeQueryOnce(y.q, d, y.dfd), y.dfd.resolve(p);
4588
4589
  });
4589
4590
  }, this.notifyQueryError = (d, c) => {
4590
4591
  (this.queryCbs[d] || []).forEach((l) => l.cb({ error: c }));
@@ -5131,13 +5132,9 @@ class Ku {
5131
5132
  return;
5132
5133
  const d = this._dataForQueryCache[e];
5133
5134
  if (d && r === d.querySubVersion && s === d.pendingMutationsVersion)
5134
- return d.data;
5135
- const { store: c, pageInfo: f, aggregate: l, processedTxId: p } = u, y = this._rewriteMutationsSorted(c.attrs, o), b = this._applyOptimisticUpdates(c, y, p), _ = Ui({ store: b, pageInfo: f, aggregate: l }, a);
5136
- return this._dataForQueryCache[e] = {
5137
- querySubVersion: r,
5138
- pendingMutationsVersion: s,
5139
- data: _
5140
- }, _;
5135
+ return d;
5136
+ const { store: c, pageInfo: f, aggregate: l, processedTxId: p } = u, y = this._rewriteMutationsSorted(c.attrs, o), b = this._applyOptimisticUpdates(c, y, p);
5137
+ return { data: Ui({ store: b, pageInfo: f, aggregate: l }, a), querySubVersion: r, pendingMutationsVersion: s };
5141
5138
  }
5142
5139
  _applyOptimisticUpdates(e, n, r) {
5143
5140
  for (const [i, s] of n)
@@ -6153,12 +6150,11 @@ function fc(t, e) {
6153
6150
  return ei(t._reactor.config.schema) !== ei(e);
6154
6151
  }
6155
6152
  function lc(t, e, n, r, i) {
6156
- var s;
6157
- const o = Object.assign(Object.assign({}, t), { useDateObjects: (s = t.useDateObjects) !== null && s !== void 0 ? s : !1 }), a = mn[wn(o)];
6158
- if (a)
6159
- return fc(a, o.schema) && a._reactor.updateSchema(o.schema), a;
6160
- const u = new Ku(Object.assign(Object.assign(Object.assign({}, ic), o), { cardinalityInference: !!o.schema }), e || Ki, n || qi, Object.assign(Object.assign({}, r || {}), { "@instantdb/core": Bn }), i), d = new dc(u);
6161
- return mn[wn(o)] = d, hc(o.appId, o.devtool), d;
6153
+ const s = mn[wn(t)];
6154
+ if (s)
6155
+ return fc(s, t.schema) && s._reactor.updateSchema(t.schema), s;
6156
+ const o = new Ku(Object.assign(Object.assign(Object.assign({}, ic), t), { cardinalityInference: !!t.schema }), e || Ki, n || qi, Object.assign(Object.assign({}, r || {}), { "@instantdb/core": Bn }), i), a = new dc(o);
6157
+ return mn[wn(t)] = a, hc(t.appId, t.devtool), a;
6162
6158
  }
6163
6159
  function hc(t, e) {
6164
6160
  if (typeof window > "u" || typeof window.location > "u" || typeof document > "u" || typeof e == "boolean" && !e)
@@ -6808,15 +6804,7 @@ function gc(t, e, n) {
6808
6804
  e && n && "ruleParams" in n && (e = Object.assign({ $$ruleParams: n.ruleParams }, e));
6809
6805
  const r = e ? cc(e) : null, i = z(r), s = at(ri(t._reactor.getPreviousResult(r))), o = ge(
6810
6806
  (u) => (s.current = ri(t._reactor.getPreviousResult(r)), r ? t.subscribeQuery(r, (c) => {
6811
- s.current = Object.assign({
6812
- isLoading: !c,
6813
- // @ts-expect-error: ts thinks this will always be overwritten
6814
- data: void 0,
6815
- // @ts-expect-error: ts thinks this will always be overwritten
6816
- pageInfo: void 0,
6817
- // @ts-expect-error: ts thinks this will always be overwritten
6818
- error: void 0
6819
- }, c), u();
6807
+ s.current = Object.assign({ isLoading: !c, data: void 0, pageInfo: void 0, error: void 0 }, c), u();
6820
6808
  }) : () => {
6821
6809
  }),
6822
6810
  // Build a new subscribe function if the query changes
@@ -6830,10 +6818,10 @@ function Tc() {
6830
6818
  n();
6831
6819
  }, []);
6832
6820
  function e(r, i) {
6833
- n(), t.current = setTimeout(i, r);
6821
+ clearTimeout(t.current), t.current = setTimeout(i, r);
6834
6822
  }
6835
6823
  function n() {
6836
- t.current && clearTimeout(t.current);
6824
+ clearTimeout(t.current);
6837
6825
  }
6838
6826
  return { set: e, clear: n };
6839
6827
  }
@@ -7397,13 +7385,12 @@ const Qn = class Qn extends Cc {
7397
7385
  Qn.EventSourceImpl = kt;
7398
7386
  let In = Qn;
7399
7387
  function xc(t) {
7400
- const e = {
7401
- ...t,
7402
- useDateObjects: t.useDateObjects ?? !1
7403
- };
7404
- return new In(e, {
7405
- "@instantdb/react": Bn
7406
- });
7388
+ return new In(
7389
+ t,
7390
+ {
7391
+ "@instantdb/react": Bn
7392
+ }
7393
+ );
7407
7394
  }
7408
7395
  const qc = xc;
7409
7396
  function Wc({
@@ -7494,7 +7481,7 @@ function Wc({
7494
7481
  },
7495
7482
  children: a ? a({
7496
7483
  color: E.color,
7497
- presence: l == null ? void 0 : l.peers[g]
7484
+ presence: l.peers[g]
7498
7485
  }) : /* @__PURE__ */ W.jsx($c, { ...E })
7499
7486
  },
7500
7487
  g