worldstate-emitter 1.0.4 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/SECURITY.md +17 -0
- package/handlers/Twitter.js +2 -2
- package/handlers/Worldstate.js +16 -163
- package/handlers/events/arrayLike.js +20 -0
- package/handlers/events/checkOverrides.js +19 -0
- package/handlers/events/cycleLike.js +1 -1
- package/handlers/events/eKeyOverrides.js +28 -0
- package/handlers/events/kuva.js +31 -0
- package/handlers/events/objectLike.js +1 -1
- package/handlers/events/parse.js +72 -0
- package/package.json +63 -20
- package/resources/tweeters.json +3 -3
- package/utilities/WSCache.js +5 -1
- package/.codeclimate.yml +0 -13
- package/.eslintrc.json +0 -33
- package/.github/.stale.yml +0 -13
- package/.github/CODEOWNERS +0 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -27
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -17
- package/.github/update_docs.sh +0 -22
- package/.snyk +0 -8
- package/docs/RSS.html +0 -424
- package/docs/TwitterCache.html +0 -900
- package/docs/WSCache.html +0 -734
- package/docs/Worldstate.html +0 -1294
- package/docs/classes.list.html +0 -344
- package/docs/fonts/glyphicons-halflings-regular.eot +0 -0
- package/docs/fonts/glyphicons-halflings-regular.svg +0 -288
- package/docs/fonts/glyphicons-halflings-regular.ttf +0 -0
- package/docs/fonts/glyphicons-halflings-regular.woff +0 -0
- package/docs/fonts/glyphicons-halflings-regular.woff2 +0 -0
- package/docs/global.html +0 -1882
- package/docs/handlers_RSS.js.html +0 -321
- package/docs/handlers_Twitter.js.html +0 -431
- package/docs/handlers_Worldstate.js.html +0 -559
- package/docs/img/glyphicons-halflings-white.png +0 -0
- package/docs/img/glyphicons-halflings.png +0 -0
- package/docs/index.html +0 -402
- package/docs/quicksearch.html +0 -31
- package/docs/scripts/docstrap.lib.js +0 -11
- package/docs/scripts/fulltext-search-ui.js +0 -89
- package/docs/scripts/fulltext-search.js +0 -36
- package/docs/scripts/lunr.min.js +0 -6
- package/docs/scripts/prettify/Apache-License-2.0.txt +0 -202
- package/docs/scripts/prettify/jquery.min.js +0 -6
- package/docs/scripts/prettify/lang-css.js +0 -21
- package/docs/scripts/prettify/prettify.js +0 -496
- package/docs/scripts/sunlight.js +0 -1157
- package/docs/scripts/toc.js +0 -203
- package/docs/styles/darkstrap.css +0 -960
- package/docs/styles/prettify-tomorrow.css +0 -132
- package/docs/styles/site.cerulean.css +0 -7008
- package/docs/styles/site.cosmo.css +0 -7061
- package/docs/styles/site.cyborg.css +0 -7048
- package/docs/styles/site.darkly.css +0 -7171
- package/docs/styles/site.darkstrap.css +0 -5638
- package/docs/styles/site.dibs-bootstrap.css +0 -5899
- package/docs/styles/site.flatly.css +0 -7147
- package/docs/styles/site.journal.css +0 -6973
- package/docs/styles/site.lumen.css +0 -7298
- package/docs/styles/site.paper.css +0 -7623
- package/docs/styles/site.readable.css +0 -6997
- package/docs/styles/site.sandstone.css +0 -7035
- package/docs/styles/site.simplex.css +0 -7023
- package/docs/styles/site.slate.css +0 -7343
- package/docs/styles/site.spacelab.css +0 -7055
- package/docs/styles/site.superhero.css +0 -7131
- package/docs/styles/site.united.css +0 -6895
- package/docs/styles/site.yeti.css +0 -7195
- package/docs/styles/sunlight.dark.css +0 -345
- package/docs/styles/sunlight.default.css +0 -344
- package/docs/utilities_WSCache.js.html +0 -322
- package/docs/utilities_index.js.html +0 -338
- package/jsdoc-config.json +0 -35
package/docs/index.html
DELETED
|
@@ -1,402 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
|
|
3
|
-
<html lang="en">
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="utf-8">
|
|
6
|
-
<meta name="viewport" content="width=device-width">
|
|
7
|
-
<title>Worldstate Emitter Index</title>
|
|
8
|
-
|
|
9
|
-
<!--[if lt IE 9]>
|
|
10
|
-
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
11
|
-
<![endif]-->
|
|
12
|
-
<link type="text/css" rel="stylesheet" href="styles/sunlight.dark.css">
|
|
13
|
-
|
|
14
|
-
<link type="text/css" rel="stylesheet" href="styles/site.cosmo.css">
|
|
15
|
-
|
|
16
|
-
</head>
|
|
17
|
-
|
|
18
|
-
<body>
|
|
19
|
-
|
|
20
|
-
<div class="navbar navbar-default navbar-fixed-top navbar-inverse">
|
|
21
|
-
<div class="container">
|
|
22
|
-
<div class="navbar-header">
|
|
23
|
-
<a class="navbar-brand" href="index.html">Worldstate Emitter</a>
|
|
24
|
-
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#topNavigation">
|
|
25
|
-
<span class="icon-bar"></span>
|
|
26
|
-
<span class="icon-bar"></span>
|
|
27
|
-
<span class="icon-bar"></span>
|
|
28
|
-
</button>
|
|
29
|
-
</div>
|
|
30
|
-
<div class="navbar-collapse collapse" id="topNavigation">
|
|
31
|
-
<ul class="nav navbar-nav">
|
|
32
|
-
|
|
33
|
-
<li class="dropdown">
|
|
34
|
-
<a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b class="caret"></b></a>
|
|
35
|
-
<ul class="dropdown-menu inline">
|
|
36
|
-
<li><a href="RSS.html">RSS</a></li><li><a href="TwitterCache.html">TwitterCache</a></li><li><a href="Worldstate.html">Worldstate</a></li><li><a href="WSCache.html">WSCache</a></li>
|
|
37
|
-
</ul>
|
|
38
|
-
</li>
|
|
39
|
-
|
|
40
|
-
<li class="dropdown">
|
|
41
|
-
<a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b class="caret"></b></a>
|
|
42
|
-
<ul class="dropdown-menu inline">
|
|
43
|
-
<li><a href="global.html#arrayLike">arrayLike</a></li><li><a href="global.html#between">between</a></li><li><a href="global.html#checkOverrides">checkOverrides</a></li><li><a href="global.html#fromNow">fromNow</a></li><li><a href="global.html#groupBy">groupBy</a></li><li><a href="global.html#initCycleStart">initCycleStart</a></li><li><a href="global.html#kuvaProcessing">kuvaProcessing</a></li><li><a href="global.html#lastUpdated">lastUpdated</a></li><li><a href="global.html#parseNew">parseNew</a></li>
|
|
44
|
-
</ul>
|
|
45
|
-
</li>
|
|
46
|
-
|
|
47
|
-
</ul>
|
|
48
|
-
|
|
49
|
-
<div class="col-sm-3 col-md-3">
|
|
50
|
-
<form class="navbar-form" role="search">
|
|
51
|
-
<div class="input-group">
|
|
52
|
-
<input type="text" class="form-control" placeholder="Search" name="q" id="search-input">
|
|
53
|
-
<div class="input-group-btn">
|
|
54
|
-
<button class="btn btn-default" id="search-submit"><i class="glyphicon glyphicon-search"></i></button>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
</form>
|
|
58
|
-
</div>
|
|
59
|
-
|
|
60
|
-
</div>
|
|
61
|
-
|
|
62
|
-
</div>
|
|
63
|
-
</div>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
<div class="container" id="toc-content">
|
|
67
|
-
<div class="row">
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
<div class="col-md-8">
|
|
71
|
-
|
|
72
|
-
<div id="main">
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
<section class="readme-section">
|
|
96
|
-
<article><h1>Worldstate Emitter <a href="https://travis-ci.com/WFCD/worldstate-emitter"><img src="https://travis-ci.com/WFCD/worldstate-emitter.svg?branch=master" alt="Build Status"></a></h1>
|
|
97
|
-
<p>Suuuper simple emitter for worldstate events.</p>
|
|
98
|
-
<p>Very opinionated decisions on what events and event names, as well as</p>
|
|
99
|
-
<h2>Emitter Events</h2>
|
|
100
|
-
<table>
|
|
101
|
-
<thead>
|
|
102
|
-
<tr>
|
|
103
|
-
<th style="text-align:left">Emitter Event</th>
|
|
104
|
-
<th>Emit key</th>
|
|
105
|
-
<th>description</th>
|
|
106
|
-
</tr>
|
|
107
|
-
</thead>
|
|
108
|
-
<tbody>
|
|
109
|
-
<tr>
|
|
110
|
-
<td style="text-align:left">RSS</td>
|
|
111
|
-
<td><code>rss</code></td>
|
|
112
|
-
<td>New forum post from DE</td>
|
|
113
|
-
</tr>
|
|
114
|
-
<tr>
|
|
115
|
-
<td style="text-align:left">Worldstate</td>
|
|
116
|
-
<td><code>ws:update</code></td>
|
|
117
|
-
<td>New Worldstate event</td>
|
|
118
|
-
</tr>
|
|
119
|
-
<tr>
|
|
120
|
-
<td style="text-align:left">Tweet</td>
|
|
121
|
-
<td><code>tweet</code></td>
|
|
122
|
-
<td>New tweet from one of the selected accounts</td>
|
|
123
|
-
</tr>
|
|
124
|
-
</tbody>
|
|
125
|
-
</table>
|
|
126
|
-
<details>
|
|
127
|
-
<summary>Twitter Accounts</summary>
|
|
128
|
-
<ul>
|
|
129
|
-
<li><a href="https://twitter.com/playwarframe">Warframe</a> (warframe)</li>
|
|
130
|
-
<li><a href="https://twitter.com/digitalextremes">Digital Extremes</a> (digitalextremes)</li>
|
|
131
|
-
<li><a href="https://twitter.com/PabloPoon">[DE]Pablo</a> (pablo)</li>
|
|
132
|
-
<li><a href="https://twitter.com/cam_rogers">Cameron Rogers</a> (cameron)</li>
|
|
133
|
-
<li><a href="https://twitter.com/rebbford">[DE]Rebecca</a> (rebecca)</li>
|
|
134
|
-
<li><a href="https://twitter.com/sj_sinclair">[DE]Steve</a> (steve)</li>
|
|
135
|
-
<li><a href="https://twitter.com/soelloo">[DE]Danielle</a> (danielle)</li>
|
|
136
|
-
<li><a href="https://twitter.com/moitoi">[DE]Megan</a> (megan)</li>
|
|
137
|
-
<li><a href="https://twitter.com/GameSoundDesign">[DE]George</a> (george)</li>
|
|
138
|
-
<li><a href="https://twitter.com/msinilo">[DE]Maciej</a> (maciej)</li>
|
|
139
|
-
<li><a href="https://twitter.com/sheldoncarter">[DE]Sheldon</a> (sheldon)</li>
|
|
140
|
-
<li><a href="https://twitter.com/narcbag">[DE]Marcus</a> (narc)</li>
|
|
141
|
-
<li><a href="https://twitter.com/helen_heikkila">[DE]Helen</a> (helen)</li>
|
|
142
|
-
<li><a href="https://twitter.com/tobitenno">Tobiah (me)</a> (tobiah)</li>
|
|
143
|
-
<li><a href="https://twitter.com/wfdiscord">WF Discord</a> (wfdiscord)</li>
|
|
144
|
-
</ul>
|
|
145
|
-
</details>
|
|
146
|
-
<br />
|
|
147
|
-
<details> <summary>Twitter Events</summary>
|
|
148
|
-
<ul>
|
|
149
|
-
<li><code>tweet</code></li>
|
|
150
|
-
<li><code>retweet</code></li>
|
|
151
|
-
<li><code>reply</code></li>
|
|
152
|
-
<li><code>quote</code></li>
|
|
153
|
-
</ul>
|
|
154
|
-
</details>
|
|
155
|
-
<br />
|
|
156
|
-
<details><summary>RSS Feeds</summary>
|
|
157
|
-
<ul>
|
|
158
|
-
<li><a href="https://forums.warframe.com/forum/38-players-helping-players">Players helping Players</a></li>
|
|
159
|
-
<li><a href="https://forums.warframe.com/forum/3-pc-update-notes">PC Updates</a></li>
|
|
160
|
-
<li><a href="https://forums.warframe.com/forum/2-pc-announcements">PC Announcements</a></li>
|
|
161
|
-
<li><a href="https://forums.warframe.com/forum/152-ps4-update-notes">PS4 Updates</a></li>
|
|
162
|
-
<li><a href="https://forums.warframe.com/forum/151-ps4-announcements">PS4 Announcements</a></li>
|
|
163
|
-
<li><a href="https://forums.warframe.com/forum/253-xbox-one-update-notes">XB1 Updates</a></li>
|
|
164
|
-
<li><a href="https://forums.warframe.com/forum/252-xbox-one-announcements">XB1 Announcements</a></li>
|
|
165
|
-
<li><a href="https://forums.warframe.com/forum/1196-nintendo-switch-update-notes">Switch Updates</a></li>
|
|
166
|
-
<li><a href="https://forums.warframe.com/forum/1198-nintendo-switch-announcements">Switch Announcements</a></li>
|
|
167
|
-
<li><a href="https://forums.warframe.com/forum/170-announcements-events">News</a></li>
|
|
168
|
-
<li><a href="https://forums.warframe.com/forum/123-developer-workshop-update-notes">Developers Workshop</a></li>
|
|
169
|
-
</ul>
|
|
170
|
-
<details><summary>Staff Replies</summary>
|
|
171
|
-
<ul>
|
|
172
|
-
<li><a href="https://forums.warframe.com/discover/839">[DE]Rebecca</a></li>
|
|
173
|
-
<li><a href="https://forums.warframe.com/discover/840">[DE]Danielle</a></li>
|
|
174
|
-
<li><a href="https://forums.warframe.com/discover/841">[DE]Drew</a></li>
|
|
175
|
-
<li><a href="https://forums.warframe.com/discover/842">[DE]Glen</a></li>
|
|
176
|
-
<li><a href="https://forums.warframe.com/discover/1171">[DE]Taylor</a></li>
|
|
177
|
-
<li><a href="https://forums.warframe.com/discover/1777">[DE]Steve</a></li>
|
|
178
|
-
<li><a href="https://forums.warframe.com/discover/1291">[DE]Helen</a></li>
|
|
179
|
-
<li><a href="https://forums.warframe.com/discover/1294">[DE]Saske</a></li>
|
|
180
|
-
<li><a href="https://forums.warframe.com/discover/1295">[DE]Kaz</a></li>
|
|
181
|
-
<li><a href="https://forums.warframe.com/discover/1299">[DE]Pablo</a></li>
|
|
182
|
-
<li><a href="https://forums.warframe.com/discover/1778">[DE]Connor</a></li>
|
|
183
|
-
<li><a href="https://forums.warframe.com/discover/1779">[DE]Marcus</a></li>
|
|
184
|
-
<li><a href="https://forums.warframe.com/discover/1780">[DE]George</a></li>
|
|
185
|
-
<li><a href="https://forums.warframe.com/discover/1781">[DE]Bear</a></li>
|
|
186
|
-
</ul>
|
|
187
|
-
</details>
|
|
188
|
-
</details>
|
|
189
|
-
<br />
|
|
190
|
-
<details><summary>Other Methods</summary>
|
|
191
|
-
<table>
|
|
192
|
-
<thead>
|
|
193
|
-
<tr>
|
|
194
|
-
<th style="text-align:left">Method</th>
|
|
195
|
-
<th>Params</th>
|
|
196
|
-
<th>Output</th>
|
|
197
|
-
</tr>
|
|
198
|
-
</thead>
|
|
199
|
-
<tbody>
|
|
200
|
-
<tr>
|
|
201
|
-
<td style="text-align:left"><code>getRss</code></td>
|
|
202
|
-
<td>--</td>
|
|
203
|
-
<td>Map of RSS feeds with <code>url</code> and <code>items</code></td>
|
|
204
|
-
</tr>
|
|
205
|
-
<tr>
|
|
206
|
-
<td style="text-align:left"><code>getWorldstate</code></td>
|
|
207
|
-
<td><code>platform</code>, <code>locale</code></td>
|
|
208
|
-
<td>Worldstate objects</td>
|
|
209
|
-
</tr>
|
|
210
|
-
<tr>
|
|
211
|
-
<td style="text-align:left">--</td>
|
|
212
|
-
<td><code>platform</code></td>
|
|
213
|
-
<td>Defaults to <code>pc</code>. One of <code>pc</code>, <code>ps4</code>, <code>xb1</code>, <code>swi</code>.</td>
|
|
214
|
-
</tr>
|
|
215
|
-
<tr>
|
|
216
|
-
<td style="text-align:left">--</td>
|
|
217
|
-
<td><code>locale</code></td>
|
|
218
|
-
<td>Defaults to <code>en</code>. Any of the locales included in <a href="https://github.com/WFCD/warframe-worldstate-data"><code>worldstate-data</code></a></td>
|
|
219
|
-
</tr>
|
|
220
|
-
</tbody>
|
|
221
|
-
</table>
|
|
222
|
-
<p><code>*</code> Denote required</p>
|
|
223
|
-
</details>
|
|
224
|
-
<br />
|
|
225
|
-
<p>Help & Contact
|
|
226
|
-
<a href="https://discord.gg/jGZxH9f"><img src="https://img.shields.io/discord/256087517353213954.svg?logo=discord" alt="Discord"></a></p></article>
|
|
227
|
-
</section>
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
</div>
|
|
236
|
-
</div>
|
|
237
|
-
|
|
238
|
-
<div class="clearfix"></div>
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
<div class="col-md-3">
|
|
242
|
-
<div id="toc" class="col-md-3 hidden-xs hidden-sm hidden-md"></div>
|
|
243
|
-
</div>
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
</div>
|
|
247
|
-
</div>
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
<div class="modal fade" id="searchResults">
|
|
251
|
-
<div class="modal-dialog">
|
|
252
|
-
<div class="modal-content">
|
|
253
|
-
<div class="modal-header">
|
|
254
|
-
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
255
|
-
<h4 class="modal-title">Search results</h4>
|
|
256
|
-
</div>
|
|
257
|
-
<div class="modal-body"></div>
|
|
258
|
-
<div class="modal-footer">
|
|
259
|
-
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
|
260
|
-
</div>
|
|
261
|
-
</div><!-- /.modal-content -->
|
|
262
|
-
</div><!-- /.modal-dialog -->
|
|
263
|
-
</div>
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
<footer>
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
<span class="copyright">
|
|
270
|
-
©2020, WFCD
|
|
271
|
-
</span>
|
|
272
|
-
|
|
273
|
-
<span class="jsdoc-message">
|
|
274
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.5</a>
|
|
275
|
-
|
|
276
|
-
on Monday, August 10th 2020, 15:25:12
|
|
277
|
-
|
|
278
|
-
using the <a href="https://github.com/docstrap/docstrap">DocStrap template</a>.
|
|
279
|
-
</span>
|
|
280
|
-
</footer>
|
|
281
|
-
|
|
282
|
-
<script src="scripts/docstrap.lib.js"></script>
|
|
283
|
-
<script src="scripts/toc.js"></script>
|
|
284
|
-
|
|
285
|
-
<script type="text/javascript" src="scripts/fulltext-search-ui.js"></script>
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
<script>
|
|
289
|
-
$( function () {
|
|
290
|
-
$( "[id*='$']" ).each( function () {
|
|
291
|
-
var $this = $( this );
|
|
292
|
-
|
|
293
|
-
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
|
|
294
|
-
} );
|
|
295
|
-
|
|
296
|
-
$( ".tutorial-section pre, .readme-section pre, pre.prettyprint.source" ).each( function () {
|
|
297
|
-
var $this = $( this );
|
|
298
|
-
|
|
299
|
-
var example = $this.find( "code" );
|
|
300
|
-
exampleText = example.html();
|
|
301
|
-
var lang = /{@lang (.*?)}/.exec( exampleText );
|
|
302
|
-
if ( lang && lang[1] ) {
|
|
303
|
-
exampleText = exampleText.replace( lang[0], "" );
|
|
304
|
-
example.html( exampleText );
|
|
305
|
-
lang = lang[1];
|
|
306
|
-
} else {
|
|
307
|
-
var langClassMatch = example.parent()[0].className.match(/lang\-(\S+)/);
|
|
308
|
-
lang = langClassMatch ? langClassMatch[1] : "javascript";
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
if ( lang ) {
|
|
312
|
-
|
|
313
|
-
$this
|
|
314
|
-
.addClass( "sunlight-highlight-" + lang )
|
|
315
|
-
.addClass( "linenums" )
|
|
316
|
-
.html( example.html() );
|
|
317
|
-
|
|
318
|
-
}
|
|
319
|
-
} );
|
|
320
|
-
|
|
321
|
-
Sunlight.highlightAll( {
|
|
322
|
-
lineNumbers : true,
|
|
323
|
-
showMenu : true,
|
|
324
|
-
enableDoclinks : true
|
|
325
|
-
} );
|
|
326
|
-
|
|
327
|
-
$.catchAnchorLinks( {
|
|
328
|
-
navbarOffset: 10
|
|
329
|
-
} );
|
|
330
|
-
$( "#toc" ).toc( {
|
|
331
|
-
anchorName : function ( i, heading, prefix ) {
|
|
332
|
-
return $( heading ).attr( "id" ) || ( prefix + i );
|
|
333
|
-
},
|
|
334
|
-
selectors : "#toc-content h1,#toc-content h2,#toc-content h3,#toc-content h4",
|
|
335
|
-
showAndHide : false,
|
|
336
|
-
smoothScrolling: true
|
|
337
|
-
} );
|
|
338
|
-
|
|
339
|
-
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
|
|
340
|
-
$( '.dropdown-toggle' ).dropdown();
|
|
341
|
-
|
|
342
|
-
$( "table" ).each( function () {
|
|
343
|
-
var $this = $( this );
|
|
344
|
-
$this.addClass('table');
|
|
345
|
-
} );
|
|
346
|
-
|
|
347
|
-
} );
|
|
348
|
-
</script>
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
<!--Navigation and Symbol Display-->
|
|
353
|
-
|
|
354
|
-
<script>
|
|
355
|
-
$( function () {
|
|
356
|
-
$( '#main' ).localScroll( {
|
|
357
|
-
offset : { top : 60 } //offset by the height of your header (give or take a few px, see what works for you)
|
|
358
|
-
} );
|
|
359
|
-
$( "dt.name" ).each( function () {
|
|
360
|
-
var $this = $( this ).find("h4");
|
|
361
|
-
var icon = $( "<i/>" ).addClass( "icon-plus-sign" ).addClass( "pull-right" ).addClass( "icon-white" );
|
|
362
|
-
var dt = $(this);
|
|
363
|
-
var children = dt.next( "dd" );
|
|
364
|
-
|
|
365
|
-
dt.prepend( icon ).css( {cursor : "pointer"} );
|
|
366
|
-
dt.addClass( "member-collapsed" ).addClass( "member" );
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
children.hide();
|
|
370
|
-
|
|
371
|
-
dt.children().on( "click", function () {
|
|
372
|
-
children = dt.next( "dd" );
|
|
373
|
-
children.slideToggle( "fast", function () {
|
|
374
|
-
|
|
375
|
-
if ( children.is( ":visible" ) ) {
|
|
376
|
-
icon.addClass( "icon-minus-sign" ).removeClass( "icon-plus-sign" ).removeClass( "icon-white" );
|
|
377
|
-
dt.addClass( "member-open" ).animate( "member-collapsed" );
|
|
378
|
-
} else {
|
|
379
|
-
icon.addClass( "icon-plus-sign" ).removeClass( "icon-minus-sign" ).addClass( "icon-white" );
|
|
380
|
-
dt.addClass( "member-collapsed" ).removeClass( "member-open" );
|
|
381
|
-
}
|
|
382
|
-
} );
|
|
383
|
-
} );
|
|
384
|
-
|
|
385
|
-
} );
|
|
386
|
-
} );
|
|
387
|
-
</script>
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
<!--Google Analytics-->
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
<script type="text/javascript">
|
|
395
|
-
$(document).ready(function() {
|
|
396
|
-
SearcherDisplay.init();
|
|
397
|
-
});
|
|
398
|
-
</script>
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
</body>
|
|
402
|
-
</html>
|
package/docs/quicksearch.html
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
</head>
|
|
4
|
-
<body style="background: transparent;">
|
|
5
|
-
<script src="scripts/docstrap.lib.js"></script>
|
|
6
|
-
<script src="scripts/lunr.min.js"></script>
|
|
7
|
-
<script src="scripts/fulltext-search.js"></script>
|
|
8
|
-
|
|
9
|
-
<script type="text/x-docstrap-searchdb">
|
|
10
|
-
{"handlers_Worldstate.js.html":{"id":"handlers_Worldstate.js.html","title":"Source: handlers/Worldstate.js","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Source: handlers/Worldstate.js 'use strict'; const Cache = require('json-fetch-cache'); const { locales } = require('warframe-worldstate-data'); const WSCache = require('../utilities/WSCache'); const { logger, groupBy, lastUpdated } = require('../utilities'); const wsTimeout = process.env.CACHE_TIMEOUT || 60000; const platforms = ['pc', 'ps4', 'xb1', 'swi']; const worldStates = {}; const wsRawCaches = {}; const debugEvents = ['arbitration', 'kuva', 'nightwave']; const smTimeout = process.env.SEMLAR_TIMEOUT || 300000; const kuvaCache = new Cache('https://10o.io/arbitrations.json', smTimeout, { logger, maxRetry: 0 }); const sentientCache = new Cache('https://semlar.com/anomaly.json', smTimeout, { logger }); const fissureKey = (fissure) => `fissures.t${fissure.tierNum}.${(fissure.missionType || '').toLowerCase()}`; const acolyteKey = (acolyte) => ({ eventKey: `enemies${acolyte.isDiscovered ? '' : '.departed'}`, activation: acolyte.lastDiscoveredAt, }); const arbiKey = (arbitration) => { if (!(arbitration && arbitration.enemy)) return ''; let k; try { k = `arbitration.${arbitration.enemy.toLowerCase()}.${arbitration.type.replace(/\\s/g, '').toLowerCase()}`; } catch (e) { logger.error(`Unable to parse arbitraion: ${JSON.stringify(arbitration)}\\n${e}`); } return k; }; const eKeyOverrides = { events: 'operations', persistentEnemies: 'enemies', fissures: fissureKey, enemies: acolyteKey, arbitration: arbiKey, }; /** * Find overrides for the provided key * @param {string} key worldsate field to find overrides * @param {Object} data data corresponding to the key from provided worldstate * @returns {string} overrided key */ const checkOverrides = (key, data) => { if (typeof eKeyOverrides[key] === 'string') { return eKeyOverrides[key]; } if (typeof eKeyOverrides[key] === 'function') { return eKeyOverrides[key](data); } return key; }; /** * Process kuva fields * @param {Object} deps dependencies for processing * @param {Object[]} packets packets to emit * @returns {Object|Object[]} object(s) to emit from kuva stuff */ const kuvaProcessing = (deps, packets) => { if (!deps.data) { logger.error('no kuva data'); return undefined; } const data = groupBy(deps.data, 'type'); Object.keys(data).forEach((type) => { deps = { ...deps, data: data[type], id: `kuva.${data[type][0].type.replace(/\\s/g, '').toLowerCase()}`, activation: data[type][0].activation, expiry: data[type][0].expiry, }; const p = require('./events/objectLike')(deps.data, deps); if (p) { packets.push(p); } }); return packets.filter((p) => p); }; /** * arrayLike are all just arrays of objectLike * @param {Object} deps dependencies for processing * @param {Object[]} packets packets to emit * @returns {Object|Object[]} object(s) to emit from arrayLike processing */ const arrayLike = (deps, packets) => { deps.data.forEach((arrayItem) => { const k = checkOverrides(deps.key, arrayItem); packets.push(require('./events/objectLike')(arrayItem, { ...deps, id: k, })); }); return packets; }; /** * Set up current cycle start if it's not been intiated * @param {Object} deps dependencies for processing */ const initCycleStart = (deps) => { if (!lastUpdated[deps.platform][deps.language]) { lastUpdated[deps.platform][deps.language] = deps.cycleStart; } }; /** * Parse new events from the provided worldstate * @param {Object} deps dependencies to parse out events * @returns {Packet|Packet[]} packet(s) to emit */ const parseNew = (deps) => { initCycleStart(deps); // anything in the eKeyOverrides goes first, then anything uniform const packets = []; switch (deps.key) { case 'kuva': return kuvaProcessing(deps, packets); case 'events': deps = { ...deps, id: eKeyOverrides[deps.key], }; case 'alerts': case 'conclaveChallenges': case 'dailyDeals': case 'flashSales': case 'fissures': case 'globalUpgrades': case 'invasions': case 'syndicateMissions': case 'weeklyChallenges': packets.push(...arrayLike(deps, packets)); break; case 'cetusCycle': case 'earthCycle': case 'vallisCycle': packets.push(require('./events/cycleLike')(deps.data, deps)); break; case 'persistentEnemies': deps = { ...deps, ...checkOverrides(deps.key, deps.data), }; case 'sortie': case 'voidTrader': case 'arbitration': case 'sentientOutposts': deps.id = checkOverrides(deps.key, deps.data); packets.push(require('./events/objectLike')(deps.data, deps)); case 'nightwave': packets.push(require('./events/nightwave')(deps.data, deps)); default: break; } return packets; }; /** * Handler for worldstate data */ class Worldstate { /** * Set up listening for specific platform and locale if provided. * @param {EventEmitter} eventEmitter Emitter to push new worldstate events to * @param {string} platform Platform to watch (optional) * @param {string} locale Locale (actually just language) to watch */ constructor(eventEmitter, platform, locale) { this.emitter = eventEmitter; this.platform = platform; this.locale = locale; logger.silly('starting up worldstate listener...'); if (platform) { logger.debug(`only listening for ${platform}...`); } if (locale) { logger.debug(`only listening for ${locale}...`); } this.setUpRawEmitters(); this.setupParsedEvents(); } /** * Set up emitting raw worldstate data */ setUpRawEmitters() { platforms.forEach((p) => { if (this.platform && this.platform !== p) return; const url = `http://content${p === 'pc' ? '' : `.${p}`}.warframe.com/dynamic/worldState.php`; worldStates[p] = {}; locales.forEach(async (locale) => { if (!this.locale || this.locale === locale) { worldStates[p][locale] = new WSCache({ platform: p, locale, kuvaCache, sentientCache, eventEmitter: this.emitter, }); } }); wsRawCaches[p] = new Cache(url, wsTimeout, { delayStart: false, parser: (str) => str, useEmitter: true, logger, }); /* listen for the raw cache updates so we can emit them from the super emitter */ wsRawCaches[p].on('update', (dataStr) => { this.emitter.emit('ws:update:raw', { platform: p, data: dataStr }); }); }); /* when the raw emits happen, parse them and store them on parsed worldstate caches */ this.emitter.on('ws:update:raw', ({ platform, data }) => { locales.forEach((locale) => { if (!this.locale || this.locale === locale) { worldStates[platform][locale].data = data; } }); }); } /** * Set up listeners for the parsed worldstate updates */ setupParsedEvents() { this.emitter.on('ws:update:parsed', ({ language, platform, data }) => { const packet = { platform, worldstate: data, language }; this.parseEvents(packet, this.emitter); }); } /** * Parse new worldstate events * @param {Object} worldstate worldstate to find packets from * @param {string} platform platform the worldstate corresponds to * @param {string} [language='en'] langauge of the worldstate (defaults to 'en') */ parseEvents({ worldstate, platform, language = 'en' }) { const cycleStart = Date.now(); const packets = []; Object.keys(worldstate).forEach(async (key) => { const packet = parseNew({ data: worldstate[key], key, language, platform, cycleStart, }); if (Array.isArray(packet)) { if (packet.length) { packets.push(...(packet.filter((p) => p && p !== null))); } } else if (packet) { packets.push(packet); } }); lastUpdated[platform][language] = Date.now(); packets .filter((p) => p && p.id && packets !== null) .forEach((packet) => { this.emit('ws:update:event', packet); }); } /** * Emit an event with given id * @param {string} id Id of the event to emit * @param {Object} packet Data packet to emit */ emit(id, packet) { if (debugEvents.includes(packet.key)) logger.warn(packet.key); logger.silly(`ws:update:event - emitting ${packet.id}`); delete packet.cycleStart; this.emitter.emit(id, packet); } /** * get a specific worldstate version * @param {string} [platform='pc'] Platform of the worldstate * @param {string} [locale='en'] Locale of the worldsttate * @returns {Object} Worldstate corresponding to provided data * @throws {Error} when the platform or locale aren't tracked and aren't updated */ // eslint-disable-next-line class-methods-use-this get(platform = 'pc', language = 'en') { if (worldStates[platform] && worldStates[platform][language]) { return worldStates[platform][language].data; } throw new Error(`Platform (${platform}) or language (${language}) not tracked.\\nEnsure that the parameters passed are correct`); } } module.exports = Worldstate; × Search results Close "},"utilities_index.js.html":{"id":"utilities_index.js.html","title":"Source: utilities/index.js","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Source: utilities/index.js 'use strict'; require('colors'); const { transports, createLogger, format } = require('winston'); const { combine, label, printf, colorize, } = format; /* Logger setup */ const transport = new transports.Console({ colorize: true }); const logFormat = printf((info) => `[${info.label}] ${info.level}: ${info.message}`); const logger = createLogger({ format: combine( colorize(), label({ label: 'WS'.brightBlue }), logFormat, ), transports: [transport], }); logger.level = process.env.LOG_LEVEL || 'error'; /** * Group an array by a field value * @param {Object[]} array array of objects to broup * @param {string} field field to group by * @returns {Object} [description] */ const groupBy = (array, field) => { const grouped = {}; if (!array) return undefined; array.forEach((item) => { const fVal = item[field]; if (!grouped[fVal]) { grouped[fVal] = []; } grouped[fVal].push(item); }); return grouped; }; const allowedDeviation = 30000; /** * Validate that b is between a and c * @param {Date} a The first Date, should be the last time things were updated * @param {Date} b The second Date, should be the activation time of an event * @param {Date} c The third Date, should be the start time of this update cycle * @returns {boolean} if the event date is between the server start time and the last update time */ const between = (a, b, c = new Date()) => (b + allowedDeviation > a) && (b - allowedDeviation < c); /** * Returns the number of milliseconds between now and a given date * @param {string} d The date from which the current time will be subtracted * @param {function} [now] A function that returns the current UNIX time in milliseconds * @returns {number} */ function fromNow(d, now = Date.now) { return new Date(d).getTime() - now(); } /** * Map of last updated dates/times * @type {Object} */ const lastUpdated = { pc: { en: 0, // Date.now(), }, ps4: { en: Date.now(), }, xb1: { en: Date.now(), }, swi: { en: Date.now(), }, }; module.exports = { logger, groupBy, fromNow, between, lastUpdated, }; × Search results Close "},"handlers_RSS.js.html":{"id":"handlers_RSS.js.html","title":"Source: handlers/RSS.js","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Source: handlers/RSS.js 'use strict'; const RssFeedEmitter = require('rss-feed-emitter'); const feeds = require('../resources/rssFeeds.json'); const { logger } = require('../utilities'); /** * RSS Emitter, leverages [rss-feed-emitter](https://npmjs.org/package/rss-feed-emitter) */ class RSS { /** * Set up emitting events for warframe forum entries * @param {EventEmitter} eventEmitter Emitter to send events from */ constructor(eventEmitter) { this.logger = logger; this.emitter = eventEmitter; this.feeder = new RssFeedEmitter({ userAgent: 'WFCD Feed Notifier', skipFirstLoad: true, }); feeds.forEach((feed) => { this.feeder.add({ url: feed.url, timeout: 30000 }); }); this.logger.debug('RSS Feed active'); this.start = Date.now(); this.feeder.on('error', this.logger.error.bind(this.logger)); this.feeder.on('new-item', this.handleNew.bind(this)); } handleNew(item) { try { if (Object.keys(item.image).length) { this.logger.debug(`Image: ${JSON.stringify(item.image)}`); } if (new Date(item.pubDate).getTime() <= this.start) return; const feed = feeds.filter((feedEntry) => feedEntry.url === item.meta.link)[0]; let firstImg = ((item.description || '').match(/<img.*src=\"(.*)\".*>/i) || [])[1]; if (!firstImg) { firstImg = feed.defaultAttach; } else if (firstImg.startsWith('//')) { firstImg = firstImg.replace('//', 'https://'); } const rssSummary = { body: (item.description || '\\u200B').replace(/<(?:.|\\n)*?>/gm, '').replace(/\\n\\n+\\s*/gm, '\\n\\n'), url: item.link, timestamp: item.pubDate, description: item.meta.description, author: feed.author || { name: 'Warframe Forums', url: item['rss:link']['#'], icon_url: 'https://i.imgur.com/hE2jdpv.png', }, title: item.title, image: firstImg, id: feed.key, }; this.emitter.emit('rss', rssSummary); } catch (error) { this.logger.error(error); } } } module.exports = RSS; × Search results Close "},"handlers_Twitter.js.html":{"id":"handlers_Twitter.js.html","title":"Source: handlers/Twitter.js","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Source: handlers/Twitter.js 'use strict'; const Twitter = require('twitter'); const toWatch = require('../resources/tweeters.json'); const { logger } = require('../utilities'); const determineTweetType = (tweet) => { if (tweet.in_reply_to_status_id) { return ('reply'); } if (tweet.quoted_status_id) { return ('quote'); } if (tweet.retweeted_status) { return ('retweet'); } return ('tweet'); }; const parseAuthor = (tweet) => ({ name: tweet.user.name, handle: tweet.user.screen_name, url: `https://twitter.com/${tweet.user.screen_name}`, avatar: `${tweet.user.profile_image_url.replace('_normal.jpg', '.jpg')}`, }); const parseQuoted = (tweet, type) => (tweet[type] ? { text: tweet[type].full_text, author: { name: tweet[type].user.name, handle: tweet[type].user.screen_name, }, } : undefined); const parseTweet = (tweets, watchable) => { const [tweet] = tweets; const type = determineTweetType(tweet); return { id: `twitter.${watchable.plain}.${type}`, uniqueId: String(tweets[0].id_str), text: tweet.full_text, url: `https://twitter.com/${tweet.user.screen_name}/status/${tweet.id_str}`, mediaUrl: tweet.entities.media ? tweet.entities.media[0].media_url : undefined, isReply: typeof tweet.in_reply_to_status_id !== 'undefined', author: parseAuthor(tweet), quote: parseQuoted(tweet, 'quoted_status'), retweet: parseQuoted(tweet, 'retweeted_status'), createdAt: new Date(tweet.created_at), }; }; /** * Twitter event handler */ class TwitterCache { /** * Create a new Twitter self-updating cache * @param {EventEmitter} eventEmitter emitter to push new tweets to */ constructor(eventEmitter) { this.emitter = eventEmitter; this.timeout = process.env.TWITTER_TIMEOUT || 60000; this.initTime = Date.now(); const clientInfo = { consumer_key: process.env.TWITTER_KEY, consumer_secret: process.env.TWITTER_SECRET, bearer_token: process.env.TWITTER_BEARER_TOKEN, }; this.clientInfoValid = clientInfo.consumer_key && clientInfo.consumer_secret && clientInfo.bearer_token; this.initClient(clientInfo); } initClient(clientInfo) { try { if (this.clientInfoValid) { this.client = new Twitter(clientInfo); // don't attempt anything else if authentication fails this.toWatch = toWatch; this.currentData = null; this.lastUpdated = Date.now() - 60000; this.updateInterval = setInterval(() => this.update(), this.timeout); this.update(); } else { logger.warn(`Twitter client not initialized... invalid token: ${clientInfo.bearer_token}`); } } catch (err) { this.client = undefined; this.clientInfoValid = false; logger.error(err); } } /** * Force the cache to update * @returns {Promise} the currently updating promise. */ async update() { if (!this.clientInfoValid) return undefined; if (!this.toWatch) { logger.verbose('Not processing twitter, no data to watch.'); return undefined; } if (!this.client) { logger.verbose('Not processing twitter, no client to connect.'); return undefined; } this.updating = this.getParseableData(); return this.updating; } /** * Get data able to be parsed from twitter. * @returns {Promise.<Array.<Object>>} Twieets */ async getParseableData() { logger.silly('Starting Twitter update...'); const parsedData = []; try { for (const watchable of this.toWatch) { const tweets = await this.client.get('statuses/user_timeline', { screen_name: watchable.acc_name, tweet_mode: 'extended', count: 1, }); const tweet = parseTweet(tweets, watchable); parsedData.push(tweet); if (tweet.createdAt.getTime() > this.lastUpdated) { this.emitter.emit('tweet', tweet); } } } catch (error) { this.onError(error); } this.lastUpdated = Date.now(); return parsedData; } /** * Handle errors that arise while fetching data from twitter * @param {[type]} error twitter error */ onError(error) { if (error[0] && error[0].code === 32) { this.clientInfoValid = false; logger.info('wiping twitter client data, could not authenticate...'); } else { logger.debug(JSON.stringify(error)); } } /** * Get the current data or a promise with the current data * @returns {Promise.<Object> | Object} either the current data * if it's not updating, or the promise returning the new data */ async getData() { if (!this.clientInfoValid) return undefined; if (this.updating) { return this.updating; } return this.currentData; } } module.exports = TwitterCache; × Search results Close "},"utilities_WSCache.js.html":{"id":"utilities_WSCache.js.html","title":"Source: utilities/WSCache.js","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Source: utilities/WSCache.js 'use strict'; const Worldstate = require('warframe-worldstate-parser'); /** * Warframe WorldState Cache - store and retrieve current worldstate data */ class WSCache { /** * Set up a cache checking for data and updates to a specific worldstate set * @param {string} platform Platform to track * @param {string} language Langauge/translation to track * @param {JSONCache} kuvaCache Cache of kuva data, provided by Semlar * @param {JSONCache} sentientCache Cache of sentient outpost data, provided by Semlar * @param {Eventemitter} eventEmitter Emitter to push new worldstate updates to */ constructor({ platform, language, kuvaCache, sentientCache, eventEmitter, }) { this.inner = null; Object.defineProperty(this, 'inner', { enumerable: false, configurable: false }); this.kuvaCache = kuvaCache; Object.defineProperty(this, 'kuvaCache', { enumerable: false, configurable: false }); this.sentientCache = sentientCache; Object.defineProperty(this, 'sentientCache', { enumerable: false, configurable: false }); this.platform = platform; this.language = language; this.emitter = eventEmitter; } /** * Get the latest worldstate data from this cache * @returns {Object} Current worldstate data */ get data() { return this.inner; } /** * Set the current data, aslso parses and emits data * @param {string} newData New string data to parse */ set data(newData) { setTimeout(async () => { const t = new Worldstate(newData, { locale: this.language, kuvaData: await this.kuvaCache.getData(), sentientData: await this.sentientCache.getData(), }); if (!t.timestamp) return; this.inner = t; this.emitter.emit('ws:update:parsed', { language: this.language, platform: this.platform, data: this.inner }); }, 1000); } /** * Set the current twitter data for the worldstate * @param {Object} newTwitter twitter data */ set twitter(newTwitter) { if (!(newTwitter && newTwitter.length)) return; this.inner.twitter = newTwitter; } } module.exports = WSCache; × Search results Close "},"global.html":{"id":"global.html","title":"Global","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Global Members <constant> lastUpdated :Object Map of last updated dates/times Type: Object Source: utilities/index.js, line 66 Methods arrayLike(deps, packets) arrayLike are all just arrays of objectLike Parameters: Name Type Description deps Object dependencies for processing packets Array.<Object> packets to emit Source: handlers/Worldstate.js, line 96 Returns: object(s) to emit from arrayLike processing Type Object | Array.<Object> between(a, b, c) Validate that b is between a and c Parameters: Name Type Description a Date The first Date, should be the last time things were updated b Date The second Date, should be the activation time of an event c Date The third Date, should be the start time of this update cycle Source: utilities/index.js, line 50 Returns: if the event date is between the server start time and the last update time Type boolean checkOverrides(key, data) Find overrides for the provided key Parameters: Name Type Description key string worldsate field to find overrides data Object data corresponding to the key from provided worldstate Source: handlers/Worldstate.js, line 52 Returns: overrided key Type string fromNow(d [, now]) Returns the number of milliseconds between now and a given date Parameters: Name Type Argument Description d string The date from which the current time will be subtracted now function <optional> A function that returns the current UNIX time in milliseconds Source: utilities/index.js, line 58 Returns: Type number groupBy(array, field) Group an array by a field value Parameters: Name Type Description array Array.<Object> array of objects to broup field string field to group by Source: utilities/index.js, line 29 Returns: [description] Type Object initCycleStart(deps) Set up current cycle start if it's not been intiated Parameters: Name Type Description deps Object dependencies for processing Source: handlers/Worldstate.js, line 111 kuvaProcessing(deps, packets) Process kuva fields Parameters: Name Type Description deps Object dependencies for processing packets Array.<Object> packets to emit Source: handlers/Worldstate.js, line 68 Returns: object(s) to emit from kuva stuff Type Object | Array.<Object> parseNew(deps) Parse new events from the provided worldstate Parameters: Name Type Description deps Object dependencies to parse out events Source: handlers/Worldstate.js, line 122 Returns: packet(s) to emit Type Packet | Array.<Packet> × Search results Close "},"classes.list.html":{"id":"classes.list.html","title":"Classes","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Classes Classes RSS TwitterCache Worldstate WSCache × Search results Close "},"index.html":{"id":"index.html","title":"Index","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Worldstate Emitter Suuuper simple emitter for worldstate events. Very opinionated decisions on what events and event names, as well as Emitter Events Emitter Event Emit key description RSS rss New forum post from DE Worldstate ws:update New Worldstate event Tweet tweet New tweet from one of the selected accounts Twitter Accounts Warframe (warframe) Digital Extremes (digitalextremes) [DE]Pablo (pablo) Cameron Rogers (cameron) [DE]Rebecca (rebecca) [DE]Steve (steve) [DE]Danielle (danielle) [DE]Megan (megan) [DE]George (george) [DE]Maciej (maciej) [DE]Sheldon (sheldon) [DE]Marcus (narc) [DE]Helen (helen) Tobiah (me) (tobiah) WF Discord (wfdiscord) Twitter Events tweet retweet reply quote RSS Feeds Players helping Players PC Updates PC Announcements PS4 Updates PS4 Announcements XB1 Updates XB1 Announcements Switch Updates Switch Announcements News Developers Workshop Staff Replies [DE]Rebecca [DE]Danielle [DE]Drew [DE]Glen [DE]Taylor [DE]Steve [DE]Helen [DE]Saske [DE]Kaz [DE]Pablo [DE]Connor [DE]Marcus [DE]George [DE]Bear Other Methods Method Params Output getRss -- Map of RSS feeds with url and items getWorldstate platform, locale Worldstate objects -- platform Defaults to pc. One of pc, ps4, xb1, swi. -- locale Defaults to en. Any of the locales included in worldstate-data * Denote required Help & Contact × Search results Close "},"RSS.html":{"id":"RSS.html","title":"Class: RSS","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Class: RSS RSS RSS Emitter, leverages [rss-feed-emitter](https://npmjs.org/package/rss-feed-emitter) new RSS(eventEmitter) Set up emitting events for warframe forum entries Parameters: Name Type Description eventEmitter EventEmitter Emitter to send events from Source: handlers/RSS.js, line 16 × Search results Close "},"TwitterCache.html":{"id":"TwitterCache.html","title":"Class: TwitterCache","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Class: TwitterCache TwitterCache Twitter event handler new TwitterCache(eventEmitter) Create a new Twitter self-updating cache Parameters: Name Type Description eventEmitter EventEmitter emitter to push new tweets to Source: handlers/Twitter.js, line 63 Methods <async> getData() Get the current data or a promise with the current data Source: handlers/Twitter.js, line 170 Returns: either the current data if it's not updating, or the promise returning the new data Type Promise.<Object> | Object <async> getParseableData() Get data able to be parsed from twitter. Source: handlers/Twitter.js, line 128 Returns: Twieets Type Promise.<Array.<Object>> onError(error) Handle errors that arise while fetching data from twitter Parameters: Name Type Description error Source: handlers/Twitter.js, line 156 <async> update() Force the cache to update Source: handlers/Twitter.js, line 106 Returns: the currently updating promise. Type Promise × Search results Close "},"Worldstate.html":{"id":"Worldstate.html","title":"Class: Worldstate","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Class: Worldstate Worldstate Handler for worldstate data new Worldstate(eventEmitter, platform, locale) Set up listening for specific platform and locale if provided. Parameters: Name Type Description eventEmitter EventEmitter Emitter to push new worldstate events to platform string Platform to watch (optional) locale string Locale (actually just language) to watch Source: handlers/Worldstate.js, line 181 Methods emit(id, packet) Emit an event with given id Parameters: Name Type Description id string Id of the event to emit packet Object Data packet to emit Source: handlers/Worldstate.js, line 284 get( [platform] [, locale]) get a specific worldstate version Parameters: Name Type Argument Default Description platform string <optional> 'pc' Platform of the worldstate locale string <optional> 'en' Locale of the worldsttate Source: handlers/Worldstate.js, line 300 Throws: when the platform or locale aren't tracked and aren't updated Type Error Returns: Worldstate corresponding to provided data Type Object parseEvents(worldstate, platform [, language]) Parse new worldstate events Parameters: Name Type Argument Default Description worldstate Object worldstate to find packets from platform string platform the worldstate corresponds to language string <optional> 'en' langauge of the worldstate (defaults to 'en') Source: handlers/Worldstate.js, line 254 setupParsedEvents() Set up listeners for the parsed worldstate updates Source: handlers/Worldstate.js, line 241 setUpRawEmitters() Set up emitting raw worldstate data Source: handlers/Worldstate.js, line 200 × Search results Close "},"WSCache.html":{"id":"WSCache.html","title":"Class: WSCache","body":" Worldstate Emitter Classes RSSTwitterCacheWorldstateWSCache Global arrayLikebetweencheckOverridesfromNowgroupByinitCycleStartkuvaProcessinglastUpdatedparseNew Class: WSCache WSCache Warframe WorldState Cache - store and retrieve current worldstate data new WSCache(platform, language, kuvaCache, sentientCache, eventEmitter) Set up a cache checking for data and updates to a specific worldstate set Parameters: Name Type Description platform string Platform to track language string Langauge/translation to track kuvaCache JSONCache Cache of kuva data, provided by Semlar sentientCache JSONCache Cache of sentient outpost data, provided by Semlar eventEmitter Eventemitter Emitter to push new worldstate updates to Source: utilities/WSCache.js, line 17 Members data Get the latest worldstate data from this cache Source: utilities/WSCache.js, line 39 data Set the current data, aslso parses and emits data Source: utilities/WSCache.js, line 47 twitter Set the current twitter data for the worldstate Source: utilities/WSCache.js, line 65 × Search results Close "}}
|
|
11
|
-
</script>
|
|
12
|
-
|
|
13
|
-
<script type="text/javascript">
|
|
14
|
-
$(document).ready(function() {
|
|
15
|
-
Searcher.init();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
$(window).on("message", function(msg) {
|
|
19
|
-
var msgData = msg.originalEvent.data;
|
|
20
|
-
|
|
21
|
-
if (msgData.msgid != "docstrap.quicksearch.start") {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
var results = Searcher.search(msgData.searchTerms);
|
|
26
|
-
|
|
27
|
-
window.parent.postMessage({"results": results, "msgid": "docstrap.quicksearch.done"}, "*");
|
|
28
|
-
});
|
|
29
|
-
</script>
|
|
30
|
-
</body>
|
|
31
|
-
</html>
|