Artifact
6064f0dbb1cf2b4693aa9c578348f0edebbc42b5f56790ea47cdf9918c0fb199:
0000: 0a 2f 2f 20 61 6c 6c 6f 77 20 74 6f 20 72 65 71 .// allow to req
0010: 75 69 72 65 28 27 72 69 6f 74 27 29 0a 63 6f 6e uire('riot').con
0020: 73 74 0a 20 20 70 61 74 68 20 3d 20 72 65 71 75 st. path = requ
0030: 69 72 65 28 27 70 61 74 68 27 29 2c 0a 20 20 66 ire('path'),. f
0040: 73 20 3d 20 72 65 71 75 69 72 65 28 27 66 73 27 s = require('fs'
0050: 29 2c 0a 20 20 68 61 73 52 69 6f 74 50 61 74 68 ),. hasRiotPath
0060: 20 3d 20 21 21 70 72 6f 63 65 73 73 2e 65 6e 76 = !!process.env
0070: 2e 52 49 4f 54 2c 0a 20 20 72 69 6f 74 50 61 74 .RIOT,. riotPat
0080: 68 20 3d 20 70 61 74 68 2e 6e 6f 72 6d 61 6c 69 h = path.normali
0090: 7a 65 28 70 72 6f 63 65 73 73 2e 65 6e 76 2e 52 ze(process.env.R
00a0: 49 4f 54 20 7c 7c 20 70 61 74 68 2e 6a 6f 69 6e IOT || path.join
00b0: 28 27 2e 2e 27 2c 20 27 2e 2e 27 2c 20 27 72 69 ('..', '..', 'ri
00c0: 6f 74 27 29 29 2c 0a 20 20 72 69 6f 74 20 3d 20 ot')),. riot =
00d0: 72 65 71 75 69 72 65 28 72 69 6f 74 50 61 74 68 require(riotPath
00e0: 29 2c 0a 20 20 2f 2f 20 73 69 6d 70 6c 65 2d 64 ),. // simple-d
00f0: 6f 6d 20 68 65 6c 70 65 72 0a 20 20 73 64 6f 6d om helper. sdom
0100: 20 3d 20 72 65 71 75 69 72 65 28 27 2e 2f 73 64 = require('./sd
0110: 6f 6d 27 29 2c 0a 20 20 4d 6f 64 75 6c 65 20 3d om'),. Module =
0120: 20 72 65 71 75 69 72 65 28 27 6d 6f 64 75 6c 65 require('module
0130: 27 29 2c 0a 20 20 63 6f 6d 70 69 6c 65 72 20 3d '),. compiler =
0140: 20 72 65 71 75 69 72 65 28 27 72 69 6f 74 2d 63 require('riot-c
0150: 6f 6d 70 69 6c 65 72 27 29 0a 0a 2f 2f 20 66 69 ompiler')..// fi
0160: 78 20 23 32 32 32 35 0a 2f 2f 20 72 6f 6c 6c 75 x #2225.// rollu
0170: 70 20 63 6f 6e 73 69 64 65 72 73 20 74 68 65 20 p considers the
0180: 72 69 6f 74 2e 64 65 66 61 75 6c 74 20 6b 65 79 riot.default key
0190: 20 61 73 20 64 65 66 61 75 6c 74 20 65 78 70 6f as default expo
01a0: 72 74 20 76 61 6c 75 65 20 69 6e 73 74 65 61 64 rt value instead
01b0: 20 6f 66 20 77 68 61 74 20 77 65 20 65 78 70 6f of what we expo
01c0: 72 74 20 68 65 72 65 0a 64 65 6c 65 74 65 20 72 rt here.delete r
01d0: 69 6f 74 2e 64 65 66 61 75 6c 74 0a 0a 2f 2f 20 iot.default..//
01e0: 74 69 6d 65 20 72 69 6f 74 20 73 68 6f 75 6c 64 time riot should
01f0: 20 77 61 69 74 20 62 65 66 6f 72 65 20 74 68 72 wait before thr
0200: 6f 77 69 6e 67 20 64 75 72 69 6e 67 20 61 6e 20 owing during an
0210: 61 73 79 6e 63 20 72 65 6e 64 65 72 69 6e 67 0a async rendering.
0220: 72 69 6f 74 2e 73 65 74 74 69 6e 67 73 2e 61 73 riot.settings.as
0230: 79 6e 63 52 65 6e 64 65 72 54 69 6d 65 6f 75 74 yncRenderTimeout
0240: 20 3d 20 31 30 30 30 0a 0a 2f 2a 2a 0a 20 2a 20 = 1000../**. *
0250: 46 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 77 69 Function that wi
0260: 6c 6c 20 62 65 20 75 73 65 64 20 62 79 20 72 69 ll be used by ri
0270: 6f 74 2e 72 65 71 75 69 72 65 20 61 6e 64 20 62 ot.require and b
0280: 79 20 72 65 71 75 69 72 65 28 27 73 6f 6d 65 2e y require('some.
0290: 74 61 67 27 29 0a 20 2a 20 40 70 61 72 61 6d 20 tag'). * @param
02a0: 20 20 7b 20 53 74 72 69 6e 67 20 7d 20 66 69 6c { String } fil
02b0: 65 6e 61 6d 65 20 2d 20 70 61 74 68 20 74 6f 20 ename - path to
02c0: 74 68 65 20 66 69 6c 65 20 74 6f 20 6c 6f 61 64 the file to load
02d0: 20 61 6e 64 20 63 6f 6d 70 69 6c 65 0a 20 2a 20 and compile. *
02e0: 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 63 @param { Objec
02f0: 74 20 7d 20 6f 70 74 73 20 20 20 20 20 2d 20 63 t } opts - c
0300: 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6f 6e 73 0a ompiler options.
0310: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 * @param { Ob
0320: 6a 65 63 74 20 7d 20 63 6f 6e 74 65 78 74 20 20 ject } context
0330: 2d 20 63 6f 6e 74 65 78 74 20 77 68 65 72 65 20 - context where
0340: 74 68 65 20 74 61 67 20 77 69 6c 6c 20 62 65 20 the tag will be
0350: 6d 6f 75 6e 74 65 64 20 28 4d 6f 64 75 6c 65 29 mounted (Module)
0360: 0a 20 2a 2f 0a 66 75 6e 63 74 69 6f 6e 20 6c 6f . */.function lo
0370: 61 64 41 6e 64 43 6f 6d 70 69 6c 65 28 66 69 6c adAndCompile(fil
0380: 65 6e 61 6d 65 2c 20 6f 70 74 73 2c 20 63 6f 6e ename, opts, con
0390: 74 65 78 74 29 20 7b 0a 20 20 63 6f 6e 73 74 20 text) {. const
03a0: 73 72 63 20 3d 20 63 6f 6d 70 69 6c 65 72 2e 63 src = compiler.c
03b0: 6f 6d 70 69 6c 65 28 66 73 2e 72 65 61 64 46 69 ompile(fs.readFi
03c0: 6c 65 53 79 6e 63 28 66 69 6c 65 6e 61 6d 65 2c leSync(filename,
03d0: 20 27 75 74 66 38 27 29 2c 20 6f 70 74 73 29 0a 'utf8'), opts).
03e0: 20 20 63 6f 6e 73 74 20 70 72 65 54 61 67 20 3d const preTag =
03f0: 20 73 72 63 2e 73 75 62 73 74 72 69 6e 67 28 30 src.substring(0
0400: 2c 20 73 72 63 2e 69 6e 64 65 78 4f 66 28 27 72 , src.indexOf('r
0410: 69 6f 74 2e 74 61 67 27 29 29 0a 20 20 63 6f 6e iot.tag')). con
0420: 73 74 20 74 61 67 44 65 66 69 6e 69 74 69 6f 6e st tagDefinition
0430: 20 3d 20 73 72 63 2e 73 75 62 73 74 72 69 6e 67 = src.substring
0440: 28 73 72 63 2e 69 6e 64 65 78 4f 66 28 27 72 69 (src.indexOf('ri
0450: 6f 74 2e 74 61 67 27 29 29 0a 0a 20 20 2f 2f 20 ot.tag')).. //
0460: 68 65 72 65 20 77 65 20 77 69 6c 6c 20 75 73 65 here we will use
0470: 20 74 65 6d 70 6c 61 74 65 20 73 74 72 69 6e 67 template string
0480: 73 20 69 6e 20 72 69 6f 74 40 33 2e 30 2e 30 0a s in riot@3.0.0.
0490: 20 20 63 6f 6e 74 65 78 74 2e 5f 63 6f 6d 70 69 context._compi
04a0: 6c 65 28 60 0a 20 20 20 20 76 61 72 20 72 69 6f le(`. var rio
04b0: 74 20 3d 20 72 65 71 75 69 72 65 28 27 24 7b 20 t = require('${
04c0: 68 61 73 52 69 6f 74 50 61 74 68 20 3f 20 72 69 hasRiotPath ? ri
04d0: 6f 74 50 61 74 68 20 3a 20 27 72 69 6f 74 27 20 otPath : 'riot'
04e0: 7d 27 29 0a 20 20 20 20 24 7b 20 70 72 65 54 61 }'). ${ preTa
04f0: 67 20 7d 0a 20 20 20 20 6d 6f 64 75 6c 65 2e 65 g }. module.e
0500: 78 70 6f 72 74 73 20 3d 20 24 7b 20 74 61 67 44 xports = ${ tagD
0510: 65 66 69 6e 69 74 69 6f 6e 20 7d 0a 20 20 60 2c efinition }. `,
0520: 20 66 69 6c 65 6e 61 6d 65 29 0a 7d 0a 0a 2f 2a filename).}../*
0530: 2a 0a 20 2a 20 45 6e 61 62 6c 65 20 74 68 65 20 *. * Enable the
0540: 6c 6f 61 64 69 6e 67 20 6f 66 20 72 69 6f 74 20 loading of riot
0550: 74 61 67 73 20 77 69 74 68 20 6f 70 74 69 6f 6e tags with option
0560: 73 20 72 69 6f 74 2e 72 65 71 75 69 72 65 28 27 s riot.require('
0570: 73 6f 6d 65 2e 74 61 67 27 2c 20 7b 20 74 65 6d some.tag', { tem
0580: 70 6c 61 74 65 3a 20 27 70 75 67 27 20 7d 29 0a plate: 'pug' }).
0590: 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 * @param { St
05a0: 72 69 6e 67 20 7d 20 66 69 6c 65 6e 61 6d 65 20 ring } filename
05b0: 2d 20 70 61 74 68 20 74 6f 20 74 68 65 20 66 69 - path to the fi
05c0: 6c 65 20 74 6f 20 6c 6f 61 64 20 61 6e 64 20 63 le to load and c
05d0: 6f 6d 70 69 6c 65 0a 20 2a 20 40 70 61 72 61 6d ompile. * @param
05e0: 20 20 20 7b 20 4f 62 6a 65 63 74 20 7d 20 6f 70 { Object } op
05f0: 74 73 20 20 20 20 20 2d 20 63 6f 6d 70 69 6c 65 ts - compile
0600: 72 20 6f 70 74 69 6f 6e 73 0a 20 2a 20 40 72 65 r options. * @re
0610: 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d turns { String }
0620: 20 74 61 67 20 6e 61 6d 65 0a 20 2a 2f 0a 66 75 tag name. */.fu
0630: 6e 63 74 69 6f 6e 20 72 69 6f 74 52 65 71 75 69 nction riotRequi
0640: 72 65 28 66 69 6c 65 6e 61 6d 65 2c 20 6f 70 74 re(filename, opt
0650: 73 29 20 7b 0a 20 20 76 61 72 20 6d 6f 64 75 6c s) {. var modul
0660: 65 20 3d 20 6e 65 77 20 4d 6f 64 75 6c 65 28 29 e = new Module()
0670: 0a 20 20 6d 6f 64 75 6c 65 2e 69 64 20 3d 20 6d . module.id = m
0680: 6f 64 75 6c 65 2e 66 69 6c 65 6e 61 6d 65 20 3d odule.filename =
0690: 20 66 69 6c 65 6e 61 6d 65 0a 20 20 6c 6f 61 64 filename. load
06a0: 41 6e 64 43 6f 6d 70 69 6c 65 28 66 69 6c 65 6e AndCompile(filen
06b0: 61 6d 65 2c 20 6f 70 74 73 2c 20 6d 6f 64 75 6c ame, opts, modul
06c0: 65 29 0a 20 20 72 65 74 75 72 6e 20 6d 6f 64 75 e). return modu
06d0: 6c 65 2e 65 78 70 6f 72 74 73 0a 7d 0a 0a 2f 2f le.exports.}..//
06e0: 20 61 6c 6c 6f 77 20 74 6f 20 72 65 71 75 69 72 allow to requir
06f0: 65 28 27 73 6f 6d 65 2e 74 61 67 27 29 0a 69 66 e('some.tag').if
0700: 20 28 72 65 71 75 69 72 65 2e 65 78 74 65 6e 73 (require.extens
0710: 69 6f 6e 73 29 20 7b 0a 20 20 72 65 71 75 69 72 ions) {. requir
0720: 65 2e 65 78 74 65 6e 73 69 6f 6e 73 5b 27 2e 74 e.extensions['.t
0730: 61 67 27 5d 20 3d 20 66 75 6e 63 74 69 6f 6e 28 ag'] = function(
0740: 6d 6f 64 75 6c 65 2c 20 66 69 6c 65 6e 61 6d 65 module, filename
0750: 29 20 7b 0a 20 20 20 20 6c 6f 61 64 41 6e 64 43 ) {. loadAndC
0760: 6f 6d 70 69 6c 65 28 66 69 6c 65 6e 61 6d 65 2c ompile(filename,
0770: 20 7b 7d 2c 20 6d 6f 64 75 6c 65 29 0a 20 20 7d {}, module). }
0780: 0a 7d 0a 0a 2f 2a 2a 0a 20 2a 20 47 65 74 20 74 .}../**. * Get t
0790: 68 65 20 68 74 6d 6c 20 61 73 20 73 74 72 69 6e he html as strin
07a0: 67 20 66 6f 72 6d 20 61 6e 79 20 72 69 6f 74 20 g form any riot
07b0: 74 61 67 20 69 6e 73 74 61 6e 63 65 0a 20 2a 20 tag instance. *
07c0: 40 70 61 72 61 6d 20 20 20 7b 20 54 61 67 20 7d @param { Tag }
07d0: 20 74 61 67 20 2d 20 72 69 6f 74 20 74 61 67 20 tag - riot tag
07e0: 69 6e 73 74 61 6e 63 65 0a 20 2a 20 40 72 65 74 instance. * @ret
07f0: 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d 20 urns { String }
0800: 20 74 61 67 20 74 65 6d 70 6c 61 74 65 0a 20 2a tag template. *
0810: 2f 0a 66 75 6e 63 74 69 6f 6e 20 67 65 74 54 61 /.function getTa
0820: 67 48 74 6d 6c 28 74 61 67 29 20 7b 0a 20 20 72 gHtml(tag) {. r
0830: 65 74 75 72 6e 20 73 64 6f 6d 2e 73 65 72 69 61 eturn sdom.seria
0840: 6c 69 7a 65 28 74 61 67 2e 72 6f 6f 74 29 0a 7d lize(tag.root).}
0850: 0a 0a 2f 2a 2a 0a 20 2a 20 52 65 6e 64 65 72 20 ../**. * Render
0860: 72 69 6f 74 20 74 61 67 73 20 72 65 74 75 72 6e riot tags return
0870: 69 6e 67 20 61 20 73 74 72 69 6e 67 73 0a 20 2a ing a strings. *
0880: 20 40 70 61 72 61 6d 20 20 20 7b 20 53 74 72 69 @param { Stri
0890: 6e 67 20 7d 20 74 61 67 4e 61 6d 65 20 2d 20 74 ng } tagName - t
08a0: 61 67 20 69 64 65 6e 74 69 66 69 65 72 0a 20 2a ag identifier. *
08b0: 20 40 70 61 72 61 6d 20 20 20 7b 20 4f 62 6a 65 @param { Obje
08c0: 63 74 20 7d 20 6f 70 74 73 20 20 20 20 2d 20 6f ct } opts - o
08d0: 70 74 69 6f 6e 73 20 74 6f 20 70 61 73 73 20 74 ptions to pass t
08e0: 6f 20 74 68 65 20 74 61 67 0a 20 2a 20 40 72 65 o the tag. * @re
08f0: 74 75 72 6e 73 20 7b 20 53 74 72 69 6e 67 20 7d turns { String }
0900: 20 74 61 67 20 72 65 73 75 6c 74 69 6e 67 20 74 tag resulting t
0910: 65 6d 70 6c 61 74 65 0a 20 2a 2f 0a 66 75 6e 63 emplate. */.func
0920: 74 69 6f 6e 20 72 65 6e 64 65 72 28 74 61 67 4e tion render(tagN
0930: 61 6d 65 2c 20 6f 70 74 73 29 20 7b 0a 20 20 76 ame, opts) {. v
0940: 61 72 20 74 61 67 20 3d 20 72 65 6e 64 65 72 2e ar tag = render.
0950: 74 61 67 28 74 61 67 4e 61 6d 65 2c 20 6f 70 74 tag(tagName, opt
0960: 73 29 2c 0a 20 20 20 20 68 74 6d 6c 20 3d 20 67 s),. html = g
0970: 65 74 54 61 67 48 74 6d 6c 28 74 61 67 29 0a 20 etTagHtml(tag).
0980: 20 2f 2f 20 75 6e 6d 6f 75 6e 74 20 74 68 65 20 // unmount the
0990: 74 61 67 20 61 76 6f 69 64 69 6e 67 20 6d 65 6d tag avoiding mem
09a0: 6f 72 79 20 6c 65 61 6b 73 0a 20 20 74 61 67 2e ory leaks. tag.
09b0: 75 6e 6d 6f 75 6e 74 28 29 0a 20 20 72 65 74 75 unmount(). retu
09c0: 72 6e 20 68 74 6d 6c 0a 7d 0a 0a 2f 2a 2a 0a 20 rn html.}../**.
09d0: 2a 20 52 65 6e 64 65 72 20 72 69 6f 74 20 74 61 * Render riot ta
09e0: 67 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c gs asynchronousl
09f0: 79 0a 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 y. * @param {
0a00: 53 74 72 69 6e 67 20 7d 20 74 61 67 4e 61 6d 65 String } tagName
0a10: 20 2d 20 74 61 67 20 69 64 65 6e 74 69 66 69 65 - tag identifie
0a20: 72 0a 20 2a 20 40 70 61 72 61 6d 20 20 20 7b 20 r. * @param {
0a30: 4f 62 6a 65 63 74 20 7d 20 6f 70 74 73 20 20 20 Object } opts
0a40: 20 2d 20 6f 70 74 69 6f 6e 73 20 74 6f 20 70 61 - options to pa
0a50: 73 73 20 74 6f 20 74 68 65 20 74 61 67 0a 20 2a ss to the tag. *
0a60: 20 40 72 65 74 75 72 6e 73 20 7b 20 50 72 6f 6d @returns { Prom
0a70: 69 73 65 20 7d 20 61 20 70 72 6f 6d 69 73 65 20 ise } a promise
0a80: 72 65 73 6f 6c 76 65 64 20 77 69 74 68 20 74 68 resolved with th
0a90: 65 20 74 61 67 20 74 65 6d 70 6c 61 74 65 20 73 e tag template s
0aa0: 74 72 69 6e 67 0a 20 2a 2f 0a 66 75 6e 63 74 69 tring. */.functi
0ab0: 6f 6e 20 72 65 6e 64 65 72 41 73 79 6e 63 28 74 on renderAsync(t
0ac0: 61 67 4e 61 6d 65 2c 20 6f 70 74 73 29 20 7b 0a agName, opts) {.
0ad0: 20 20 72 65 74 75 72 6e 20 50 72 6f 6d 69 73 65 return Promise
0ae0: 2e 72 61 63 65 28 5b 0a 20 20 20 20 6e 65 77 20 .race([. new
0af0: 50 72 6f 6d 69 73 65 28 28 72 65 73 6f 6c 76 65 Promise((resolve
0b00: 2c 20 72 65 6a 65 63 74 29 20 3d 3e 20 7b 0a 20 , reject) => {.
0b10: 20 20 20 20 20 73 65 74 54 69 6d 65 6f 75 74 28 setTimeout(
0b20: 66 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 function() {.
0b30: 20 20 20 20 20 72 65 6a 65 63 74 28 6e 65 77 20 reject(new
0b40: 45 72 72 6f 72 28 60 54 69 6d 65 6f 75 74 20 65 Error(`Timeout e
0b50: 72 72 6f 72 3a 3a 20 74 68 65 20 74 61 67 20 22 rror:: the tag "
0b60: 24 7b 20 74 61 67 4e 61 6d 65 20 7d 22 20 64 69 ${ tagName }" di
0b70: 64 6e 27 74 20 74 72 69 67 67 65 72 20 74 68 65 dn't trigger the
0b80: 20 22 72 65 61 64 79 22 20 65 76 65 6e 74 20 64 "ready" event d
0b90: 75 72 69 6e 67 20 74 68 65 20 72 65 6e 64 65 72 uring the render
0ba0: 69 6e 67 20 70 72 6f 63 65 73 73 60 29 29 0a 20 ing process`)).
0bb0: 20 20 20 20 20 7d 2c 20 72 69 6f 74 2e 73 65 74 }, riot.set
0bc0: 74 69 6e 67 73 2e 61 73 79 6e 63 52 65 6e 64 65 tings.asyncRende
0bd0: 72 54 69 6d 65 6f 75 74 29 0a 20 20 20 20 7d 29 rTimeout). })
0be0: 2c 0a 20 20 20 20 6e 65 77 20 50 72 6f 6d 69 73 ,. new Promis
0bf0: 65 28 72 65 73 6f 6c 76 65 20 3d 3e 20 7b 0a 20 e(resolve => {.
0c00: 20 20 20 20 20 76 61 72 20 74 61 67 20 3d 20 72 var tag = r
0c10: 65 6e 64 65 72 2e 74 61 67 28 74 61 67 4e 61 6d ender.tag(tagNam
0c20: 65 2c 20 6f 70 74 73 29 0a 20 20 20 20 20 20 74 e, opts). t
0c30: 61 67 2e 6f 6e 28 27 72 65 61 64 79 27 2c 20 66 ag.on('ready', f
0c40: 75 6e 63 74 69 6f 6e 28 29 20 7b 0a 20 20 20 20 unction() {.
0c50: 20 20 20 20 76 61 72 20 68 74 6d 6c 20 3d 20 67 var html = g
0c60: 65 74 54 61 67 48 74 6d 6c 28 74 61 67 29 0a 20 etTagHtml(tag).
0c70: 20 20 20 20 20 20 20 74 61 67 2e 75 6e 6d 6f 75 tag.unmou
0c80: 6e 74 28 29 0a 20 20 20 20 20 20 20 20 72 65 73 nt(). res
0c90: 6f 6c 76 65 28 68 74 6d 6c 29 0a 20 20 20 20 20 olve(html).
0ca0: 20 7d 29 0a 20 20 20 20 7d 29 0a 20 20 5d 29 0a }). }). ]).
0cb0: 7d 0a 0a 2f 2f 20 65 78 74 65 6e 64 20 74 68 65 }..// extend the
0cc0: 20 72 65 6e 64 65 72 20 66 75 6e 63 74 69 6f 6e render function
0cd0: 20 77 69 74 68 20 73 6f 6d 65 20 73 74 61 74 69 with some stati
0ce0: 63 20 6d 65 74 68 6f 64 73 0a 72 65 6e 64 65 72 c methods.render
0cf0: 2e 64 6f 6d 20 3d 20 66 75 6e 63 74 69 6f 6e 28 .dom = function(
0d00: 74 61 67 4e 61 6d 65 2c 20 6f 70 74 73 29 20 7b tagName, opts) {
0d10: 0a 20 20 72 65 74 75 72 6e 20 72 69 6f 74 2e 72 . return riot.r
0d20: 65 6e 64 65 72 2e 74 61 67 28 74 61 67 4e 61 6d ender.tag(tagNam
0d30: 65 2c 20 6f 70 74 73 29 2e 72 6f 6f 74 0a 7d 0a e, opts).root.}.
0d40: 72 65 6e 64 65 72 2e 74 61 67 20 3d 20 66 75 6e render.tag = fun
0d50: 63 74 69 6f 6e 28 74 61 67 4e 61 6d 65 2c 20 6f ction(tagName, o
0d60: 70 74 73 29 20 7b 0a 20 20 76 61 72 20 72 6f 6f pts) {. var roo
0d70: 74 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 63 72 65 t = document.cre
0d80: 61 74 65 45 6c 65 6d 65 6e 74 28 74 61 67 4e 61 ateElement(tagNa
0d90: 6d 65 29 2c 0a 20 20 20 20 74 61 67 20 3d 20 72 me),. tag = r
0da0: 69 6f 74 2e 6d 6f 75 6e 74 28 72 6f 6f 74 2c 20 iot.mount(root,
0db0: 6f 70 74 73 29 5b 30 5d 0a 20 20 72 65 74 75 72 opts)[0]. retur
0dc0: 6e 20 74 61 67 0a 7d 0a 0a 2f 2f 20 65 78 74 65 n tag.}..// exte
0dd0: 6e 64 20 74 68 65 20 72 69 6f 74 20 61 70 69 20 nd the riot api
0de0: 61 64 64 69 6e 67 20 73 6f 6d 65 20 75 73 65 66 adding some usef
0df0: 75 6c 20 73 65 72 76 65 72 73 69 64 65 20 6d 65 ul serverside me
0e00: 74 68 6f 64 73 0a 6d 6f 64 75 6c 65 2e 65 78 70 thods.module.exp
0e10: 6f 72 74 73 20 3d 20 65 78 70 6f 72 74 73 2e 64 orts = exports.d
0e20: 65 66 61 75 6c 74 20 3d 20 4f 62 6a 65 63 74 2e efault = Object.
0e30: 61 73 73 69 67 6e 28 72 69 6f 74 2c 20 7b 0a 20 assign(riot, {.
0e40: 20 2f 2f 20 61 6c 6c 6f 77 20 74 6f 20 72 65 71 // allow to req
0e50: 75 69 72 65 28 27 72 69 6f 74 27 29 2e 63 6f 6d uire('riot').com
0e60: 70 69 6c 65 0a 20 20 63 6f 6d 70 69 6c 65 3a 20 pile. compile:
0e70: 63 6f 6d 70 69 6c 65 72 2e 63 6f 6d 70 69 6c 65 compiler.compile
0e80: 2c 0a 20 20 70 61 72 73 65 72 73 3a 20 63 6f 6d ,. parsers: com
0e90: 70 69 6c 65 72 2e 70 61 72 73 65 72 73 2c 0a 20 piler.parsers,.
0ea0: 20 72 65 71 75 69 72 65 3a 20 72 69 6f 74 52 65 require: riotRe
0eb0: 71 75 69 72 65 2c 0a 20 20 72 65 6e 64 65 72 2c quire,. render,
0ec0: 0a 20 20 72 65 6e 64 65 72 41 73 79 6e 63 0a 7d . renderAsync.}
0ed0: 29 0a ).