@amityco/ts-sdk 7.26.1-a95742e.0 → 7.26.1-c100793.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,7 +32,9 @@ declare global {
32
32
  accessToken: string;
33
33
  userId: string;
34
34
  }) => Promise<void>;
35
- disconnect: () => Promise<void>;
35
+ disconnect: (options?: {
36
+ endSession?: boolean;
37
+ }) => Promise<void>;
36
38
  get connected(): boolean;
37
39
  on: <T extends keyof Amity.MqttEvents>(event: T, handler: (payload: Amity.MqttEvents[T]) => void) => void;
38
40
  once: <T extends keyof Amity.MqttEvents>(event: T, handler: (payload: Amity.MqttEvents[T]) => void) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/@types/core/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,CAAC;AAEV,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK,CAAC;QACd,KAAK,eAAe,CAAC,CAAC,IAAI;YACxB,MAAM,EAAE,SAAS,CAAC;YAClB,IAAI,EAAE,CAAC,CAAC;SACT,CAAC;QAEF,KAAK,YAAY,GAAG;YAClB,MAAM,EAAE,MAAM,CAAC;YACf,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC;SACzB,CAAC;QAEF,KAAK,aAAa,GAAG;YACnB,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC;SACzB,CAAC;QAEF,KAAK,gBAAgB,GAAG;YACtB,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC;QAEF,KAAK,QAAQ,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,aAAa,CAAC;QAErE,KAAK,KAAK,GAAG,MAAM,CAAC;QAEpB,KAAK,UAAU,GAAG;YAChB,MAAM,EAAE;gBACN,QAAQ,CAAC,EAAE,KAAK,CAAC;gBACjB,IAAI,CAAC,EAAE,KAAK,CAAC;gBACb,SAAS,CAAC,EAAE,MAAM,CAAC;aACpB,CAAC;SACH,CAAC;QAEF,KAAK,UAAU,GAAG;YAChB,OAAO,EAAE,CAAC,MAAM,EAAE;gBAAE,WAAW,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5E,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,SAAS,IAAI,OAAO,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU,EACnC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,KAC5C,IAAI,CAAC;YACV,IAAI,EAAE,CAAC,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU,EACrC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,KAC5C,IAAI,CAAC;YACV,GAAG,EAAE,CAAC,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU,EACpC,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,KAC7C,IAAI,CAAC;YACV,kBAAkB,EAAE,MAAM,IAAI,CAAC;YAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC;YAC7F,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;SACtC,CAAC;KACH;CACF"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/@types/core/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,CAAC;AAEV,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK,CAAC;QACd,KAAK,eAAe,CAAC,CAAC,IAAI;YACxB,MAAM,EAAE,SAAS,CAAC;YAClB,IAAI,EAAE,CAAC,CAAC;SACT,CAAC;QAEF,KAAK,YAAY,GAAG;YAClB,MAAM,EAAE,MAAM,CAAC;YACf,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC;SACzB,CAAC;QAEF,KAAK,aAAa,GAAG;YACnB,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC;SACzB,CAAC;QAEF,KAAK,gBAAgB,GAAG;YACtB,OAAO,EAAE,OAAO,CAAC;SAClB,CAAC;QAEF,KAAK,QAAQ,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,aAAa,CAAC;QAErE,KAAK,KAAK,GAAG,MAAM,CAAC;QAEpB,KAAK,UAAU,GAAG;YAChB,MAAM,EAAE;gBACN,QAAQ,CAAC,EAAE,KAAK,CAAC;gBACjB,IAAI,CAAC,EAAE,KAAK,CAAC;gBACb,SAAS,CAAC,EAAE,MAAM,CAAC;aACpB,CAAC;SACH,CAAC;QAEF,KAAK,UAAU,GAAG;YAChB,OAAO,EAAE,CAAC,MAAM,EAAE;gBAAE,WAAW,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5E,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE;gBAAE,UAAU,CAAC,EAAE,OAAO,CAAA;aAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,SAAS,IAAI,OAAO,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU,EACnC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,KAC5C,IAAI,CAAC;YACV,IAAI,EAAE,CAAC,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU,EACrC,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,KAC5C,IAAI,CAAC;YACV,GAAG,EAAE,CAAC,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU,EACpC,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,KAC7C,IAAI,CAAC;YACV,kBAAkB,EAAE,MAAM,IAAI,CAAC;YAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC;YAC7F,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;SACtC,CAAC;KACH;CACF"}
