diff --git a/base/ape/acto/core.hook b/base/ape/acto/core.hook index cab01db91..d681621e3 100644 --- a/base/ape/acto/core.hook +++ b/base/ape/acto/core.hook @@ -57,7 +57,7 @@ ++ colm (cook |=(a=@ (sub a '1')) (shim '1' '3')) :: row or column ++ come ;~(plug colm ;~(pfix fas colm)) :: coordinate -- :: -|_ [hid=hide moz=(list move) axle] :: per agent +|_ [hid=hide moz=(list move) axle] :: per server ++ et :: |_ [from say=sole-share] :: per console client ++ abet +>(q.eye (~(put by q.eye) ost say)) :: continue diff --git a/base/ape/dojo/core.hook b/base/ape/dojo/core.hook index fbe96a538..e56599d47 100644 --- a/base/ape/dojo/core.hook +++ b/base/ape/dojo/core.hook @@ -278,7 +278,7 @@ ++ dy-amok +>(poy ~) :: terminate ++ dy-beak :: XX rethink ^- beak - [our.hid %base [%da lat.hid]] + [our.hid %home [%da lat.hid]] :: ++ dy-ford :: send work to ford |= [way=wire kas=silk] @@ -726,7 +726,7 @@ :- [ost ~] ^- session :* *sole-share :: say=sole-share - %base :: syd=desk + %home :: syd=desk ~ :: luc=(unit case) ~ :: poy=(unit dojo-project) ~ :: var=(map term cage) diff --git a/base/ape/hood/core.hook b/base/ape/hood/core.hook index 41b21a879..ff69a53dc 100644 --- a/base/ape/hood/core.hook +++ b/base/ape/hood/core.hook @@ -63,7 +63,7 @@ |= [from hood-begin] (ably (poke-begin:(helm-work [hid +<-] (able %helm)) +<+)) :: -++ poke-hood-init :: +++ poke-helm-init :: |= [from hood-init] (ably (poke-init:(helm-work [hid +<-] (able %helm)) +<+)) :: @@ -111,6 +111,10 @@ |= [then @uvH (each gage tang)] (ably (take-made:(kiln-work [hid ost src] (able %kiln)) way +<+)) :: +++ note-helm :: + |= [then (pair ,@tD tank)] + (ably (take-note:(helm-work [hid ost src] (able %helm)) way +<+)) +:: ++ went-helm :: |= [then her=ship kay=cape] (ably (take-went:(helm-work [hid ost src] (able %helm)) way +<+)) diff --git a/base/ape/octo/core.hook b/base/ape/octo/core.hook index e49722fae..1b6a2c61b 100644 --- a/base/ape/octo/core.hook +++ b/base/ape/octo/core.hook @@ -165,7 +165,7 @@ %0 +>(eye.+< eye.+>.old, gam.+< gam.+>.old):: == :: ++ pull-octo :: - |= [from ~] =< abet :: + |= [from *] =< abet :: (park(but ~) %0 `"dropped") :: ++ pull-sole :: disconnect console |= [from *] =< abet :: diff --git a/base/ape/sole/core.hook b/base/ape/sole/core.hook index fde899d5b..2dd6b1939 100644 --- a/base/ape/sole/core.hook +++ b/base/ape/sole/core.hook @@ -199,7 +199,7 @@ |= gyl=gill ^+ +> =. +> ?. =(p.gyl src) +> - (se-emit ost %conf (se-path gyl) gyl %load src %base) + (se-emit ost %conf (se-path gyl) gyl %load src %home) (se-join:(se-peer gyl /sole) gyl) :: ++ se-blit :: give output diff --git a/base/ape/talk/core.hook b/base/ape/talk/core.hook index 51038f566..458c8eb8d 100644 --- a/base/ape/talk/core.hook +++ b/base/ape/talk/core.hook @@ -1549,7 +1549,7 @@ == == ++ ta-best :: most relevant - |=(two=partner ?:((ta-beat two) one two)) + |=(two=partner ?:((ta-beat two) two one)) :: ++ ta-full (ta-show ~) :: render full width ++ ta-show :: render partner @@ -1658,6 +1658,7 @@ ++ peer :: accept subscription |= [from pax=path] ^- [(list move) _+>] + :: ~& [%talk-peer src ost pax] ?: ?=([%sole *] pax) ?> =(our.hid src) ?< (~(has by shells) ost) @@ -1714,9 +1715,9 @@ ra-abet:(~(ra-quit ra ost ~) man cuz) :: ++ pull :: - |= [from *] + |= [from pax=path] ^- [(list move) _+>] - :: ~& [%talk-pull `*`ost] + :: ~& [%talk-pull src ost pax] =^ moz +>.$ ra-abet:ra-ever:~(ra-cancel ra ost ~) [moz +>.$(shells (~(del by shells) ost))] :: diff --git a/base/arvo/ames.hoon b/base/arvo/ames.hoon index 7adecb07f..2a8f6b7c0 100644 --- a/base/arvo/ames.hoon +++ b/base/arvo/ames.hoon @@ -1648,7 +1648,6 @@ == :: %cake - ~& [%cake p.bon q.bon r.bon] :_ fox :~ [s.bon %give %woot q.p.bon r.bon] == diff --git a/base/arvo/clay.hoon b/base/arvo/clay.hoon index e6b5de048..25c93445f 100644 --- a/base/arvo/clay.hoon +++ b/base/arvo/clay.hoon @@ -247,8 +247,6 @@ ?. ?=([%sing %v *] rav) rav [%many %| [%ud let.dom] `case`q.p.rav r.p.rav] =+ inx=nix.u.ref - ~? ?=([%sing %x *] vaw) - [%remote-x-ing vaw hen] %= +>+.$ say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say] nix.u.ref +(nix.u.ref) @@ -865,8 +863,8 @@ !! :: %x - =< ?> ?=(^ ref) . - (rand-to-rant u.rut) + =< ?>(?=(^ ref) .) + (validate-x p.p.u.rut q.p.u.rut q.u.rut r.u.rut) :: %w =. haw.u.ref @@ -933,6 +931,27 @@ :: == :: == :: + ++ validate-x + |= [car=care cas=case pax=path peg=page] + ^+ +> + =- %_(+>.$ tag [- tag]) + :* hen %pass + [%foreign-x (scot %p who) (scot %p for) syd car (scot cas) pax] + %f %exec who [for syd cas] ~ + %vale p.peg for q.peg + == + :: + ++ take-foreign-x + |= [car=care cas=case pax=path res=(each gage tang)] + ^+ +> + ?> ?=(^ ref) + ?: ?=(%| -.res) + ~| "validate foreign plops failed" + ~| [%plop-fail (turn p.res |=(tank ~(ram re +<)))] + !! + ?> ?=(@ p.p.res) + wake(haw.u.ref (~(put by haw.u.ref) [car cas pax] `p.res)) + :: ++ validate-plops |= [cas=case pop=(set plop)] ^+ +> @@ -2097,7 +2116,7 @@ ?~ cay ~ `[pax u.cay] - =^ hat lat.ran :: new content + =^ hot lat.ran :: new content ^- [(map path lobe) (map lobe blob)] %+ roll (~(tap by can)) =< .(lat lat.ran) @@ -2112,13 +2131,13 @@ [(lobe-to-mark u.-) u.-] [p q.q]:cay [(~(put by hat) pax p.bol) (~(put by lat) p.bol bol)] - =. hat :: all the content + =+ ^- hat=(map path lobe) :: all the content %- ~(uni by old) %- ~(uni by new.dal.dat) %- ~(uni by new.dob.dat) %- ~(uni by cal.dal.dat) %- ~(uni by cal.dob.dat) - %- ~(uni by hat) + %- ~(uni by hot) cas =+ ^- del=(map path ,?) (~(run by (~(uni by old.dal.dat) old.dob.dat)) |=(~ %|)) @@ -2127,7 +2146,13 @@ (make-yaki [r.ali.dat r.bob.dat ~] hat now) =. hut.ran (~(put by hut.ran) r.new.dat new.dat) =. erg.dat %- ~(uni by del) - `(map path ,?)`(~(run by hat) |=(lobe %&)) + ^- (map path ,?) + %. |=(lobe %&) + %~ run by + %- ~(uni by new.dal.dat) + %- ~(uni by cal.dal.dat) + %- ~(uni by cas) + hot checkout :: ++ checkout @@ -2594,7 +2619,7 @@ =* sud i.t.t.t.t.tea =* sat i.t.t.t.t.t.tea =+ une=(un our now hen ruf) - =+ wak=wake:une + =+ wak=une =+ wex=(di:wak syd) =+ dat=?-(+<.q.hin %writ [%& p.q.hin], %made [%| q.q.hin]) =+ ^- kan=(unit ankh) @@ -2605,7 +2630,8 @@ ank.dom =+ wao=abet:(route:(me:ze:wex [her sud] kan) sat dat) =+ woo=abet:wao - [(weld -.wak -.woo) ..^$(ruf abet:(pish:une syd +.woo ran.wao))] + =+ sip=wake:(pish:une syd +.woo ran.wao) + [(weld -.sip -.woo) ..^$(ruf abet:[+.sip])] ?: ?=([%auto @ @ @ @ ~] tea) =+ our=(slav %p i.t.tea) =* syd i.t.t.tea @@ -2764,6 +2790,24 @@ =+ zot=abet.zat [-.zot (posh her syd +.zot ruf)] [mos ..^$(ran.ruf ran.zat)] + :: + %foreign-x + ?> ?=([@ @ @ @ @ *] t.tea) + =+ our=(slav %p i.t.tea) + =+ her=(slav %p i.t.t.tea) + =+ syd=(slav %tas i.t.t.t.tea) + =+ car=((hard care) i.t.t.t.t.tea) + =+ ^- cas=case + =+ (slay i.t.t.t.t.t.tea) + ?> ?=([~ %$ case] -) + ->+ + =* pax t.t.t.t.t.t.tea + =+ zax=(do now hen [our her] syd ruf) + =+ zat=(take-foreign-x:zax car cas pax q.q.hin) + =^ mos ruf + =+ zot=abet.zat + [-.zot (posh her syd +.zot ruf)] + [mos ..^$(ran.ruf ran.zat)] == :: %mere !! diff --git a/base/arvo/dill.hoon b/base/arvo/dill.hoon index 849d64e3d..2d59c6f14 100644 --- a/base/arvo/dill.hoon +++ b/base/arvo/dill.hoon @@ -184,7 +184,7 @@ =+ myt=(flop (need tem)) =. tem ~ =. moz :_(moz [hen %pass / %c %font our %home our %base]) - =. moz :_(moz [hen %pass ~ %g %conf [[our ram] %load our %base]]) + =. moz :_(moz [hen %pass ~ %g %conf [[our ram] %load our %home]]) =. moz :_(moz [hen %pass ~ %g %deal [our our] ram %peer /drum]) |- ^+ +> ?~ myt +> diff --git a/base/arvo/eyre.hoon b/base/arvo/eyre.hoon index 32e824a8c..f549ac996 100644 --- a/base/arvo/eyre.hoon +++ b/base/arvo/eyre.hoon @@ -1133,7 +1133,9 @@ :: ++ del-subs :: XX per path? |= [a=dock %json b=wire c=path] ^+ ..ix - (hurl-note [a b] [%g %deal [him -.a] +.a %pull ~]) + ~& [%eyre-del-subs +< hen] + =. ..ix (hurl-note [a b] [%g %deal [him -.a] +.a %pull ~]) + (nice-json:pop-duct:(ire-ix ire)) :: XX gall ack :: ++ get-rush |= [a=whir-of b=json] ^+ ..ix diff --git a/base/arvo/gall.hoon b/base/arvo/gall.hoon index 750cd53b3..9b2f1923b 100644 --- a/base/arvo/gall.hoon +++ b/base/arvo/gall.hoon @@ -398,7 +398,7 @@ ^- beak :: =+ pup=pup:(~(got by bum) dap) :: [p.pup q.pup [%da now]] :: XX this is wrong; save the build case - [our %base %da now] :: XX really wrong + [our %home %da now] :: XX really wrong :: ++ mo-club :: local action |= [dap=dude pry=prey cub=club] @@ -575,10 +575,10 @@ ++ ap-fill :: add to queue ^- [? _.] =+ suy=(fall (~(get by qel.ged) ost) 0) - ?: =(8 suy) + ?: =(20 suy) ~& [%ap-fill-full [our dap] q.q.pry ost] [%| +] - :: ~? !=(8 suy) [%ap-fill-add [[our dap] q.q.pry ost] +(suy)] + :: ~? !=(20 suy) [%ap-fill-add [[our dap] q.q.pry ost] +(suy)] [%& +(qel.ged (~(put by qel.ged) ost +(suy)))] :: ++ ap-find :: general arm diff --git a/base/lib/helm/core.hook b/base/lib/helm/core.hook index bab89d6d2..5bbc618e8 100644 --- a/base/lib/helm/core.hook +++ b/base/lib/helm/core.hook @@ -131,7 +131,6 @@ ?> ?=(^ wil) =< abet %- emil(bur ~) - ~& [%poke-will wil] :~ [%cash /helm p.u.bur q.u.bur u.wil] [%plug /helm our %home (sein our) %kids] == @@ -149,6 +148,10 @@ %& [%flog ~ %text "<{}>"] == :: + ++ take-note :: result of %init + |= [way=wire chr=@tD tan=tank] =< abet + (emit %flog ~ %text chr ' ' ~(ram re tan)) + :: ++ take-went :: result of %want |= [way=path her=ship kay=cape] =< abet (emit %flog ~ %text "went: {<[way kay]>}") diff --git a/base/lib/sole/core.hook b/base/lib/sole/core.hook index 00b1af625..0f082cf1f 100644 --- a/base/lib/sole/core.hook +++ b/base/lib/sole/core.hook @@ -64,7 +64,7 @@ ?- -.dex %del ?:((lte p.sin p.dex) dex(p +(p.dex)) dex) %ins ?: =(p.sin p.dex) - ?:((gth q.sin q.dex) dex dex(p +(p.dex))) + ?:((lth q.sin q.dex) dex dex(p +(p.dex))) ?:((lte p.sin p.dex) dex(p +(p.dex)) dex) == == diff --git a/base/lib/urb.js b/base/lib/urb.js index bd528dc6f..215d39ef4 100644 --- a/base/lib/urb.js +++ b/base/lib/urb.js @@ -244,12 +244,11 @@ window.urb.unsubscribe = function(params,cb) { if(!params.path) throw new Error("You must specify a path for urb.unsubscribe.") if(!params.appl) throw new Error("You must specify an appl for urb.unsubscribe.") - if(!cb) throw new Error("You must supply a callback to urb.unsubscribe.") url = "/~/is/"+this.gsig(params)+".json" method = "delete" this.req("delete",url,params,true,function(err,res) { - cb(err,res) + if(cb) cb(err,res) }) } diff --git a/base/pub/sole/fab/hymn.hook b/base/pub/sole/fab/hymn.hook index 90e69afc4..51764f680 100644 --- a/base/pub/sole/fab/hymn.hook +++ b/base/pub/sole/fab/hymn.hook @@ -18,7 +18,7 @@ "mousetrap/1.4.6/mousetrap.js" "react/0.11.0/react.js" == - ;script(src "/~/at/base/lib/urb.js"); + ;script(src "{(spud /~~/~/at/[&2:%]/lib/'urb.js')}"); ;script: urb.appl = 'dojo' ;style:''' #term { diff --git a/base/pub/sole/src/main.coffee b/base/pub/sole/src/main.coffee index 3533418c7..3a153e3fb 100644 --- a/base/pub/sole/src/main.coffee +++ b/base/pub/sole/src/main.coffee @@ -3,13 +3,17 @@ str = JSON.stringify Prompt = recl render: -> - [pro,cur,buf] = [@props.prompt, @props.cursor, @props.input + " "] - pre {}, pro, + [pro,cur,buf] = [@props.prompt[@props.appl] ? "X", @props.cursor, @props.input + " "] + pre {}, @props.appl+pro, span {style: background: 'lightgray'}, buf.slice(0,cur), "\u0332", buf.slice(cur) Matr = recl render: -> lines = @props.rows.map (lin)-> pre {}, lin, " " - lines.push Prompt {prompt:@props.prompt, input:@props.input, cursor:@props.cursor} + lines.push Prompt + appl: @props.appl, + prompt: @props.prompt, + input: @props.input, + cursor: @props.cursor div {}, lines $ -> @@ -42,28 +46,47 @@ $ -> matr = rend (Matr rows:[] - prompt:"" + appl:"" + prompt:{"": "# "} input:"" cursor:0 history:[] offset:0 ), term window.matr = matr update = (a) -> matr.setProps a - buffer = new Share "" + buffer = "": new Share "" window.buffer = buffer - sync = (ted)-> - update input: buffer.buf, cursor: buffer.transpose ted, matr.props.cursor - - peer = (ruh) -> - if ruh.map then return ruh.map peer + choose = (appl)-> + urb.appl = appl + buffer[appl] ?= new Share "" + updPrompt '', null + update {appl, cursor: 0, input: buffer[appl].buf} + print = (txt)-> update rows: [matr.props.rows..., txt] + sync = (ted,app)-> + app ?= matr.props.appl + if app isnt matr.props.appl then return + b = buffer[app] + update input: b.buf, cursor: b.transpose ted, matr.props.cursor + updPrompt = (app,pro) -> + prompt = $.extend {}, matr.props.prompt + if pro? then prompt[app] = pro else delete prompt[app] + update {prompt} + sysStatus = ()-> updPrompt '', ( + [app,pro] = [matr.props.appl, (k for k,v of matr.props.prompt when k isnt '')] + if app is '' then (pro.join ', ')+'# ' else null + ) + + peer = (ruh,app) -> + app ?= urb.appl + if ruh.map then return ruh.map (rul)-> peer rul, app mapr = matr.props switch Object.keys(ruh)[0] - when 'txt' then update rows: [mapr.rows..., ruh.txt] - when 'tan' then ruh.tan.split("\n").reverse().map (txt)-> peer {txt} + when 'txt' then print ruh.txt + when 'tan' then ruh.tan.split("\n").reverse().map print + when 'pro' then updPrompt app, ruh.pro.cad when 'hop' then update cursor: ruh.hop; bell() # XX buffer.transpose? - when 'pro' then update prompt: ruh.pro.cad when 'blk' then console.log "Stub #{str ruh}" - when 'det' then buffer.receive ruh.det; sync ruh.det.ted + when 'det' then buffer[app].receive ruh.det; sync ruh.det.ted, app when 'act' then switch ruh.act when 'clr' then update rows:[] when 'bel' then bell() @@ -77,11 +100,28 @@ $ -> # else throw "Unknown "+(JSON.stringify ruh) else v = Object.keys(ruh); console.log v, ruh[v[0]] - urb.bind "/sole", {wire:"/"}, (err,d)-> - if err then console.log err - else if d.data then peer d.data - - + join = (app)-> + if matr.props.prompt[app]? + return print '# already-joined: '+app + choose app + urb.bind "/sole", {wire:"/"}, (err,d)-> + if err then console.log err + else if d.data then peer d.data, app + cycle = ()-> + apps = Object.keys matr.props.prompt + if apps.length < 2 then return + choose apps[1 + apps.indexOf urb.appl] ? apps[0] + part = (appl)-> + mapr = matr.props + unless mapr.prompt[appl]? + return print '# not-joined: '+appl + urb.unsubscribe {appl, path: "/sole", wire: "/"} + if appl is mapr.appl then cycle() + updPrompt appl, null + sysStatus() + join urb.appl + window.join = join; window.part = part + pressed = [] deltim = null #later = (data)-> @@ -96,11 +136,19 @@ $ -> # ), 500 sendAction = (data)-> - urb.send {mark: 'sole-action', data}, (e,res)-> + if matr.props.appl then urb.send {mark: 'sole-action', data}, (e,res)-> if res.status isnt 200 then $('#err')[0].innerText = res.data.mess - + else if data is 'ret' + app = /^[a-z-]+$/.exec(buffer[""].buf.slice(1)) + unless app? and app[0]? + return bell() + else switch buffer[""].buf[0] + when '+' then doEdit set: ""; join app[0] + when '-' then doEdit set: ""; part app[0] + else bell() + doEdit = (ted)-> - det = buffer.transmit ted + det = buffer[matr.props.appl].transmit ted sync ted sendAction {det} @@ -141,13 +189,18 @@ $ -> when 'a','left' then update cursor: 0 when 'e','right' then update cursor: mapr.input.length when 'l' then update rows: [] - when 'entr' then peer act: 'bel' + when 'entr' then bell() when 'w' then eatKyev ['alt'], act:'baxp' when 'p' then eatKyev [], act: 'up' when 'n' then eatKyev [], act: 'down' when 'b' then eatKyev [], act: 'left' when 'f' then eatKyev [], act: 'right' when 'g' then bell() + when 'x' then cycle() + when 'v' + appl = if mapr.appl isnt '' then '' else urb.appl + update {appl, cursor:0, input:buffer[appl].buf} + sysStatus() when 't' if mapr.cursor is 0 or mapr.input.length < 2 return bell() diff --git a/base/pub/talk/fab/hymn.hook b/base/pub/talk/fab/hymn.hook index d8c1cdebd..83357f06d 100644 --- a/base/pub/talk/fab/hymn.hook +++ b/base/pub/talk/fab/hymn.hook @@ -25,11 +25,11 @@ ;script(type "text/javascript", src "/~~/~/at/base/lib/urb.js"); ;meta(name "viewport", content "width=device-width, height=device-height, ". "initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"); - ;link(type "text/css", rel "stylesheet", href "/base/pub/talk/src/css/main.css"); + ;link(type "text/css", rel "stylesheet", href "/home/pub/talk/src/css/main.css"); ;title: urbit talk == ;body ;div#c; - ;script(type "text/javascript", src "/base/pub/talk/src/js/main.js"); + ;script(type "text/javascript", src "/home/pub/talk/src/js/main.js"); == == diff --git a/base/pub/talk/src/css/main.css b/base/pub/talk/src/css/main.css index 5594e515b..04e8b975a 100644 --- a/base/pub/talk/src/css/main.css +++ b/base/pub/talk/src/css/main.css @@ -471,7 +471,7 @@ a { display: block; } .iden > div { - max-width: 10rem; + max-width: 11rem; display: inline-block; } .iden > div, @@ -536,6 +536,7 @@ a { } .writing .iden .ship { margin-right: 0.3rem; + letter-spacing: 0; } #audi { display: inline-block; diff --git a/base/pub/talk/src/css/main.styl b/base/pub/talk/src/css/main.styl index dfe505843..5c9f488e7 100644 --- a/base/pub/talk/src/css/main.styl +++ b/base/pub/talk/src/css/main.styl @@ -421,7 +421,7 @@ a display block .iden > div - max-width 10rem + max-width 11rem display inline-block .iden > div @@ -491,6 +491,7 @@ a .writing .iden .ship margin-right .3rem + letter-spacing 0 #audi display inline-block diff --git a/base/pub/talk/src/js/components/StationComponent.coffee b/base/pub/talk/src/js/components/StationComponent.coffee index ed9d7200a..810d7d26c 100644 --- a/base/pub/talk/src/js/components/StationComponent.coffee +++ b/base/pub/talk/src/js/components/StationComponent.coffee @@ -95,7 +95,7 @@ module.exports = recl ]) (div {id:"where"},[ (div {className:"slat"},"talk") - (div {className:"path"},window.util.mainStation(window.urb.user)) + (div {className:"path"},"") #window.util.mainStation(window.urb.user)) (div {className:"caret"},"") ]) ] diff --git a/base/pub/talk/src/js/components/WritingComponent.coffee b/base/pub/talk/src/js/components/WritingComponent.coffee index d83659a92..5ea01eeb5 100644 --- a/base/pub/talk/src/js/components/WritingComponent.coffee +++ b/base/pub/talk/src/js/components/WritingComponent.coffee @@ -46,6 +46,8 @@ module.exports = recl for s in listening if audi.indexOf(s) is -1 cc = true + if listening.length is 0 + cc = true if cc is true audi.push window.util.mainStationPath(window.urb.user) audi diff --git a/base/pub/talk/src/js/main.js b/base/pub/talk/src/js/main.js index 9c44f6add..54aef09c6 100644 --- a/base/pub/talk/src/js/main.js +++ b/base/pub/talk/src/js/main.js @@ -615,7 +615,7 @@ module.exports = recl({ className: "slat" }, "talk"), div({ className: "path" - }, window.util.mainStation(window.urb.user)), div({ + }, ""), div({ className: "caret" }, "") ]) @@ -708,6 +708,9 @@ module.exports = recl({ cc = true; } } + if (listening.length === 0) { + cc = true; + } if (cc === true) { audi.push(window.util.mainStationPath(window.urb.user)); } @@ -2380,7 +2383,7 @@ moment.tz.load(require('./data/packed/latest.json')); },{"moment":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/node_modules/moment/moment.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/node_modules/moment/moment.js":[function(require,module,exports){ //! moment.js -//! version : 2.10.2 +//! version : 2.10.3 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com @@ -2403,28 +2406,12 @@ moment.tz.load(require('./data/packed/latest.json')); hookCallback = callback; } - function defaultParsingFlags() { - // We need to deep clone this object. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso : false - }; - } - function isArray(input) { return Object.prototype.toString.call(input) === '[object Array]'; } function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date; + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; } function map(arr, fn) { @@ -2461,21 +2448,45 @@ moment.tz.load(require('./data/packed/latest.json')); return createLocalOrUTC(input, format, locale, strict, true).utc(); } + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false + }; + } + + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } + function valid__isValid(m) { if (m._isValid == null) { + var flags = getParsingFlags(m); m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated; if (m._strict) { m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; } } return m._isValid; @@ -2484,10 +2495,10 @@ moment.tz.load(require('./data/packed/latest.json')); function valid__createInvalid (flags) { var m = create_utc__createUTC(NaN); if (flags != null) { - extend(m._pf, flags); + extend(getParsingFlags(m), flags); } else { - m._pf.userInvalidated = true; + getParsingFlags(m).userInvalidated = true; } return m; @@ -2523,7 +2534,7 @@ moment.tz.load(require('./data/packed/latest.json')); to._offset = from._offset; } if (typeof from._pf !== 'undefined') { - to._pf = from._pf; + to._pf = getParsingFlags(from); } if (typeof from._locale !== 'undefined') { to._locale = from._locale; @@ -2558,7 +2569,7 @@ moment.tz.load(require('./data/packed/latest.json')); } function isMoment (obj) { - return obj instanceof Moment || (obj != null && hasOwnProp(obj, '_isAMomentObject')); + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); } function toInt(argumentForCoercion) { @@ -2996,7 +3007,7 @@ moment.tz.load(require('./data/packed/latest.json')); if (month != null) { array[MONTH] = month; } else { - config._pf.invalidMonth = input; + getParsingFlags(config).invalidMonth = input; } }); @@ -3080,7 +3091,7 @@ moment.tz.load(require('./data/packed/latest.json')); var overflow; var a = m._a; - if (a && m._pf.overflow === -2) { + if (a && getParsingFlags(m).overflow === -2) { overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : @@ -3090,11 +3101,11 @@ moment.tz.load(require('./data/packed/latest.json')); a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1; - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { overflow = DATE; } - m._pf.overflow = overflow; + getParsingFlags(m).overflow = overflow; } return m; @@ -3107,10 +3118,12 @@ moment.tz.load(require('./data/packed/latest.json')); } function deprecate(msg, fn) { - var firstTime = true; + var firstTime = true, + msgWithStack = msg + '\n' + (new Error()).stack; + return extend(function () { if (firstTime) { - warn(msg); + warn(msgWithStack); firstTime = false; } return fn.apply(this, arguments); @@ -3155,7 +3168,7 @@ moment.tz.load(require('./data/packed/latest.json')); match = from_string__isoRegex.exec(string); if (match) { - config._pf.iso = true; + getParsingFlags(config).iso = true; for (i = 0, l = isoDates.length; i < l; i++) { if (isoDates[i][1].exec(string)) { // match[5] should be 'T' or undefined @@ -3435,7 +3448,7 @@ moment.tz.load(require('./data/packed/latest.json')); yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; + getParsingFlags(config)._overflowDayOfYear = true; } date = createUTCDate(yearToUse, 0, config._dayOfYear); @@ -3531,7 +3544,7 @@ moment.tz.load(require('./data/packed/latest.json')); } config._a = []; - config._pf.empty = true; + getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC` var string = '' + config._i, @@ -3547,7 +3560,7 @@ moment.tz.load(require('./data/packed/latest.json')); if (parsedInput) { skipped = string.substr(0, string.indexOf(parsedInput)); if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); + getParsingFlags(config).unusedInput.push(skipped); } string = string.slice(string.indexOf(parsedInput) + parsedInput.length); totalParsedInputLength += parsedInput.length; @@ -3555,27 +3568,29 @@ moment.tz.load(require('./data/packed/latest.json')); // don't parse if it's not a known token if (formatTokenFunctions[token]) { if (parsedInput) { - config._pf.empty = false; + getParsingFlags(config).empty = false; } else { - config._pf.unusedTokens.push(token); + getParsingFlags(config).unusedTokens.push(token); } addTimeToArrayFromToken(token, parsedInput, config); } else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); + getParsingFlags(config).unusedTokens.push(token); } } // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; if (string.length > 0) { - config._pf.unusedInput.push(string); + getParsingFlags(config).unusedInput.push(string); } // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; + if (getParsingFlags(config).bigHour === true && + config._a[HOUR] <= 12 && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; } // handle meridiem config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); @@ -3619,7 +3634,7 @@ moment.tz.load(require('./data/packed/latest.json')); currentScore; if (config._f.length === 0) { - config._pf.invalidFormat = true; + getParsingFlags(config).invalidFormat = true; config._d = new Date(NaN); return; } @@ -3630,7 +3645,6 @@ moment.tz.load(require('./data/packed/latest.json')); if (config._useUTC != null) { tempConfig._useUTC = config._useUTC; } - tempConfig._pf = defaultParsingFlags(); tempConfig._f = config._f[i]; configFromStringAndFormat(tempConfig); @@ -3639,12 +3653,12 @@ moment.tz.load(require('./data/packed/latest.json')); } // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; - tempConfig._pf.score = currentScore; + getParsingFlags(tempConfig).score = currentScore; if (scoreToBeat == null || currentScore < scoreToBeat) { scoreToBeat = currentScore; @@ -3687,6 +3701,8 @@ moment.tz.load(require('./data/packed/latest.json')); configFromStringAndArray(config); } else if (format) { configFromStringAndFormat(config); + } else if (isDate(input)) { + config._d = input; } else { configFromInput(config); } @@ -3739,7 +3755,6 @@ moment.tz.load(require('./data/packed/latest.json')); c._i = input; c._f = format; c._strict = strict; - c._pf = defaultParsingFlags(); return createFromConfig(c); } @@ -4313,6 +4328,9 @@ moment.tz.load(require('./data/packed/latest.json')); } function from (time, withoutSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); } @@ -4320,6 +4338,17 @@ moment.tz.load(require('./data/packed/latest.json')); return this.from(local__createLocal(), withoutSuffix); } + function to (time, withoutSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } + + function toNow (withoutSuffix) { + return this.to(local__createLocal(), withoutSuffix); + } + function locale (key) { var newLocaleData; @@ -4422,11 +4451,11 @@ moment.tz.load(require('./data/packed/latest.json')); } function parsingFlags () { - return extend({}, this._pf); + return extend({}, getParsingFlags(this)); } function invalidAt () { - return this._pf.overflow; + return getParsingFlags(this).overflow; } addFormatToken(0, ['gg', 2], 0, function () { @@ -4577,7 +4606,7 @@ moment.tz.load(require('./data/packed/latest.json')); if (weekday != null) { week.d = weekday; } else { - config._pf.invalidWeekday = input; + getParsingFlags(config).invalidWeekday = input; } }); @@ -4702,7 +4731,7 @@ moment.tz.load(require('./data/packed/latest.json')); }); addParseToken(['h', 'hh'], function (input, array, config) { array[HOUR] = toInt(input); - config._pf.bigHour = true; + getParsingFlags(config).bigHour = true; }); // LOCALES @@ -4819,6 +4848,8 @@ moment.tz.load(require('./data/packed/latest.json')); momentPrototype__proto.format = format; momentPrototype__proto.from = from; momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.to = to; + momentPrototype__proto.toNow = toNow; momentPrototype__proto.get = getSet; momentPrototype__proto.invalidAt = invalidAt; momentPrototype__proto.isAfter = isAfter; @@ -5007,7 +5038,7 @@ moment.tz.load(require('./data/packed/latest.json')); } // Lenient ordinal parsing accepts just a number in addition to // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); } var prototype__proto = Locale.prototype; @@ -5224,13 +5255,13 @@ moment.tz.load(require('./data/packed/latest.json')); // handle milliseconds separately because of floating point math errors (issue #1867) days = this._days + Math.round(yearsToDays(this._months / 12)); switch (units) { - case 'week' : return days / 7 + milliseconds / 6048e5; - case 'day' : return days + milliseconds / 864e5; - case 'hour' : return days * 24 + milliseconds / 36e5; - case 'minute' : return days * 24 * 60 + milliseconds / 6e4; - case 'second' : return days * 24 * 60 * 60 + milliseconds / 1000; + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + milliseconds; + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; default: throw new Error('Unknown unit ' + units); } } @@ -5431,7 +5462,7 @@ moment.tz.load(require('./data/packed/latest.json')); // Side effect imports - utils_hooks__hooks.version = '2.10.2'; + utils_hooks__hooks.version = '2.10.3'; setHookCallback(local__createLocal);