@data-loom/realtime-js 0.0.2-alpha.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/dist/main/RealtimeChannel.d.ts +228 -0
  2. package/dist/main/RealtimeChannel.d.ts.map +1 -0
  3. package/dist/main/RealtimeChannel.js +528 -0
  4. package/dist/main/RealtimeChannel.js.map +1 -0
  5. package/dist/main/RealtimeClient.d.ts +197 -0
  6. package/dist/main/RealtimeClient.d.ts.map +1 -0
  7. package/dist/main/RealtimeClient.js +514 -0
  8. package/dist/main/RealtimeClient.js.map +1 -0
  9. package/dist/main/RealtimePresence.d.ts +67 -0
  10. package/dist/main/RealtimePresence.d.ts.map +1 -0
  11. package/dist/main/RealtimePresence.js +228 -0
  12. package/dist/main/RealtimePresence.js.map +1 -0
  13. package/dist/main/index.d.ts +5 -0
  14. package/dist/main/index.d.ts.map +1 -0
  15. package/dist/main/index.js +41 -0
  16. package/dist/main/index.js.map +1 -0
  17. package/dist/main/utils/constants.d.ts +43 -0
  18. package/dist/main/utils/constants.d.ts.map +1 -0
  19. package/dist/main/utils/constants.js +51 -0
  20. package/dist/main/utils/constants.js.map +1 -0
  21. package/dist/main/utils/push.d.ts +48 -0
  22. package/dist/main/utils/push.d.ts.map +1 -0
  23. package/dist/main/utils/push.js +104 -0
  24. package/dist/main/utils/push.js.map +1 -0
  25. package/dist/main/utils/serializer.d.ts +7 -0
  26. package/dist/main/utils/serializer.d.ts.map +1 -0
  27. package/dist/main/utils/serializer.js +36 -0
  28. package/dist/main/utils/serializer.js.map +1 -0
  29. package/dist/main/utils/timer.d.ts +22 -0
  30. package/dist/main/utils/timer.d.ts.map +1 -0
  31. package/dist/main/utils/timer.js +38 -0
  32. package/dist/main/utils/timer.js.map +1 -0
  33. package/dist/main/utils/transformers.d.ts +109 -0
  34. package/dist/main/utils/transformers.d.ts.map +1 -0
  35. package/dist/main/utils/transformers.js +229 -0
  36. package/dist/main/utils/transformers.js.map +1 -0
  37. package/dist/main/utils/version.d.ts +2 -0
  38. package/dist/main/utils/version.d.ts.map +1 -0
  39. package/dist/main/utils/version.js +5 -0
  40. package/dist/main/utils/version.js.map +1 -0
  41. package/dist/module/RealtimeChannel.d.ts +228 -0
  42. package/dist/module/RealtimeChannel.d.ts.map +1 -0
  43. package/dist/module/RealtimeChannel.js +498 -0
  44. package/dist/module/RealtimeChannel.js.map +1 -0
  45. package/dist/module/RealtimeClient.d.ts +197 -0
  46. package/dist/module/RealtimeClient.d.ts.map +1 -0
  47. package/dist/module/RealtimeClient.js +482 -0
  48. package/dist/module/RealtimeClient.js.map +1 -0
  49. package/dist/module/RealtimePresence.d.ts +67 -0
  50. package/dist/module/RealtimePresence.d.ts.map +1 -0
  51. package/dist/module/RealtimePresence.js +224 -0
  52. package/dist/module/RealtimePresence.js.map +1 -0
  53. package/dist/module/index.d.ts +5 -0
  54. package/dist/module/index.d.ts.map +1 -0
  55. package/dist/module/index.js +5 -0
  56. package/dist/module/index.js.map +1 -0
  57. package/dist/module/utils/constants.d.ts +43 -0
  58. package/dist/module/utils/constants.d.ts.map +1 -0
  59. package/dist/module/utils/constants.js +48 -0
  60. package/dist/module/utils/constants.js.map +1 -0
  61. package/dist/module/utils/push.d.ts +48 -0
  62. package/dist/module/utils/push.d.ts.map +1 -0
  63. package/dist/module/utils/push.js +101 -0
  64. package/dist/module/utils/push.js.map +1 -0
  65. package/dist/module/utils/serializer.d.ts +7 -0
  66. package/dist/module/utils/serializer.d.ts.map +1 -0
  67. package/dist/module/utils/serializer.js +33 -0
  68. package/dist/module/utils/serializer.js.map +1 -0
  69. package/dist/module/utils/timer.d.ts +22 -0
  70. package/dist/module/utils/timer.d.ts.map +1 -0
  71. package/dist/module/utils/timer.js +35 -0
  72. package/dist/module/utils/timer.js.map +1 -0
  73. package/dist/module/utils/transformers.d.ts +109 -0
  74. package/dist/module/utils/transformers.d.ts.map +1 -0
  75. package/dist/module/utils/transformers.js +217 -0
  76. package/dist/module/utils/transformers.js.map +1 -0
  77. package/dist/module/utils/version.d.ts +2 -0
  78. package/dist/module/utils/version.d.ts.map +1 -0
  79. package/dist/module/utils/version.js +2 -0
  80. package/dist/module/utils/version.js.map +1 -0
  81. package/package.json +2 -2
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Creates a timer that accepts a `timerCalc` function to perform calculated timeout retries, such as exponential backoff.
5
+ *
6
+ * @example
7
+ * let reconnectTimer = new Timer(() => this.connect(), function(tries){
8
+ * return [1000, 5000, 10000][tries - 1] || 10000
9
+ * })
10
+ * reconnectTimer.scheduleTimeout() // fires after 1000
11
+ * reconnectTimer.scheduleTimeout() // fires after 5000
12
+ * reconnectTimer.reset()
13
+ * reconnectTimer.scheduleTimeout() // fires after 1000
14
+ */
15
+ class Timer {
16
+ constructor(callback, timerCalc) {
17
+ this.callback = callback;
18
+ this.timerCalc = timerCalc;
19
+ this.timer = undefined;
20
+ this.tries = 0;
21
+ this.callback = callback;
22
+ this.timerCalc = timerCalc;
23
+ }
24
+ reset() {
25
+ this.tries = 0;
26
+ clearTimeout(this.timer);
27
+ }
28
+ // Cancels any previous scheduleTimeout and schedules callback
29
+ scheduleTimeout() {
30
+ clearTimeout(this.timer);
31
+ this.timer = setTimeout(() => {
32
+ this.tries = this.tries + 1;
33
+ this.callback();
34
+ }, this.timerCalc(this.tries + 1));
35
+ }
36
+ }
37
+ exports.default = Timer;
38
+ //# sourceMappingURL=timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timer.js","sourceRoot":"","sources":["../../../src/utils/timer.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;;;GAWG;AACH,MAAqB,KAAK;IAIxB,YAAmB,QAAkB,EAAS,SAAmB;QAA9C,aAAQ,GAAR,QAAQ,CAAU;QAAS,cAAS,GAAT,SAAS,CAAU;QAHjE,UAAK,GAAuB,SAAS,CAAA;QACrC,UAAK,GAAW,CAAC,CAAA;QAGf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QACd,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,8DAA8D;IAC9D,eAAe;QACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAExB,IAAI,CAAC,KAAK,GAAQ,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC;CACF;AAvBD,wBAuBC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Helpers to convert the change Payload into native JS types.
3
+ */
4
+ export declare enum PostgresTypes {
5
+ abstime = "abstime",
6
+ bool = "bool",
7
+ date = "date",
8
+ daterange = "daterange",
9
+ float4 = "float4",
10
+ float8 = "float8",
11
+ int2 = "int2",
12
+ int4 = "int4",
13
+ int4range = "int4range",
14
+ int8 = "int8",
15
+ int8range = "int8range",
16
+ json = "json",
17
+ jsonb = "jsonb",
18
+ money = "money",
19
+ numeric = "numeric",
20
+ oid = "oid",
21
+ reltime = "reltime",
22
+ text = "text",
23
+ time = "time",
24
+ timestamp = "timestamp",
25
+ timestamptz = "timestamptz",
26
+ timetz = "timetz",
27
+ tsrange = "tsrange",
28
+ tstzrange = "tstzrange"
29
+ }
30
+ type Columns = {
31
+ name: string;
32
+ type: string;
33
+ flags?: string[];
34
+ type_modifier?: number;
35
+ }[];
36
+ type BaseValue = null | string | number | boolean;
37
+ type RecordValue = BaseValue | BaseValue[];
38
+ type Record = {
39
+ [key: string]: RecordValue;
40
+ };
41
+ /**
42
+ * Takes an array of columns and an object of string values then converts each string value
43
+ * to its mapped type.
44
+ *
45
+ * @param {{name: String, type: String}[]} columns
46
+ * @param {Object} record
47
+ * @param {Object} options The map of various options that can be applied to the mapper
48
+ * @param {Array} options.skipTypes The array of types that should not be converted
49
+ *
50
+ * @example convertChangeData([{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age:'33'}, {})
51
+ * //=>{ first_name: 'Paul', age: 33 }
52
+ */
53
+ export declare const convertChangeData: (columns: Columns, record: Record, options?: {
54
+ skipTypes?: string[];
55
+ }) => Record;
56
+ /**
57
+ * Converts the value of an individual column.
58
+ *
59
+ * @param {String} columnName The column that you want to convert
60
+ * @param {{name: String, type: String}[]} columns All of the columns
61
+ * @param {Object} record The map of string values
62
+ * @param {Array} skipTypes An array of types that should not be converted
63
+ * @return {object} Useless information
64
+ *
65
+ * @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, [])
66
+ * //=> 33
67
+ * @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, ['int4'])
68
+ * //=> "33"
69
+ */
70
+ export declare const convertColumn: (columnName: string, columns: Columns, record: Record, skipTypes: string[]) => RecordValue;
71
+ /**
72
+ * If the value of the cell is `null`, returns null.
73
+ * Otherwise converts the string value to the correct type.
74
+ * @param {String} type A postgres column type
75
+ * @param {String} value The cell value
76
+ *
77
+ * @example convertCell('bool', 't')
78
+ * //=> true
79
+ * @example convertCell('int8', '10')
80
+ * //=> 10
81
+ * @example convertCell('_int4', '{1,2,3,4}')
82
+ * //=> [1,2,3,4]
83
+ */
84
+ export declare const convertCell: (type: string, value: RecordValue) => RecordValue;
85
+ export declare const toBoolean: (value: RecordValue) => RecordValue;
86
+ export declare const toNumber: (value: RecordValue) => RecordValue;
87
+ export declare const toJson: (value: RecordValue) => RecordValue;
88
+ /**
89
+ * Converts a Postgres Array into a native JS array
90
+ *
91
+ * @example toArray('{}', 'int4')
92
+ * //=> []
93
+ * @example toArray('{"[2021-01-01,2021-12-31)","(2021-01-01,2021-12-32]"}', 'daterange')
94
+ * //=> ['[2021-01-01,2021-12-31)', '(2021-01-01,2021-12-32]']
95
+ * @example toArray([1,2,3,4], 'int4')
96
+ * //=> [1,2,3,4]
97
+ */
98
+ export declare const toArray: (value: RecordValue, type: string) => RecordValue;
99
+ /**
100
+ * Fixes timestamp to be ISO-8601. Swaps the space between the date and time for a 'T'
101
+ * See https://github.com/supabase/supabase/issues/18
102
+ *
103
+ * @example toTimestampString('2019-09-10 00:00:00')
104
+ * //=> '2019-09-10T00:00:00'
105
+ */
106
+ export declare const toTimestampString: (value: RecordValue) => RecordValue;
107
+ export declare const httpEndpointURL: (socketUrl: string) => string;
108
+ export {};
109
+ //# sourceMappingURL=transformers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../../src/utils/transformers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;CACxB;AAED,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,EAAE,CAAA;AAEH,KAAK,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AACjD,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,EAAE,CAAA;AAE1C,KAAK,MAAM,GAAG;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAC3B,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,6BAEpB,MAAM,YACL;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,KAChC,MAOF,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,aAAa,eACZ,MAAM,4BAEV,MAAM,aACH,MAAM,EAAE,KAClB,WAUF,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,SAAS,WAAW,KAAG,WA0C9D,CAAA;AAKD,eAAO,MAAM,SAAS,UAAW,WAAW,KAAG,WAS9C,CAAA;AACD,eAAO,MAAM,QAAQ,UAAW,WAAW,KAAG,WAQ7C,CAAA;AACD,eAAO,MAAM,MAAM,UAAW,WAAW,KAAG,WAU3C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,UAAW,WAAW,QAAQ,MAAM,KAAG,WA0B1D,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,UAAW,WAAW,KAAG,WAMtD,CAAA;AAED,eAAO,MAAM,eAAe,cAAe,MAAM,KAAG,MAKnD,CAAA"}
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ /**
3
+ * Helpers to convert the change Payload into native JS types.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.httpEndpointURL = exports.toTimestampString = exports.toArray = exports.toJson = exports.toNumber = exports.toBoolean = exports.convertCell = exports.convertColumn = exports.convertChangeData = exports.PostgresTypes = void 0;
7
+ // Adapted from epgsql (src/epgsql_binary.erl), this module licensed under
8
+ // 3-clause BSD found here: https://raw.githubusercontent.com/epgsql/epgsql/devel/LICENSE
9
+ var PostgresTypes;
10
+ (function (PostgresTypes) {
11
+ PostgresTypes["abstime"] = "abstime";
12
+ PostgresTypes["bool"] = "bool";
13
+ PostgresTypes["date"] = "date";
14
+ PostgresTypes["daterange"] = "daterange";
15
+ PostgresTypes["float4"] = "float4";
16
+ PostgresTypes["float8"] = "float8";
17
+ PostgresTypes["int2"] = "int2";
18
+ PostgresTypes["int4"] = "int4";
19
+ PostgresTypes["int4range"] = "int4range";
20
+ PostgresTypes["int8"] = "int8";
21
+ PostgresTypes["int8range"] = "int8range";
22
+ PostgresTypes["json"] = "json";
23
+ PostgresTypes["jsonb"] = "jsonb";
24
+ PostgresTypes["money"] = "money";
25
+ PostgresTypes["numeric"] = "numeric";
26
+ PostgresTypes["oid"] = "oid";
27
+ PostgresTypes["reltime"] = "reltime";
28
+ PostgresTypes["text"] = "text";
29
+ PostgresTypes["time"] = "time";
30
+ PostgresTypes["timestamp"] = "timestamp";
31
+ PostgresTypes["timestamptz"] = "timestamptz";
32
+ PostgresTypes["timetz"] = "timetz";
33
+ PostgresTypes["tsrange"] = "tsrange";
34
+ PostgresTypes["tstzrange"] = "tstzrange";
35
+ })(PostgresTypes = exports.PostgresTypes || (exports.PostgresTypes = {}));
36
+ /**
37
+ * Takes an array of columns and an object of string values then converts each string value
38
+ * to its mapped type.
39
+ *
40
+ * @param {{name: String, type: String}[]} columns
41
+ * @param {Object} record
42
+ * @param {Object} options The map of various options that can be applied to the mapper
43
+ * @param {Array} options.skipTypes The array of types that should not be converted
44
+ *
45
+ * @example convertChangeData([{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age:'33'}, {})
46
+ * //=>{ first_name: 'Paul', age: 33 }
47
+ */
48
+ const convertChangeData = (columns, record, options = {}) => {
49
+ var _a;
50
+ const skipTypes = (_a = options.skipTypes) !== null && _a !== void 0 ? _a : [];
51
+ return Object.keys(record).reduce((acc, rec_key) => {
52
+ acc[rec_key] = (0, exports.convertColumn)(rec_key, columns, record, skipTypes);
53
+ return acc;
54
+ }, {});
55
+ };
56
+ exports.convertChangeData = convertChangeData;
57
+ /**
58
+ * Converts the value of an individual column.
59
+ *
60
+ * @param {String} columnName The column that you want to convert
61
+ * @param {{name: String, type: String}[]} columns All of the columns
62
+ * @param {Object} record The map of string values
63
+ * @param {Array} skipTypes An array of types that should not be converted
64
+ * @return {object} Useless information
65
+ *
66
+ * @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, [])
67
+ * //=> 33
68
+ * @example convertColumn('age', [{name: 'first_name', type: 'text'}, {name: 'age', type: 'int4'}], {first_name: 'Paul', age: '33'}, ['int4'])
69
+ * //=> "33"
70
+ */
71
+ const convertColumn = (columnName, columns, record, skipTypes) => {
72
+ const column = columns.find((x) => x.name === columnName);
73
+ const colType = column === null || column === void 0 ? void 0 : column.type;
74
+ const value = record[columnName];
75
+ if (colType && !skipTypes.includes(colType)) {
76
+ return (0, exports.convertCell)(colType, value);
77
+ }
78
+ return noop(value);
79
+ };
80
+ exports.convertColumn = convertColumn;
81
+ /**
82
+ * If the value of the cell is `null`, returns null.
83
+ * Otherwise converts the string value to the correct type.
84
+ * @param {String} type A postgres column type
85
+ * @param {String} value The cell value
86
+ *
87
+ * @example convertCell('bool', 't')
88
+ * //=> true
89
+ * @example convertCell('int8', '10')
90
+ * //=> 10
91
+ * @example convertCell('_int4', '{1,2,3,4}')
92
+ * //=> [1,2,3,4]
93
+ */
94
+ const convertCell = (type, value) => {
95
+ // if data type is an array
96
+ if (type.charAt(0) === '_') {
97
+ const dataType = type.slice(1, type.length);
98
+ return (0, exports.toArray)(value, dataType);
99
+ }
100
+ // If not null, convert to correct type.
101
+ switch (type) {
102
+ case PostgresTypes.bool:
103
+ return (0, exports.toBoolean)(value);
104
+ case PostgresTypes.float4:
105
+ case PostgresTypes.float8:
106
+ case PostgresTypes.int2:
107
+ case PostgresTypes.int4:
108
+ case PostgresTypes.int8:
109
+ case PostgresTypes.numeric:
110
+ case PostgresTypes.oid:
111
+ return (0, exports.toNumber)(value);
112
+ case PostgresTypes.json:
113
+ case PostgresTypes.jsonb:
114
+ return (0, exports.toJson)(value);
115
+ case PostgresTypes.timestamp:
116
+ return (0, exports.toTimestampString)(value); // Format to be consistent with PostgREST
117
+ case PostgresTypes.abstime: // To allow users to cast it based on Timezone
118
+ case PostgresTypes.date: // To allow users to cast it based on Timezone
119
+ case PostgresTypes.daterange:
120
+ case PostgresTypes.int4range:
121
+ case PostgresTypes.int8range:
122
+ case PostgresTypes.money:
123
+ case PostgresTypes.reltime: // To allow users to cast it based on Timezone
124
+ case PostgresTypes.text:
125
+ case PostgresTypes.time: // To allow users to cast it based on Timezone
126
+ case PostgresTypes.timestamptz: // To allow users to cast it based on Timezone
127
+ case PostgresTypes.timetz: // To allow users to cast it based on Timezone
128
+ case PostgresTypes.tsrange:
129
+ case PostgresTypes.tstzrange:
130
+ return noop(value);
131
+ default:
132
+ // Return the value for remaining types
133
+ return noop(value);
134
+ }
135
+ };
136
+ exports.convertCell = convertCell;
137
+ const noop = (value) => {
138
+ return value;
139
+ };
140
+ const toBoolean = (value) => {
141
+ switch (value) {
142
+ case 't':
143
+ return true;
144
+ case 'f':
145
+ return false;
146
+ default:
147
+ return value;
148
+ }
149
+ };
150
+ exports.toBoolean = toBoolean;
151
+ const toNumber = (value) => {
152
+ if (typeof value === 'string') {
153
+ const parsedValue = parseFloat(value);
154
+ if (!Number.isNaN(parsedValue)) {
155
+ return parsedValue;
156
+ }
157
+ }
158
+ return value;
159
+ };
160
+ exports.toNumber = toNumber;
161
+ const toJson = (value) => {
162
+ if (typeof value === 'string') {
163
+ try {
164
+ return JSON.parse(value);
165
+ }
166
+ catch (error) {
167
+ console.log(`JSON parse error: ${error}`);
168
+ return value;
169
+ }
170
+ }
171
+ return value;
172
+ };
173
+ exports.toJson = toJson;
174
+ /**
175
+ * Converts a Postgres Array into a native JS array
176
+ *
177
+ * @example toArray('{}', 'int4')
178
+ * //=> []
179
+ * @example toArray('{"[2021-01-01,2021-12-31)","(2021-01-01,2021-12-32]"}', 'daterange')
180
+ * //=> ['[2021-01-01,2021-12-31)', '(2021-01-01,2021-12-32]']
181
+ * @example toArray([1,2,3,4], 'int4')
182
+ * //=> [1,2,3,4]
183
+ */
184
+ const toArray = (value, type) => {
185
+ if (typeof value !== 'string') {
186
+ return value;
187
+ }
188
+ const lastIdx = value.length - 1;
189
+ const closeBrace = value[lastIdx];
190
+ const openBrace = value[0];
191
+ // Confirm value is a Postgres array by checking curly brackets
192
+ if (openBrace === '{' && closeBrace === '}') {
193
+ let arr;
194
+ const valTrim = value.slice(1, lastIdx);
195
+ // TODO: find a better solution to separate Postgres array data
196
+ try {
197
+ arr = JSON.parse('[' + valTrim + ']');
198
+ }
199
+ catch (_) {
200
+ // WARNING: splitting on comma does not cover all edge cases
201
+ arr = valTrim ? valTrim.split(',') : [];
202
+ }
203
+ return arr.map((val) => (0, exports.convertCell)(type, val));
204
+ }
205
+ return value;
206
+ };
207
+ exports.toArray = toArray;
208
+ /**
209
+ * Fixes timestamp to be ISO-8601. Swaps the space between the date and time for a 'T'
210
+ * See https://github.com/supabase/supabase/issues/18
211
+ *
212
+ * @example toTimestampString('2019-09-10 00:00:00')
213
+ * //=> '2019-09-10T00:00:00'
214
+ */
215
+ const toTimestampString = (value) => {
216
+ if (typeof value === 'string') {
217
+ return value.replace(' ', 'T');
218
+ }
219
+ return value;
220
+ };
221
+ exports.toTimestampString = toTimestampString;
222
+ const httpEndpointURL = (socketUrl) => {
223
+ let url = socketUrl;
224
+ url = url.replace(/^ws/i, 'http');
225
+ url = url.replace(/(\/socket\/websocket|\/socket|\/websocket)\/?$/i, '');
226
+ return url.replace(/\/+$/, '');
227
+ };
228
+ exports.httpEndpointURL = httpEndpointURL;
229
+ //# sourceMappingURL=transformers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../../src/utils/transformers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const version = "0.0.0-automated";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/utils/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,oBAAoB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.version = void 0;
4
+ exports.version = '0.0.0-automated';
5
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/utils/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,iBAAiB,CAAA"}
@@ -0,0 +1,228 @@
1
+ import { CHANNEL_STATES } from './utils/constants';
2
+ import Push from './utils/push';
3
+ import type RealtimeClient from './RealtimeClient';
4
+ import Timer from './utils/timer';
5
+ import RealtimePresence, { REALTIME_PRESENCE_LISTEN_EVENTS } from './RealtimePresence';
6
+ import type { RealtimePresenceJoinPayload, RealtimePresenceLeavePayload, RealtimePresenceState } from './RealtimePresence';
7
+ export type RealtimeChannelOptions = {
8
+ config: {
9
+ /**
10
+ * self option enables client to receive message it broadcast
11
+ * ack option instructs server to acknowledge that broadcast message was received
12
+ */
13
+ broadcast?: {
14
+ self?: boolean;
15
+ ack?: boolean;
16
+ };
17
+ /**
18
+ * key option is used to track presence payload across clients
19
+ */
20
+ presence?: {
21
+ key?: string;
22
+ };
23
+ /**
24
+ * defines if the channel is private or not and if RLS policies will be used to check data
25
+ */
26
+ private?: boolean;
27
+ };
28
+ };
29
+ type RealtimePostgresChangesPayloadBase = {
30
+ schema: string;
31
+ table: string;
32
+ commit_timestamp: string;
33
+ errors: string[];
34
+ };
35
+ export type RealtimePostgresInsertPayload<T extends {
36
+ [key: string]: any;
37
+ }> = RealtimePostgresChangesPayloadBase & {
38
+ eventType: `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.INSERT}`;
39
+ new: T;
40
+ old: {};
41
+ };
42
+ export type RealtimePostgresUpdatePayload<T extends {
43
+ [key: string]: any;
44
+ }> = RealtimePostgresChangesPayloadBase & {
45
+ eventType: `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.UPDATE}`;
46
+ new: T;
47
+ old: Partial<T>;
48
+ };
49
+ export type RealtimePostgresDeletePayload<T extends {
50
+ [key: string]: any;
51
+ }> = RealtimePostgresChangesPayloadBase & {
52
+ eventType: `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.DELETE}`;
53
+ new: {};
54
+ old: Partial<T>;
55
+ };
56
+ export type RealtimePostgresChangesPayload<T extends {
57
+ [key: string]: any;
58
+ }> = RealtimePostgresInsertPayload<T> | RealtimePostgresUpdatePayload<T> | RealtimePostgresDeletePayload<T>;
59
+ export type RealtimePostgresChangesFilter<T extends `${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT}`> = {
60
+ /**
61
+ * The type of database change to listen to.
62
+ */
63
+ event: T;
64
+ /**
65
+ * The database schema to listen to.
66
+ */
67
+ schema: string;
68
+ /**
69
+ * The database table to listen to.
70
+ */
71
+ table?: string;
72
+ /**
73
+ * Receive database changes when filter is matched.
74
+ */
75
+ filter?: string;
76
+ };
77
+ export type RealtimeChannelSendResponse = 'ok' | 'timed out' | 'error';
78
+ export declare enum REALTIME_POSTGRES_CHANGES_LISTEN_EVENT {
79
+ ALL = "*",
80
+ INSERT = "INSERT",
81
+ UPDATE = "UPDATE",
82
+ DELETE = "DELETE"
83
+ }
84
+ export declare enum REALTIME_LISTEN_TYPES {
85
+ BROADCAST = "broadcast",
86
+ PRESENCE = "presence",
87
+ POSTGRES_CHANGES = "postgres_changes",
88
+ SYSTEM = "system"
89
+ }
90
+ export declare enum REALTIME_SUBSCRIBE_STATES {
91
+ SUBSCRIBED = "SUBSCRIBED",
92
+ TIMED_OUT = "TIMED_OUT",
93
+ CLOSED = "CLOSED",
94
+ CHANNEL_ERROR = "CHANNEL_ERROR"
95
+ }
96
+ export declare const REALTIME_CHANNEL_STATES: typeof CHANNEL_STATES;
97
+ /** A channel is the basic building block of Realtime
98
+ * and narrows the scope of data flow to subscribed clients.
99
+ * You can think of a channel as a chatroom where participants are able to see who's online
100
+ * and send and receive messages.
101
+ */
102
+ export default class RealtimeChannel {
103
+ /** Topic name can be any string. */
104
+ topic: string;
105
+ params: RealtimeChannelOptions;
106
+ socket: RealtimeClient;
107
+ bindings: {
108
+ [key: string]: {
109
+ type: string;
110
+ filter: {
111
+ [key: string]: any;
112
+ };
113
+ callback: Function;
114
+ id?: string;
115
+ }[];
116
+ };
117
+ timeout: number;
118
+ state: CHANNEL_STATES;
119
+ joinedOnce: boolean;
120
+ joinPush: Push;
121
+ rejoinTimer: Timer;
122
+ pushBuffer: Push[];
123
+ presence: RealtimePresence;
124
+ broadcastEndpointURL: string;
125
+ subTopic: string;
126
+ private: boolean;
127
+ constructor(
128
+ /** Topic name can be any string. */
129
+ topic: string, params: RealtimeChannelOptions, socket: RealtimeClient);
130
+ /** Subscribe registers your client with the server */
131
+ subscribe(callback?: (status: REALTIME_SUBSCRIBE_STATES, err?: Error) => void, timeout?: number): RealtimeChannel;
132
+ presenceState<T extends {
133
+ [key: string]: any;
134
+ } = {}>(): RealtimePresenceState<T>;
135
+ track(payload: {
136
+ [key: string]: any;
137
+ }, opts?: {
138
+ [key: string]: any;
139
+ }): Promise<RealtimeChannelSendResponse>;
140
+ untrack(opts?: {
141
+ [key: string]: any;
142
+ }): Promise<RealtimeChannelSendResponse>;
143
+ /**
144
+ * Creates an event handler that listens to changes.
145
+ */
146
+ on(type: `${REALTIME_LISTEN_TYPES.PRESENCE}`, filter: {
147
+ event: `${REALTIME_PRESENCE_LISTEN_EVENTS.SYNC}`;
148
+ }, callback: () => void): RealtimeChannel;
149
+ on<T extends {
150
+ [key: string]: any;
151
+ }>(type: `${REALTIME_LISTEN_TYPES.PRESENCE}`, filter: {
152
+ event: `${REALTIME_PRESENCE_LISTEN_EVENTS.JOIN}`;
153
+ }, callback: (payload: RealtimePresenceJoinPayload<T>) => void): RealtimeChannel;
154
+ on<T extends {
155
+ [key: string]: any;
156
+ }>(type: `${REALTIME_LISTEN_TYPES.PRESENCE}`, filter: {
157
+ event: `${REALTIME_PRESENCE_LISTEN_EVENTS.LEAVE}`;
158
+ }, callback: (payload: RealtimePresenceLeavePayload<T>) => void): RealtimeChannel;
159
+ on<T extends {
160
+ [key: string]: any;
161
+ }>(type: `${REALTIME_LISTEN_TYPES.POSTGRES_CHANGES}`, filter: RealtimePostgresChangesFilter<`${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.ALL}`>, callback: (payload: RealtimePostgresChangesPayload<T>) => void): RealtimeChannel;
162
+ on<T extends {
163
+ [key: string]: any;
164
+ }>(type: `${REALTIME_LISTEN_TYPES.POSTGRES_CHANGES}`, filter: RealtimePostgresChangesFilter<`${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.INSERT}`>, callback: (payload: RealtimePostgresInsertPayload<T>) => void): RealtimeChannel;
165
+ on<T extends {
166
+ [key: string]: any;
167
+ }>(type: `${REALTIME_LISTEN_TYPES.POSTGRES_CHANGES}`, filter: RealtimePostgresChangesFilter<`${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.UPDATE}`>, callback: (payload: RealtimePostgresUpdatePayload<T>) => void): RealtimeChannel;
168
+ on<T extends {
169
+ [key: string]: any;
170
+ }>(type: `${REALTIME_LISTEN_TYPES.POSTGRES_CHANGES}`, filter: RealtimePostgresChangesFilter<`${REALTIME_POSTGRES_CHANGES_LISTEN_EVENT.DELETE}`>, callback: (payload: RealtimePostgresDeletePayload<T>) => void): RealtimeChannel;
171
+ /**
172
+ * The following is placed here to display on supabase.com/docs/reference/javascript/subscribe.
173
+ * @param type One of "broadcast", "presence", or "postgres_changes".
174
+ * @param filter Custom object specific to the Realtime feature detailing which payloads to receive.
175
+ * @param callback Function to be invoked when event handler is triggered.
176
+ */
177
+ on(type: `${REALTIME_LISTEN_TYPES.BROADCAST}`, filter: {
178
+ event: string;
179
+ }, callback: (payload: {
180
+ type: `${REALTIME_LISTEN_TYPES.BROADCAST}`;
181
+ event: string;
182
+ [key: string]: any;
183
+ }) => void): RealtimeChannel;
184
+ on<T extends {
185
+ [key: string]: any;
186
+ }>(type: `${REALTIME_LISTEN_TYPES.BROADCAST}`, filter: {
187
+ event: string;
188
+ }, callback: (payload: {
189
+ type: `${REALTIME_LISTEN_TYPES.BROADCAST}`;
190
+ event: string;
191
+ payload: T;
192
+ }) => void): RealtimeChannel;
193
+ on<T extends {
194
+ [key: string]: any;
195
+ }>(type: `${REALTIME_LISTEN_TYPES.SYSTEM}`, filter: {}, callback: (payload: any) => void): RealtimeChannel;
196
+ /**
197
+ * Sends a message into the channel.
198
+ *
199
+ * @param args Arguments to send to channel
200
+ * @param args.type The type of event to send
201
+ * @param args.event The name of the event being sent
202
+ * @param args.payload Payload to be sent
203
+ * @param opts Options to be used during the send process
204
+ */
205
+ send(args: {
206
+ type: 'broadcast' | 'presence' | 'postgres_changes';
207
+ event: string;
208
+ payload?: any;
209
+ [key: string]: any;
210
+ }, opts?: {
211
+ [key: string]: any;
212
+ }): Promise<RealtimeChannelSendResponse>;
213
+ updateJoinPayload(payload: {
214
+ [key: string]: any;
215
+ }): void;
216
+ /**
217
+ * Leaves the channel.
218
+ *
219
+ * Unsubscribes from server events, and instructs channel to terminate on server.
220
+ * Triggers onClose() hooks.
221
+ *
222
+ * To receive leave acknowledgements, use the a `receive` hook to bind to the server ack, ie:
223
+ * channel.unsubscribe().receive("ok", () => alert("left!") )
224
+ */
225
+ unsubscribe(timeout?: number): Promise<'ok' | 'timed out' | 'error'>;
226
+ }
227
+ export {};
228
+ //# sourceMappingURL=RealtimeChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RealtimeChannel.d.ts","sourceRoot":"","sources":["../../src/RealtimeChannel.ts"],"names":[],"mappings":"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"}