Skip to content

Commit 80a6be0

Browse files
committed
feat(app-context): add membership type field
Add `type` field for members and membership objects and subscribe response. fix(app-context): fix type which limited options setting membership Fixed type which limited number of options which can be included into response / used in sorting for members / membership setting API. fix(presence): fix missing presence event flag Fix missing `hereNowRefresh` flag from the presence object received from subscribe. refactor(logging): change format and add proper request body output
1 parent d9af3ec commit 80a6be0

File tree

24 files changed

+756
-174
lines changed

24 files changed

+756
-174
lines changed

dist/web/pubnub.js

Lines changed: 144 additions & 55 deletions
Large diffs are not rendered by default.

dist/web/pubnub.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/core/endpoints/objects/member/get.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,13 @@ const utils_1 = require("../../../utils");
3232
*/
3333
const INCLUDE_CUSTOM_FIELDS = false;
3434
/**
35-
* Whether member's status field should be included in response or not.
35+
* Whether member's `status` field should be included in response or not.
3636
*/
3737
const INCLUDE_STATUS = false;
38+
/**
39+
* Whether member's `type` field should be included in response or not.
40+
*/
41+
const INCLUDE_TYPE = false;
3842
/**
3943
* Whether total number of members should be included in response or not.
4044
*/
@@ -67,20 +71,21 @@ const LIMIT = 100;
6771
*/
6872
class GetChannelMembersRequest extends request_1.AbstractRequest {
6973
constructor(parameters) {
70-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
71-
var _k, _l, _m, _o, _p, _q, _r;
74+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
75+
var _l, _m, _o, _p, _q, _r, _s, _t;
7276
super();
7377
this.parameters = parameters;
7478
// Apply default request parameters.
7579
(_a = parameters.include) !== null && _a !== void 0 ? _a : (parameters.include = {});
76-
(_b = (_k = parameters.include).customFields) !== null && _b !== void 0 ? _b : (_k.customFields = INCLUDE_CUSTOM_FIELDS);
77-
(_c = (_l = parameters.include).totalCount) !== null && _c !== void 0 ? _c : (_l.totalCount = INCLUDE_TOTAL_COUNT);
78-
(_d = (_m = parameters.include).statusField) !== null && _d !== void 0 ? _d : (_m.statusField = INCLUDE_STATUS);
79-
(_e = (_o = parameters.include).UUIDFields) !== null && _e !== void 0 ? _e : (_o.UUIDFields = INCLUDE_UUID_FIELDS);
80-
(_f = (_p = parameters.include).customUUIDFields) !== null && _f !== void 0 ? _f : (_p.customUUIDFields = INCLUDE_UUID_CUSTOM_FIELDS);
81-
(_g = (_q = parameters.include).UUIDStatusField) !== null && _g !== void 0 ? _g : (_q.UUIDStatusField = INCLUDE_UUID_STATUS_FIELD);
82-
(_h = (_r = parameters.include).UUIDTypeField) !== null && _h !== void 0 ? _h : (_r.UUIDTypeField = INCLUDE_UUID_TYPE_FIELD);
83-
(_j = parameters.limit) !== null && _j !== void 0 ? _j : (parameters.limit = LIMIT);
80+
(_b = (_l = parameters.include).customFields) !== null && _b !== void 0 ? _b : (_l.customFields = INCLUDE_CUSTOM_FIELDS);
81+
(_c = (_m = parameters.include).totalCount) !== null && _c !== void 0 ? _c : (_m.totalCount = INCLUDE_TOTAL_COUNT);
82+
(_d = (_o = parameters.include).statusField) !== null && _d !== void 0 ? _d : (_o.statusField = INCLUDE_STATUS);
83+
(_e = (_p = parameters.include).typeField) !== null && _e !== void 0 ? _e : (_p.typeField = INCLUDE_TYPE);
84+
(_f = (_q = parameters.include).UUIDFields) !== null && _f !== void 0 ? _f : (_q.UUIDFields = INCLUDE_UUID_FIELDS);
85+
(_g = (_r = parameters.include).customUUIDFields) !== null && _g !== void 0 ? _g : (_r.customUUIDFields = INCLUDE_UUID_CUSTOM_FIELDS);
86+
(_h = (_s = parameters.include).UUIDStatusField) !== null && _h !== void 0 ? _h : (_s.UUIDStatusField = INCLUDE_UUID_STATUS_FIELD);
87+
(_j = (_t = parameters.include).UUIDTypeField) !== null && _j !== void 0 ? _j : (_t.UUIDTypeField = INCLUDE_UUID_TYPE_FIELD);
88+
(_k = parameters.limit) !== null && _k !== void 0 ? _k : (parameters.limit = LIMIT);
8489
}
8590
operation() {
8691
return operations_1.default.PNSetMembersOperation;
@@ -114,6 +119,8 @@ class GetChannelMembersRequest extends request_1.AbstractRequest {
114119
const includeFlags = [];
115120
if (include.statusField)
116121
includeFlags.push('status');
122+
if (include.typeField)
123+
includeFlags.push('type');
117124
if (include.customFields)
118125
includeFlags.push('custom');
119126
if (include.UUIDFields)

lib/core/endpoints/objects/member/set.js

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ const utils_1 = require("../../../utils");
3232
* Whether `Member` custom field should be included in response or not.
3333
*/
3434
const INCLUDE_CUSTOM_FIELDS = false;
35+
/**
36+
* Whether member's `status` field should be included in response or not.
37+
*/
38+
const INCLUDE_STATUS = false;
39+
/**
40+
* Whether member's `type` field should be included in response or not.
41+
*/
42+
const INCLUDE_TYPE = false;
3543
/**
3644
* Whether total number of members should be included in response or not.
3745
*/
@@ -40,6 +48,14 @@ const INCLUDE_TOTAL_COUNT = false;
4048
* Whether `UUID` fields should be included in response or not.
4149
*/
4250
const INCLUDE_UUID_FIELDS = false;
51+
/**
52+
* Whether `UUID` status field should be included in response or not.
53+
*/
54+
const INCLUDE_UUID_STATUS_FIELD = false;
55+
/**
56+
* Whether `UUID` type field should be included in response or not.
57+
*/
58+
const INCLUDE_UUID_TYPE_FIELD = false;
4359
/**
4460
* Whether `UUID` custom field should be included in response or not.
4561
*/
@@ -56,17 +72,21 @@ const LIMIT = 100;
5672
*/
5773
class SetChannelMembersRequest extends request_1.AbstractRequest {
5874
constructor(parameters) {
59-
var _a, _b, _c, _d, _e, _f;
60-
var _g, _h, _j, _k;
75+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
76+
var _l, _m, _o, _p, _q, _r, _s, _t;
6177
super({ method: transport_request_1.TransportMethod.PATCH });
6278
this.parameters = parameters;
6379
// Apply default request parameters.
6480
(_a = parameters.include) !== null && _a !== void 0 ? _a : (parameters.include = {});
65-
(_b = (_g = parameters.include).customFields) !== null && _b !== void 0 ? _b : (_g.customFields = INCLUDE_CUSTOM_FIELDS);
66-
(_c = (_h = parameters.include).totalCount) !== null && _c !== void 0 ? _c : (_h.totalCount = INCLUDE_TOTAL_COUNT);
67-
(_d = (_j = parameters.include).UUIDFields) !== null && _d !== void 0 ? _d : (_j.UUIDFields = INCLUDE_UUID_FIELDS);
68-
(_e = (_k = parameters.include).customUUIDFields) !== null && _e !== void 0 ? _e : (_k.customUUIDFields = INCLUDE_UUID_CUSTOM_FIELDS);
69-
(_f = parameters.limit) !== null && _f !== void 0 ? _f : (parameters.limit = LIMIT);
81+
(_b = (_l = parameters.include).customFields) !== null && _b !== void 0 ? _b : (_l.customFields = INCLUDE_CUSTOM_FIELDS);
82+
(_c = (_m = parameters.include).totalCount) !== null && _c !== void 0 ? _c : (_m.totalCount = INCLUDE_TOTAL_COUNT);
83+
(_d = (_o = parameters.include).statusField) !== null && _d !== void 0 ? _d : (_o.statusField = INCLUDE_STATUS);
84+
(_e = (_p = parameters.include).typeField) !== null && _e !== void 0 ? _e : (_p.typeField = INCLUDE_TYPE);
85+
(_f = (_q = parameters.include).UUIDFields) !== null && _f !== void 0 ? _f : (_q.UUIDFields = INCLUDE_UUID_FIELDS);
86+
(_g = (_r = parameters.include).customUUIDFields) !== null && _g !== void 0 ? _g : (_r.customUUIDFields = INCLUDE_UUID_CUSTOM_FIELDS);
87+
(_h = (_s = parameters.include).UUIDStatusField) !== null && _h !== void 0 ? _h : (_s.UUIDStatusField = INCLUDE_UUID_STATUS_FIELD);
88+
(_j = (_t = parameters.include).UUIDTypeField) !== null && _j !== void 0 ? _j : (_t.UUIDTypeField = INCLUDE_UUID_TYPE_FIELD);
89+
(_k = parameters.limit) !== null && _k !== void 0 ? _k : (parameters.limit = LIMIT);
7090
}
7191
operation() {
7292
return operations_1.default.PNSetMembersOperation;
@@ -101,10 +121,18 @@ class SetChannelMembersRequest extends request_1.AbstractRequest {
101121
else
102122
sorting = Object.entries(sort !== null && sort !== void 0 ? sort : {}).map(([option, order]) => (order !== null ? `${option}:${order}` : option));
103123
const includeFlags = ['uuid.status', 'uuid.type', 'type'];
124+
if (include.statusField)
125+
includeFlags.push('status');
126+
if (include.typeField)
127+
includeFlags.push('type');
104128
if (include.customFields)
105129
includeFlags.push('custom');
106130
if (include.UUIDFields)
107131
includeFlags.push('uuid');
132+
if (include.UUIDStatusField)
133+
includeFlags.push('uuid.status');
134+
if (include.UUIDTypeField)
135+
includeFlags.push('uuid.type');
108136
if (include.customUUIDFields)
109137
includeFlags.push('uuid.custom');
110138
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ count: `${include.totalCount}` }, (includeFlags.length > 0 ? { include: includeFlags.join(',') } : {})), (filter ? { filter } : {})), ((page === null || page === void 0 ? void 0 : page.next) ? { start: page.next } : {})), ((page === null || page === void 0 ? void 0 : page.prev) ? { end: page.prev } : {})), (limit ? { limit } : {})), (sorting.length ? { sort: sorting } : {}));
@@ -117,7 +145,7 @@ class SetChannelMembersRequest extends request_1.AbstractRequest {
117145
return { uuid: { id: uuid } };
118146
}
119147
else {
120-
return { uuid: { id: uuid.id }, status: uuid.status, custom: uuid.custom };
148+
return { uuid: { id: uuid.id }, status: uuid.status, type: uuid.type, custom: uuid.custom };
121149
}
122150
}),
123151
});

