epicenter-libs 3.11.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.
Files changed (107) hide show
  1. package/CHANGELOG.md +345 -0
  2. package/LICENSE.md +37 -0
  3. package/README.md +134 -0
  4. package/dist/browser/AckExtension-e67c6a28.js +129 -0
  5. package/dist/browser/AckExtension-e67c6a28.js.map +1 -0
  6. package/dist/browser/ReloadExtension-b1e50033.js +253 -0
  7. package/dist/browser/ReloadExtension-b1e50033.js.map +1 -0
  8. package/dist/browser/cometd-eeabdcd4.js +3438 -0
  9. package/dist/browser/cometd-eeabdcd4.js.map +1 -0
  10. package/dist/browser/epicenter-2cce2971.js +6086 -0
  11. package/dist/browser/epicenter-2cce2971.js.map +1 -0
  12. package/dist/browser/epicenter.js +2 -0
  13. package/dist/browser/epicenter.js.map +1 -0
  14. package/dist/cjs/AckExtension-f5178e19.js +131 -0
  15. package/dist/cjs/AckExtension-f5178e19.js.map +1 -0
  16. package/dist/cjs/ReloadExtension-65b036ba.js +255 -0
  17. package/dist/cjs/ReloadExtension-65b036ba.js.map +1 -0
  18. package/dist/cjs/cometd-473408f4.js +3441 -0
  19. package/dist/cjs/cometd-473408f4.js.map +1 -0
  20. package/dist/cjs/epicenter-12ceb814.js +7248 -0
  21. package/dist/cjs/epicenter-12ceb814.js.map +1 -0
  22. package/dist/cjs/epicenter.js +54 -0
  23. package/dist/cjs/epicenter.js.map +1 -0
  24. package/dist/epicenter.js +9895 -0
  25. package/dist/epicenter.js.map +1 -0
  26. package/dist/epicenter.min.js +2 -0
  27. package/dist/epicenter.min.js.map +1 -0
  28. package/dist/module/AckExtension-6181d8b5.js +129 -0
  29. package/dist/module/AckExtension-6181d8b5.js.map +1 -0
  30. package/dist/module/ReloadExtension-eaa8c42c.js +253 -0
  31. package/dist/module/ReloadExtension-eaa8c42c.js.map +1 -0
  32. package/dist/module/cometd-af78008d.js +3438 -0
  33. package/dist/module/cometd-af78008d.js.map +1 -0
  34. package/dist/module/epicenter-9b8c92a9.js +7213 -0
  35. package/dist/module/epicenter-9b8c92a9.js.map +1 -0
  36. package/dist/module/epicenter.js +7 -0
  37. package/dist/module/epicenter.js.map +1 -0
  38. package/dist/types/adapters/account.d.ts +44 -0
  39. package/dist/types/adapters/admin.d.ts +33 -0
  40. package/dist/types/adapters/asset.d.ts +46 -0
  41. package/dist/types/adapters/authentication.d.ts +62 -0
  42. package/dist/types/adapters/channel.d.ts +39 -0
  43. package/dist/types/adapters/chat.d.ts +105 -0
  44. package/dist/types/adapters/cometd.d.ts +25 -0
  45. package/dist/types/adapters/email.d.ts +86 -0
  46. package/dist/types/adapters/episode.d.ts +91 -0
  47. package/dist/types/adapters/group.d.ts +273 -0
  48. package/dist/types/adapters/index.d.ts +21 -0
  49. package/dist/types/adapters/leaderboard.d.ts +68 -0
  50. package/dist/types/adapters/presence.d.ts +35 -0
  51. package/dist/types/adapters/project.d.ts +99 -0
  52. package/dist/types/adapters/recaptcha.d.ts +1 -0
  53. package/dist/types/adapters/run.d.ts +253 -0
  54. package/dist/types/adapters/task.d.ts +154 -0
  55. package/dist/types/adapters/time.d.ts +2 -0
  56. package/dist/types/adapters/user.d.ts +38 -0
  57. package/dist/types/adapters/vault.d.ts +94 -0
  58. package/dist/types/adapters/world.d.ts +230 -0
  59. package/dist/types/epicenter.d.ts +10 -0
  60. package/dist/types/utils/config.d.ts +90 -0
  61. package/dist/types/utils/constants.d.ts +290 -0
  62. package/dist/types/utils/cookies.d.ts +16 -0
  63. package/dist/types/utils/error-manager.d.ts +21 -0
  64. package/dist/types/utils/error.d.ts +4 -0
  65. package/dist/types/utils/fault.d.ts +17 -0
  66. package/dist/types/utils/helpers.d.ts +4 -0
  67. package/dist/types/utils/identification.d.ts +47 -0
  68. package/dist/types/utils/index.d.ts +11 -0
  69. package/dist/types/utils/result.d.ts +6 -0
  70. package/dist/types/utils/router.d.ts +157 -0
  71. package/dist/types/utils/store.d.ts +31 -0
  72. package/package.json +103 -0
  73. package/src/adapters/account.ts +104 -0
  74. package/src/adapters/admin.ts +53 -0
  75. package/src/adapters/asset.ts +195 -0
  76. package/src/adapters/authentication.ts +173 -0
  77. package/src/adapters/channel.ts +83 -0
  78. package/src/adapters/chat.ts +186 -0
  79. package/src/adapters/cometd.ts +297 -0
  80. package/src/adapters/email.ts +146 -0
  81. package/src/adapters/episode.ts +163 -0
  82. package/src/adapters/group.ts +511 -0
  83. package/src/adapters/index.ts +43 -0
  84. package/src/adapters/leaderboard.ts +122 -0
  85. package/src/adapters/presence.ts +63 -0
  86. package/src/adapters/project.ts +123 -0
  87. package/src/adapters/recaptcha.ts +11 -0
  88. package/src/adapters/run.ts +726 -0
  89. package/src/adapters/task.ts +213 -0
  90. package/src/adapters/time.ts +36 -0
  91. package/src/adapters/user.ts +75 -0
  92. package/src/adapters/vault.ts +232 -0
  93. package/src/adapters/world.ts +412 -0
  94. package/src/epicenter.ts +96 -0
  95. package/src/globals.d.ts +16 -0
  96. package/src/utils/config.ts +168 -0
  97. package/src/utils/constants.ts +324 -0
  98. package/src/utils/cookies.ts +71 -0
  99. package/src/utils/error-manager.ts +66 -0
  100. package/src/utils/error.ts +9 -0
  101. package/src/utils/fault.ts +39 -0
  102. package/src/utils/helpers.ts +7 -0
  103. package/src/utils/identification.ts +128 -0
  104. package/src/utils/index.ts +11 -0
  105. package/src/utils/result.ts +15 -0
  106. package/src/utils/router.ts +547 -0
  107. package/src/utils/store.ts +82 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,345 @@
