11var Runtime ;
2+ ( function ( Runtime ) {
3+ var NotCrypto ;
4+ ( function ( NotCrypto ) {
5+ var _rngState = [
6+ Math . floor ( Date . now ( ) / 1024 ) % 1024 ,
7+ Date . now ( ) % 1024
8+ ] ;
9+ var Rc4 = ( function ( ) {
10+ function Rc4 ( key ) {
11+ this . _s = [ ] ;
12+ for ( var i = 0 ; i < 256 ; i ++ ) {
13+ this . _s [ i ] = i ;
14+ }
15+ var j = 0 ;
16+ for ( var i = 0 ; i < 256 ; i ++ ) {
17+ j = j + this . _s [ i ] + key [ i % key . length ] % 256 ;
18+ var m = this . _s [ i ] ;
19+ this . _s [ i ] = this . _s [ j ] ;
20+ this . _s [ j ] = m ;
21+ }
22+ }
23+ return Rc4 ;
24+ } ( ) ) ;
25+ function random ( bits ) {
26+ if ( bits === void 0 ) { bits = 16 ; }
27+ if ( bits > 32 ) {
28+ throw new Error ( 'NotCrypto.random expects 32 bits or less' ) ;
29+ }
30+ if ( Math && Math . random ) {
31+ var value = 0 ;
32+ for ( var i = 0 ; i < bits ; i ++ ) {
33+ value = ( value << 1 ) + ( Math . random ( ) < 0.5 ? 0 : 1 ) ;
34+ }
35+ return value ;
36+ }
37+ else {
38+ return Runtime . NotCrypto . fallbackRandom ( Date . now ( ) % 1024 , bits ) ;
39+ }
40+ }
41+ NotCrypto . random = random ;
42+ function xorshift128p ( ) {
43+ var s0 = _rngState [ 1 ] , s1 = _rngState [ 0 ] ;
44+ _rngState [ 0 ] = s0 ;
45+ s1 ^= s1 << 23 ;
46+ s1 ^= s1 >> 17 ;
47+ s1 ^= s0 ;
48+ s1 ^= s0 >> 26 ;
49+ _rngState [ 1 ] = s1 ;
50+ }
51+ function fallbackRandom ( seed , bits ) {
52+ if ( bits === void 0 ) { bits = 16 ; }
53+ if ( bits > 32 ) {
54+ throw new Error ( 'NotCrypto.fallbackRandom expects 32 bits or less' ) ;
55+ }
56+ for ( var i = 0 ; i < seed ; i ++ ) {
57+ xorshift128p ( ) ;
58+ }
59+ var mask = 0 ;
60+ for ( var i = 0 ; i < bits ; i ++ ) {
61+ mask = ( mask << 1 ) + 1 ;
62+ }
63+ return ( _rngState [ 0 ] + _rngState [ 1 ] ) & mask ;
64+ }
65+ NotCrypto . fallbackRandom = fallbackRandom ;
66+ function toHex ( value , length ) {
67+ if ( length === void 0 ) { length = 0 ; }
68+ if ( length <= 0 ) {
69+ return value . toString ( 16 ) ;
70+ }
71+ var base = value . toString ( 16 ) ;
72+ while ( base . length < length ) {
73+ base = '0' + base ;
74+ }
75+ return base ;
76+ }
77+ NotCrypto . toHex = toHex ;
78+ } ) ( NotCrypto = Runtime . NotCrypto || ( Runtime . NotCrypto = { } ) ) ;
79+ } ) ( Runtime || ( Runtime = { } ) ) ;
80+ var Runtime ;
281( function ( Runtime ) {
382 var RuntimeTimer = ( function ( ) {
483 function RuntimeTimer ( type , dur , key , callback ) {
@@ -414,6 +493,9 @@ var Runtime;
414493 var MetaObject = ( function ( ) {
415494 function MetaObject ( name ) {
416495 this . _listeners = { } ;
496+ if ( name . slice ( 0 , 2 ) !== '__' ) {
497+ throw new Error ( 'MetaObject names must start with two underscores.' ) ;
498+ }
417499 this . _name = name ;
418500 }
419501 MetaObject . prototype . addEventListener = function ( event , listener , useCapture , priority ) {
@@ -491,55 +573,66 @@ var Runtime;
491573 Runtime . getObject = getObject ;
492574 function registerObject ( object ) {
493575 if ( ! object . getId ) {
494- __trace ( "Attempted to register unnamed object" , " warn" ) ;
576+ __trace ( 'Cannot register object without getId method.' , ' warn' ) ;
495577 return ;
496578 }
497579 if ( ! Runtime . hasObject ( object . getId ( ) ) ) {
498580 _registeredObjects [ object . getId ( ) ] = object ;
499- __pchannel ( " Runtime:RegisterObject" , {
500- "id" : object . getId ( ) ,
501- " data" : object . serialize ( )
581+ __pchannel ( ' Runtime:RegisterObject' , {
582+ 'id' : object . getId ( ) ,
583+ ' data' : object . serialize ( )
502584 } ) ;
503585 __schannel ( "object::(" + object . getId ( ) + ")" , function ( payload ) {
504- if ( payload . hasOwnProperty ( " type" ) &&
505- payload . type === " event" ) {
586+ if ( payload . hasOwnProperty ( ' type' ) &&
587+ payload . type === ' event' ) {
506588 _dispatchEvent ( object . getId ( ) , payload . event , payload . data ) ;
507589 }
508590 } ) ;
509591 objCount ++ ;
510592 return ;
511593 }
512594 else {
513- __trace ( 'Attempted to re-register object or id collision' , 'warn' ) ;
595+ __trace ( 'Attempted to re-register object or id collision @ ' +
596+ object . getId ( ) , 'warn' ) ;
514597 return ;
515598 }
516599 }
517600 Runtime . registerObject = registerObject ;
518- function deregisterObject ( objectId ) {
601+ function deregisterObject ( object ) {
602+ var objectId = object . getId ( ) ;
603+ deregisterObjectById ( objectId ) ;
604+ }
605+ Runtime . deregisterObject = deregisterObject ;
606+ function deregisterObjectById ( objectId ) {
519607 if ( Runtime . hasObject ( objectId ) ) {
520- if ( objectId . substr ( 0 , 2 ) === "__" ) {
521- __trace ( " Runtime.deregisterObject cannot de-register a MetaObject" , " warn" ) ;
608+ if ( objectId . substr ( 0 , 2 ) === '__' ) {
609+ __trace ( ' Runtime.deregisterObject cannot de-register a MetaObject' , ' warn' ) ;
522610 return ;
523611 }
524- __pchannel ( " Runtime:DeregisterObject" , {
525- "id" : objectId
612+ __pchannel ( ' Runtime:DeregisterObject' , {
613+ 'id' : objectId
526614 } ) ;
527615 if ( typeof _registeredObjects [ objectId ] . unload === "function" ) {
528616 _registeredObjects [ objectId ] . unload ( ) ;
529617 }
530618 _registeredObjects [ objectId ] = null ;
531619 delete _registeredObjects [ objectId ] ;
532- objCount -- ;
533620 }
534621 }
535- Runtime . deregisterObject = deregisterObject ;
622+ function _getId ( type , container ) {
623+ if ( type === void 0 ) { type = 'obj' ; }
624+ if ( container === void 0 ) { container = 'rt' ; }
625+ var randomSeed = Math . random ( ) ;
626+ var randomSegment = '' ;
627+ return ;
628+ }
536629 function generateId ( type ) {
537630 if ( type === void 0 ) { type = "obj" ; }
538- var id = type + ":" + ( new Date ( ) ) . getTime ( ) + "|" +
539- Math . round ( Math . random ( ) * 4096 ) + ":" + objCount ;
631+ var id = [ type , ':' , Date . now ( ) , '|' ,
632+ Runtime . NotCrypto . random ( 16 ) , ':' , objCount ] . join ( ) ;
540633 while ( Runtime . hasObject ( id ) ) {
541- id = type + ":" + ( new Date ( ) ) . getTime ( ) + "|" +
542- Math . round ( Math . random ( ) * 4096 ) + ":" + objCount ;
634+ id = type + ":" + Date . now ( ) + "|" +
635+ Runtime . NotCrypto . random ( 16 ) + ":" + objCount ;
543636 }
544637 return id ;
545638 }
@@ -548,7 +641,7 @@ var Runtime;
548641 function reset ( ) {
549642 for ( var i in _registeredObjects ) {
550643 if ( i . substr ( 0 , 2 ) !== "__" ) {
551- Runtime . deregisterObject ( i ) ;
644+ deregisterObjectById ( i ) ;
552645 }
553646 }
554647 }
0 commit comments