lib/core/endpoints/objects/membership/get.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,13 @@ const utils_1 = require("../../../utils");
3232
*/
3333
const INCLUDE_CUSTOM_FIELDS = false;
3434
/**
35-
* Whether membership's status field should be included in response or not.
35+
* Whether membership's `status` field should be included in response or not.
3636
*/
3737
const INCLUDE_STATUS = false;
38+
/**
39+
* Whether membership's `type` field should be included in response or not.
40+
*/
41+
const INCLUDE_TYPE = false;
3842
/**
3943
* Whether total number of memberships should be included in response or not.
4044
*/
@@ -67,20 +71,21 @@ const LIMIT = 100;
6771
*/
6872
class GetUUIDMembershipsRequest extends request_1.AbstractRequest {
6973
constructor(parameters) {
70-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
71-
var _k, _l, _m, _o, _p, _q, _r;
74+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
75+
var _l, _m, _o, _p, _q, _r, _s, _t;
7276
super();
7377
this.parameters = parameters;
7478
// Apply default request parameters.
7579
(_a = parameters.include) !== null && _a !== void 0 ? _a : (parameters.include = {});
76-
(_b = (_k = parameters.include).customFields) !== null && _b !== void 0 ? _b : (_k.customFields = INCLUDE_CUSTOM_FIELDS);
77-
(_c = (_l = parameters.include).totalCount) !== null && _c !== void 0 ? _c : (_l.totalCount = INCLUDE_TOTAL_COUNT);
78-
(_d = (_m = parameters.include).statusField) !== null && _d !== void 0 ? _d : (_m.statusField = INCLUDE_STATUS);
79-
(_e = (_o = parameters.include).channelFields) !== null && _e !== void 0 ? _e : (_o.channelFields = INCLUDE_CHANNEL_FIELDS);
80-
(_f = (_p = parameters.include).customChannelFields) !== null && _f !== void 0 ? _f : (_p.customChannelFields = INCLUDE_CHANNEL_CUSTOM_FIELDS);
81-
(_g = (_q = parameters.include).channelStatusField) !== null && _g !== void 0 ? _g : (_q.channelStatusField = INCLUDE_CHANNEL_STATUS_FIELD);
82-
(_h = (_r = parameters.include).channelTypeField) !== null && _h !== void 0 ? _h : (_r.channelTypeField = INCLUDE_CHANNEL_TYPE_FIELD);
83-
(_j = parameters.limit) !== null && _j !== void 0 ? _j : (parameters.limit = LIMIT);
80+
(_b = (_l = parameters.include).customFields) !== null && _b !== void 0 ? _b : (_l.customFields = INCLUDE_CUSTOM_FIELDS);
81+
(_c = (_m = parameters.include).totalCount) !== null && _c !== void 0 ? _c : (_m.totalCount = INCLUDE_TOTAL_COUNT);
82+
(_d = (_o = parameters.include).statusField) !== null && _d !== void 0 ? _d : (_o.statusField = INCLUDE_STATUS);
83+
(_e = (_p = parameters.include).typeField) !== null && _e !== void 0 ? _e : (_p.typeField = INCLUDE_TYPE);
84+
(_f = (_q = parameters.include).channelFields) !== null && _f !== void 0 ? _f : (_q.channelFields = INCLUDE_CHANNEL_FIELDS);
85+
(_g = (_r = parameters.include).customChannelFields) !== null && _g !== void 0 ? _g : (_r.customChannelFields = INCLUDE_CHANNEL_CUSTOM_FIELDS);
86+
(_h = (_s = parameters.include).channelStatusField) !== null && _h !== void 0 ? _h : (_s.channelStatusField = INCLUDE_CHANNEL_STATUS_FIELD);
87+
(_j = (_t = parameters.include).channelTypeField) !== null && _j !== void 0 ? _j : (_t.channelTypeField = INCLUDE_CHANNEL_TYPE_FIELD);
88+
(_k = parameters.limit) !== null && _k !== void 0 ? _k : (parameters.limit = LIMIT);
8489
// Remap for backward compatibility.
8590
if (this.parameters.userId)
8691
this.parameters.uuid = this.parameters.userId;
@@ -117,6 +122,8 @@ class GetUUIDMembershipsRequest extends request_1.AbstractRequest {
117122
const includeFlags = [];
118123
if (include.statusField)
119124
includeFlags.push('status');
125+
if (include.typeField)
126+
includeFlags.push('type');
120127
if (include.customFields)
121128
includeFlags.push('custom');
122129
if (include.channelFields)

lib/core/endpoints/objects/membership/set.js

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,14 @@ const utils_1 = require("../../../utils");
3232
* Whether `Membership` custom field should be included in response or not.
3333
*/
3434
const INCLUDE_CUSTOM_FIELDS = false;
35+
/**
36+
* Whether membership's `status` field should be included in response or not.
37+
*/
38+
const INCLUDE_STATUS = false;
39+
/**
40+
* Whether membership's `type` field should be included in response or not.
41+
*/
42+
const INCLUDE_TYPE = false;
3543
/**
3644
* Whether total number of memberships should be included in response or not.
3745
*/
@@ -40,6 +48,14 @@ const INCLUDE_TOTAL_COUNT = false;
4048
* Whether `Channel` fields should be included in response or not.
4149
*/
4250
const INCLUDE_CHANNEL_FIELDS = false;
51+
/**
52+
* Whether `Channel` status field should be included in response or not.
53+
*/
54+
const INCLUDE_CHANNEL_STATUS_FIELD = false;
55+
/**
56+
* Whether `Channel` type field should be included in response or not.
57+
*/
58+
const INCLUDE_CHANNEL_TYPE_FIELD = false;
4359
/**
4460
* Whether `Channel` custom field should be included in response or not.
4561
*/
@@ -56,17 +72,21 @@ const LIMIT = 100;
5672
*/
5773
class SetUUIDMembershipsRequest extends request_1.AbstractRequest {
5874
constructor(parameters) {
59-
var _a, _b, _c, _d, _e, _f;
60-
var _g, _h, _j, _k;
75+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
76+
var _l, _m, _o, _p, _q, _r, _s, _t;
6177
super({ method: transport_request_1.TransportMethod.PATCH });
6278
this.parameters = parameters;
6379
// Apply default request parameters.
6480
(_a = parameters.include) !== null && _a !== void 0 ? _a : (parameters.include = {});
65-
(_b = (_g = parameters.include).customFields) !== null && _b !== void 0 ? _b : (_g.customFields = INCLUDE_CUSTOM_FIELDS);
66-
(_c = (_h = parameters.include).totalCount) !== null && _c !== void 0 ? _c : (_h.totalCount = INCLUDE_TOTAL_COUNT);
67-
(_d = (_j = parameters.include).channelFields) !== null && _d !== void 0 ? _d : (_j.channelFields = INCLUDE_CHANNEL_FIELDS);
68-
(_e = (_k = parameters.include).customChannelFields) !== null && _e !== void 0 ? _e : (_k.customChannelFields = INCLUDE_CHANNEL_CUSTOM_FIELDS);
69-
(_f = parameters.limit) !== null && _f !== void 0 ? _f : (parameters.limit = LIMIT);
81+
(_b = (_l = parameters.include).customFields) !== null && _b !== void 0 ? _b : (_l.customFields = INCLUDE_CUSTOM_FIELDS);
82+
(_c = (_m = parameters.include).totalCount) !== null && _c !== void 0 ? _c : (_m.totalCount = INCLUDE_TOTAL_COUNT);
83+
(_d = (_o = parameters.include).statusField) !== null && _d !== void 0 ? _d : (_o.statusField = INCLUDE_STATUS);
84+
(_e = (_p = parameters.include).typeField) !== null && _e !== void 0 ? _e : (_p.typeField = INCLUDE_TYPE);
85+
(_f = (_q = parameters.include).channelFields) !== null && _f !== void 0 ? _f : (_q.channelFields = INCLUDE_CHANNEL_FIELDS);
86+
(_g = (_r = parameters.include).customChannelFields) !== null && _g !== void 0 ? _g : (_r.customChannelFields = INCLUDE_CHANNEL_CUSTOM_FIELDS);
87+
(_h = (_s = parameters.include).channelStatusField) !== null && _h !== void 0 ? _h : (_s.channelStatusField = INCLUDE_CHANNEL_STATUS_FIELD);
88+
(_j = (_t = parameters.include).channelTypeField) !== null && _j !== void 0 ? _j : (_t.channelTypeField = INCLUDE_CHANNEL_TYPE_FIELD);
89+
(_k = parameters.limit) !== null && _k !== void 0 ? _k : (parameters.limit = LIMIT);
7090
// Remap for backward compatibility.
7191
if (this.parameters.userId)
7292
this.parameters.uuid = this.parameters.userId;
@@ -104,10 +124,18 @@ class SetUUIDMembershipsRequest extends request_1.AbstractRequest {
104124
else
105125
sorting = Object.entries(sort !== null && sort !== void 0 ? sort : {}).map(([option, order]) => (order !== null ? `${option}:${order}` : option));
106126
const includeFlags = ['channel.status', 'channel.type', 'status'];
127+
if (include.statusField)
128+
includeFlags.push('status');
129+
if (include.typeField)
130+
includeFlags.push('type');
107131
if (include.customFields)
108132
includeFlags.push('custom');
109133
if (include.channelFields)
110134
includeFlags.push('channel');
135+
if (include.channelStatusField)
136+
includeFlags.push('channel.status');
137+
if (include.channelTypeField)
138+
includeFlags.push('channel.type');
111139
if (include.customChannelFields)
112140
includeFlags.push('channel.custom');
113141
return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ count: `${include.totalCount}` }, (includeFlags.length > 0 ? { include: includeFlags.join(',') } : {})), (filter ? { filter } : {})), ((page === null || page === void 0 ? void 0 : page.next) ? { start: page.next } : {})), ((page === null || page === void 0 ? void 0 : page.prev) ? { end: page.prev } : {})), (limit ? { limit } : {})), (sorting.length ? { sort: sorting } : {}));
@@ -120,7 +148,7 @@ class SetUUIDMembershipsRequest extends request_1.AbstractRequest {
120148
return { channel: { id: channel } };
121149
}
122150
else {
123-
return { channel: { id: channel.id }, status: channel.status, custom: channel.custom };
151+
return { channel: { id: channel.id }, status: channel.status, type: channel.type, custom: channel.custom };
124152
}
125153
}),
126154
});

