@instantdb/core 0.22.75 → 0.22.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/Connection.d.ts +2 -1
- package/dist/commonjs/Connection.d.ts.map +1 -1
- package/dist/commonjs/Connection.js +26 -16
- package/dist/commonjs/Connection.js.map +1 -1
- package/dist/commonjs/Reactor.d.ts.map +1 -1
- package/dist/commonjs/Reactor.js +8 -1
- package/dist/commonjs/Reactor.js.map +1 -1
- package/dist/commonjs/SyncTable.d.ts +10 -10
- package/dist/commonjs/SyncTable.d.ts.map +1 -1
- package/dist/commonjs/SyncTable.js.map +1 -1
- package/dist/commonjs/__types__/fieldsTypeTest.d.ts +2 -0
- package/dist/commonjs/__types__/fieldsTypeTest.d.ts.map +1 -0
- package/dist/commonjs/__types__/fieldsTypeTest.js +74 -0
- package/dist/commonjs/__types__/fieldsTypeTest.js.map +1 -0
- package/dist/commonjs/__types__/typeUtils.d.ts +20 -0
- package/dist/commonjs/__types__/typeUtils.d.ts.map +1 -0
- package/dist/commonjs/__types__/typeUtils.js +5 -0
- package/dist/commonjs/__types__/typeUtils.js.map +1 -0
- package/dist/commonjs/__types__/useDatesTypeTest.d.ts +2 -0
- package/dist/commonjs/__types__/useDatesTypeTest.d.ts.map +1 -0
- package/dist/commonjs/__types__/useDatesTypeTest.js +55 -0
- package/dist/commonjs/__types__/useDatesTypeTest.js.map +1 -0
- package/dist/commonjs/clientTypes.d.ts +1 -1
- package/dist/commonjs/clientTypes.d.ts.map +1 -1
- package/dist/commonjs/clientTypes.js.map +1 -1
- package/dist/commonjs/index.d.ts +15 -8
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +12 -7
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/queryTypes.d.ts +4 -4
- package/dist/commonjs/queryTypes.d.ts.map +1 -1
- package/dist/commonjs/queryTypes.js.map +1 -1
- package/dist/commonjs/schemaTypes.d.ts +2 -2
- package/dist/commonjs/schemaTypes.d.ts.map +1 -1
- package/dist/commonjs/schemaTypes.js.map +1 -1
- package/dist/esm/Connection.d.ts +2 -1
- package/dist/esm/Connection.d.ts.map +1 -1
- package/dist/esm/Connection.js +26 -16
- package/dist/esm/Connection.js.map +1 -1
- package/dist/esm/Reactor.d.ts.map +1 -1
- package/dist/esm/Reactor.js +8 -1
- package/dist/esm/Reactor.js.map +1 -1
- package/dist/esm/SyncTable.d.ts +10 -10
- package/dist/esm/SyncTable.d.ts.map +1 -1
- package/dist/esm/SyncTable.js.map +1 -1
- package/dist/esm/__types__/fieldsTypeTest.d.ts +2 -0
- package/dist/esm/__types__/fieldsTypeTest.d.ts.map +1 -0
- package/dist/esm/__types__/fieldsTypeTest.js +72 -0
- package/dist/esm/__types__/fieldsTypeTest.js.map +1 -0
- package/dist/esm/__types__/typeUtils.d.ts +20 -0
- package/dist/esm/__types__/typeUtils.d.ts.map +1 -0
- package/dist/esm/__types__/typeUtils.js +4 -0
- package/dist/esm/__types__/typeUtils.js.map +1 -0
- package/dist/esm/__types__/useDatesTypeTest.d.ts +2 -0
- package/dist/esm/__types__/useDatesTypeTest.d.ts.map +1 -0
- package/dist/esm/__types__/useDatesTypeTest.js +53 -0
- package/dist/esm/__types__/useDatesTypeTest.js.map +1 -0
- package/dist/esm/clientTypes.d.ts +1 -1
- package/dist/esm/clientTypes.d.ts.map +1 -1
- package/dist/esm/clientTypes.js.map +1 -1
- package/dist/esm/index.d.ts +15 -8
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +12 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/queryTypes.d.ts +4 -4
- package/dist/esm/queryTypes.d.ts.map +1 -1
- package/dist/esm/queryTypes.js.map +1 -1
- package/dist/esm/schemaTypes.d.ts +2 -2
- package/dist/esm/schemaTypes.d.ts.map +1 -1
- package/dist/esm/schemaTypes.js.map +1 -1
- package/dist/standalone/index.js +104 -92
- package/dist/standalone/index.umd.cjs +2 -2
- package/package.json +4 -3
- package/src/Connection.ts +28 -18
- package/src/Reactor.js +7 -1
- package/src/SyncTable.ts +10 -10
- package/{__tests__/src → src/__types__}/fieldsTypeTest.ts +1 -1
- package/src/__types__/typeUtils.ts +39 -0
- package/{__tests__/src → src/__types__}/useDatesTypeTest.ts +1 -2
- package/src/clientTypes.ts +1 -1
- package/src/index.ts +36 -31
- package/src/queryTypes.ts +4 -4
- package/src/schemaTypes.ts +2 -5
- package/tsconfig.json +1 -1
- package/tsconfig.test.json +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemaTypes.js","sourceRoot":"","sources":["../../src/schemaTypes.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IAOtB,YACS,SAAqB,EACrB,QAAoB,EACpB,SAAoB,EAEpB,SAIH,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAR9B,cAAS,GAAT,SAAS,CAAY;QACrB,aAAQ,GAAR,QAAQ,CAAY;QACpB,cAAS,GAAT,SAAS,CAAW;QAEpB,WAAM,GAAN,MAAM,CAIwB;QAXhC,aAAQ,GAA4B,EAAE,CAAC;IAY3C,CAAC;IAEJ;;;;OAIG;IACH,cAAc;QACZ,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,KAAwB,EACxB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,KAAK,EACL,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,kCAET,IAAI,CAAC,MAAM,KACd,MAAM,EAAE,IAAI,IAEf,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,kCAEC,IAAI,CAAC,MAAM,KACd,OAAO,EAAE,IAAI,IAEhB,CAAC;IACJ,CAAC;CAQF;AAxED,kCAwEC;AAED,MAAa,WAAW;IAItB,YACS,WAAwB,EACxB,UAAsB;QADtB,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAY;IAC5B,CAAC;CACL;AARD,kCAQC;AAuBD,MAAa,SAAS;IAKpB,YACS,KAAY,EACZ,KAAY;QADZ,UAAK,GAAL,KAAK,CAAO;QACZ,UAAK,GAAL,KAAK,CAAO;IAClB,CAAC;IAEJ,MAAM;QACJ,OAAO,IAAI,SAAS,CAAwB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;CACF;AAbD,8BAaC;AAsQD,MAAa,gBAAgB;IAM3B,YACS,QAAkB,EAClB,KAAY,EACZ,KAAY;QAFZ,aAAQ,GAAR,QAAQ,CAAU;QAClB,UAAK,GAAL,KAAK,CAAO;QACZ,UAAK,GAAL,KAAK,CAAO;IAClB,CAAC;IAEJ;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc;QAEZ,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,EACV,EAAU,CACX,CAAC;IACJ,CAAC;CACF;AAvCD,4CAuCC;AAED;;;;;GAKG;AACH,MAAa,YAAY;IAMvB,YACS,QAAkB,EAClB,KAAY;QADZ,aAAQ,GAAR,QAAQ,CAAU;QAClB,UAAK,GAAL,KAAK,CAAO;IAClB,CAAC;IAEJ,cAAc;QACZ,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;CACF;AAjBD,oCAiBC;AAqGD,MAAa,uBAAwB,SAAQ,gBAI5C;CAAG;AAJJ,0DAII","sourcesContent":["import type { RoomSchemaShape } from './presence.ts';\nimport { Expand } from './queryTypes.ts';\n\nexport class DataAttrDef<\n ValueType,\n IsRequired extends RequirementKind,\n IsIndexed extends boolean,\n> {\n public metadata: Record<string, unknown> = {};\n\n constructor(\n public valueType: ValueTypes,\n public required: IsRequired,\n public isIndexed: IsIndexed,\n\n public config: {\n indexed: boolean;\n unique: boolean;\n // clientValidator?: (value: ValueType) => boolean;\n } = { indexed: false, unique: false },\n ) {}\n\n /**\n * @deprecated Only use this temporarily for attributes that you want\n * to treat as required in frontend code but can’t yet mark as required\n * and enforced for backend\n */\n clientRequired() {\n return new DataAttrDef<ValueType, true, IsIndexed>(\n this.valueType,\n false as unknown as true,\n this.isIndexed,\n this.config,\n );\n }\n\n optional() {\n return new DataAttrDef<ValueType, false, IsIndexed>(\n this.valueType,\n false,\n this.isIndexed,\n this.config,\n );\n }\n\n unique() {\n return new DataAttrDef<ValueType, IsRequired, IsIndexed>(\n this.valueType,\n this.required,\n this.isIndexed,\n {\n ...this.config,\n unique: true,\n },\n );\n }\n\n indexed() {\n return new DataAttrDef<ValueType, IsRequired, true>(\n this.valueType,\n this.required,\n true,\n {\n ...this.config,\n indexed: true,\n },\n );\n }\n\n // clientValidate(clientValidator: (value: ValueType) => boolean) {\n // return new DataAttrDef(this.valueType, this.required, {\n // ...this.config,\n // clientValidator,\n // });\n // }\n}\n\nexport class LinkAttrDef<\n Cardinality extends CardinalityKind,\n EntityName extends string,\n> {\n constructor(\n public cardinality: Cardinality,\n public entityName: EntityName,\n ) {}\n}\n\nexport interface IContainEntitiesAndLinks<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n> {\n entities: Entities;\n links: Links;\n}\n\n// ==========\n// base types\n\nexport type ValueTypes = 'string' | 'number' | 'boolean' | 'date' | 'json';\n\nexport type CardinalityKind = 'one' | 'many';\n\n// true - force required\n// false - optional, not required\nexport type RequirementKind = true | false;\n\nexport type AttrsDefs = Record<string, DataAttrDef<any, any, any>>;\n\nexport class EntityDef<\n Attrs extends AttrsDefs,\n Links extends Record<string, LinkAttrDef<any, any>>,\n AsType,\n> {\n constructor(\n public attrs: Attrs,\n public links: Links,\n ) {}\n\n asType<_AsType extends Partial<MappedAttrs<Attrs, boolean>>>() {\n return new EntityDef<Attrs, Links, _AsType>(this.attrs, this.links);\n }\n}\n\nexport type EntityDefFromSchema<\n S extends IContainEntitiesAndLinks<any, any>,\n K extends keyof S['entities'],\n> = {\n [k in keyof S['entities'][K]['attrs']]: S['entities'][K] extends EntityDef<\n any,\n any,\n any\n >\n ? S['entities'][K]['attrs'][k]\n : never;\n};\n\nexport type EntitiesDef = Record<string, EntityDef<any, any, any>>;\n\nexport type LinksDef<Entities extends EntitiesDef> = Record<\n string,\n LinkDef<\n Entities,\n keyof Entities,\n string,\n CardinalityKind,\n keyof Entities,\n string,\n CardinalityKind\n >\n>;\n\nexport type LinkDef<\n Entities extends EntitiesDef,\n FwdEntity extends keyof Entities,\n FwdAttr extends string,\n FwdCardinality extends CardinalityKind,\n RevEntity extends keyof Entities,\n RevAttr extends string,\n RevCardinality extends CardinalityKind,\n> = {\n forward: {\n on: FwdEntity;\n label: FwdAttr;\n has: FwdCardinality;\n required?: RequirementKind;\n onDelete?: 'cascade';\n };\n reverse: {\n on: RevEntity;\n label: RevAttr;\n has: RevCardinality;\n onDelete?: 'cascade';\n };\n};\n\n// ==========\n// derived types\ntype IsEmptyOrIndexSignature<T> = keyof T extends never\n ? true\n : string extends keyof T\n ? true\n : false;\n\nexport type EntitiesWithLinks<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n> = {\n [EntityName in keyof Entities]: EntityDef<\n Entities[EntityName]['attrs'],\n EntityForwardLinksMap<EntityName, Entities, Links> &\n EntityReverseLinksMap<EntityName, Entities, Links>,\n Entities[EntityName] extends EntityDef<any, any, infer O>\n ? O extends void\n ? void\n : O\n : void\n >;\n};\n\ntype EntityForwardLinksMap<\n EntityName extends keyof Entities,\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n LinkIndexFwd = LinksIndexedByEntity<Entities, Links, 'reverse'>,\n> =\n IsEmptyOrIndexSignature<Links> extends true\n ? {}\n : EntityName extends keyof LinkIndexFwd\n ? {\n [LinkName in keyof LinkIndexFwd[EntityName]]: LinkIndexFwd[EntityName][LinkName] extends LinkDef<\n Entities,\n infer RelatedEntityName,\n any,\n any,\n any,\n any,\n infer Cardinality\n >\n ? {\n entityName: RelatedEntityName;\n cardinality: Cardinality;\n }\n : never;\n }\n : {};\n\ntype EntityReverseLinksMap<\n EntityName extends keyof Entities,\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n RevLinkIndex = LinksIndexedByEntity<Entities, Links, 'forward'>,\n> =\n IsEmptyOrIndexSignature<Links> extends true\n ? {}\n : EntityName extends keyof RevLinkIndex\n ? {\n [LinkName in keyof RevLinkIndex[EntityName]]: RevLinkIndex[EntityName][LinkName] extends LinkDef<\n Entities,\n any,\n any,\n infer Cardinality,\n infer RelatedEntityName,\n any,\n any\n >\n ? {\n entityName: RelatedEntityName;\n cardinality: Cardinality;\n }\n : never;\n }\n : {};\n\ntype LinksIndexedByEntity<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n Direction extends 'forward' | 'reverse',\n> = {\n [FwdEntity in keyof Entities]: {\n [LinkName in keyof Links as Links[LinkName][Direction]['on'] extends FwdEntity\n ? Links[LinkName][Direction]['label']\n : never]: Links[LinkName] extends LinkDef<\n Entities,\n infer FwdEntity,\n infer FwdAttr,\n infer FwdCardinality,\n infer RevEntity,\n infer RevAttr,\n infer RevCardinality\n >\n ? LinkDef<\n Entities,\n FwdEntity,\n FwdAttr,\n FwdCardinality,\n RevEntity,\n RevAttr,\n RevCardinality\n >\n : never;\n };\n};\n\ntype RequiredKeys<Attrs extends AttrsDefs> = {\n [K in keyof Attrs]: Attrs[K] extends DataAttrDef<any, infer R, any>\n ? R extends true\n ? K\n : never\n : never;\n}[keyof Attrs];\n\ntype OptionalKeys<Attrs extends AttrsDefs> = {\n [K in keyof Attrs]: Attrs[K] extends DataAttrDef<any, infer R, any>\n ? R extends false\n ? K\n : never\n : never;\n}[keyof Attrs];\n\n/**\n * MappedAttrs:\n * - Required keys => `key: ValueType`\n * - Optional keys => `key?: ValueType`\n */\ntype MappedAttrs<\n Attrs extends AttrsDefs,\n UseDates extends boolean | undefined,\n> = {\n [K in RequiredKeys<Attrs>]: Attrs[K] extends DataAttrDef<infer V, any, any>\n ? V extends Date\n ? UseDates extends true\n ? V\n : string | number\n : V\n : never;\n} & {\n [K in OptionalKeys<Attrs>]?: Attrs[K] extends DataAttrDef<infer V, any, any>\n ? V extends Date\n ? UseDates extends true\n ? V\n : string | number\n : V\n : never;\n};\n\nexport type ResolveEntityAttrs<\n EDef extends EntityDef<any, any, any>,\n UseDates extends boolean | undefined = false,\n ResolvedAttrs = MappedAttrs<EDef['attrs'], UseDates>,\n> =\n EDef extends EntityDef<any, any, infer AsType>\n ? AsType extends void\n ? ResolvedAttrs\n : Omit<ResolvedAttrs, keyof AsType> & AsType\n : ResolvedAttrs;\n\nexport type ResolveAttrs<\n Entities extends EntitiesDef,\n EntityName extends keyof Entities,\n UseDates extends boolean,\n> = ResolveEntityAttrs<Entities[EntityName], UseDates>;\n\nexport type RoomsFromDef<RDef extends RoomsDef> = {\n [RoomName in keyof RDef]: {\n presence: Expand<ResolveEntityAttrs<RDef[RoomName]['presence']>>;\n topics: {\n [TopicName in keyof RDef[RoomName]['topics']]: Expand<\n ResolveEntityAttrs<NonNullable<RDef[RoomName]['topics']>[TopicName]>\n >;\n };\n };\n};\n\nexport type RoomsOf<S> =\n S extends InstantSchemaDef<any, any, infer RDef> ? RoomsFromDef<RDef> : never;\n\nexport type PresenceOf<\n S,\n RoomType extends keyof RoomsOf<S>,\n> = RoomsOf<S>[RoomType] extends { presence: infer P } ? P : {};\n\nexport type TopicsOf<\n S,\n RoomType extends keyof RoomsOf<S>,\n> = RoomsOf<S>[RoomType] extends { topics: infer T } ? T : {};\n\nexport type TopicOf<\n S,\n RoomType extends keyof RoomsOf<S>,\n TopicType extends keyof TopicsOf<S, RoomType>,\n> = TopicsOf<S, RoomType>[TopicType];\n\ninterface RoomDef {\n presence: EntityDef<any, any, any>;\n topics?: {\n [TopicName: string]: EntityDef<any, any, any>;\n };\n}\n\nexport interface RoomsDef {\n [RoomType: string]: RoomDef;\n}\n\nexport class InstantSchemaDef<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n Rooms extends RoomsDef,\n> implements IContainEntitiesAndLinks<Entities, Links>\n{\n constructor(\n public entities: Entities,\n public links: Links,\n public rooms: Rooms,\n ) {}\n\n /**\n * @deprecated\n * `withRoomSchema` is deprecated. Define your schema in `rooms` directly:\n *\n * @example\n * // Before:\n * const schema = i.schema({\n * // ...\n * }).withRoomSchema<RoomSchema>()\n *\n * // After\n * const schema = i.schema({\n * rooms: {\n * // ...\n * }\n * })\n *\n * @see https://instantdb.com/docs/presence-and-topics#typesafety\n */\n withRoomSchema<_RoomSchema extends RoomSchemaShape>() {\n type RDef = RoomDefFromShape<_RoomSchema>;\n return new InstantSchemaDef<Entities, Links, RDef>(\n this.entities,\n this.links,\n {} as RDef,\n );\n }\n}\n\n/**\n * @deprecated\n * `i.graph` is deprecated. Use `i.schema` instead.\n *\n * @see https://instantdb.com/docs/modeling-data\n */\nexport class InstantGraph<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n RoomSchema extends RoomSchemaShape = {},\n> implements IContainEntitiesAndLinks<Entities, Links>\n{\n constructor(\n public entities: Entities,\n public links: Links,\n ) {}\n\n withRoomSchema<_RoomSchema extends RoomSchemaShape>() {\n return new InstantGraph<Entities, Links, _RoomSchema>(\n this.entities,\n this.links,\n );\n }\n}\n\ntype EntityDefFromRoomSlice<Shape extends { [k: string]: any }> = EntityDef<\n {\n [AttrName in keyof Shape]: DataAttrDef<\n Shape[AttrName],\n Shape[AttrName] extends undefined ? false : true,\n any\n >;\n },\n any,\n void\n>;\n\ntype RoomDefFromShape<RoomSchema extends RoomSchemaShape> = {\n [RoomName in keyof RoomSchema]: {\n presence: EntityDefFromRoomSlice<\n NonNullable<RoomSchema[RoomName]['presence']>\n >;\n topics: {\n [TopicName in keyof RoomSchema[RoomName]['topics']]: EntityDefFromRoomSlice<\n NonNullable<RoomSchema[RoomName]['topics'][TopicName]>\n >;\n };\n };\n};\n\ntype EntityDefFromShape<Shape, K extends keyof Shape> = EntityDef<\n {\n [AttrName in keyof Shape[K]]: DataAttrDef<\n Shape[K][AttrName],\n Shape[K][AttrName] extends undefined ? false : true,\n any\n >;\n },\n {\n [LinkName in keyof Shape]: LinkAttrDef<\n 'many',\n LinkName extends string ? LinkName : string\n >;\n },\n void\n>;\n\n/**\n * If you were using the old `schema` types, you can use this to help you\n * migrate.\n *\n * @example\n * // Before\n * const db = init<Schema, Rooms>({...})\n *\n * // After\n * const db = init<BackwardsCompatibleSchema<Schema, Rooms>>({...})\n */\nexport type BackwardsCompatibleSchema<\n Shape extends { [k: string]: any },\n RoomSchema extends RoomSchemaShape = {},\n> = InstantSchemaDef<\n { [K in keyof Shape]: EntityDefFromShape<Shape, K> },\n UnknownLinks<EntitiesDef>,\n RoomDefFromShape<RoomSchema>\n>;\n\n// ----------\n// InstantUnknownSchema\n\nexport type UnknownEntity = EntityDef<\n {\n id: DataAttrDef<string, true, true>;\n [AttrName: string]: DataAttrDef<any, boolean, boolean>;\n },\n { [LinkName: string]: LinkAttrDef<'many', string> },\n void\n>;\n\nexport type UnknownEntities = {\n [EntityName: string]: UnknownEntity;\n};\n\nexport interface UnknownLinks<Entities extends EntitiesDef> {\n [LinkName: string]: LinkDef<\n Entities,\n string,\n string,\n 'many',\n string,\n string,\n 'many'\n >;\n}\n\nexport interface UnknownRooms {\n [RoomName: string]: {\n presence: EntityDef<any, any, any>;\n topics: {\n [TopicName: string]: EntityDef<any, any, any>;\n };\n };\n}\n\nexport class InstantUnknownSchemaDef extends InstantSchemaDef<\n UnknownEntities,\n UnknownLinks<UnknownEntities>,\n UnknownRooms\n> {}\n\nexport type InstantUnknownSchema = InstantUnknownSchemaDef;\n\nexport type CreateParams<\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = {\n [AttrName in RequiredKeys<\n Schema['entities'][EntityName]['attrs']\n >]: Schema['entities'][EntityName]['attrs'][AttrName] extends DataAttrDef<\n infer ValueType,\n any,\n any\n >\n ? ValueType extends Date\n ? string | number | Date\n : ValueType\n : never;\n} & {\n [AttrName in OptionalKeys<\n Schema['entities'][EntityName]['attrs']\n >]?: Schema['entities'][EntityName]['attrs'][AttrName] extends DataAttrDef<\n infer ValueType,\n false,\n any\n >\n ? (ValueType extends Date ? string | number | Date : ValueType) | null\n : never;\n};\n\nexport type UpdateParams<\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = {\n [AttrName in keyof Schema['entities'][EntityName]['attrs']]?: Schema['entities'][EntityName]['attrs'][AttrName] extends DataAttrDef<\n infer ValueType,\n infer IsRequired,\n any\n >\n ? IsRequired extends true\n ? ValueType extends Date\n ? string | number | Date\n : ValueType\n : (ValueType extends Date ? string | number | Date : ValueType) | null\n : never;\n};\n\nexport type UpdateOpts = {\n upsert?: boolean | undefined;\n};\n\nexport type LinkParams<\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = {\n [LinkName in keyof Schema['entities'][EntityName]['links']]?: Schema['entities'][EntityName]['links'][LinkName] extends LinkAttrDef<\n infer Cardinality,\n any\n >\n ? Cardinality extends 'one'\n ? string\n : string | string[]\n : never;\n};\n\nexport type RuleParams = {\n [key: string]: any;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"schemaTypes.js","sourceRoot":"","sources":["../../src/schemaTypes.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IAOtB,YACS,SAAqB,EACrB,QAAoB,EACpB,SAAoB,EAEpB,SAIH,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;QAR9B,cAAS,GAAT,SAAS,CAAY;QACrB,aAAQ,GAAR,QAAQ,CAAY;QACpB,cAAS,GAAT,SAAS,CAAW;QAEpB,WAAM,GAAN,MAAM,CAIwB;QAXhC,aAAQ,GAA4B,EAAE,CAAC;IAY3C,CAAC;IAEJ;;;;OAIG;IACH,cAAc;QACZ,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,KAAwB,EACxB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,KAAK,EACL,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,SAAS,kCAET,IAAI,CAAC,MAAM,KACd,MAAM,EAAE,IAAI,IAEf,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,IAAI,WAAW,CACpB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,kCAEC,IAAI,CAAC,MAAM,KACd,OAAO,EAAE,IAAI,IAEhB,CAAC;IACJ,CAAC;CAQF;AAxED,kCAwEC;AAED,MAAa,WAAW;IAItB,YACS,WAAwB,EACxB,UAAsB;QADtB,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAY;IAC5B,CAAC;CACL;AARD,kCAQC;AAuBD,MAAa,SAAS;IAKpB,YACS,KAAY,EACZ,KAAY;QADZ,UAAK,GAAL,KAAK,CAAO;QACZ,UAAK,GAAL,KAAK,CAAO;IAClB,CAAC;IAEJ,MAAM;QACJ,OAAO,IAAI,SAAS,CAAwB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;CACF;AAbD,8BAaC;AAmQD,MAAa,gBAAgB;IAM3B,YACS,QAAkB,EAClB,KAAY,EACZ,KAAY;QAFZ,aAAQ,GAAR,QAAQ,CAAU;QAClB,UAAK,GAAL,KAAK,CAAO;QACZ,UAAK,GAAL,KAAK,CAAO;IAClB,CAAC;IAEJ;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc;QAEZ,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,EACV,EAAU,CACX,CAAC;IACJ,CAAC;CACF;AAvCD,4CAuCC;AAED;;;;;GAKG;AACH,MAAa,YAAY;IAMvB,YACS,QAAkB,EAClB,KAAY;QADZ,aAAQ,GAAR,QAAQ,CAAU;QAClB,UAAK,GAAL,KAAK,CAAO;IAClB,CAAC;IAEJ,cAAc;QACZ,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;CACF;AAjBD,oCAiBC;AAqGD,MAAa,uBAAwB,SAAQ,gBAI5C;CAAG;AAJJ,0DAII","sourcesContent":["import type { RoomSchemaShape } from './presence.ts';\nimport { Expand } from './queryTypes.ts';\n\nexport class DataAttrDef<\n ValueType,\n IsRequired extends RequirementKind,\n IsIndexed extends boolean,\n> {\n public metadata: Record<string, unknown> = {};\n\n constructor(\n public valueType: ValueTypes,\n public required: IsRequired,\n public isIndexed: IsIndexed,\n\n public config: {\n indexed: boolean;\n unique: boolean;\n // clientValidator?: (value: ValueType) => boolean;\n } = { indexed: false, unique: false },\n ) {}\n\n /**\n * @deprecated Only use this temporarily for attributes that you want\n * to treat as required in frontend code but can’t yet mark as required\n * and enforced for backend\n */\n clientRequired() {\n return new DataAttrDef<ValueType, true, IsIndexed>(\n this.valueType,\n false as unknown as true,\n this.isIndexed,\n this.config,\n );\n }\n\n optional() {\n return new DataAttrDef<ValueType, false, IsIndexed>(\n this.valueType,\n false,\n this.isIndexed,\n this.config,\n );\n }\n\n unique() {\n return new DataAttrDef<ValueType, IsRequired, IsIndexed>(\n this.valueType,\n this.required,\n this.isIndexed,\n {\n ...this.config,\n unique: true,\n },\n );\n }\n\n indexed() {\n return new DataAttrDef<ValueType, IsRequired, true>(\n this.valueType,\n this.required,\n true,\n {\n ...this.config,\n indexed: true,\n },\n );\n }\n\n // clientValidate(clientValidator: (value: ValueType) => boolean) {\n // return new DataAttrDef(this.valueType, this.required, {\n // ...this.config,\n // clientValidator,\n // });\n // }\n}\n\nexport class LinkAttrDef<\n Cardinality extends CardinalityKind,\n EntityName extends string,\n> {\n constructor(\n public cardinality: Cardinality,\n public entityName: EntityName,\n ) {}\n}\n\nexport interface IContainEntitiesAndLinks<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n> {\n entities: Entities;\n links: Links;\n}\n\n// ==========\n// base types\n\nexport type ValueTypes = 'string' | 'number' | 'boolean' | 'date' | 'json';\n\nexport type CardinalityKind = 'one' | 'many';\n\n// true - force required\n// false - optional, not required\nexport type RequirementKind = true | false;\n\nexport type AttrsDefs = Record<string, DataAttrDef<any, any, any>>;\n\nexport class EntityDef<\n Attrs extends AttrsDefs,\n Links extends Record<string, LinkAttrDef<any, any>>,\n AsType,\n> {\n constructor(\n public attrs: Attrs,\n public links: Links,\n ) {}\n\n asType<_AsType extends Partial<MappedAttrs<Attrs, boolean>>>() {\n return new EntityDef<Attrs, Links, _AsType>(this.attrs, this.links);\n }\n}\n\nexport type EntityDefFromSchema<\n S extends IContainEntitiesAndLinks<any, any>,\n K extends keyof S['entities'],\n> = {\n [k in keyof S['entities'][K]['attrs']]: S['entities'][K] extends EntityDef<\n any,\n any,\n any\n >\n ? S['entities'][K]['attrs'][k]\n : never;\n};\n\nexport type EntitiesDef = Record<string, EntityDef<any, any, any>>;\n\nexport type LinksDef<Entities extends EntitiesDef> = Record<\n string,\n LinkDef<\n Entities,\n keyof Entities,\n string,\n CardinalityKind,\n keyof Entities,\n string,\n CardinalityKind\n >\n>;\n\nexport type LinkDef<\n Entities extends EntitiesDef,\n FwdEntity extends keyof Entities,\n FwdAttr extends string,\n FwdCardinality extends CardinalityKind,\n RevEntity extends keyof Entities,\n RevAttr extends string,\n RevCardinality extends CardinalityKind,\n> = {\n forward: {\n on: FwdEntity;\n label: FwdAttr;\n has: FwdCardinality;\n required?: RequirementKind;\n onDelete?: 'cascade';\n };\n reverse: {\n on: RevEntity;\n label: RevAttr;\n has: RevCardinality;\n onDelete?: 'cascade';\n };\n};\n\n// ==========\n// derived types\ntype IsEmptyOrIndexSignature<T> = keyof T extends never\n ? true\n : string extends keyof T\n ? true\n : false;\n\nexport type EntitiesWithLinks<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n> = {\n [EntityName in keyof Entities]: EntityDef<\n Entities[EntityName]['attrs'],\n EntityForwardLinksMap<EntityName, Entities, Links> &\n EntityReverseLinksMap<EntityName, Entities, Links>,\n Entities[EntityName] extends EntityDef<any, any, infer O>\n ? O extends void\n ? void\n : O\n : void\n >;\n};\n\ntype EntityForwardLinksMap<\n EntityName extends keyof Entities,\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n LinkIndexFwd = LinksIndexedByEntity<Entities, Links, 'reverse'>,\n> =\n IsEmptyOrIndexSignature<Links> extends true\n ? {}\n : EntityName extends keyof LinkIndexFwd\n ? {\n [LinkName in keyof LinkIndexFwd[EntityName]]: LinkIndexFwd[EntityName][LinkName] extends LinkDef<\n Entities,\n infer RelatedEntityName,\n any,\n any,\n any,\n any,\n infer Cardinality\n >\n ? {\n entityName: RelatedEntityName;\n cardinality: Cardinality;\n }\n : never;\n }\n : {};\n\ntype EntityReverseLinksMap<\n EntityName extends keyof Entities,\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n RevLinkIndex = LinksIndexedByEntity<Entities, Links, 'forward'>,\n> =\n IsEmptyOrIndexSignature<Links> extends true\n ? {}\n : EntityName extends keyof RevLinkIndex\n ? {\n [LinkName in keyof RevLinkIndex[EntityName]]: RevLinkIndex[EntityName][LinkName] extends LinkDef<\n Entities,\n any,\n any,\n infer Cardinality,\n infer RelatedEntityName,\n any,\n any\n >\n ? {\n entityName: RelatedEntityName;\n cardinality: Cardinality;\n }\n : never;\n }\n : {};\n\ntype LinksIndexedByEntity<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n Direction extends 'forward' | 'reverse',\n> = {\n [FwdEntity in keyof Entities]: {\n [LinkName in keyof Links as Links[LinkName][Direction]['on'] extends FwdEntity\n ? Links[LinkName][Direction]['label']\n : never]: Links[LinkName] extends LinkDef<\n Entities,\n infer FwdEntity,\n infer FwdAttr,\n infer FwdCardinality,\n infer RevEntity,\n infer RevAttr,\n infer RevCardinality\n >\n ? LinkDef<\n Entities,\n FwdEntity,\n FwdAttr,\n FwdCardinality,\n RevEntity,\n RevAttr,\n RevCardinality\n >\n : never;\n };\n};\n\ntype RequiredKeys<Attrs extends AttrsDefs> = {\n [K in keyof Attrs]: Attrs[K] extends DataAttrDef<any, infer R, any>\n ? R extends true\n ? K\n : never\n : never;\n}[keyof Attrs];\n\ntype OptionalKeys<Attrs extends AttrsDefs> = {\n [K in keyof Attrs]: Attrs[K] extends DataAttrDef<any, infer R, any>\n ? R extends false\n ? K\n : never\n : never;\n}[keyof Attrs];\n\n/**\n * MappedAttrs:\n * - Required keys => `key: ValueType`\n * - Optional keys => `key?: ValueType`\n */\ntype MappedAttrs<Attrs extends AttrsDefs, UseDates extends boolean> = {\n [K in RequiredKeys<Attrs>]: Attrs[K] extends DataAttrDef<infer V, any, any>\n ? V extends Date\n ? UseDates extends true\n ? V\n : string | number\n : V\n : never;\n} & {\n [K in OptionalKeys<Attrs>]?: Attrs[K] extends DataAttrDef<infer V, any, any>\n ? V extends Date\n ? UseDates extends true\n ? V\n : string | number\n : V\n : never;\n};\n\nexport type ResolveEntityAttrs<\n EDef extends EntityDef<any, any, any>,\n UseDates extends boolean = false,\n ResolvedAttrs = MappedAttrs<EDef['attrs'], UseDates>,\n> =\n EDef extends EntityDef<any, any, infer AsType>\n ? AsType extends void\n ? ResolvedAttrs\n : Omit<ResolvedAttrs, keyof AsType> & AsType\n : ResolvedAttrs;\n\nexport type ResolveAttrs<\n Entities extends EntitiesDef,\n EntityName extends keyof Entities,\n UseDates extends boolean,\n> = ResolveEntityAttrs<Entities[EntityName], UseDates>;\n\nexport type RoomsFromDef<RDef extends RoomsDef> = {\n [RoomName in keyof RDef]: {\n presence: Expand<ResolveEntityAttrs<RDef[RoomName]['presence']>>;\n topics: {\n [TopicName in keyof RDef[RoomName]['topics']]: Expand<\n ResolveEntityAttrs<NonNullable<RDef[RoomName]['topics']>[TopicName]>\n >;\n };\n };\n};\n\nexport type RoomsOf<S> =\n S extends InstantSchemaDef<any, any, infer RDef> ? RoomsFromDef<RDef> : never;\n\nexport type PresenceOf<\n S,\n RoomType extends keyof RoomsOf<S>,\n> = RoomsOf<S>[RoomType] extends { presence: infer P } ? P : {};\n\nexport type TopicsOf<\n S,\n RoomType extends keyof RoomsOf<S>,\n> = RoomsOf<S>[RoomType] extends { topics: infer T } ? T : {};\n\nexport type TopicOf<\n S,\n RoomType extends keyof RoomsOf<S>,\n TopicType extends keyof TopicsOf<S, RoomType>,\n> = TopicsOf<S, RoomType>[TopicType];\n\ninterface RoomDef {\n presence: EntityDef<any, any, any>;\n topics?: {\n [TopicName: string]: EntityDef<any, any, any>;\n };\n}\n\nexport interface RoomsDef {\n [RoomType: string]: RoomDef;\n}\n\nexport class InstantSchemaDef<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n Rooms extends RoomsDef,\n> implements IContainEntitiesAndLinks<Entities, Links>\n{\n constructor(\n public entities: Entities,\n public links: Links,\n public rooms: Rooms,\n ) {}\n\n /**\n * @deprecated\n * `withRoomSchema` is deprecated. Define your schema in `rooms` directly:\n *\n * @example\n * // Before:\n * const schema = i.schema({\n * // ...\n * }).withRoomSchema<RoomSchema>()\n *\n * // After\n * const schema = i.schema({\n * rooms: {\n * // ...\n * }\n * })\n *\n * @see https://instantdb.com/docs/presence-and-topics#typesafety\n */\n withRoomSchema<_RoomSchema extends RoomSchemaShape>() {\n type RDef = RoomDefFromShape<_RoomSchema>;\n return new InstantSchemaDef<Entities, Links, RDef>(\n this.entities,\n this.links,\n {} as RDef,\n );\n }\n}\n\n/**\n * @deprecated\n * `i.graph` is deprecated. Use `i.schema` instead.\n *\n * @see https://instantdb.com/docs/modeling-data\n */\nexport class InstantGraph<\n Entities extends EntitiesDef,\n Links extends LinksDef<Entities>,\n RoomSchema extends RoomSchemaShape = {},\n> implements IContainEntitiesAndLinks<Entities, Links>\n{\n constructor(\n public entities: Entities,\n public links: Links,\n ) {}\n\n withRoomSchema<_RoomSchema extends RoomSchemaShape>() {\n return new InstantGraph<Entities, Links, _RoomSchema>(\n this.entities,\n this.links,\n );\n }\n}\n\ntype EntityDefFromRoomSlice<Shape extends { [k: string]: any }> = EntityDef<\n {\n [AttrName in keyof Shape]: DataAttrDef<\n Shape[AttrName],\n Shape[AttrName] extends undefined ? false : true,\n any\n >;\n },\n any,\n void\n>;\n\ntype RoomDefFromShape<RoomSchema extends RoomSchemaShape> = {\n [RoomName in keyof RoomSchema]: {\n presence: EntityDefFromRoomSlice<\n NonNullable<RoomSchema[RoomName]['presence']>\n >;\n topics: {\n [TopicName in keyof RoomSchema[RoomName]['topics']]: EntityDefFromRoomSlice<\n NonNullable<RoomSchema[RoomName]['topics'][TopicName]>\n >;\n };\n };\n};\n\ntype EntityDefFromShape<Shape, K extends keyof Shape> = EntityDef<\n {\n [AttrName in keyof Shape[K]]: DataAttrDef<\n Shape[K][AttrName],\n Shape[K][AttrName] extends undefined ? false : true,\n any\n >;\n },\n {\n [LinkName in keyof Shape]: LinkAttrDef<\n 'many',\n LinkName extends string ? LinkName : string\n >;\n },\n void\n>;\n\n/**\n * If you were using the old `schema` types, you can use this to help you\n * migrate.\n *\n * @example\n * // Before\n * const db = init<Schema, Rooms>({...})\n *\n * // After\n * const db = init<BackwardsCompatibleSchema<Schema, Rooms>>({...})\n */\nexport type BackwardsCompatibleSchema<\n Shape extends { [k: string]: any },\n RoomSchema extends RoomSchemaShape = {},\n> = InstantSchemaDef<\n { [K in keyof Shape]: EntityDefFromShape<Shape, K> },\n UnknownLinks<EntitiesDef>,\n RoomDefFromShape<RoomSchema>\n>;\n\n// ----------\n// InstantUnknownSchema\n\nexport type UnknownEntity = EntityDef<\n {\n id: DataAttrDef<string, true, true>;\n [AttrName: string]: DataAttrDef<any, boolean, boolean>;\n },\n { [LinkName: string]: LinkAttrDef<'many', string> },\n void\n>;\n\nexport type UnknownEntities = {\n [EntityName: string]: UnknownEntity;\n};\n\nexport interface UnknownLinks<Entities extends EntitiesDef> {\n [LinkName: string]: LinkDef<\n Entities,\n string,\n string,\n 'many',\n string,\n string,\n 'many'\n >;\n}\n\nexport interface UnknownRooms {\n [RoomName: string]: {\n presence: EntityDef<any, any, any>;\n topics: {\n [TopicName: string]: EntityDef<any, any, any>;\n };\n };\n}\n\nexport class InstantUnknownSchemaDef extends InstantSchemaDef<\n UnknownEntities,\n UnknownLinks<UnknownEntities>,\n UnknownRooms\n> {}\n\nexport type InstantUnknownSchema = InstantUnknownSchemaDef;\n\nexport type CreateParams<\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = {\n [AttrName in RequiredKeys<\n Schema['entities'][EntityName]['attrs']\n >]: Schema['entities'][EntityName]['attrs'][AttrName] extends DataAttrDef<\n infer ValueType,\n any,\n any\n >\n ? ValueType extends Date\n ? string | number | Date\n : ValueType\n : never;\n} & {\n [AttrName in OptionalKeys<\n Schema['entities'][EntityName]['attrs']\n >]?: Schema['entities'][EntityName]['attrs'][AttrName] extends DataAttrDef<\n infer ValueType,\n false,\n any\n >\n ? (ValueType extends Date ? string | number | Date : ValueType) | null\n : never;\n};\n\nexport type UpdateParams<\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = {\n [AttrName in keyof Schema['entities'][EntityName]['attrs']]?: Schema['entities'][EntityName]['attrs'][AttrName] extends DataAttrDef<\n infer ValueType,\n infer IsRequired,\n any\n >\n ? IsRequired extends true\n ? ValueType extends Date\n ? string | number | Date\n : ValueType\n : (ValueType extends Date ? string | number | Date : ValueType) | null\n : never;\n};\n\nexport type UpdateOpts = {\n upsert?: boolean | undefined;\n};\n\nexport type LinkParams<\n Schema extends IContainEntitiesAndLinks<any, any>,\n EntityName extends keyof Schema['entities'],\n> = {\n [LinkName in keyof Schema['entities'][EntityName]['links']]?: Schema['entities'][EntityName]['links'][LinkName] extends LinkAttrDef<\n infer Cardinality,\n any\n >\n ? Cardinality extends 'one'\n ? string\n : string | string[]\n : never;\n};\n\nexport type RuleParams = {\n [key: string]: any;\n};\n"]}
|
package/dist/esm/Connection.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ type SendMessageData = {
|
|
|
26
26
|
};
|
|
27
27
|
type MsgEvent<T extends Conn> = {
|
|
28
28
|
target: Connection<T>;
|
|
29
|
-
message: MessageData;
|
|
29
|
+
message: MessageData | MessageData[];
|
|
30
30
|
};
|
|
31
31
|
type CloseEvent<T extends Conn> = {
|
|
32
32
|
target: Connection<T>;
|
|
@@ -78,6 +78,7 @@ export declare class SSEConnection implements Connection<EventSourceType> {
|
|
|
78
78
|
onclose: (event: CloseEvent<EventSourceType>) => void;
|
|
79
79
|
onerror: (event: ErrorEvent<EventSourceType>) => void;
|
|
80
80
|
constructor(ES: EventSourceConstructor, url: string);
|
|
81
|
+
private handleMessage;
|
|
81
82
|
private handleError;
|
|
82
83
|
private handleClose;
|
|
83
84
|
private postMessages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3D,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IAE5D,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;CACpC;AAID,KAAK,IAAI,GAAG,eAAe,GAAG,SAAS,CAAC;AAExC,KAAK,SAAS,CAAC,CAAC,SAAS,IAAI,IAAI;IAC/B,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,QAAQ,CAAC,CAAC,SAAS,IAAI,IAAI;IAC9B,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3D,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IAE5D,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;CACpC;AAID,KAAK,IAAI,GAAG,eAAe,GAAG,SAAS,CAAC;AAExC,KAAK,SAAS,CAAC,CAAC,SAAS,IAAI,IAAI;IAC/B,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,KAAK,QAAQ,CAAC,CAAC,SAAS,IAAI,IAAI;IAC9B,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;CACtC,CAAC;AAEF,KAAK,UAAU,CAAC,CAAC,SAAS,IAAI,IAAI;IAChC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACvB,CAAC;AAEF,UAAU,UAAU,CAAC,CAAC,SAAS,IAAI;IACjC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,KAAK,CAAC;AAEzC,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,IAAI;IACxC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,OAAO,CAAC;IAClB,YAAY,IAAI,OAAO,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CAClD;AAED,qBAAa,YAAa,YAAW,UAAU,CAAC,SAAS,CAAC;IACxD,IAAI,EAAE,aAAa,CAAQ;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;gBACpC,GAAG,EAAE,MAAM;IA4BvB,KAAK;IAIL,MAAM,IAAI,OAAO;IAIjB,YAAY,IAAI,OAAO;IAIvB,IAAI,CAAC,GAAG,EAAE,eAAe;CAG1B;AAQD,qBAAa,aAAc,YAAW,UAAU,CAAC,eAAe,CAAC;IAC/D,IAAI,EAAE,aAAa,CAAS;IAC5B,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,cAAc,CAAwD;IAC9E,OAAO,CAAC,EAAE,CAAyB;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IACpD,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IACtD,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IACtD,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;gBAE1C,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM;IA6BnD,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;YAQL,YAAY;YAoBZ,UAAU;IAaxB,IAAI,CAAC,GAAG,EAAE,eAAe;IAgBzB,MAAM,IAAI,OAAO;IAIjB,YAAY,IAAI,OAAO;IAOvB,KAAK;CAGN"}
|
package/dist/esm/Connection.js
CHANGED
|
@@ -70,30 +70,40 @@ export class SSEConnection {
|
|
|
70
70
|
}
|
|
71
71
|
}, 10000);
|
|
72
72
|
this.conn.onmessage = (e) => {
|
|
73
|
-
const
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
sessionId: msg['session-id'],
|
|
78
|
-
sseToken: msg['sse-token'],
|
|
79
|
-
};
|
|
80
|
-
if (this.onopen) {
|
|
81
|
-
this.onopen({ target: this });
|
|
73
|
+
const message = JSON.parse(e.data);
|
|
74
|
+
if (Array.isArray(message)) {
|
|
75
|
+
for (const msg of message) {
|
|
76
|
+
this.handleMessage(msg);
|
|
82
77
|
}
|
|
83
|
-
clearTimeout(this.sseInitTimeout);
|
|
84
|
-
return;
|
|
85
78
|
}
|
|
86
|
-
|
|
87
|
-
this.
|
|
88
|
-
target: this,
|
|
89
|
-
message: msg,
|
|
90
|
-
});
|
|
79
|
+
else {
|
|
80
|
+
this.handleMessage(message);
|
|
91
81
|
}
|
|
92
82
|
};
|
|
93
83
|
this.conn.onerror = (e) => {
|
|
94
84
|
this.handleError();
|
|
95
85
|
};
|
|
96
86
|
}
|
|
87
|
+
handleMessage(msg) {
|
|
88
|
+
if (msg.op === 'sse-init') {
|
|
89
|
+
this.initParams = {
|
|
90
|
+
machineId: msg['machine-id'],
|
|
91
|
+
sessionId: msg['session-id'],
|
|
92
|
+
sseToken: msg['sse-token'],
|
|
93
|
+
};
|
|
94
|
+
if (this.onopen) {
|
|
95
|
+
this.onopen({ target: this });
|
|
96
|
+
}
|
|
97
|
+
clearTimeout(this.sseInitTimeout);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (this.onmessage) {
|
|
101
|
+
this.onmessage({
|
|
102
|
+
target: this,
|
|
103
|
+
message: msg,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
97
107
|
// Runs the onerror and closes the connection
|
|
98
108
|
handleError() {
|
|
99
109
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"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","sourcesContent":["export interface EventSourceType {\n readonly url: string;\n readonly readyState: number;\n\n onopen: ((this: EventSourceType, ev: Event) => any) | null;\n onmessage: ((this: EventSourceType, ev: MessageEvent) => any) | null;\n onerror: ((this: EventSourceType, ev: Event) => any) | null;\n\n close(): void;\n}\n\nexport interface EventSourceConstructor {\n OPEN: number;\n CONNECTING: number;\n CLOSED: number;\n new (url: string): EventSourceType;\n}\n\nlet _connId = 0;\n\ntype Conn = EventSourceType | WebSocket;\n\ntype OpenEvent<T extends Conn> = {\n target: Connection<T>;\n};\n\ntype MessageData = {\n op: string;\n [key: string]: any;\n};\n\ntype SendMessageData = {\n 'client-event-id': string;\n [key: string]: any;\n};\n\ntype MsgEvent<T extends Conn> = {\n target: Connection<T>;\n message: MessageData;\n};\n\ntype CloseEvent<T extends Conn> = {\n target: Connection<T>;\n};\n\ninterface ErrorEvent<T extends Conn> {\n target: Connection<T>;\n}\n\nexport type TransportType = 'ws' | 'sse';\n\nexport interface Connection<T extends Conn> {\n conn: T;\n type: 'ws' | 'sse';\n id: string;\n close(): void;\n isOpen(): boolean;\n isConnecting(): boolean;\n send(msg: SendMessageData): void;\n onopen: ((event: OpenEvent<T>) => void) | null;\n onmessage: ((event: MsgEvent<T>) => void) | null;\n onclose: ((event: CloseEvent<T>) => void) | null;\n onerror: ((event: ErrorEvent<T>) => void) | null;\n}\n\nexport class WSConnection implements Connection<WebSocket> {\n type: TransportType = 'ws';\n conn: WebSocket;\n id: string;\n onopen: (event: OpenEvent<WebSocket>) => void;\n onmessage: (event: MsgEvent<WebSocket>) => void;\n onclose: (event: CloseEvent<WebSocket>) => void;\n onerror: (event: ErrorEvent<WebSocket>) => void;\n constructor(url: string) {\n this.id = `${this.type}_${_connId++}`;\n this.conn = new WebSocket(url);\n this.conn.onopen = (_e) => {\n if (this.onopen) {\n this.onopen({ target: this });\n }\n };\n this.conn.onmessage = (e) => {\n if (this.onmessage) {\n this.onmessage({\n target: this,\n message: JSON.parse(e.data.toString()),\n });\n }\n };\n this.conn.onclose = (_e) => {\n if (this.onclose) {\n this.onclose({ target: this });\n }\n };\n this.conn.onerror = (_e) => {\n if (this.onerror) {\n this.onerror({ target: this });\n }\n };\n }\n\n close() {\n this.conn.close();\n }\n\n isOpen(): boolean {\n return this.conn.readyState === (WebSocket.OPEN ?? 1);\n }\n\n isConnecting(): boolean {\n return this.conn.readyState === (WebSocket.CONNECTING ?? 0);\n }\n\n send(msg: SendMessageData) {\n return this.conn.send(JSON.stringify(msg));\n }\n}\n\ntype SSEInitParams = {\n machineId: string;\n sessionId: string;\n sseToken: string;\n};\n\nexport class SSEConnection implements Connection<EventSourceType> {\n type: TransportType = 'sse';\n private initParams: SSEInitParams | null = null;\n private sendQueue: any[] = [];\n private sendPromise: Promise<void> | null;\n private closeFired: boolean = false;\n private sseInitTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private ES: EventSourceConstructor;\n conn: EventSourceType;\n url: string;\n id: string;\n onopen: (event: OpenEvent<EventSourceType>) => void;\n onmessage: (event: MsgEvent<EventSourceType>) => void;\n onclose: (event: CloseEvent<EventSourceType>) => void;\n onerror: (event: ErrorEvent<EventSourceType>) => void;\n\n constructor(ES: EventSourceConstructor, url: string) {\n this.id = `${this.type}_${_connId++}`;\n this.url = url;\n this.ES = ES;\n this.conn = new ES(url);\n\n // Close the connection if we didn't get an init within 10 seconds\n this.sseInitTimeout = setTimeout(() => {\n if (!this.initParams) {\n this.handleError();\n }\n }, 10000);\n\n this.conn.onmessage = (e) => {\n const msg = JSON.parse(e.data);\n if (msg.op === 'sse-init') {\n this.initParams = {\n machineId: msg['machine-id'],\n sessionId: msg['session-id'],\n sseToken: msg['sse-token'],\n };\n if (this.onopen) {\n this.onopen({ target: this });\n }\n clearTimeout(this.sseInitTimeout);\n return;\n }\n if (this.onmessage) {\n this.onmessage({\n target: this,\n message: msg,\n });\n }\n };\n\n this.conn.onerror = (e) => {\n this.handleError();\n };\n }\n\n // Runs the onerror and closes the connection\n private handleError() {\n try {\n if (this.onerror) {\n this.onerror({ target: this });\n }\n } finally {\n this.handleClose();\n }\n }\n\n private handleClose() {\n this.conn.close();\n if (this.onclose && !this.closeFired) {\n this.closeFired = true;\n this.onclose({ target: this });\n }\n }\n\n private async postMessages(messages: any[]): Promise<void> {\n try {\n const resp = await fetch(this.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n machine_id: this.initParams?.machineId,\n session_id: this.initParams?.sessionId,\n sse_token: this.initParams?.sseToken,\n messages,\n }),\n });\n if (!resp.ok) {\n this.handleError();\n }\n } catch (e) {\n this.handleError();\n }\n }\n\n private async flushQueue() {\n if (this.sendPromise || !this.sendQueue.length) return;\n\n const messages = this.sendQueue;\n this.sendQueue = [];\n const sendPromise = this.postMessages(messages);\n this.sendPromise = sendPromise;\n sendPromise.then(() => {\n this.sendPromise = null;\n this.flushQueue();\n });\n }\n\n send(msg: SendMessageData) {\n if (!this.isOpen() || !this.initParams) {\n if (this.isConnecting()) {\n throw new Error(\n `Failed to execute 'send' on 'EventSource': Still in CONNECTING state.`,\n );\n }\n if (this.conn.readyState === this.ES.CLOSED) {\n throw new Error(`EventSource is already in CLOSING or CLOSED state.`);\n }\n throw new Error(`EventSource is in invalid state.`);\n }\n this.sendQueue.push(msg);\n this.flushQueue();\n }\n\n isOpen(): boolean {\n return this.conn.readyState === this.ES.OPEN && this.initParams !== null;\n }\n\n isConnecting(): boolean {\n return (\n this.conn.readyState === this.ES.CONNECTING ||\n (this.conn.readyState === this.ES.OPEN && this.initParams === null)\n );\n }\n\n close() {\n this.handleClose();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":"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","sourcesContent":["export interface EventSourceType {\n readonly url: string;\n readonly readyState: number;\n\n onopen: ((this: EventSourceType, ev: Event) => any) | null;\n onmessage: ((this: EventSourceType, ev: MessageEvent) => any) | null;\n onerror: ((this: EventSourceType, ev: Event) => any) | null;\n\n close(): void;\n}\n\nexport interface EventSourceConstructor {\n OPEN: number;\n CONNECTING: number;\n CLOSED: number;\n new (url: string): EventSourceType;\n}\n\nlet _connId = 0;\n\ntype Conn = EventSourceType | WebSocket;\n\ntype OpenEvent<T extends Conn> = {\n target: Connection<T>;\n};\n\ntype MessageData = {\n op: string;\n [key: string]: any;\n};\n\ntype SendMessageData = {\n 'client-event-id': string;\n [key: string]: any;\n};\n\ntype MsgEvent<T extends Conn> = {\n target: Connection<T>;\n message: MessageData | MessageData[];\n};\n\ntype CloseEvent<T extends Conn> = {\n target: Connection<T>;\n};\n\ninterface ErrorEvent<T extends Conn> {\n target: Connection<T>;\n}\n\nexport type TransportType = 'ws' | 'sse';\n\nexport interface Connection<T extends Conn> {\n conn: T;\n type: 'ws' | 'sse';\n id: string;\n close(): void;\n isOpen(): boolean;\n isConnecting(): boolean;\n send(msg: SendMessageData): void;\n onopen: ((event: OpenEvent<T>) => void) | null;\n onmessage: ((event: MsgEvent<T>) => void) | null;\n onclose: ((event: CloseEvent<T>) => void) | null;\n onerror: ((event: ErrorEvent<T>) => void) | null;\n}\n\nexport class WSConnection implements Connection<WebSocket> {\n type: TransportType = 'ws';\n conn: WebSocket;\n id: string;\n onopen: (event: OpenEvent<WebSocket>) => void;\n onmessage: (event: MsgEvent<WebSocket>) => void;\n onclose: (event: CloseEvent<WebSocket>) => void;\n onerror: (event: ErrorEvent<WebSocket>) => void;\n constructor(url: string) {\n this.id = `${this.type}_${_connId++}`;\n this.conn = new WebSocket(url);\n this.conn.onopen = (_e) => {\n if (this.onopen) {\n this.onopen({ target: this });\n }\n };\n this.conn.onmessage = (e) => {\n if (this.onmessage) {\n this.onmessage({\n target: this,\n message: JSON.parse(e.data.toString()),\n });\n }\n };\n this.conn.onclose = (_e) => {\n if (this.onclose) {\n this.onclose({ target: this });\n }\n };\n this.conn.onerror = (_e) => {\n if (this.onerror) {\n this.onerror({ target: this });\n }\n };\n }\n\n close() {\n this.conn.close();\n }\n\n isOpen(): boolean {\n return this.conn.readyState === (WebSocket.OPEN ?? 1);\n }\n\n isConnecting(): boolean {\n return this.conn.readyState === (WebSocket.CONNECTING ?? 0);\n }\n\n send(msg: SendMessageData) {\n return this.conn.send(JSON.stringify(msg));\n }\n}\n\ntype SSEInitParams = {\n machineId: string;\n sessionId: string;\n sseToken: string;\n};\n\nexport class SSEConnection implements Connection<EventSourceType> {\n type: TransportType = 'sse';\n private initParams: SSEInitParams | null = null;\n private sendQueue: any[] = [];\n private sendPromise: Promise<void> | null;\n private closeFired: boolean = false;\n private sseInitTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private ES: EventSourceConstructor;\n conn: EventSourceType;\n url: string;\n id: string;\n onopen: (event: OpenEvent<EventSourceType>) => void;\n onmessage: (event: MsgEvent<EventSourceType>) => void;\n onclose: (event: CloseEvent<EventSourceType>) => void;\n onerror: (event: ErrorEvent<EventSourceType>) => void;\n\n constructor(ES: EventSourceConstructor, url: string) {\n this.id = `${this.type}_${_connId++}`;\n this.url = url;\n this.ES = ES;\n this.conn = new ES(url);\n\n // Close the connection if we didn't get an init within 10 seconds\n this.sseInitTimeout = setTimeout(() => {\n if (!this.initParams) {\n this.handleError();\n }\n }, 10000);\n\n this.conn.onmessage = (e) => {\n const message = JSON.parse(e.data);\n if (Array.isArray(message)) {\n for (const msg of message) {\n this.handleMessage(msg);\n }\n } else {\n this.handleMessage(message);\n }\n };\n\n this.conn.onerror = (e) => {\n this.handleError();\n };\n }\n\n private handleMessage(msg: MessageData) {\n if (msg.op === 'sse-init') {\n this.initParams = {\n machineId: msg['machine-id'],\n sessionId: msg['session-id'],\n sseToken: msg['sse-token'],\n };\n if (this.onopen) {\n this.onopen({ target: this });\n }\n clearTimeout(this.sseInitTimeout);\n return;\n }\n if (this.onmessage) {\n this.onmessage({\n target: this,\n message: msg,\n });\n }\n }\n\n // Runs the onerror and closes the connection\n private handleError() {\n try {\n if (this.onerror) {\n this.onerror({ target: this });\n }\n } finally {\n this.handleClose();\n }\n }\n\n private handleClose() {\n this.conn.close();\n if (this.onclose && !this.closeFired) {\n this.closeFired = true;\n this.onclose({ target: this });\n }\n }\n\n private async postMessages(messages: any[]): Promise<void> {\n try {\n const resp = await fetch(this.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n machine_id: this.initParams?.machineId,\n session_id: this.initParams?.sessionId,\n sse_token: this.initParams?.sseToken,\n messages,\n }),\n });\n if (!resp.ok) {\n this.handleError();\n }\n } catch (e) {\n this.handleError();\n }\n }\n\n private async flushQueue() {\n if (this.sendPromise || !this.sendQueue.length) return;\n\n const messages = this.sendQueue;\n this.sendQueue = [];\n const sendPromise = this.postMessages(messages);\n this.sendPromise = sendPromise;\n sendPromise.then(() => {\n this.sendPromise = null;\n this.flushQueue();\n });\n }\n\n send(msg: SendMessageData) {\n if (!this.isOpen() || !this.initParams) {\n if (this.isConnecting()) {\n throw new Error(\n `Failed to execute 'send' on 'EventSource': Still in CONNECTING state.`,\n );\n }\n if (this.conn.readyState === this.ES.CLOSED) {\n throw new Error(`EventSource is already in CLOSING or CLOSED state.`);\n }\n throw new Error(`EventSource is in invalid state.`);\n }\n this.sendQueue.push(msg);\n this.flushQueue();\n }\n\n isOpen(): boolean {\n return this.conn.readyState === this.ES.OPEN && this.initParams !== null;\n }\n\n isConnecting(): boolean {\n return (\n this.conn.readyState === this.ES.CONNECTING ||\n (this.conn.readyState === this.ES.OPEN && this.initParams === null)\n );\n }\n\n close() {\n this.handleClose();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Reactor.d.ts","sourceRoot":"","sources":["../../src/Reactor.js"],"names":[],"mappings":"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"}
|
package/dist/esm/Reactor.js
CHANGED
|
@@ -335,7 +335,14 @@ export default class Reactor {
|
|
|
335
335
|
}
|
|
336
336
|
// Try to reconnect via websocket the next time we connect
|
|
337
337
|
this._transportType = 'ws';
|
|
338
|
-
|
|
338
|
+
if (Array.isArray(e.message)) {
|
|
339
|
+
for (const msg of e.message) {
|
|
340
|
+
this._handleReceive(targetTransport.id, msg);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
this._handleReceive(targetTransport.id, e.message);
|
|
345
|
+
}
|
|
339
346
|
};
|
|
340
347
|
this._transportOnError = (e) => {
|
|
341
348
|
const targetTransport = e.target;
|