1
+ # [3.11.0](https://github.com/forio/epicenter-libs/compare/v3.10.0-breaking...v3.11.0) (2022-01-08)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * error handler less specific ([1b5d4b5](https://github.com/forio/epicenter-libs/commit/1b5d4b5bc444fc83b1308d33d51c61eeea54cc90))
7
+
8
+
9
+
10
+ # [3.10.0-breaking](https://github.com/forio/epicenter-libs/compare/v3.9.0...v3.10.0-breaking) (2022-01-06)
11
+
12
+
13
+ ### Features
14
+
15
+ * many new features & cleanup; explanation in commit desc ([331f4f7](https://github.com/forio/epicenter-libs/commit/331f4f7ca80d321edbfb892fb49aac62419fff2f))
16
+
17
+
18
+ ### BREAKING CHANGES
19
+
20
+ * leaderboardAdapter.update arguments re-ordered
21
+
22
+
23
+
24
+ # [3.9.0](https://github.com/forio/epicenter-libs/compare/v3.8.3...v3.9.0) (2021-12-02)
25
+
26
+
27
+ ### Features
28
+
29
+ * add createUser function ([d892996](https://github.com/forio/epicenter-libs/commit/d8929968344ad49bd8618536976582269159f5cc))
30
+
31
+
32
+
33
+ ## [3.8.3](https://github.com/forio/epicenter-libs/compare/v3.8.2...v3.8.3) (2021-11-16)
34
+
35
+
36
+ ### Bug Fixes
37
+
38
+ * fixed an issue w/ runAdapter.query returning variables in an array ([f544cbf](https://github.com/forio/epicenter-libs/commit/f544cbf628ed397834e3f71cf74c37ef7f61ade7))
39
+
40
+
41
+
42
+ ## [3.8.2](https://github.com/forio/epicenter-libs/compare/v3.8.1...v3.8.2) (2021-11-11)
43
+
44
+
45
+
46
+ ## [3.8.1](https://github.com/forio/epicenter-libs/compare/v3.8.0-breaking...v3.8.1) (2021-11-02)
47
+
48
+
49
+ ### Bug Fixes
50
+
51
+ * users w/ multiple groups unable to log in ([46de1ce](https://github.com/forio/epicenter-libs/commit/46de1ce92b22cb05ae6045203212666336898eea))
52
+
53
+
54
+
55
+ # [3.8.0-breaking](https://github.com/forio/epicenter-libs/compare/v3.7.1...v3.8.0-breaking) (2021-10-30)
56
+
57
+
58
+ ### Bug Fixes
59
+
60
+ * added to documentation ([d90507c](https://github.com/forio/epicenter-libs/commit/d90507c089cac3bf22eb37bf46f7e7a0dd3ec0f8))
61
+ * altered cron documentation ([f92be61](https://github.com/forio/epicenter-libs/commit/f92be61434e621d43dfa84c66967043ec0ddbe80))
62
+ * fixed bug due to tokenOverride ([b1da99d](https://github.com/forio/epicenter-libs/commit/b1da99d2809d9b613fef34b35b0c95a1104e1d1e))
63
+ * fixed group adapter test name changes ([780666d](https://github.com/forio/epicenter-libs/commit/780666dc7f1c826072c5f3c0f12553790e9d5926))
64
+ * typo that broke request() ([adcf7b6](https://github.com/forio/epicenter-libs/commit/adcf7b65d72c4d019b81b082f7780aab626bf555))
65
+ * updated documentation ([4471966](https://github.com/forio/epicenter-libs/commit/4471966f0a7a3ea07156b6e970030a7bfb4eb0f4))
66
+ * updated email documentation ([a9c2d97](https://github.com/forio/epicenter-libs/commit/a9c2d97a26619237c49b419b47ae86828cb05d19))
67
+
68
+
69
+ ### Code Refactoring
70
+
71
+ * handle resource scopes consistent to Epicenter ([10a227b](https://github.com/forio/epicenter-libs/commit/10a227b44bc98cbabdb8a2c44a8d5d05dd64d770))
72
+
73
+
74
+ ### Features
75
+
76
+ * add chatAdapter ([854127a](https://github.com/forio/epicenter-libs/commit/854127a92d795cf970504b64abf92f7e48784da9))
77
+ * add support for auth overrides (EPILIBS-79) ([7773913](https://github.com/forio/epicenter-libs/commit/7773913a9bb4e928e71416ce2acc82591f85e5b7))
78
+ * added additional email endpoint support ([3d6127c](https://github.com/forio/epicenter-libs/commit/3d6127cdebb273c314e84f2301f5a89a1b79529c))
79
+ * added get task adapter ([08b8d7e](https://github.com/forio/epicenter-libs/commit/08b8d7ed0289763d582a254f89d8b59baf1412c4))
80
+ * added remaining task adapter GETs ([2bae7b0](https://github.com/forio/epicenter-libs/commit/2bae7b0026caabec3d4c06424a4e46082dd0c792))
81
+ * added resetPassword ([716e9c7](https://github.com/forio/epicenter-libs/commit/716e9c717568b66f6444c68d53e02354aaa1d36c))
82
+ * added sendEmailToAdmin adapter ([7900bd8](https://github.com/forio/epicenter-libs/commit/7900bd81939082336012833ecfd8f5687a5cd932))
83
+ * create and destroy tasks ([7d22d59](https://github.com/forio/epicenter-libs/commit/7d22d591248df590566ade7dc9d1a189d3f5454d))
84
+ * email route ([c75a917](https://github.com/forio/epicenter-libs/commit/c75a917570fd8ab9f778e9811802d08b6760c238))
85
+
86
+
87
+ ### Performance Improvements
88
+
89
+ * code-split cometd ([d53a3ab](https://github.com/forio/epicenter-libs/commit/d53a3ab486baa14b8108d84f25d85a49213dd1e4))
90
+
91
+
92
+ ### BREAKING CHANGES
93
+
94
+ * optionals.userKey for scopes is no longer supported
95
+
96
+
97
+
98
+ ## [3.7.1](https://github.com/forio/epicenter-libs/compare/v3.7.0...v3.7.1) (2021-09-27)
99
+
100
+
101
+ ### Bug Fixes
102
+
103
+ * added documentation for resetPassword ([dcfa14b](https://github.com/forio/epicenter-libs/commit/dcfa14b42f2550018a3a90d6b0d6cae53f0e0373))
104
+ * fixed bug due to tokenOverride ([c6fbf42](https://github.com/forio/epicenter-libs/commit/c6fbf423791fecc60f2b8556b2805f87da9deb2e))
105
+ * fixed group adapter test name changes ([dbf3fa0](https://github.com/forio/epicenter-libs/commit/dbf3fa00ca78a7f5b0a2bbfdea5208e77be07480))
106
+
107
+
108
+ ### Features
109
+
110
+ * added resetPassword ([6c0fad3](https://github.com/forio/epicenter-libs/commit/6c0fad357dd2ce856d501a236119fd856b05c546))
111
+
112
+
113
+
114
+ # [3.7.0](https://github.com/forio/epicenter-libs/compare/v3.6.1...v3.7.0) (2021-09-03)
115
+
116
+ ### Code Refactoring
117
+
118
+ * groupAdapter optional arguments renamed: all -> includeAllMembers; expired -> includeExpired ([658e2a9](https://github.com/forio/epicenter-libs/commit/8ce6886773ac49d95984fa9e11cc48371658e2a9))
119
+
120
+
121
+ ### BREAKING CHANGES
122
+
123
+ * Group API calls w/ query parameter 'all' becomes 'includeAllMembers' and 'expired' becomes 'includeExpired' (to match epicenter 3.7.x / 3.8.x)
124
+
125
+ ## [3.6.1](https://github.com/forio/epicenter-libs/compare/v3.6.0...v3.6.1) (2021-08-06)
126
+
127
+
128
+ ### Features
129
+
130
+ * add group status endpoint adapter ([c2a34d9](https://github.com/forio/epicenter-libs/commit/c2a34d92bb5c2d8e4d297d1f536f9c0382e9f531))
131
+
132
+
133
+
134
+ # [3.6.0](https://github.com/forio/epicenter-libs/compare/v3.5.1...v3.6.0) (2021-07-26)
135
+
136
+
137
+ ### Code Refactoring
138
+
139
+ * vault update changed from PATCH -> PUT ([998693c](https://github.com/forio/epicenter-libs/commit/998693c33bff9e4a956da72a76c627172a712f0f))
140
+
141
+
142
+ ### BREAKING CHANGES
143
+
144
+ * vaultAdapter.update produces a PUT instead of a PATCH (to match epicenter 3.7.x)
145
+
146
+
147
+
148
+ ## [3.5.1](https://github.com/forio/epicenter-libs/compare/v3.5.0...v3.5.1) (2021-07-16)
149
+
150
+
151
+ ### Features
152
+
153
+ * episodeAdapter.byName to take includeEpisodes ([d966d19](https://github.com/forio/epicenter-libs/commit/d966d19df3d94821bf78cd9aceaea707227bb26a))
154
+
155
+
156
+
157
+ # [3.5.0](https://github.com/forio/epicenter-libs/compare/v3.4.0...v3.5.0) (2021-07-14)
158
+
159
+
160
+ ### Bug Fixes
161
+
162
+ * handle localhost domain ([7d77cc5](https://github.com/forio/epicenter-libs/commit/7d77cc52f497019c304a1a44797fea9c0552221b))
163
+
164
+
165
+ ### Code Refactoring
166
+
167
+ * episodeAdapter.byName -> episodeAdapter.withName (new args) ([4829496](https://github.com/forio/epicenter-libs/commit/48294965feb09300790ca4d7d5bbc15feee01e82))
168
+ * forUserKey -> forUser ([f4fda50](https://github.com/forio/epicenter-libs/commit/f4fda5055995211957987082cbc6b842c8623bc8))
169
+ * vaultAdapter.getWithScope -> vaultAdapter.withScope ([d2304cd](https://github.com/forio/epicenter-libs/commit/d2304cd45fbd5c552c7691de3e8f22fd45cc8836))
170
+
171
+
172
+ ### Features
173
+
174
+ * add vaultAdapter.byName ([d4b3f7b](https://github.com/forio/epicenter-libs/commit/d4b3f7b7bc569b9d3cd3ba6f35dc2fcd833d3e24))
175
+
176
+
177
+ ### BREAKING CHANGES
178
+
179
+ * vaultAdapter.getWithScope -> withScope, renamed for consistency
180
+ * episodeAdapter.byName -> withName; takes groupName as an optional argument
181
+ * groupAdapter.forUserKey renamed to groupAdapter.forUser
182
+
183
+
184
+
185
+ # [3.4.0](https://github.com/forio/epicenter-libs/compare/v3.3.1...v3.4.0) (2021-06-10)
186
+
187
+
188
+ ### Bug Fixes
189
+
190
+ * accept userKeys when using world scope in vault ([ec1cee9](https://github.com/forio/epicenter-libs/commit/ec1cee95ec468a53ac90a8d4f162a12cde8d86ea))
191
+ * no GETs for channelsEnabled on login ([820e5a4](https://github.com/forio/epicenter-libs/commit/820e5a43384034f47cf1b15e20c0034e21ed937f))
192
+ * query crashing on runs with no variables ([f6db421](https://github.com/forio/epicenter-libs/commit/f6db421d22823ccfc62989a973e54e0dfc9a3720))
193
+ * query variables return payload ([bfe4d2a](https://github.com/forio/epicenter-libs/commit/bfe4d2a7d2a6f6a78e1b403905b805c28a10af32))
194
+ * typo ([f57192c](https://github.com/forio/epicenter-libs/commit/f57192ce44aeb20ef3ea335ba03b3309e305847c))
195
+ * v3 SSO cookie occasionally wrapped in quotes ([a364b6c](https://github.com/forio/epicenter-libs/commit/a364b6cf9e49f576c8c917fbf484ba0529ed007e))
196
+ * worldAdapter.removeUsers to actually use DELETE ([ace23c5](https://github.com/forio/epicenter-libs/commit/ace23c5e4cd612896ba801acbfe67e9e832cfc8d))
197
+
198
+
199
+ ### Code Refactoring
200
+
201
+ * change exceedMinimums to objective ([3f6fe10](https://github.com/forio/epicenter-libs/commit/3f6fe10f3ef20d25d71945fe05750180d5fc3be0))
202
+ * change runAdapter.query to better support multiplayer ([b9b6fab](https://github.com/forio/epicenter-libs/commit/b9b6fab21d8a2104f822f9dd50bba004cb53ae91))
203
+ * change worldAdapter.create to only take optional args ([addae8e](https://github.com/forio/epicenter-libs/commit/addae8e55e28b91f71400932be2da0676d380185))
204
+ * cleanup; remove updateAssignments ([eb2c721](https://github.com/forio/epicenter-libs/commit/eb2c7215b03f7d92834178d227bc73ca80470e1b))
205
+ * groupAdapter add/update/remove user ([efb6ed4](https://github.com/forio/epicenter-libs/commit/efb6ed4ba8799fcf55b26861b1ac822e6316400c))
206
+ * groupAdapter.get to use session groupkey by default ([5a3f667](https://github.com/forio/epicenter-libs/commit/5a3f667e6caaf54d11e361deff759e43bfc29bfb))
207
+ * rename 'updateUsers' -> 'updateAssignments' ([d21a0f1](https://github.com/forio/epicenter-libs/commit/d21a0f1751073abf5768150ab7fd678703de58fa))
208
+ * rename assignUsers to autoAssignUsers ([eabff19](https://github.com/forio/epicenter-libs/commit/eabff1936951a64758b78698e043105776cf62b0))
209
+ * rename editPersonas -> setPersonas ([dcba7e2](https://github.com/forio/epicenter-libs/commit/dcba7e24227d7a45645e249d644db348aa218b3b))
210
+ * rename getAssignments -> getAssignmentsByKey ([d02d5fd](https://github.com/forio/epicenter-libs/commit/d02d5fd08dc0b64193c815243c36ed6184b4e906))
211
+ * rename makeAssignments -> editAssignments ([142a2e9](https://github.com/forio/epicenter-libs/commit/142a2e9588fecd01500bd7d90a5e95ed537e803f))
212
+
213
+
214
+ ### Features
215
+
216
+ * add 'keepEmptyWorlds' flag ([0c1d557](https://github.com/forio/epicenter-libs/commit/0c1d55703642dce3c587042a064a9690ab9e4611))
217
+ * add assetAdapter ([472358d](https://github.com/forio/epicenter-libs/commit/472358dac7e7459a7d565d5c651de7de81604d87))
218
+ * add assignRun for worldAdapter ([4ab0e11](https://github.com/forio/epicenter-libs/commit/4ab0e114ca4527ba9b3884787848526c9ae0c59a))
219
+ * add includeEpisode option for query ([01cbbeb](https://github.com/forio/epicenter-libs/commit/01cbbebb0b66b78f26acf5e7490c5032940ca4f4))
220
+ * add makeAssignments function ([f133bde](https://github.com/forio/epicenter-libs/commit/f133bdeb4513b91b46666ddf676227504ce501a5))
221
+ * add projectAdapter.get ([4dc13c5](https://github.com/forio/epicenter-libs/commit/4dc13c538e19241676715cf8f3df198c0c534f1b))
222
+ * add PUSH_CATEGORY.GROUP for assignments ([d8c6dfe](https://github.com/forio/epicenter-libs/commit/d8c6dfed85ca8ffab9e826c6ea281a9d4d73c460))
223
+ * add user adapter ([66bbe15](https://github.com/forio/epicenter-libs/commit/66bbe15cab723ffe7421cc5ab95330c58057b6cd))
224
+ * attempt to support formdata (browser) ([b073e48](https://github.com/forio/epicenter-libs/commit/b073e48eb30119c21fbc08ad769f3a607cc9b5c3))
225
+
226
+
227
+ ### BREAKING CHANGES
228
+
229
+ * changed the arguments accepted by addUser, updateUser, removeUser
230
+ * worldAdapter.create to only take one (optional) argument
231
+ * query(modelFile, scope, optionals) -> query(modelFile, optionals)
232
+ * exceedMinimums -> objective; changed from bool to enum
233
+ * worldAdapter.getAssignments -> worldAdapter.getAssignmentsByKey
234
+ * worldAdapter.editPersonas -> worldAdapter.setPersonas
235
+ * worldAdapter.makeAssignments -> worldAdapter.editAssignments
236
+ * worldAdapter.assignUsers -> worldAdapter.autoAssignUsers
237
+ * worldAdapter.updateAssignments no longer supported
238
+ * worldAdapter.updateUsers -> worldAdapter.updateAssignments
239
+ * groupAdapter.get(groupKey) -> groupAdapter.get({ groupKey })
240
+
241
+
242
+
243
+ ## [3.3.1](https://github.com/forio/epicenter-libs/compare/v3.3.0...v3.3.1) (2021-02-03)
244
+
245
+
246
+ ### Bug Fixes
247
+
248
+ * errorManager default handler to actually return retry resp ([e5ba658](https://github.com/forio/epicenter-libs/commit/e5ba6589f12685c5ae1031a65695370b3dae294b))
249
+
250
+
251
+ ### Features
252
+
253
+ * attach args to retry function ([443a1bf](https://github.com/forio/epicenter-libs/commit/443a1bf2e96c6b683e9ab88bf5a195502620a78c))
254
+
255
+
256
+
257
+ # [3.3.0](https://github.com/forio/epicenter-libs/compare/v3.2.1...v3.3.0) (2021-02-03)
258
+
259
+
260
+ ### Code Refactoring
261
+
262
+ * change authAdapter.upgrade to authAdapter.regenerate ([3d05f2d](https://github.com/forio/epicenter-libs/commit/3d05f2dd12649cbcd23f8a32cb6192f77615b39e))
263
+
264
+
265
+ ### BREAKING CHANGES
266
+
267
+ * authAdapter.upgrade renamed to authAdapter.regenerate
268
+
269
+
270
+
271
+ ## [3.2.1](https://github.com/forio/epicenter-libs/compare/v3.2.0...v3.2.1) (2021-01-21)
272
+
273
+
274
+ ### Bug Fixes
275
+
276
+ * add samesite, secure to session cookies ([101b261](https://github.com/forio/epicenter-libs/commit/101b261e49a48bf571b7fc05e953c5efeea0296b))
277
+
278
+
279
+ ### Code Refactoring
280
+
281
+ * authAdapter.login to take generic URL options as 2nd arg ([be231a9](https://github.com/forio/epicenter-libs/commit/be231a9bee4562deff764193ead92e868fa9c83f))
282
+
283
+
284
+ ### BREAKING CHANGES
285
+
286
+ * authAdapter.login now takes account/project overrides as second argument
287
+
288
+
289
+
290
+ # [3.2.0](https://github.com/forio/epicenter-libs/compare/v3.1.0...v3.2.0) (2020-12-11)
291
+
292
+
293
+ ### Bug Fixes
294
+
295
+ * all 'optionals' to actually be optional ([9bdd9b0](https://github.com/forio/epicenter-libs/commit/9bdd9b067ad99d1898fa7bfd1318cad8e0fba42d))
296
+ * authAdapter.login to ignore falsey values ([572be63](https://github.com/forio/epicenter-libs/commit/572be63e49af02cd8b02cac62e5a3fa74121336e))
297
+ * handle 204 responses ([474bee3](https://github.com/forio/epicenter-libs/commit/474bee3d7029823a36f443f4a475df9848f7dac8))
298
+ * properly handle undefined search params ([0c34372](https://github.com/forio/epicenter-libs/commit/0c34372f12a76ac6869845866dec4e94a4fb2788))
299
+ * support node v12+ in build process ([d1c9afb](https://github.com/forio/epicenter-libs/commit/d1c9afb942ed68f0c7dd942c6daf56014a31b5a6))
300
+
301
+
302
+ ### Code Refactoring
303
+
304
+ * runAdapter.retrieveFromWorld arguments ([239a2d4](https://github.com/forio/epicenter-libs/commit/239a2d4e6497522c5972dbfcf308935b113c54e3))
305
+
306
+
307
+ ### Features
308
+
309
+ * add group adapters ([49fae4d](https://github.com/forio/epicenter-libs/commit/49fae4d0a0e142b478fe68a29b2d37e248047fde))
310
+ * add new push categories ([530d2ea](https://github.com/forio/epicenter-libs/commit/530d2ea2c99ae56e1f34f325be206f42e556fb54))
311
+ * add support for token overrides ([00adf31](https://github.com/forio/epicenter-libs/commit/00adf3141e95335c8b4be6707850b6511d5e3f3a))
312
+ * add support for worlds to runAdapter (EPILIBS-55) ([9213f2f](https://github.com/forio/epicenter-libs/commit/9213f2fd162be9536013b2bc97ff12eecae909b5))
313
+ * world api adapter (EPILIBS-55) ([7b2ac96](https://github.com/forio/epicenter-libs/commit/7b2ac96117e8218533e96ae2a0193a34c9d3fa32))
314
+
315
+
316
+ * refactor!: change LOCK_TYPE to ROLE ([ac9b200](https://github.com/forio/epicenter-libs/commit/ac9b200e6fa5f7fb935e8d53b62423412c2e745a))
317
+ * refactor!: change pagination ([44921fb](https://github.com/forio/epicenter-libs/commit/44921fbd3a28882343f24dfbc054e3a400c2dbf7))
318
+ * refactor!: router 'with' functions to only ignore undefined input ([b7cb586](https://github.com/forio/epicenter-libs/commit/b7cb586c4b1ec1c9faacb7eb19e2780d82610c69))
319
+ * refactor!: run query to accept arrayed filter/sort ([3da6e8c](https://github.com/forio/epicenter-libs/commit/3da6e8c79d883563f4ab727e10534ef08dfca5aa))
320
+
321
+
322
+ ### BREAKING CHANGES
323
+
324
+ * retrieveFromWorld to accept (worldKey, model) instead of (model, worldKey)
325
+ * LOCK_TYPE changed to ROLE for more generic usage
326
+ * remove page.withAll; change page.next
327
+ * router 'with' functions will now utilize falsey values it previously ignored
328
+ * runAdapter.query filter/sort no longer uses objs
329
+
330
+
331
+
332
+ # [3.1.0](https://github.com/forio/epicenter-libs/compare/v3.0.3...v3.1.0) (2020-10-17)
333
+
334
+
335
+ ### Bug Fixes
336
+
337
+ * test change log generation ([9be9445](https://github.com/forio/epicenter-libs/commit/9be94457097b4dfcc20022a23d3b18bcaf9a7dac))
338
+
339
+
340
+ ### Features
341
+
342
+ * testing gen ([8d9b2f9](https://github.com/forio/epicenter-libs/commit/8d9b2f9142ef6975d52be52010c40304ce75b774))
343
+
344
+
345
+
package/LICENSE.md ADDED
@@ -0,0 +1,37 @@
1
+ LICENSE
2
+ -------
3
+
4
+ Forio Corporation (Forio) hereby gives you a non-exclusive license to use the software in this repository (the Software).
5
+
6
+ This license is granted for use in developing online applications that interact with Forio servers and server software. Typically the Software will be used to create analytic web applications that are hosted by Forio Epicenter or Forio Simulate. As part of this license you may freely download the complete distribution from the following URL.
7
+ https://github.com/forio/epicenter-libs
8
+
9
+ You may:
10
+ - use the Software on any computer for the purposes of developing an online application.
11
+ - upload the contents of the "dist" folder of the Software to any server controlled by Forio Corporation or any server that is running software provided by Forio.
12
+ - link to the Software from a web application as long as the purpose of the web application is to interact with Forio servers or Forio server software.
13
+ - copy the Software for archival purposes, provided any copy contains all of the original Software's proprietary notices.
14
+
15
+ You may not:
16
+ - redistribute the Software except as allowed above
17
+ - include the Software or any files from the Software in a web application except for the contents of the "dist" folder as noted above.
18
+ - permit other individuals to use the Software except under the terms listed above;
19
+ - modify, translate, reverse engineer, decompile, disassemble (except to the extent applicable laws specifically prohibit such restriction),
20
+ - create derivative works based on the Software;
21
+ - copy the Software (except as specified above);
22
+ - rent, lease, transfer or otherwise transfer rights to the Software;
23
+ - remove any proprietary notices or labels on the Software.
24
+
25
+ TERMINATION.
26
+ The license will terminate automatically if you fail to comply with the limitations described above. On termination, you must destroy all copies of the Software and Documentation.
27
+
28
+
29
+ DISCLAIMER OF WARRANTY
30
+ ---------------------------------------------
31
+ The Software is provided on an AS IS basis, without warranty of any kind, including without limitation the warranties of merchantability, fitness for a particular purpose and non-infringement.
32
+ The entire risk as to the quality and performance of the Software is borne by you.
33
+ Should the Software prove defective, you and not Forio assume the entire cost of any service and repair.
34
+
35
+ FORIO IS NOT RESPONSIBLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES.
36
+
37
+ Title, ownership rights and intellectual property rights in and to the Software shall remain in Forio. The Software is protected by international copyright treaties.
package/README.md ADDED
@@ -0,0 +1,134 @@
1
+ Epicenter JavaScript Libs (v3)
2
+ ---
3
+ The Epicenter JS libs is Forio's JavaScript library for interacting with the Epicenter platform. Similar to its' [predecessor](https://github.com/forio/epicenter-js-libs), it is comprised of a set of adapters meant to help streamline your work with the underlying Epicenter APIs.
4
+
5
+ If you are comfortable with JavaScript, the epicenter.js library is an easy way to connect your project's model, data, and user interface.
6
+
7
+ Questions? Contact us at support@forio.com or file an issue on github!
8
+
9
+ JIRA (Forio internal): https://issues.forio.com/projects/EPILIBS/issues
10
+
11
+ Table of Contents
12
+ ---
13
+ - [Transition Guide (v2 → v3)](#transition-guide-v2--v3)
14
+ - [New Features In v3](#new-features-in-v3)
15
+ - [Some Things Were Renamed](#some-things-were-renamed)
16
+ - [Changes In The Way We Store And Expose User Data](#changes-in-the-way-we-store-and-expose-user-data)
17
+ - [Session Expiration & Generic Error Handling](#session-expiration--generic-error-handling)
18
+ - [Built-in SSO Handling](#built-in-sso-handling)
19
+ - [Pagination](#pagination)
20
+ - [Presence](#presence)
21
+ - [Tenets for Development](#tenets-for-development)
22
+ - [How to Contribute](#how-to-contribute)
23
+ - [How to Prepare a Release](#how-to-prepare-a-release)
24
+ - [How to Test](#how-to-test)
25
+ - [How to Use Examples (Local)](#how-to-use-examples-local)
26
+ - [Vanilla JavaScript](#vanilla-javascript)
27
+ - [Node Server](#node-server)
28
+ - [Documentation](#documentation)
29
+
30
+
31
+ # Transition Guide (v2 → v3)
32
+ ## New Features In v3
33
+ * All resources now have an associated scope to help categorize them -- e.g., project, group, episode, world.
34
+ * All resources now have an associated permit to help define permissions for roles (anonymous, participant, leader, reviewer, facilitator)
35
+ * Users now have a `displayName` for use in sims, detached from any private personal data
36
+ * Two new roles for end users:
37
+ * reviewer: a role similar to facilitators, but lower on the permissions hierarchy
38
+ * leader: a role similar to participants, but higher on the permissions hierarchy
39
+ * And more below...
40
+
41
+ ## Some Things Were Renamed
42
+ * A bunch of user and run properties, among them --
43
+ * `userName → handle`
44
+ * `firstName → givenName`
45
+ * `lastName → familyName`
46
+ * `run.saved → run.marked`
47
+ * `run.trashed → run.hidden`
48
+ * Resources ID'd by `[RESOURCE]Id` (e.g., `runId`) now use `key` instead of `id` (so now it's `runKey`)
49
+ * `id` now refers to the long value of the row ID in the database instead
50
+ * All resource `key`s are GUIDs (globally unique IDs)
51
+
52
+ ## Changes In The Way We Store And Expose User Data
53
+ User information has been separated into out to better support for GDPR standards. Users now own a "pseudonym" from which to interact with the simulations. This is detached from their personal data which lets the platform to maintain a record while allowing for easy removal of user-sensitive data when requested.
54
+
55
+ ## Session Expiration & Generic Error Handling
56
+ * v3 authorization tokens can now expire after a period of inactivity, and become invalid after a world assignment change
57
+ * All calls have an error handling fallback to an `errorManager` instance, which will help to run checks on generic network errors like the expiration behavior described in the previous bullet
58
+
59
+ ## Built-in SSO Handling
60
+ On load, epi-libs will now make an effort to find any Epicenter SSO tokens and consume them to generate an Epicenter session for you. This means a node server is no longer a hard requirement if you want to do SSO!
61
+
62
+ ## Pagination
63
+ When retrieving records, pagination is no longer done via the request `Content-Range` header like in v2. Instead, the platform will now return a page-like object, which will contain properties that reflect the `records {start}-{end}/{total}` syntax:
64
+
65
+ * `first → page.firstResult`
66
+ * `end → page.firstResult + page.maxResults`
67
+ * `total → page.totalResults`
68
+
69
+ ## Presence
70
+ A user's presence is now determined by their connection to the CometD server. Unlike in v2, the platform will automatically create push channel notifications on behalf of the user when they subscribe or do anything channel related (i.e., like a CometD handshake).
71
+
72
+ # Tenets for Development
73
+ * Code should function in both Browser and Node environments
74
+ * Trailing slashes in URL pathnames are meaningful in v3; so where applicable: always omit the slash at the end of the URLs of your API REST call (**this includes the one that might show up before a search query**)
75
+
76
+ # How to Contribute
77
+ Prequisite Node version: 12+
78
+
79
+ 1. Create a new branch for your change; if there's a JIRA ticket associated use that, e.g., `git checkout -b EPILIBS-42`
80
+ 2. Make your changes
81
+ 3. Create a [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/) describing your changes
82
+ * If you feel your change breaks the existing usage of the library be sure to indicate this in the commit message by adding a note in the commit footer starting with: `BREAKING CHANGE: `
83
+ 4. Push up your branch and make sure it passes the tests in the pre-push hook
84
+ 5. Make a pull request on github, or if you're confident: merge your branch into `master`
85
+
86
+ # How to Prepare a Release
87
+ 1. Build to the `dist/` folder: `npm run build`
88
+ 2. Test to make sure there are no breaking changes: `npm run single-test`
89
+ 3. Make sure you have the latest tags from master: `git fetch origin`
90
+ 4. Update version in the `package.json` file; suffix your version with `-breaking` if it contains a breaking change
91
+ 5. Update the change log: `npm run changelog` to generate the diff between versions
92
+ 6. Commit `package.json` and `CHANGELOG.md` files to `master`
93
+ 7. Tag `master` with the same version you used in step 4 (prefix with 'v')
94
+ 8. Visit Jenkins: https://build.forio.com/job/deploy-epicenter-js-v3--epicenter--/
95
+
96
+ \*The web development team isn't planning on incrementing the number that correlates to the major version, that space is reserved for major platform changes (i.e., Epicenter v4 and beyond). Instead, starting in `v3.8.0` -- we will opt to track breaking changes with a suffix `-breaking` and increment the minor number instead.
97
+
98
+ E.g., `3.10.0-breaking` indicates a breaking change to `3.9.x`. **Beware of these changes when incrementing versions; do not jump minor versions without looking at the tags in between.** You can utilize the CHANGELOG.md to review what has changed between versions and tags.
99
+
100
+ # How to Test
101
+ Tests are written to preserve behavior across releases. These are unit tests and are not intended for testing Epicenter features themselves.
102
+
103
+ ```
104
+ npm install # Installs dependencies for libs
105
+ npm run build # Builds libs to dist/ folder
106
+ npm run single-test # Runs the tests once
107
+ npm run test # Runs the tests w/ a watch
108
+ ```
109
+ Logs during testing are sent to `browser.log` file
110
+
111
+ # How to Use Examples (Local)
112
+ The following are examples of the Epicenter JS libs use cases. Their intended purpose is to be a sandbox for end-to-end testing.
113
+
114
+ Do not use these as a starting point/template for new projects. They are not an indicator of frontend best practices, rather -- the choice to use vanilla JavaScript here was to make it universally understandable.
115
+
116
+ ## Vanilla JavaScript
117
+ ```
118
+ npm install # Installs dependencies for libs
119
+ npm run build # Builds libs to dist/ folder
120
+ cd examples/parcel
121
+ npm install # Install dependencies for example
122
+ npm start # Serves example locally at local.forio.com:3913
123
+ ```
124
+ ## Node Server
125
+ ```
126
+ npm install # Installs dependencies for libs
127
+ npm run build # Builds libs to dist/ folder
128
+ cd examples/node
129
+ npm install # Install dependencies for example
130
+ npm start
131
+ ```
132
+
133
+ # Documentation
134
+ Documentation is currently limited. For the time being, please refer to the comments in code. Hoping to support this in a more official capacity at some point, possibly having them generated automatically with tools like [TypeDoc](https://typedoc.org/).
@@ -0,0 +1,129 @@
1
+ import { c as createCommonjsModule, a as commonjsGlobal } from './epicenter-2cce2971.js';
2
+ import { a as cometd } from './cometd-eeabdcd4.js';
3
+
4
+ function _mergeNamespaces(n, m) {
5
+ m.forEach(function (e) {
6
+ Object.keys(e).forEach(function (k) {
7
+ if (k !== 'default' && !(k in n)) {
8
+ var d = Object.getOwnPropertyDescriptor(e, k);
9
+ Object.defineProperty(n, k, d.get ? d : {
10
+ enumerable: true,
11
+ get: function () { return e[k]; }
12
+ });
13
+ }
14
+ });
15
+ });
16
+ return Object.freeze(n);
17
+ }
18
+
19
+ var AckExtension = createCommonjsModule(function (module, exports) {
20
+ /*
21
+ * Copyright (c) 2008-2020 the original author or authors.
22
+ *
23
+ * Licensed under the Apache License, Version 2.0 (the "License");
24
+ * you may not use this file except in compliance with the License.
25
+ * You may obtain a copy of the License at
26
+ *
27
+ * http://www.apache.org/licenses/LICENSE-2.0
28
+ *
29
+ * Unless required by applicable law or agreed to in writing, software
30
+ * distributed under the License is distributed on an "AS IS" BASIS,
31
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
32
+ * See the License for the specific language governing permissions and
33
+ * limitations under the License.
34
+ */
35
+
36
+ (function(root, factory){
37
+ {
38
+ module.exports = factory(cometd);
39
+ }
40
+ }(commonjsGlobal, function(cometdModule) {
41
+ /**
42
+ * This client-side extension enables the client to acknowledge to the server
43
+ * the messages that the client has received.
44
+ * For the acknowledgement to work, the server must be configured with the
45
+ * correspondent server-side ack extension. If both client and server support
46
+ * the ack extension, then the ack functionality will take place automatically.
47
+ * By enabling this extension, all messages arriving from the server will arrive
48
+ * via /meta/connect, so the comet communication will be slightly chattier.
49
+ * The fact that all messages will return via /meta/connect means also that the
50
+ * messages will arrive with total order, which is not guaranteed if messages
51
+ * can arrive via both /meta/connect and normal response.
52
+ * Messages are not acknowledged one by one, but instead a batch of messages is
53
+ * acknowledged when the /meta/connect returns.
54
+ */
55
+ return cometdModule.AckExtension = function() {
56
+ var _cometd;
57
+ var _serverSupportsAcks = false;
58
+ var _batch;
59
+
60
+ function _debug(text, args) {
61
+ _cometd._debug(text, args);
62
+ }
63
+
64
+ this.registered = function(name, cometd) {
65
+ _cometd = cometd;
66
+ _debug('AckExtension: executing registration callback');
67
+ };
68
+
69
+ this.unregistered = function() {
70
+ _debug('AckExtension: executing unregistration callback');
71
+ _cometd = null;
72
+ };
73
+
74
+ this.incoming = function(message) {
75
+ var channel = message.channel;
76
+ var ext = message.ext;
77
+ if (channel === '/meta/handshake') {
78
+ if (ext) {
79
+ var ackField = ext.ack;
80
+ if (typeof ackField === 'object') {
81
+ // New format.
82
+ _serverSupportsAcks = ackField.enabled === true;
83
+ var batch = ackField.batch;
84
+ if (typeof batch === 'number') {
85
+ _batch = batch;
86
+ }
87
+ } else {
88
+ // Old format.
89
+ _serverSupportsAcks = ackField === true;
90
+ }
91
+ }
92
+ _debug('AckExtension: server supports acknowledgements', _serverSupportsAcks);
93
+ } else if (channel === '/meta/connect' && message.successful && _serverSupportsAcks) {
94
+ if (ext && typeof ext.ack === 'number') {
95
+ _batch = ext.ack;
96
+ _debug('AckExtension: server sent batch', _batch);
97
+ }
98
+ }
99
+ return message;
100
+ };
101
+
102
+ this.outgoing = function(message) {
103
+ var channel = message.channel;
104
+ if (!message.ext) {
105
+ message.ext = {};
106
+ }
107
+ if (channel === '/meta/handshake') {
108
+ message.ext.ack = _cometd && _cometd.ackEnabled !== false;
109
+ _serverSupportsAcks = false;
110
+ _batch = 0;
111
+ } else if (channel === '/meta/connect') {
112
+ if (_serverSupportsAcks) {
113
+ message.ext.ack = _batch;
114
+ _debug('AckExtension: client sending batch', _batch);
115
+ }
116
+ }
117
+ return message;
118
+ };
119
+ };
120
+ }));
121
+ });
122
+
123
+ var AckExtension$1 = /*#__PURE__*/Object.freeze(/*#__PURE__*/_mergeNamespaces({
124
+ __proto__: null,
125
+ 'default': AckExtension
126
+ }, [AckExtension]));
127
+
128
+ export { AckExtension$1 as A };
129
+ //# sourceMappingURL=AckExtension-e67c6a28.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AckExtension-e67c6a28.js","sources":["../../node_modules/cometd/AckExtension.js"],"sourcesContent":["/*\n * Copyright (c) 2008-2020 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(root, factory){\n if (typeof exports === 'object') {\n module.exports = factory(require('./cometd'));\n } else if (typeof define === 'function' && define.amd) {\n define(['./cometd'], factory);\n } else {\n factory(root.org.cometd);\n }\n}(this, function(cometdModule) {\n /**\n * This client-side extension enables the client to acknowledge to the server\n * the messages that the client has received.\n * For the acknowledgement to work, the server must be configured with the\n * correspondent server-side ack extension. If both client and server support\n * the ack extension, then the ack functionality will take place automatically.\n * By enabling this extension, all messages arriving from the server will arrive\n * via /meta/connect, so the comet communication will be slightly chattier.\n * The fact that all messages will return via /meta/connect means also that the\n * messages will arrive with total order, which is not guaranteed if messages\n * can arrive via both /meta/connect and normal response.\n * Messages are not acknowledged one by one, but instead a batch of messages is\n * acknowledged when the /meta/connect returns.\n */\n return cometdModule.AckExtension = function() {\n var _cometd;\n var _serverSupportsAcks = false;\n var _batch;\n\n function _debug(text, args) {\n _cometd._debug(text, args);\n }\n\n this.registered = function(name, cometd) {\n _cometd = cometd;\n _debug('AckExtension: executing registration callback');\n };\n\n this.unregistered = function() {\n _debug('AckExtension: executing unregistration callback');\n _cometd = null;\n };\n\n this.incoming = function(message) {\n var channel = message.channel;\n var ext = message.ext;\n if (channel === '/meta/handshake') {\n if (ext) {\n var ackField = ext.ack;\n if (typeof ackField === 'object') {\n // New format.\n _serverSupportsAcks = ackField.enabled === true;\n var batch = ackField.batch;\n if (typeof batch === 'number') {\n _batch = batch;\n }\n } else {\n // Old format.\n _serverSupportsAcks = ackField === true;\n }\n }\n _debug('AckExtension: server supports acknowledgements', _serverSupportsAcks);\n } else if (channel === '/meta/connect' && message.successful && _serverSupportsAcks) {\n if (ext && typeof ext.ack === 'number') {\n _batch = ext.ack;\n _debug('AckExtension: server sent batch', _batch);\n }\n }\n return message;\n };\n\n this.outgoing = function(message) {\n var channel = message.channel;\n if (!message.ext) {\n message.ext = {};\n }\n if (channel === '/meta/handshake') {\n message.ext.ack = _cometd && _cometd.ackEnabled !== false;\n _serverSupportsAcks = false;\n _batch = 0;\n } else if (channel === '/meta/connect') {\n if (_serverSupportsAcks) {\n message.ext.ack = _batch;\n _debug('AckExtension: client sending batch', _batch);\n }\n }\n return message;\n };\n };\n}));\n"],"names":["require$$0","this"],"mappings":"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"}