@flashphoner/sfusdk 1.0.47 → 2.0.51

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 (207) hide show
  1. package/dist/client.version +1 -0
  2. package/dist/examples/sfu.d.ts +13 -0
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.js +15 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/sdk/connection.d.ts +25 -0
  7. package/dist/sdk/connection.js +101 -0
  8. package/dist/sdk/connection.js.map +1 -0
  9. package/dist/sdk/constants.d.ts +364 -0
  10. package/dist/sdk/constants.js +192 -0
  11. package/dist/sdk/constants.js.map +1 -0
  12. package/dist/sdk/logger.d.ts +10 -0
  13. package/dist/sdk/logger.js +22 -0
  14. package/dist/sdk/logger.js.map +1 -0
  15. package/dist/sdk/notifier.d.ts +7 -0
  16. package/dist/sdk/notifier.js +52 -0
  17. package/dist/sdk/notifier.js.map +1 -0
  18. package/dist/sdk/promises.d.ts +11 -0
  19. package/{src/sdk/promise.js → dist/sdk/promises.js} +14 -13
  20. package/dist/sdk/promises.js.map +1 -0
  21. package/dist/sdk/room-extended.d.ts +14 -0
  22. package/dist/sdk/room-extended.js +125 -0
  23. package/dist/sdk/room-extended.js.map +1 -0
  24. package/dist/sdk/room.d.ts +30 -0
  25. package/dist/sdk/room.js +370 -0
  26. package/dist/sdk/room.js.map +1 -0
  27. package/dist/sdk/sfu-extended.d.ts +132 -0
  28. package/dist/sdk/sfu-extended.js +525 -0
  29. package/dist/sdk/sfu-extended.js.map +1 -0
  30. package/dist/sdk/sfu.d.ts +22 -0
  31. package/dist/sdk/sfu.js +136 -0
  32. package/dist/sdk/sfu.js.map +1 -0
  33. package/dist/src/index.d.ts +6 -0
  34. package/dist/src/sdk/connection.d.ts +25 -0
  35. package/dist/src/sdk/constants.d.ts +364 -0
  36. package/dist/src/sdk/logger.d.ts +10 -0
  37. package/dist/src/sdk/notifier.d.ts +7 -0
  38. package/dist/src/sdk/promises.d.ts +11 -0
  39. package/dist/src/sdk/room-extended.d.ts +14 -0
  40. package/dist/src/sdk/room.d.ts +30 -0
  41. package/dist/src/sdk/sfu-extended.d.ts +132 -0
  42. package/dist/src/sdk/sfu.d.ts +22 -0
  43. package/package.json +27 -27
  44. package/Gruntfile.js +0 -79
  45. package/README.md +0 -95
  46. package/dependencies/bootstrap/css/bootstrap-theme.css +0 -587
  47. package/dependencies/bootstrap/css/bootstrap-theme.css.map +0 -1
  48. package/dependencies/bootstrap/css/bootstrap-theme.min.css +0 -5
  49. package/dependencies/bootstrap/css/bootstrap.css +0 -6853
  50. package/dependencies/bootstrap/css/bootstrap.css.map +0 -1
  51. package/dependencies/bootstrap/css/bootstrap.min.css +0 -5
  52. package/dependencies/bootstrap/font-awesome/HELP-US-OUT.txt +0 -7
  53. package/dependencies/bootstrap/font-awesome/css/font-awesome.css +0 -2178
  54. package/dependencies/bootstrap/font-awesome/css/font-awesome.min.css +0 -4
  55. package/dependencies/bootstrap/font-awesome/fonts/FontAwesome.otf +0 -0
  56. package/dependencies/bootstrap/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  57. package/dependencies/bootstrap/font-awesome/fonts/fontawesome-webfont.svg +0 -685
  58. package/dependencies/bootstrap/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  59. package/dependencies/bootstrap/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  60. package/dependencies/bootstrap/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  61. package/dependencies/bootstrap/font-awesome/less/animated.less +0 -34
  62. package/dependencies/bootstrap/font-awesome/less/bordered-pulled.less +0 -25
  63. package/dependencies/bootstrap/font-awesome/less/core.less +0 -12
  64. package/dependencies/bootstrap/font-awesome/less/fixed-width.less +0 -6
  65. package/dependencies/bootstrap/font-awesome/less/font-awesome.less +0 -18
  66. package/dependencies/bootstrap/font-awesome/less/icons.less +0 -724
  67. package/dependencies/bootstrap/font-awesome/less/larger.less +0 -13
  68. package/dependencies/bootstrap/font-awesome/less/list.less +0 -19
  69. package/dependencies/bootstrap/font-awesome/less/mixins.less +0 -60
  70. package/dependencies/bootstrap/font-awesome/less/path.less +0 -15
  71. package/dependencies/bootstrap/font-awesome/less/rotated-flipped.less +0 -20
  72. package/dependencies/bootstrap/font-awesome/less/screen-reader.less +0 -5
  73. package/dependencies/bootstrap/font-awesome/less/stacked.less +0 -20
  74. package/dependencies/bootstrap/font-awesome/less/variables.less +0 -735
  75. package/dependencies/bootstrap/font-awesome/scss/_animated.scss +0 -34
  76. package/dependencies/bootstrap/font-awesome/scss/_bordered-pulled.scss +0 -25
  77. package/dependencies/bootstrap/font-awesome/scss/_core.scss +0 -12
  78. package/dependencies/bootstrap/font-awesome/scss/_fixed-width.scss +0 -6
  79. package/dependencies/bootstrap/font-awesome/scss/_icons.scss +0 -724
  80. package/dependencies/bootstrap/font-awesome/scss/_larger.scss +0 -13
  81. package/dependencies/bootstrap/font-awesome/scss/_list.scss +0 -19
  82. package/dependencies/bootstrap/font-awesome/scss/_mixins.scss +0 -60
  83. package/dependencies/bootstrap/font-awesome/scss/_path.scss +0 -15
  84. package/dependencies/bootstrap/font-awesome/scss/_rotated-flipped.scss +0 -20
  85. package/dependencies/bootstrap/font-awesome/scss/_screen-reader.scss +0 -5
  86. package/dependencies/bootstrap/font-awesome/scss/_stacked.scss +0 -20
  87. package/dependencies/bootstrap/font-awesome/scss/_variables.scss +0 -735
  88. package/dependencies/bootstrap/font-awesome/scss/font-awesome.scss +0 -18
  89. package/dependencies/bootstrap/fonts/FontAwesome.otf +0 -0
  90. package/dependencies/bootstrap/fonts/fontawesome-webfont.eot +0 -0
  91. package/dependencies/bootstrap/fonts/fontawesome-webfont.svg +0 -655
  92. package/dependencies/bootstrap/fonts/fontawesome-webfont.ttf +0 -0
  93. package/dependencies/bootstrap/fonts/fontawesome-webfont.woff +0 -0
  94. package/dependencies/bootstrap/fonts/fontawesome-webfont.woff2 +0 -0
  95. package/dependencies/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  96. package/dependencies/bootstrap/fonts/glyphicons-halflings-regular.svg +0 -288
  97. package/dependencies/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  98. package/dependencies/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  99. package/dependencies/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  100. package/dependencies/bootstrap/icons/font-awesome.min.css +0 -4
  101. package/dependencies/bootstrap/js/bootstrap.js +0 -2363
  102. package/dependencies/bootstrap/js/bootstrap.min.js +0 -7
  103. package/dependencies/bootstrap/js/npm.js +0 -13
  104. package/dependencies/bootstrap/js/switch.js +0 -85
  105. package/dependencies/jquery/jquery-1.12.0.js +0 -11027
  106. package/dependencies/jquery/jquery-ui.js +0 -16617
  107. package/dependencies/jquery/jquery.js +0 -8981
  108. package/dependencies/jquery/jquery.json.js +0 -199
  109. package/dependencies/jquery/jquery.websocket.js +0 -61
  110. package/dependencies/sigma/sigma.layout.forceAtlas2.min.js +0 -1
  111. package/dependencies/sigma/sigma.layout.noverlap.min.js +0 -1
  112. package/dependencies/sigma/sigma.min.js +0 -2
  113. package/dependencies/sigma/sigma.plugins.relativeSize.min.js +0 -1
  114. package/dependencies/sigma/sigma.renderers.edgeLabels.min.js +0 -1
  115. package/dependencies/sigma/sigma.renderers.parallelEdges.min.js +0 -1
  116. package/dependencies/sigma/sigma.require.js +0 -12076
  117. package/docTemplate/README.md +0 -5
  118. package/docTemplate/publish.js +0 -654
  119. package/docTemplate/static/fonts/OpenSans-Bold-webfont.eot +0 -0
  120. package/docTemplate/static/fonts/OpenSans-Bold-webfont.svg +0 -1830
  121. package/docTemplate/static/fonts/OpenSans-Bold-webfont.woff +0 -0
  122. package/docTemplate/static/fonts/OpenSans-BoldItalic-webfont.eot +0 -0
  123. package/docTemplate/static/fonts/OpenSans-BoldItalic-webfont.svg +0 -1830
  124. package/docTemplate/static/fonts/OpenSans-BoldItalic-webfont.woff +0 -0
  125. package/docTemplate/static/fonts/OpenSans-Italic-webfont.eot +0 -0
  126. package/docTemplate/static/fonts/OpenSans-Italic-webfont.svg +0 -1830
  127. package/docTemplate/static/fonts/OpenSans-Italic-webfont.woff +0 -0
  128. package/docTemplate/static/fonts/OpenSans-Light-webfont.eot +0 -0
  129. package/docTemplate/static/fonts/OpenSans-Light-webfont.svg +0 -1831
  130. package/docTemplate/static/fonts/OpenSans-Light-webfont.woff +0 -0
  131. package/docTemplate/static/fonts/OpenSans-LightItalic-webfont.eot +0 -0
  132. package/docTemplate/static/fonts/OpenSans-LightItalic-webfont.svg +0 -1835
  133. package/docTemplate/static/fonts/OpenSans-LightItalic-webfont.woff +0 -0
  134. package/docTemplate/static/fonts/OpenSans-Regular-webfont.eot +0 -0
  135. package/docTemplate/static/fonts/OpenSans-Regular-webfont.svg +0 -1831
  136. package/docTemplate/static/fonts/OpenSans-Regular-webfont.woff +0 -0
  137. package/docTemplate/static/scripts/linenumber.js +0 -25
  138. package/docTemplate/static/scripts/prettify/Apache-License-2.0.txt +0 -202
  139. package/docTemplate/static/scripts/prettify/lang-css.js +0 -2
  140. package/docTemplate/static/scripts/prettify/prettify.js +0 -28
  141. package/docTemplate/static/styles/jsdoc-default.css +0 -354
  142. package/docTemplate/static/styles/prettify-jsdoc.css +0 -111
  143. package/docTemplate/static/styles/prettify-tomorrow.css +0 -132
  144. package/docTemplate/tmpl/augments.tmpl +0 -10
  145. package/docTemplate/tmpl/container.tmpl +0 -183
  146. package/docTemplate/tmpl/details.tmpl +0 -143
  147. package/docTemplate/tmpl/example.tmpl +0 -2
  148. package/docTemplate/tmpl/examples.tmpl +0 -13
  149. package/docTemplate/tmpl/exceptions.tmpl +0 -32
  150. package/docTemplate/tmpl/layout.tmpl +0 -38
  151. package/docTemplate/tmpl/mainpage.tmpl +0 -14
  152. package/docTemplate/tmpl/members.tmpl +0 -38
  153. package/docTemplate/tmpl/method.tmpl +0 -105
  154. package/docTemplate/tmpl/params.tmpl +0 -124
  155. package/docTemplate/tmpl/properties.tmpl +0 -108
  156. package/docTemplate/tmpl/returns.tmpl +0 -19
  157. package/docTemplate/tmpl/source.tmpl +0 -8
  158. package/docTemplate/tmpl/tutorial.tmpl +0 -19
  159. package/docTemplate/tmpl/type.tmpl +0 -7
  160. package/src/examples/client/chat.js +0 -67
  161. package/src/examples/client/config.json +0 -26
  162. package/src/examples/client/controls.js +0 -314
  163. package/src/examples/client/display.js +0 -502
  164. package/src/examples/client/main.css +0 -45
  165. package/src/examples/client/main.html +0 -220
  166. package/src/examples/client/main.js +0 -156
  167. package/src/examples/client/resources/details_close.png +0 -0
  168. package/src/examples/client/resources/details_open.png +0 -0
  169. package/src/examples/client/util.js +0 -67
  170. package/src/examples/commons/js/config.js +0 -81
  171. package/src/examples/commons/js/display.js +0 -484
  172. package/src/examples/commons/js/util.js +0 -202
  173. package/src/examples/commons/media/silence.mp3 +0 -0
  174. package/src/examples/controller/dependencies/sigma/sigma.renderers.edgeLabels.min.js +0 -1
  175. package/src/examples/controller/dependencies/sigma/sigma.renderers.parallelEdges.min.js +0 -1
  176. package/src/examples/controller/dependencies/sigma/sigma.require.js +0 -12076
  177. package/src/examples/controller/graph-view.js +0 -32
  178. package/src/examples/controller/main.css +0 -45
  179. package/src/examples/controller/main.html +0 -79
  180. package/src/examples/controller/main.js +0 -65
  181. package/src/examples/controller/parser.js +0 -202
  182. package/src/examples/controller/resources/details_close.png +0 -0
  183. package/src/examples/controller/resources/details_open.png +0 -0
  184. package/src/examples/controller/rest.js +0 -56
  185. package/src/examples/controller/table-view.js +0 -64
  186. package/src/examples/controller/test-data.js +0 -382
  187. package/src/examples/player/config.json +0 -8
  188. package/src/examples/player/player.css +0 -19
  189. package/src/examples/player/player.html +0 -54
  190. package/src/examples/player/player.js +0 -209
  191. package/src/examples/two-way-streaming/config.json +0 -34
  192. package/src/examples/two-way-streaming/two-way-streaming.css +0 -26
  193. package/src/examples/two-way-streaming/two-way-streaming.html +0 -72
  194. package/src/examples/two-way-streaming/two-way-streaming.js +0 -375
  195. package/src/sdk/constants.js +0 -514
  196. package/src/sdk/logger.js +0 -16
  197. package/src/sdk/room.js +0 -594
  198. package/src/sdk/sfu-extended.js +0 -843
  199. package/src/sdk/sfu.js +0 -208
  200. package/src/sdk/ws.js +0 -113
  201. package/src/tests/assets/1.jpeg +0 -0
  202. package/src/tests/lib/rtcaudiosourcesinewave.js +0 -109
  203. package/src/tests/lib/rtcvideosourcewrapper.js +0 -28
  204. package/src/tests/sdk/room.test.js +0 -229
  205. package/src/tests/sdk/sfu-extended.test.js +0 -265
  206. package/src/tests/sdk/sfu-extended.test.js_ +0 -265
  207. package/src/tests/util.js +0 -48
