@instantdb/react 0.22.75-experimental.test-type-tests.19832950243.1 → 0.22.75

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 +16 -26
  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.75-experimental.test-type-tests.19832950243.1";
3553
+ const Bn = "v0.22.75";
3554
3554
  function fu(t, e) {
3555
3555
  return {
3556
3556
  info: t ? (...n) => console.info(...n, e()) : () => {
@@ -6150,12 +6150,11 @@ function fc(t, e) {
6150
6150
  return ei(t._reactor.config.schema) !== ei(e);
6151
6151
  }
6152
6152
  function lc(t, e, n, r, i) {
6153
- var s;
6154
- const o = Object.assign(Object.assign({}, t), { useDateObjects: (s = t.useDateObjects) !== null && s !== void 0 ? s : !1 }), a = mn[wn(o)];
6155
- if (a)
6156
- return fc(a, o.schema) && a._reactor.updateSchema(o.schema), a;
6157
- 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);
6158
- 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;
6159
6158
  }
6160
6159
  function hc(t, e) {
6161
6160
  if (typeof window > "u" || typeof window.location > "u" || typeof document > "u" || typeof e == "boolean" && !e)
@@ -6805,15 +6804,7 @@ function gc(t, e, n) {
6805
6804
  e && n && "ruleParams" in n && (e = Object.assign({ $$ruleParams: n.ruleParams }, e));
6806
6805
  const r = e ? cc(e) : null, i = z(r), s = at(ri(t._reactor.getPreviousResult(r))), o = ge(
6807
6806
  (u) => (s.current = ri(t._reactor.getPreviousResult(r)), r ? t.subscribeQuery(r, (c) => {
6808
- s.current = Object.assign({
6809
- isLoading: !c,
6810
- // @ts-expect-error: ts thinks this will always be overwritten
6811
- data: void 0,
6812
- // @ts-expect-error: ts thinks this will always be overwritten
6813
- pageInfo: void 0,
6814
- // @ts-expect-error: ts thinks this will always be overwritten
6815
- error: void 0
6816
- }, c), u();
6807
+ s.current = Object.assign({ isLoading: !c, data: void 0, pageInfo: void 0, error: void 0 }, c), u();
6817
6808
  }) : () => {
6818
6809
  }),
6819
6810
  // Build a new subscribe function if the query changes
@@ -6827,10 +6818,10 @@ function Tc() {
6827
6818
  n();
6828
6819
  }, []);
6829
6820
  function e(r, i) {
6830
- n(), t.current = setTimeout(i, r);
6821
+ clearTimeout(t.current), t.current = setTimeout(i, r);
6831
6822
  }
6832
6823
  function n() {
6833
- t.current && clearTimeout(t.current);
6824
+ clearTimeout(t.current);
6834
6825
  }
6835
6826
  return { set: e, clear: n };
6836
6827
  }
@@ -7394,13 +7385,12 @@ const Qn = class Qn extends Cc {
7394
7385
  Qn.EventSourceImpl = kt;
7395
7386
  let In = Qn;
7396
7387
  function xc(t) {
7397
- const e = {
7398
- ...t,
7399
- useDateObjects: t.useDateObjects ?? !1
7400
- };
7401
- return new In(e, {
7402
- "@instantdb/react": Bn
7403
- });
7388
+ return new In(
7389
+ t,
7390
+ {
7391
+ "@instantdb/react": Bn
7392
+ }
7393
+ );
7404
7394
  }
7405
7395
  const qc = xc;
7406
7396
  function Wc({
@@ -7491,7 +7481,7 @@ function Wc({
7491
7481
  },
7492
7482
  children: a ? a({
7493
7483
  color: E.color,
7494
- presence: l == null ? void 0 : l.peers[g]
7484
+ presence: l.peers[g]
7495
7485
  }) : /* @__PURE__ */ W.jsx($c, { ...E })
7496
7486
  },
7497
7487
  g