@@ -42,12 +42,21 @@ declare global {
42
42
  width: number;
43
43
  height: number;
44
44
  isFull: boolean;
45
+ [key: string]: unknown;
45
46
  };
46
- type VideoMetadata = Record<string, never>;
47
+ type VideoMetadata = Record<string, unknown>;
47
48
  type ClipMetadata = Record<string, never>;
48
49
  type AudioMetadata = Record<string, never>;
49
50
  type MetadataFor<T extends FileType> = T extends 'file' ? FileMetadata : T extends 'image' ? ImageMetadata : T extends 'video' ? VideoMetadata : T extends 'clip' ? ClipMetadata : T extends 'audio' ? AudioMetadata : never;
50
- type File<T extends FileType = any> = Amity.FilePayload<T>;
51
+ type FileLinkedObject<T extends FileType> = (T extends 'image' ? {
52
+ getWidth(): number;
53
+ getHeight(): number;
54
+ } : unknown) & (T extends 'video' ? {
55
+ getWidth(): number;
56
+ getHeight(): number;
57
+ getRotation(): number;
58
+ } : unknown);
59
+ type File<T extends FileType = any> = Amity.FilePayload<T> & Amity.FileLinkedObject<T>;
51
60
  }
52
61
  }
53
62
  //# sourceMappingURL=file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/file.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;EAMnB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;EAKjC,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;EAKpB,CAAC;AAEH,oBAAY,kBAAkB;IAC5B,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK,CAAC;QACd,KAAK,cAAc,GAAG,GAAG,kBAAkB,EAAE,CAAC;QAE9C,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAC;QAEzC,KAAK,eAAe,GAAG,OAAO,CAAC,OAAO,eAAe,CAAC,CAAC;QAEvD,KAAK,sBAAsB,GAAG,OAAO,CAAC,OAAO,sBAAsB,CAAC,CAAC;QAErE,KAAK,SAAS,GAAG,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC;QAE3C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1C,KAAK,aAAa,GAAG;YACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7B,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,OAAO,CAAC;SACjB,CAAC;QAEF,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1C,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3C,KAAK,WAAW,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,MAAM,GACnD,YAAY,GACZ,CAAC,SAAS,OAAO,GACjB,aAAa,GACb,CAAC,SAAS,OAAO,GACjB,aAAa,GACb,CAAC,SAAS,MAAM,GAChB,YAAY,GACZ,CAAC,SAAS,OAAO,GACjB,aAAa,GACb,KAAK,CAAC;QAEV,KAAK,IAAI,CAAC,CAAC,SAAS,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KAC5D;CACF"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/@types/domains/file.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;EAMnB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;EAKjC,CAAC;AAEH,eAAO,MAAM,SAAS;;;;;EAKpB,CAAC;AAEH,oBAAY,kBAAkB;IAC5B,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,KAAK,CAAC;QACd,KAAK,cAAc,GAAG,GAAG,kBAAkB,EAAE,CAAC;QAE9C,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,QAAQ,CAAC,CAAC;QAEzC,KAAK,eAAe,GAAG,OAAO,CAAC,OAAO,eAAe,CAAC,CAAC;QAEvD,KAAK,sBAAsB,GAAG,OAAO,CAAC,OAAO,sBAAsB,CAAC,CAAC;QAErE,KAAK,SAAS,GAAG,OAAO,CAAC,OAAO,SAAS,CAAC,CAAC;QAE3C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1C,KAAK,aAAa,GAAG;YACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7B,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,OAAO,CAAC;YAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,CAAC;QAEF,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE7C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1C,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3C,KAAK,WAAW,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,MAAM,GACnD,YAAY,GACZ,CAAC,SAAS,OAAO,GACjB,aAAa,GACb,CAAC,SAAS,OAAO,GACjB,aAAa,GACb,CAAC,SAAS,MAAM,GAChB,YAAY,GACZ,CAAC,SAAS,OAAO,GACjB,aAAa,GACb,KAAK,CAAC;QAEV,KAAK,gBAAgB,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,CAAC,SAAS,OAAO,GAC1D;YAAE,QAAQ,IAAI,MAAM,CAAC;YAAC,SAAS,IAAI,MAAM,CAAA;SAAE,GAC3C,OAAO,CAAC,GACV,CAAC,CAAC,SAAS,OAAO,GACd;YAAE,QAAQ,IAAI,MAAM,CAAC;YAAC,SAAS,IAAI,MAAM,CAAC;YAAC,WAAW,IAAI,MAAM,CAAA;SAAE,GAClE,OAAO,CAAC,CAAC;QAEf,KAAK,IAAI,CAAC,CAAC,SAAS,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;KACxF;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"mqtt.d.ts","sourceRoot":"","sources":["../../../src/core/transports/mqtt.ts"],"names":[],"mappings":"AAEA,OAAa,EAAuB,cAAc,EAAsB,UAAU,EAAE,MAAM,MAAM,CAAC;AAgCjG,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,cAAc,CAuBjB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,aAAc,MAAM,KAAG,gBAkKtD,CAAC"}