@@ -1,5 +0,0 @@
1
- SFU SDK - 1.0.47
2
-
3
- [Download builds](https://docs.flashphoner.com/display/SS1E/Release+notes)
4
-
5
- [Sources](https://github.com/flashphoner/sfu_sdk/tree/1.0)
@@ -1,654 +0,0 @@
1
- 'use strict';
2
-
3
- var doop = require('jsdoc/util/doop');
4
- var env = require('jsdoc/env');
5
- var fs = require('jsdoc/fs');
6
- var helper = require('jsdoc/util/templateHelper');
7
- var logger = require('jsdoc/util/logger');
8
- var path = require('jsdoc/path');
9
- var taffy = require('taffydb').taffy;
10
- var template = require('jsdoc/template');
11
- var util = require('util');
12
-
13
- var htmlsafe = helper.htmlsafe;
14
- var linkto = helper.linkto;
15
- var resolveAuthorLinks = helper.resolveAuthorLinks;
16
- var scopeToPunc = helper.scopeToPunc;
17
- var hasOwnProp = Object.prototype.hasOwnProperty;
18
-
19
- var data;
20
- var view;
21
-
22
- var outdir = path.normalize(env.opts.destination);
23
-
24
- function find(spec) {
25
- return helper.find(data, spec);
26
- }
27
-
28
- function tutoriallink(tutorial) {
29
- return helper.toTutorial(tutorial, null, { tag: 'em', classname: 'disabled', prefix: 'Tutorial: ' });
30
- }
31
-
32
- function getAncestorLinks(doclet) {
33
- return helper.getAncestorLinks(data, doclet);
34
- }
35
-
36
- function hashToLink(doclet, hash) {
37
- if ( !/^(#.+)/.test(hash) ) { return hash; }
38
-
39
- var url = helper.createLink(doclet);
40
-
41
- url = url.replace(/(#.+|$)/, hash);
42
- return '<a href="' + url + '">' + hash + '</a>';
43
- }
44
-
45
- function needsSignature(doclet) {
46
- var needsSig = false;
47
-
48
- // function and class definitions always get a signature
49
- if (doclet.kind === 'function' || doclet.kind === 'class') {
50
- needsSig = true;
51
- }
52
- // typedefs that contain functions get a signature, too
53
- else if (doclet.kind === 'typedef' && doclet.type && doclet.type.names &&
54
- doclet.type.names.length) {
55
- for (var i = 0, l = doclet.type.names.length; i < l; i++) {
56
- if (doclet.type.names[i].toLowerCase() === 'function') {
57
- needsSig = true;
58
- break;
59
- }
60
- }
61
- }
62
-
63
- return needsSig;
64
- }
65
-
66
- function getSignatureAttributes(item) {
67
- var attributes = [];
68
-
69
- if (item.optional) {
70
- attributes.push('opt');
71
- }
72
-
73
- if (item.nullable === true) {
74
- attributes.push('nullable');
75
- }
76
- else if (item.nullable === false) {
77
- attributes.push('non-null');
78
- }
79
-
80
- return attributes;
81
- }
82
-
83
- function updateItemName(item) {
84
- var attributes = getSignatureAttributes(item);
85
- var itemName = item.name || '';
86
-
87
- if (item.variable) {
88
- itemName = '&hellip;' + itemName;
89
- }
90
-
91
- if (attributes && attributes.length) {
92
- itemName = util.format( '%s<span class="signature-attributes">%s</span>', itemName,
93
- attributes.join(', ') );
94
- }
95
-
96
- return itemName;
97
- }
98
-
99
- function addParamAttributes(params) {
100
- return params.filter(function(param) {
101
- return param.name && param.name.indexOf('.') === -1;
102
- }).map(updateItemName);
103
- }
104
-
105
- function buildItemTypeStrings(item) {
106
- var types = [];
107
-
108
- if (item && item.type && item.type.names) {
109
- item.type.names.forEach(function(name) {
110
- types.push( linkto(name, htmlsafe(name)) );
111
- });
112
- }
113
-
114
- return types;
115
- }
116
-
117
- function buildAttribsString(attribs) {
118
- var attribsString = '';
119
-
120
- if (attribs && attribs.length) {
121
- attribsString = htmlsafe( util.format('(%s) ', attribs.join(', ')) );
122
- }
123
-
124
- return attribsString;
125
- }
126
-
127
- function addNonParamAttributes(items) {
128
- var types = [];
129
-
130
- items.forEach(function(item) {
131
- types = types.concat( buildItemTypeStrings(item) );
132
- });
133
-
134
- return types;
135
- }
136
-
137
- function addSignatureParams(f) {
138
- var params = f.params ? addParamAttributes(f.params) : [];
139
-
140
- f.signature = util.format( '%s(%s)', (f.signature || ''), params.join(', ') );
141
- }
142
-
143
- function addSignatureReturns(f) {
144
- var attribs = [];
145
- var attribsString = '';
146
- var returnTypes = [];
147
- var returnTypesString = '';
148
-
149
- // jam all the return-type attributes into an array. this could create odd results (for example,
150
- // if there are both nullable and non-nullable return types), but let's assume that most people
151
- // who use multiple @return tags aren't using Closure Compiler type annotations, and vice-versa.
152
- if (f.returns) {
153
- f.returns.forEach(function(item) {
154
- helper.getAttribs(item).forEach(function(attrib) {
155
- if (attribs.indexOf(attrib) === -1) {
156
- attribs.push(attrib);
157
- }
158
- });
159
- });
160
-
161
- attribsString = buildAttribsString(attribs);
162
- }
163
-
164
- if (f.returns) {
165
- returnTypes = addNonParamAttributes(f.returns);
166
- }
167
- if (returnTypes.length) {
168
- returnTypesString = util.format( ' &rarr; %s{%s}', attribsString, returnTypes.join('|') );
169
- }
170
-
171
- f.signature = '<span class="signature">' + (f.signature || '') + '</span>' +
172
- '<span class="type-signature">' + returnTypesString + '</span>';
173
- }
174
-
175
- function addSignatureTypes(f) {
176
- var types = f.type ? buildItemTypeStrings(f) : [];
177
-
178
- f.signature = (f.signature || '') + '<span class="type-signature">' +
179
- (types.length ? ' :' + types.join('|') : '') + '</span>';
180
- }
181
-
182
- function addAttribs(f) {
183
- var attribs = helper.getAttribs(f);
184
- var attribsString = buildAttribsString(attribs);
185
-
186
- f.attribs = util.format('<span class="type-signature">%s</span>', attribsString);
187
- }
188
-
189
- function shortenPaths(files, commonPrefix) {
190
- Object.keys(files).forEach(function(file) {
191
- files[file].shortened = files[file].resolved.replace(commonPrefix, '')
192
- // always use forward slashes
193
- .replace(/\\/g, '/');
194
- });
195
-
196
- return files;
197
- }
198
-
199
- function getPathFromDoclet(doclet) {
200
- if (!doclet.meta) {
201
- return null;
202
- }
203
-
204
- return doclet.meta.path && doclet.meta.path !== 'null' ?
205
- path.join(doclet.meta.path, doclet.meta.filename) :
206
- doclet.meta.filename;
207
- }
208
-
209
- function generate(title, docs, filename, resolveLinks) {
210
- resolveLinks = resolveLinks === false ? false : true;
211
-
212
- var docData = {
213
- env: env,
214
- title: title,
215
- docs: docs
216
- };
217
-
218
- var outpath = path.join(outdir, filename),
219
- html = view.render('container.tmpl', docData);
220
-
221
- if (resolveLinks) {
222
- html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a>
223
- }
224
-
225
- fs.writeFileSync(outpath, html, 'utf8');
226
- }
227
-
228
- function generateSourceFiles(sourceFiles, encoding) {
229
- encoding = encoding || 'utf8';
230
- Object.keys(sourceFiles).forEach(function(file) {
231
- var source;
232
- // links are keyed to the shortened path in each doclet's `meta.shortpath` property
233
- var sourceOutfile = helper.getUniqueFilename(sourceFiles[file].shortened);
234
- helper.registerLink(sourceFiles[file].shortened, sourceOutfile);
235
-
236
- try {
237
- source = {
238
- kind: 'source',
239
- code: helper.htmlsafe( fs.readFileSync(sourceFiles[file].resolved, encoding) )
240
- };
241
- }
242
- catch (e) {
243
- logger.error('Error while generating source file %s: %s', file, e.message);
244
- }
245
-
246
- generate('Source: ' + sourceFiles[file].shortened, [source], sourceOutfile,
247
- false);
248
- });
249
- }
250
-
251
- /**
252
- * Look for classes or functions with the same name as modules (which indicates that the module
253
- * exports only that class or function), then attach the classes or functions to the `module`
254
- * property of the appropriate module doclets. The name of each class or function is also updated
255
- * for display purposes. This function mutates the original arrays.
256
- *
257
- * @private
258
- * @param {Array.<module:jsdoc/doclet.Doclet>} doclets - The array of classes and functions to
259
- * check.
260
- * @param {Array.<module:jsdoc/doclet.Doclet>} modules - The array of module doclets to search.
261
- */
262
- function attachModuleSymbols(doclets, modules) {
263
- var symbols = {};
264
-
265
- // build a lookup table
266
- doclets.forEach(function(symbol) {
267
- symbols[symbol.longname] = symbols[symbol.longname] || [];
268
- symbols[symbol.longname].push(symbol);
269
- });
270
-
271
- return modules.map(function(module) {
272
- if (symbols[module.longname]) {
273
- module.modules = symbols[module.longname]
274
- // Only show symbols that have a description. Make an exception for classes, because
275
- // we want to show the constructor-signature heading no matter what.
276
- .filter(function(symbol) {
277
- return symbol.description || symbol.kind === 'class';
278
- })
279
- .map(function(symbol) {
280
- symbol = doop(symbol);
281
-
282
- if (symbol.kind === 'class' || symbol.kind === 'function') {
283
- symbol.name = symbol.name.replace('module:', '(require("') + '"))';
284
- }
285
-
286
- return symbol;
287
- });
288
- }
289
- });
290
- }
291
-
292
- function buildMemberNav(items, itemHeading, itemsSeen, linktoFn) {
293
- var nav = '';
294
-
295
- if (items.length) {
296
- var itemsNav = '';
297
-
298
- items.forEach(function(item) {
299
- if ( !hasOwnProp.call(item, 'longname') ) {
300
- itemsNav += '<li>' + linktoFn('', item.name) + '</li>';
301
- }
302
- else if ( !hasOwnProp.call(itemsSeen, item.longname) ) {
303
- var displayName;
304
- if (env.conf.templates.default.useLongnameInNav) {
305
- displayName = item.longname;
306
- } else {
307
- displayName = item.name;
308
- }
309
- itemsNav += '<li>' + linktoFn(item.longname, displayName.replace(/\b(module|event):/g, '')) + '</li>';
310
-
311
- itemsSeen[item.longname] = true;
312
- }
313
- });
314
-
315
- if (itemsNav !== '') {
316
- nav += '<h3>' + itemHeading + '</h3><ul>' + itemsNav + '</ul>';
317
- }
318
- }
319
-
320
- return nav;
321
- }
322
-
323
- function linktoTutorial(longName, name) {
324
- return tutoriallink(name);
325
- }
326
-
327
- function linktoExternal(longName, name) {
328
- return linkto(longName, name.replace(/(^"|"$)/g, ''));
329
- }
330
-
331
- /**
332
- * Create the navigation sidebar.
333
- * @param {object} members The members that will be used to create the sidebar.
334
- * @param {array<object>} members.classes
335
- * @param {array<object>} members.externals
336
- * @param {array<object>} members.globals
337
- * @param {array<object>} members.mixins
338
- * @param {array<object>} members.modules
339
- * @param {array<object>} members.namespaces
340
- * @param {array<object>} members.tutorials
341
- * @param {array<object>} members.events
342
- * @param {array<object>} members.interfaces
343
- * @return {string} The HTML for the navigation sidebar.
344
- */
345
- function buildNav(members) {
346
- var nav = '<h2><a href="index.html">SFU SDK</a></h2>';
347
- var seen = {};
348
- var seenTutorials = {};
349
-
350
- nav += buildMemberNav(members.modules, 'Modules', {}, linkto);
351
- nav += buildMemberNav(members.externals, 'Externals', seen, linktoExternal);
352
- nav += buildMemberNav(members.classes, 'Classes', seen, linkto);
353
- nav += buildMemberNav(members.events, 'Events', seen, linkto);
354
- nav += buildMemberNav(members.namespaces, 'Namespaces', seen, linkto);
355
- nav += buildMemberNav(members.mixins, 'Mixins', seen, linkto);
356
- nav += buildMemberNav(members.tutorials, 'Tutorials', seenTutorials, linktoTutorial);
357
- nav += buildMemberNav(members.interfaces, 'Interfaces', seen, linkto);
358
-
359
- if (members.globals.length) {
360
- var globalNav = '';
361
-
362
- members.globals.forEach(function(g) {
363
- if ( g.kind !== 'typedef' && !hasOwnProp.call(seen, g.longname) ) {
364
- globalNav += '<li>' + linkto(g.longname, g.name) + '</li>';
365
- }
366
- seen[g.longname] = true;
367
- });
368
-
369
- if (!globalNav) {
370
- // turn the heading into a link so you can actually get to the global page
371
- nav += '<h3>' + linkto('global', 'Global') + '</h3>';
372
- }
373
- else {
374
- nav += '<h3>Global</h3><ul>' + globalNav + '</ul>';
375
- }
376
- }
377
-
378
- return nav;
379
- }
380
-
381
- /**
382
- @param {TAFFY} taffyData See <http://taffydb.com/>.
383
- @param {object} opts
384
- @param {Tutorial} tutorials
385
- */
386
- exports.publish = function(taffyData, opts, tutorials) {
387
- data = taffyData;
388
-
389
- var conf = env.conf.templates || {};
390
- conf.default = conf.default || {};
391
-
392
- var templatePath = path.normalize(opts.template);
393
- view = new template.Template( path.join(templatePath, 'tmpl') );
394
-
395
- // claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness
396
- // doesn't try to hand them out later
397
- var indexUrl = helper.getUniqueFilename('index');
398
- // don't call registerLink() on this one! 'index' is also a valid longname
399
-
400
- var globalUrl = helper.getUniqueFilename('global');
401
- helper.registerLink('global', globalUrl);
402
-
403
- // set up templating
404
- view.layout = conf.default.layoutFile ?
405
- path.getResourcePath(path.dirname(conf.default.layoutFile),
406
- path.basename(conf.default.layoutFile) ) :
407
- 'layout.tmpl';
408
-
409
- // set up tutorials for helper
410
- helper.setTutorials(tutorials);
411
-
412
- data = helper.prune(data);
413
- data.sort('longname, version, since');
414
- helper.addEventListeners(data);
415
-
416
- var sourceFiles = {};
417
- var sourceFilePaths = [];
418
- data().each(function(doclet) {
419
- doclet.attribs = '';
420
-
421
- if (doclet.examples) {
422
- doclet.examples = doclet.examples.map(function(example) {
423
- var caption, code;
424
-
425
- if (example.match(/^\s*<caption>([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) {
426
- caption = RegExp.$1;
427
- code = RegExp.$3;
428
- }
429
-
430
- return {
431
- caption: caption || '',
432
- code: code || example
433
- };
434
- });
435
- }
436
- if (doclet.see) {
437
- doclet.see.forEach(function(seeItem, i) {
438
- doclet.see[i] = hashToLink(doclet, seeItem);
439
- });
440
- }
441
-
442
- // build a list of source files
443
- var sourcePath;
444
- if (doclet.meta) {
445
- sourcePath = getPathFromDoclet(doclet);
446
- sourceFiles[sourcePath] = {
447
- resolved: sourcePath,
448
- shortened: null
449
- };
450
- if (sourceFilePaths.indexOf(sourcePath) === -1) {
451
- sourceFilePaths.push(sourcePath);
452
- }
453
- }
454
- });
455
-
456
- // update outdir if necessary, then create outdir
457
- var packageInfo = ( find({kind: 'package'}) || [] ) [0];
458
- if (packageInfo && packageInfo.name) {
459
- outdir = path.join( outdir, packageInfo.name, (packageInfo.version || '') );
460
- }
461
- fs.mkPath(outdir);
462
-
463
- // copy the template's static files to outdir
464
- var fromDir = path.join(templatePath, 'static');
465
- var staticFiles = fs.ls(fromDir, 3);
466
-
467
- staticFiles.forEach(function(fileName) {
468
- var toDir = fs.toDir( fileName.replace(fromDir, outdir) );
469
- fs.mkPath(toDir);
470
- fs.copyFileSync(fileName, toDir);
471
- });
472
-
473
- // copy user-specified static files to outdir
474
- var staticFilePaths;
475
- var staticFileFilter;
476
- var staticFileScanner;
477
- if (conf.default.staticFiles) {
478
- // The canonical property name is `include`. We accept `paths` for backwards compatibility
479
- // with a bug in JSDoc 3.2.x.
480
- staticFilePaths = conf.default.staticFiles.include ||
481
- conf.default.staticFiles.paths ||
482
- [];
483
- staticFileFilter = new (require('jsdoc/src/filter')).Filter(conf.default.staticFiles);
484
- staticFileScanner = new (require('jsdoc/src/scanner')).Scanner();
485
-
486
- staticFilePaths.forEach(function(filePath) {
487
- var extraStaticFiles;
488
-
489
- filePath = path.resolve(env.pwd, filePath);
490
- extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter);
491
-
492
- extraStaticFiles.forEach(function(fileName) {
493
- var sourcePath = fs.toDir(filePath);
494
- var toDir = fs.toDir( fileName.replace(sourcePath, outdir) );
495
- fs.mkPath(toDir);
496
- fs.copyFileSync(fileName, toDir);
497
- });
498
- });
499
- }
500
-
501
- if (sourceFilePaths.length) {
502
- sourceFiles = shortenPaths( sourceFiles, path.commonPrefix(sourceFilePaths) );
503
- }
504
- data().each(function(doclet) {
505
- var url = helper.createLink(doclet);
506
- helper.registerLink(doclet.longname, url);
507
-
508
- // add a shortened version of the full path
509
- var docletPath;
510
- if (doclet.meta) {
511
- docletPath = getPathFromDoclet(doclet);
512
- docletPath = sourceFiles[docletPath].shortened;
513
- if (docletPath) {
514
- doclet.meta.shortpath = docletPath;
515
- }
516
- }
517
- });
518
-
519
- data().each(function(doclet) {
520
- var url = helper.longnameToUrl[doclet.longname];
521
-
522
- if (url.indexOf('#') > -1) {
523
- doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop();
524
- }
525
- else {
526
- doclet.id = doclet.name;
527
- }
528
-
529
- if ( needsSignature(doclet) ) {
530
- addSignatureParams(doclet);
531
- addSignatureReturns(doclet);
532
- addAttribs(doclet);
533
- }
534
- });
535
-
536
- // do this after the urls have all been generated
537
- data().each(function(doclet) {
538
- doclet.ancestors = getAncestorLinks(doclet);
539
-
540
- if (doclet.kind === 'member') {
541
- addSignatureTypes(doclet);
542
- addAttribs(doclet);
543
- }
544
-
545
- if (doclet.kind === 'constant') {
546
- addSignatureTypes(doclet);
547
- addAttribs(doclet);
548
- doclet.kind = 'member';
549
- }
550
- });
551
-
552
- var members = helper.getMembers(data);
553
- members.tutorials = tutorials.children;
554
-
555
- // output pretty-printed source files by default
556
- var outputSourceFiles = conf.default && conf.default.outputSourceFiles !== false ? true :
557
- false;
558
-
559
- // add template helpers
560
- view.find = find;
561
- view.linkto = linkto;
562
- view.resolveAuthorLinks = resolveAuthorLinks;
563
- view.tutoriallink = tutoriallink;
564
- view.htmlsafe = htmlsafe;
565
- view.outputSourceFiles = outputSourceFiles;
566
-
567
- // once for all
568
- view.nav = buildNav(members);
569
- attachModuleSymbols( find({ longname: {left: 'module:'} }), members.modules );
570
-
571
- // generate the pretty-printed source files first so other pages can link to them
572
- if (outputSourceFiles) {
573
- generateSourceFiles(sourceFiles, opts.encoding);
574
- }
575
-
576
- if (members.globals.length) { generate('Global', [{kind: 'globalobj'}], globalUrl); }
577
-
578
- // index page displays information from package.json and lists files
579
- var files = find({kind: 'file'}),
580
- packages = find({kind: 'package'});
581
-
582
- generate('SFU SDK',
583
- packages.concat(
584
- [{kind: 'mainpage', readme: opts.readme, longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page'}]
585
- ).concat(files),
586
- indexUrl);
587
-
588
- // set up the lists that we'll use to generate pages
589
- var classes = taffy(members.classes);
590
- var modules = taffy(members.modules);
591
- var namespaces = taffy(members.namespaces);
592
- var mixins = taffy(members.mixins);
593
- var externals = taffy(members.externals);
594
- var interfaces = taffy(members.interfaces);
595
-
596
- Object.keys(helper.longnameToUrl).forEach(function(longname) {
597
- var myModules = helper.find(modules, {longname: longname});
598
- if (myModules.length) {
599
- generate('Module: ' + myModules[0].name, myModules, helper.longnameToUrl[longname]);
600
- }
601
-
602
- var myClasses = helper.find(classes, {longname: longname});
603
- if (myClasses.length) {
604
- generate('Class: ' + myClasses[0].name, myClasses, helper.longnameToUrl[longname]);
605
- }
606
-
607
- var myNamespaces = helper.find(namespaces, {longname: longname});
608
- if (myNamespaces.length) {
609
- generate('Namespace: ' + myNamespaces[0].name, myNamespaces, helper.longnameToUrl[longname]);
610
- }
611
-
612
- var myMixins = helper.find(mixins, {longname: longname});
613
- if (myMixins.length) {
614
- generate('Mixin: ' + myMixins[0].name, myMixins, helper.longnameToUrl[longname]);
615
- }
616
-
617
- var myExternals = helper.find(externals, {longname: longname});
618
- if (myExternals.length) {
619
- generate('External: ' + myExternals[0].name, myExternals, helper.longnameToUrl[longname]);
620
- }
621
-
622
- var myInterfaces = helper.find(interfaces, {longname: longname});
623
- if (myInterfaces.length) {
624
- generate('Interface: ' + myInterfaces[0].name, myInterfaces, helper.longnameToUrl[longname]);
625
- }
626
- });
627
-
628
- // TODO: move the tutorial functions to templateHelper.js
629
- function generateTutorial(title, tutorial, filename) {
630
- var tutorialData = {
631
- title: title,
632
- header: tutorial.title,
633
- content: tutorial.parse(),
634
- children: tutorial.children
635
- };
636
-
637
- var tutorialPath = path.join(outdir, filename),
638
- html = view.render('tutorial.tmpl', tutorialData);
639
-
640
- // yes, you can use {@link} in tutorials too!
641
- html = helper.resolveLinks(html); // turn {@link foo} into <a href="foodoc.html">foo</a>
642
-
643
- fs.writeFileSync(tutorialPath, html, 'utf8');
644
- }
645
-
646
- // tutorials can have only one parent so there is no risk for loops
647
- function saveChildren(node) {
648
- node.children.forEach(function(child) {
649
- generateTutorial('Tutorial: ' + child.title, child, helper.tutorialToUrl(child.name));
650
- saveChildren(child);
651
- });
652
- }
653
- saveChildren(tutorials);
654
- };