lib/core/endpoints/subscribe.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,17 +182,24 @@ class BaseSubscribeRequest extends request_1.AbstractRequest {
182182
// --------------------------------------------------------
183183
// region Envelope parsing
184184
presenceEventFromEnvelope(envelope) {
185+
var _a;
185186
const { d: payload } = envelope;
186187
const [channel, subscription] = this.subscriptionChannelFromEnvelope(envelope);
187188
// Clean up channel and subscription name from presence suffix.
188189
const trimmedChannel = channel.replace('-pnpres', '');
189190
// Backward compatibility with deprecated properties.
190191
const actualChannel = subscription !== null ? trimmedChannel : null;
191192
const subscribedChannel = subscription !== null ? subscription : trimmedChannel;
192-
if (typeof payload !== 'string' && 'data' in payload) {
193-
// @ts-expect-error This is `state-change` object which should have `state` field.
194-
payload['state'] = payload.data;
195-
delete payload.data;
193+
if (typeof payload !== 'string') {
194+
if ('data' in payload) {
195+
// @ts-expect-error This is `state-change` object which should have `state` field.
196+
payload['state'] = payload.data;
197+
delete payload.data;
198+
}
199+
else if ('action' in payload && payload.action === 'interval') {
200+
payload.hereNowRefresh = (_a = payload.here_now_refresh) !== null && _a !== void 0 ? _a : false;
201+
delete payload.here_now_refresh;
202+
}
196203
}
197204
return Object.assign({ channel: trimmedChannel, subscription,
198205
actualChannel,

lib/file/modules/node.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,9 @@ class PubNubFile {
3838
let fileName;
3939
if (stream && stream instanceof stream_1.Readable) {
4040
fileData = stream;
41-
if (stream instanceof fs_1.default.ReadStream) {
42-
const streamFilePath = stream.path instanceof buffer_1.Buffer ? new TextDecoder().decode(stream.path) : stream.path;
43-
fileName = (0, path_1.basename)(streamFilePath);
44-
contentLength = fs_1.default.statSync(streamFilePath).size;
41+
if (stream instanceof fs_1.default.ReadStream && !(stream.path instanceof buffer_1.Buffer)) {
42+
fileName = (0, path_1.basename)(stream.path);
43+
contentLength = fs_1.default.statSync(stream.path).size;
4544
}
4645
}
4746
else if (data instanceof buffer_1.Buffer) {

0 commit comments

Comments
 (0)