1
+ {"version":3,"file":"mqtt.d.ts","sourceRoot":"","sources":["../../../src/core/transports/mqtt.ts"],"names":[],"mappings":"AAEA,OAAa,EAAuB,cAAc,EAAsB,UAAU,EAAE,MAAM,MAAM,CAAC;AAiCjG,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,cAAc,CAuBjB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,aAAc,MAAM,KAAG,gBAgLtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFile.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/getFile.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO;6CACV,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAChC,QAAQ,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAmBpC;;;;;;;;;;;;OAYG;oBACwB,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS;CAhB1F,CAAC"}
1
+ {"version":3,"file":"getFile.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/getFile.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,OAAO;6CACV,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAChC,QAAQ,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAmBpC;;;;;;;;;;;;OAYG;oBACwB,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS;CAhB1F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"uploadImage.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/uploadImage.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,WAAW,aACZ,QAAQ,0BACK,MAAM,KAAK,IAAI,yBAC5B,MAAM,KACf,QAAQ,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAuD7C,CAAC"}
1
+ {"version":3,"file":"uploadImage.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/uploadImage.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,WAAW,aACZ,QAAQ,0BACK,MAAM,KAAK,IAAI,yBAC5B,MAAM,KACf,QAAQ,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAuD7C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"uploadVideo.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/uploadVideo.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,aACZ,QAAQ,aACP,MAAM,eAAe,0BACT,MAAM,KAAK,IAAI,kBACrC,QAAQ,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CA2C7C,CAAC"}
1
+ {"version":3,"file":"uploadVideo.d.ts","sourceRoot":"","sources":["../../../src/fileRepository/api/uploadVideo.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW,aACZ,QAAQ,aACP,MAAM,eAAe,0BACT,MAAM,KAAK,IAAI,kBACrC,QAAQ,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CA2C7C,CAAC"}
package/dist/index.cjs.js CHANGED
@@ -2456,10 +2456,11 @@ var MqttError;
2456
2456
  MqttError[MqttError["BAD_USERNAME_OR_PASSWORD"] = 134] = "BAD_USERNAME_OR_PASSWORD";
2457
2457
  MqttError[MqttError["NOT_AUTHORIZED"] = 135] = "NOT_AUTHORIZED";
2458
2458
  })(MqttError || (MqttError = {}));
2459
- // MQTT 5 session expiry, in seconds. 0xFFFFFFFF keeps the session alive
2460
- // indefinitely, matching the previous 3.1.1 `clean: false` behaviour where the
2461
- // broker retained the session (and its subscriptions) across disconnects.
2462
- const SESSION_EXPIRY_INTERVAL = 0xffffffff;
2459
+ // MQTT 5 session expiry, in seconds. Under MQTT 3.1.1 the broker capped
2460
+ // retained sessions at ~30 min; under MQTT 5 the client's value wins, so an
2461
+ // unbounded value ("never") left disconnected sessions piling up on the broker.
2462
+ // 1800s matches the previous 3.1.1 cap.
2463
+ const SESSION_EXPIRY_INTERVAL = 1800;
2463
2464
  function getMqttOptions(params) {
2464
2465
  return Object.assign({ clean: false, clientId: `mqttjs_ + ${Math.random().toString(16).substring(2, 10)}`, protocolId: 'MQTT', protocolVersion: 5, reconnectPeriod: RETRY_BASE_TIMEOUT, resubscribe: true,
2465
2466
  // The broker/LB drops idle sockets at ~60s. mqtt.js v5 sends its first
@@ -2561,8 +2562,16 @@ const createMqttTransport = (endpoint) => {
2561
2562
  }
2562
2563
  return {
2563
2564
  connect,
2564
- async disconnect() {
2565
+ async disconnect(options) {
2565
2566
  if (this.connected) {
2567
+ // On logout we want the broker to release the session immediately
2568
+ // instead of keeping it around for SESSION_EXPIRY_INTERVAL. mqtt.js
2569
+ // only sends a DISCONNECT packet when `force` is false; force=true
2570
+ // just tears the socket down and the broker keeps the session until
2571
+ // it expires on its own.
2572
+ if (options === null || options === void 0 ? void 0 : options.endSession) {
2573
+ return new Promise(resolve => mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.end(false, { reasonCode: 0, properties: { sessionExpiryInterval: 0 } }, () => resolve()));
2574
+ }
2566
2575
  return new Promise(resolve => mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.end(true, undefined, () => resolve()));
2567
2576
  }
2568
2577
  },
@@ -5439,7 +5448,7 @@ const logout = async () => {
5439
5448
  const client = getActiveClient();
5440
5449
  client.log('client/api/disconnectClient');
5441
5450
  if (client.mqtt && client.mqtt.connected) {
5442
- client.mqtt.disconnect();
5451
+ await client.mqtt.disconnect({ endSession: true });
5443
5452
  }
5444
5453
  /*
5445
5454
  * for cases when session state is terminated (example on ban) or token expired,
@@ -12959,6 +12968,21 @@ const productTagLinkedObject = (productTag) => {
12959
12968
  return Object.assign(Object.assign({}, productTag), { product: internalProduct ? productLinkedObject(internalProduct) : undefined });
12960
12969
  };
12961
12970
 
12971
+ const fileLinkedObject = (file) => {
12972
+ var _a, _b, _c;
12973
+ if (!file)
12974
+ return file;
12975
+ if (file.type === 'video') {
12976
+ const video = (_b = (_a = file.attributes) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.video;
12977
+ return Object.assign(Object.assign({}, file), { getWidth: () => { var _a; return (_a = video === null || video === void 0 ? void 0 : video.width) !== null && _a !== void 0 ? _a : 0; }, getHeight: () => { var _a; return (_a = video === null || video === void 0 ? void 0 : video.height) !== null && _a !== void 0 ? _a : 0; }, getRotation: () => { var _a; return (_a = video === null || video === void 0 ? void 0 : video.rotation) !== null && _a !== void 0 ? _a : 0; } });
12978
+ }
12979
+ if (file.type === 'image') {
12980
+ const metadata = (_c = file.attributes) === null || _c === void 0 ? void 0 : _c.metadata;
12981
+ return Object.assign(Object.assign({}, file), { getWidth: () => { var _a; return (_a = metadata === null || metadata === void 0 ? void 0 : metadata.width) !== null && _a !== void 0 ? _a : 0; }, getHeight: () => { var _a; return (_a = metadata === null || metadata === void 0 ? void 0 : metadata.height) !== null && _a !== void 0 ? _a : 0; } });
12982
+ }
12983
+ return file;
12984
+ };
12985
+
12962
12986
  const postLinkedObject = (post) => {
12963
12987
  return shallowClone(post, {
12964
12988
  childrenPosts: post.children
@@ -13016,19 +13040,19 @@ const postLinkedObject = (post) => {
13016
13040
  getImageInfo() {
13017
13041
  var _a, _b;
13018
13042
  return isAmityImagePost(post)
13019
- ? (_b = pullFromCache(['file', 'get', (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.fileId])) === null || _b === void 0 ? void 0 : _b.data
13043
+ ? fileLinkedObject((_b = pullFromCache(['file', 'get', (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.fileId])) === null || _b === void 0 ? void 0 : _b.data)
13020
13044
  : undefined;
13021
13045
  },
13022
13046
  getVideoInfo() {
13023
13047
  var _a, _b, _c;
13024
13048
  return isAmityVideoPost(post)
13025
- ? (_c = pullFromCache(['file', 'get', (_b = (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.videoFileId) === null || _b === void 0 ? void 0 : _b.original])) === null || _c === void 0 ? void 0 : _c.data
13049
+ ? fileLinkedObject((_c = pullFromCache(['file', 'get', (_b = (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.videoFileId) === null || _b === void 0 ? void 0 : _b.original])) === null || _c === void 0 ? void 0 : _c.data)
13026
13050
  : undefined;
13027
13051
  },
13028
13052
  getVideoThumbnailInfo() {
13029
13053
  var _a, _b;
13030
13054
  return isAmityVideoPost(post)
13031
- ? (_b = pullFromCache(['file', 'get', (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.thumbnailFileId])) === null || _b === void 0 ? void 0 : _b.data
13055
+ ? fileLinkedObject((_b = pullFromCache(['file', 'get', (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.thumbnailFileId])) === null || _b === void 0 ? void 0 : _b.data)
13032
13056
  : undefined;
13033
13057
  },
13034
13058
  getFileInfo() {
@@ -14019,6 +14043,7 @@ const eventLinkedObject = (event) => {
14019
14043
  };
14020
14044
 
14021
14045
  const LinkedObject = {
14046
+ file: fileLinkedObject,
14022
14047
  ad: adLinkedObject,
14023
14048
  comment: commentLinkedObject,
14024
14049
  post: postLinkedObject,
@@ -15415,7 +15440,7 @@ const getFile = async (fileId) => {
15415
15440
  if (client.cache)
15416
15441
  ingestInCache({ files: [data] }, { cachedAt });
15417
15442
  return {
15418
- data,
15443
+ data: fileLinkedObject(data),
15419
15444
  cachedAt,
15420
15445
  };
15421
15446
  };
@@ -15442,7 +15467,7 @@ getFile.locally = (fileId) => {
15442
15467
  if (!cached)
15443
15468
  return;
15444
15469
  return {
15445
- data: cached.data,
15470
+ data: fileLinkedObject(cached.data),
15446
15471
  cachedAt: cached.cachedAt,
15447
15472
  };
15448
15473
  };
@@ -15579,7 +15604,7 @@ const uploadVideo = async (formData, feedType, onProgress) => {
15579
15604
  if (client.cache)
15580
15605
  ingestInCache({ files: data }, { cachedAt });
15581
15606
  return {
15582
- data,
15607
+ data: data.map(file => fileLinkedObject(file)),
15583
15608
  cachedAt,
15584
15609
  };
15585
15610
  };
@@ -15640,7 +15665,7 @@ const uploadImage = async (formData, onProgress, altText) => {
15640
15665
  if (client.cache)
15641
15666
  ingestInCache({ files: data }, { cachedAt });
15642
15667
  return {
15643
- data,
15668
+ data: data.map(file => fileLinkedObject(file)),
15644
15669
  cachedAt,
15645
15670
  };
15646
15671
  };
package/dist/index.esm.js CHANGED
@@ -2440,10 +2440,11 @@ var MqttError;
2440
2440
  MqttError[MqttError["BAD_USERNAME_OR_PASSWORD"] = 134] = "BAD_USERNAME_OR_PASSWORD";
2441
2441
  MqttError[MqttError["NOT_AUTHORIZED"] = 135] = "NOT_AUTHORIZED";
2442
2442
  })(MqttError || (MqttError = {}));
2443
- // MQTT 5 session expiry, in seconds. 0xFFFFFFFF keeps the session alive
2444
- // indefinitely, matching the previous 3.1.1 `clean: false` behaviour where the
2445
- // broker retained the session (and its subscriptions) across disconnects.
2446
- const SESSION_EXPIRY_INTERVAL = 0xffffffff;
2443
+ // MQTT 5 session expiry, in seconds. Under MQTT 3.1.1 the broker capped
2444
+ // retained sessions at ~30 min; under MQTT 5 the client's value wins, so an
2445
+ // unbounded value ("never") left disconnected sessions piling up on the broker.
2446
+ // 1800s matches the previous 3.1.1 cap.
2447
+ const SESSION_EXPIRY_INTERVAL = 1800;
2447
2448
  function getMqttOptions(params) {
2448
2449
  return Object.assign({ clean: false, clientId: `mqttjs_ + ${Math.random().toString(16).substring(2, 10)}`, protocolId: 'MQTT', protocolVersion: 5, reconnectPeriod: RETRY_BASE_TIMEOUT, resubscribe: true,
2449
2450
  // The broker/LB drops idle sockets at ~60s. mqtt.js v5 sends its first
@@ -2545,8 +2546,16 @@ const createMqttTransport = (endpoint) => {
2545
2546
  }
2546
2547
  return {
2547
2548
  connect,
2548
- async disconnect() {
2549
+ async disconnect(options) {
2549
2550
  if (this.connected) {
2551
+ // On logout we want the broker to release the session immediately
2552
+ // instead of keeping it around for SESSION_EXPIRY_INTERVAL. mqtt.js
2553
+ // only sends a DISCONNECT packet when `force` is false; force=true
2554
+ // just tears the socket down and the broker keeps the session until
2555
+ // it expires on its own.
2556
+ if (options === null || options === void 0 ? void 0 : options.endSession) {
2557
+ return new Promise(resolve => mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.end(false, { reasonCode: 0, properties: { sessionExpiryInterval: 0 } }, () => resolve()));
2558
+ }
2550
2559
  return new Promise(resolve => mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.end(true, undefined, () => resolve()));
2551
2560
  }
2552
2561
  },
@@ -5439,7 +5448,7 @@ const logout = async () => {
5439
5448
  const client = getActiveClient();
5440
5449
  client.log('client/api/disconnectClient');
5441
5450
  if (client.mqtt && client.mqtt.connected) {
5442
- client.mqtt.disconnect();
5451
+ await client.mqtt.disconnect({ endSession: true });
5443
5452
  }
5444
5453
  /*
5445
5454
  * for cases when session state is terminated (example on ban) or token expired,
@@ -12959,6 +12968,21 @@ const productTagLinkedObject = (productTag) => {
12959
12968
  return Object.assign(Object.assign({}, productTag), { product: internalProduct ? productLinkedObject(internalProduct) : undefined });
12960
12969
  };
12961
12970
 
12971
+ const fileLinkedObject = (file) => {
12972
+ var _a, _b, _c;
12973
+ if (!file)
12974
+ return file;
12975
+ if (file.type === 'video') {
12976
+ const video = (_b = (_a = file.attributes) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.video;
12977
+ return Object.assign(Object.assign({}, file), { getWidth: () => { var _a; return (_a = video === null || video === void 0 ? void 0 : video.width) !== null && _a !== void 0 ? _a : 0; }, getHeight: () => { var _a; return (_a = video === null || video === void 0 ? void 0 : video.height) !== null && _a !== void 0 ? _a : 0; }, getRotation: () => { var _a; return (_a = video === null || video === void 0 ? void 0 : video.rotation) !== null && _a !== void 0 ? _a : 0; } });
12978
+ }
12979
+ if (file.type === 'image') {
12980
+ const metadata = (_c = file.attributes) === null || _c === void 0 ? void 0 : _c.metadata;
12981
+ return Object.assign(Object.assign({}, file), { getWidth: () => { var _a; return (_a = metadata === null || metadata === void 0 ? void 0 : metadata.width) !== null && _a !== void 0 ? _a : 0; }, getHeight: () => { var _a; return (_a = metadata === null || metadata === void 0 ? void 0 : metadata.height) !== null && _a !== void 0 ? _a : 0; } });
12982
+ }
12983
+ return file;
12984
+ };
12985
+
12962
12986
  const postLinkedObject = (post) => {
12963
12987
  return shallowClone(post, {
12964
12988
  childrenPosts: post.children
@@ -13016,19 +13040,19 @@ const postLinkedObject = (post) => {
13016
13040
  getImageInfo() {
13017
13041
  var _a, _b;
13018
13042
  return isAmityImagePost(post)
13019
- ? (_b = pullFromCache(['file', 'get', (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.fileId])) === null || _b === void 0 ? void 0 : _b.data
13043
+ ? fileLinkedObject((_b = pullFromCache(['file', 'get', (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.fileId])) === null || _b === void 0 ? void 0 : _b.data)
13020
13044
  : undefined;
13021
13045
  },
13022
13046
  getVideoInfo() {
13023
13047
  var _a, _b, _c;
13024
13048
  return isAmityVideoPost(post)
13025
- ? (_c = pullFromCache(['file', 'get', (_b = (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.videoFileId) === null || _b === void 0 ? void 0 : _b.original])) === null || _c === void 0 ? void 0 : _c.data
13049
+ ? fileLinkedObject((_c = pullFromCache(['file', 'get', (_b = (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.videoFileId) === null || _b === void 0 ? void 0 : _b.original])) === null || _c === void 0 ? void 0 : _c.data)
13026
13050
  : undefined;
13027
13051
  },
13028
13052
  getVideoThumbnailInfo() {
13029
13053
  var _a, _b;
13030
13054
  return isAmityVideoPost(post)
13031
- ? (_b = pullFromCache(['file', 'get', (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.thumbnailFileId])) === null || _b === void 0 ? void 0 : _b.data
13055
+ ? fileLinkedObject((_b = pullFromCache(['file', 'get', (_a = post === null || post === void 0 ? void 0 : post.data) === null || _a === void 0 ? void 0 : _a.thumbnailFileId])) === null || _b === void 0 ? void 0 : _b.data)
13032
13056
  : undefined;
13033
13057
  },
13034
13058
  getFileInfo() {
@@ -14019,6 +14043,7 @@ const eventLinkedObject = (event) => {
14019
14043
  };
14020
14044
 
14021
14045
  const LinkedObject = {
14046
+ file: fileLinkedObject,
14022
14047
  ad: adLinkedObject,
14023
14048
  comment: commentLinkedObject,
14024
14049
  post: postLinkedObject,
@@ -15415,7 +15440,7 @@ const getFile = async (fileId) => {
15415
15440
  if (client.cache)
15416
15441
  ingestInCache({ files: [data] }, { cachedAt });
15417
15442
  return {
15418
- data,
15443
+ data: fileLinkedObject(data),
15419
15444
  cachedAt,
15420
15445
  };
15421
15446
  };
@@ -15442,7 +15467,7 @@ getFile.locally = (fileId) => {
15442
15467
  if (!cached)
15443
15468
  return;
15444
15469
  return {
15445
- data: cached.data,
15470
+ data: fileLinkedObject(cached.data),
15446
15471
  cachedAt: cached.cachedAt,
15447
15472
  };
15448
15473
  };
@@ -15579,7 +15604,7 @@ const uploadVideo = async (formData, feedType, onProgress) => {
15579
15604
  if (client.cache)
15580
15605
  ingestInCache({ files: data }, { cachedAt });
15581
15606
  return {
15582
- data,
15607
+ data: data.map(file => fileLinkedObject(file)),
15583
15608
  cachedAt,
15584
15609
  };
15585
15610
  };
@@ -15640,7 +15665,7 @@ const uploadImage = async (formData, onProgress, altText) => {
15640
15665
  if (client.cache)
15641
15666
  ingestInCache({ files: data }, { cachedAt });
15642
15667
  return {
15643
- data,
15668
+ data: data.map(file => fileLinkedObject(file)),
15644
15669
  cachedAt,
15645
15670
  };
15646
15671
  };