Merge remote-tracking branch 'origin/test' into newunix

Conflicts:
	urb/urbit.pill
	urb/zod/base/arvo/clay.hoon
This commit is contained in:
Philip C Monk 2015-06-16 17:44:47 -04:00
commit bdeb4e4a11
55 changed files with 981 additions and 645 deletions

View File

@ -46,7 +46,7 @@ $: cred=(unit ,[app-secret=@t client-id=@t])
++ hostname ^- hart
?+ (clan our.hid) !!
%czar [| ?+(our.hid `8.443 %~fyr `8.444) `/localhost]
%duke [| ~ `/org/urbit/(crip +:<our.hid>)]
%duke [| `8.444 `/org/urbit/(crip +:<our.hid>)]
==
++ auth-url
%+ weld "https://sandbox.coinbase.com/oauth/authorize"

View File

@ -10,37 +10,66 @@
::
:::: sivtyv-barnel
::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: data structures ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
!:
|%
++ instance
$: plat=?(%do %gce) name=@t id=@t status=@t created=@da snapshot=name=@t ::disk=@u region=@t
$: plat=?(%do %gce) name=@t id=@t status=@t created=@da snapshot=name=@t ::disk=@u region=@t
::ip=(list ,@if)
==
++ create-req-do
$:
name=@t ::region=@t
size=@t image=@t ssh=(list cord)
backups=(unit ,?) ipv6=(unit ,?)
private-networking=(unit ,?) user-data=(unit ,@t)
++ image
$: plat=?(%do %gce) name=@t id=@t
==
++ create-req-do
$:
name=@t ::region=@t
size=@t image=@t ssh=(list cord)
backups=(unit ,?) ipv6=(unit ,?)
private-networking=(unit ,?) user-data=(unit ,@t)
==
++ create-req-gce ,[project=@t zone=@t name=@t machine-type=@t]
++ axle
$: auth=[do=keys gce=keys] toke=[do=tokens gce=tokens]
insts=(map ,@t instance)
==
$: auth=[do=keys gce=keys] toke=[do=tokens gce=tokens]
insts=(map ,@t instance) images=(map [,[@t @t] image])
==
++ keys ,[authc=(unit ,@t) client-secret=(unit ,@t)]
++ tokens ,[access=@t refresh=@t]
++ move ,[bone card]
++ card
$% [%diff %json json]
[%wait wire @da]
[%send wire [ship term] %poke %talk-command command]
[%them wire (unit hiss)]
==
$% [%diff %json json]
[%wait wire @da]
[%send wire [ship term] %poke %talk-command command]
[%them wire (unit hiss)]
==
++ droplet-action
$% [%start ~]
[%stop ~]
[%reboot ~]
[%delete ~]
[%snapshot p=@t]
==
++ cloud-command
$% [%action id=@t name=@t act=droplet-action]
[%create-do p=json]
[%create-gce p=json]
==
--
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: miscellaneous functions ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
!:
|% :::
|%
++ auth-queries
|= code=cord
:~ 'grant_type'^'authorization_code'
'code'^code
:- 'client_id'
'd8f46b95af38c1ab3d78ad34c2157a6959c23eb0eb5d8e393f650f08e6a75c6f'
'redirect_uri'^'http://localhost:8443/home/pub/cloud/fab'
==
::
++ parse-iso8601
=< (cook to-time (parsf ;"{parse-day}T{parse-seconds}{parse-zone}"))
|%
@ -63,28 +92,53 @@ $% [%diff %json json]
==
++ parse-zone-sign ;~(plug ;~(pose (cold & lus) (cold | hep)))
--
++ parse-cloud-command
=+ jo
%- of :~
[%create-gce some]
[%create-do some]
::[%create-gce some]
:- %action
(ot id/so name/so act/parse-droplet-action ~)
==
++ parse-droplet-action
=> jo
%- of :~
[%start ul]
[%stop ul]
[%reboot ul]
[%delete ul]
[%snapshot so]
==
++ key-do
(mo [%start 'power_on'] [%stop 'shutdown'] [%reboot 'power_cycle'] ~)
::
++ adapter-do
|= a=cord
(~(got by key-do) a)
::
++ parse-ip-do
=> jo
%- ot
:_ ~ v4/(ar (ot 'ip_address'^(su lip:ag) ~))
::
++ parse-ip-gce
=> jo
%+ cu |=(a=(list (list ,@if)) `(list ,@if)`(zing a))
(ar (ot 'accessConfigs'^(ar (ot 'natIP'^(su lip:ag) ~)) ~))
::
++ tail-url
|= a=cord
-:(flop q.q:(need (epur a)))
::
++ parse-region
=> jo
(ot name/so ~)
::
++ parse-id-text
|= jon=json
?.(?=([?(%n %s) *] jon) ~ (some p.jon))
::
++ create-do-body
|= $: name=@t ::region=@t
size=@t image=@t ssh-keys=(list cord)
@ -96,8 +150,9 @@ $% [%diff %json json]
backups/?~(backups ~ b/u.backups) ipv6/?~(ipv6 ~ b/u.ipv6)
'user_data'^?~(user-data ~ s/u.user-data) 'private_networking'^?~(private-networking ~ b/u.private-networking)
==
::
++ convert-do
|= a=?(%start %stop %reboot)
|= a=?(%start %stop %reboot %snapshot)
?- a
%start
'power_on'
@ -105,9 +160,14 @@ $% [%diff %json json]
'shutdown'
%reboot
'power_cycle'
%snapshot
'snapshot'
==
++ state-to-json
::
++ instance-to-json
|= a=(list instance)
^- json
%+ joba 'instances'
:- %a
%+ turn a
|= instance
@ -119,30 +179,44 @@ $% [%diff %json json]
created/s/(crip (dust (yore created)))
::region/s/region
snapshot/s/snapshot
:: disk/`json`(jone disk)
::disk/`json`(jone disk)
::ip/a/(turn ip |=(a=@if s/(rsh 3 1 (scot %if a))))
==
++ map-to-list
|= a=(map [,[@t @t] image])
^- liz=(list image)
%+ turn (~(tap by a) *(list ,[[@t @t] image]))
|=(a=[[@t @t] image] `image`+.a)
::
++ image-to-json
|= a=(list image)
%+ joba 'images'
:- %a
%+ turn a
|= image
^- json
%- jobe
:~ name/s/name id/s/id ==
--
::::::::::::::::
:: main door ::
::::::::::::::::
!:
|_ [bowl vat=axle]
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: miscellaneous arms that have to be in main door for scope reasons ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
++ prep ,_`.
::
++ peer
|= pax=path
::++ prep ,_`.
::
++ thou
|= [pour-path=path resp=?(httr *)]
^- [(list move) _+>.$]
:_ +>.$
=+ lis=(~(tap by insts.vat))
[ost %diff %json (state-to-json (turn lis |=(a=[@t instance] +.a)))]~
::
++ spam
|= jon=json
%+ turn (~(tap by sup))
|= [sub=bone @ pax=path]
^- move
[sub %diff %json jon]
++ httpreq
|= $: pour-path=wire
~& unhandled-pour-path/resp
:_ +>.$ ~
++ httpreq
|= $: pour-path=wire :: must be in main door because of scope
domain=(list cord) end-point=path
req-type=$?(%get %delt [%post json]) headers=math
queries=quay
@ -162,16 +236,46 @@ $% [%diff %json json]
[%post headers ~ (tact (pojo +.req-type))]
:^ ost %them pour-path
`(unit hiss)`[~ request]
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: manage supscriptions and publish to talk ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++ peer
|= pax=path
^- [(list move) _+>.$]
:_ +>.$
=+ lis=(~(tap by insts.vat))
[ost %diff %json (instance-to-json (turn lis |=(a=[@t instance] +.a)))]~
::
++ auth-queries
|= code=cord
:~ 'grant_type'^'authorization_code'
'code'^code
:- 'client_id'
'd8f46b95af38c1ab3d78ad34c2157a6959c23eb0eb5d8e393f650f08e6a75c6f'
'redirect_uri'^'http://localhost:8443/home/pub/cloud/fab'
==
++ spam
|= jon=json
%+ turn (~(tap by sup))
|= [sub=bone @ pax=path]
^- move
[sub %diff %json jon]
::
++ publish
|= [act=(list speech)]
^- move
=+ ^= spchz
%+ turn act
|= sp=speech
=+ ^= tail
:- ^- audience
:+ :- `partner`[%& our ?+((clan our) !! %czar %court, %duke %porch)]
^- (pair envelope delivery)
[`envelope`[& ~] %pending]
~
~
`statement`[now ~ sp]
^- thought
:- `@`(sham eny tail)
tail
=+ mez=[%talk-command [%publish `(list thought)`spchz]]
[ost %send /pub [our %talk] %poke mez]
++ thou-pub |=(~ :_(+>.$ ~))
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: authentication ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++ poke-cloud-auth
|= [cde=cord typ=cord]
^- [(list move) _+>.$]
@ -182,8 +286,8 @@ $% [%diff %json json]
=. access.gce.toke.vat
cde
:_ +>.$
:- list-instances-gce
~[(publish [%lin & 'successfully authenticated to gce']~)]
:_ list-gce
(publish [%lin & 'successfully authenticated to gce']~)
::
++ poke-cloud-secret
|= [secret=cord typ=cord]
@ -194,87 +298,28 @@ $% [%diff %json json]
[~ secret]
:_ +>.$
:_ ~
%+ httpreq /auth-do
%+ httpreq /do/auth
:^ ~[%digitalocean %cloud] `path`/v1/oauth/token
[%post ~]
:- ~ `quay`['client_secret'^secret (auth-queries (need authc.do.auth.vat))]
==
::
++ receive-auth
|= [pour-path=cord resp=httr]
++ thou-do-auth
|= [~ resp=httr]
^- [(list move) _+>.$]
~| resp
=+ body=(rash q:(need r.resp) apex:poja)
~| recieve-auth/resp(r body)
?+ pour-path !!
%auth-do
=+ [ac re]=(need ((ot 'access_token'^so 'refresh_token'^so ~):jo body))
=: access.do.toke.vat ac
refresh.do.toke.vat re
==
:_ +>.$
:~ list-instances-do
(publish [%lin & 'successfully authenticated']~)
==
==
::
++ poke-json
|= act=json
^- [(list move) _+>.$]
=+ do=(need ((ot action/so ~):jo act))
:_ +>.$
:_ ~
?+ do !!
%list
list-instances-do
::
%create-do
(create-do act)
::
%create-gce
(create-gce-disk act)
::
?(%start %stop %reboot %delete)
=+ id=(need ((ot id/so ~):jo act))
(instance-action id do)
==
::
++ instance-action
|= $: id=@t
$= action $?
%start %stop %reboot %delete
== ==
=+ d=(~(got by insts.vat) id)
~| 'can\'t find id'
=+ typ=?~(d !! -.d)
?- typ
%do
=+ meth=?:(?=(%delete action) %delt [%post (jobe type/s/(convert-do action) ~)])
^- move
=+ ^= req
%- httpreq :*
/action-test
~[%digitalocean %api]
?:(?=(%delt meth) /v2/droplets/[id] /v2/droplets/[id]/actions)
meth
%^ mo ['Content-Type' 'application/json' ~]
['Authorization' (cat 3 'Bearer ' access.do.toke.vat) ~] ~
*quay
==
req
%gce
?- action
%start
!!
%stop
!!
%reboot
!!
%delete
!!
==
==
::
:- (publish [%lin & 'successfully authenticated']~)
list-do
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: create digital ocean droplets ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++ create-do
|= act=json
=+ ^- deets=create-req-do
@ -301,69 +346,79 @@ $% [%diff %json json]
~
==
::
++ create-gce-disk
|= act=json :: num=(unit ,@u)
~& act
=+ :- name=(need ((ot name/so ~):jo act))
snapshot=(need ((ot 'instance_img'^so ~):jo act))
=+ :- name=(need ((ot name/so ~):jo act))
snap=(need ((ot snap/so ~):jo act))
=+ ^- body=json
(jobe name/s/name %'sourceSnapshot'^s/'compute/v1/projects/urbcloud/global/snapshots/snapshot-1' ~) ::^so/snap ~)
++ thou-create-do |=([path resp=httr] ~&(resp :_(+>.$ ~)))
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: create google instances ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++ reserve-ip
|= name=json
=+ nam=(need ((ot name/so ~):jo name))
%- httpreq
:* /create-gce-disk/snapshot/name
~['googleapis' 'www'] /compute/v1/projects/urbcloud/zones/us-central1-a/disks
[%post body]
%^ mo ['Content-Type' 'application/json' ~]
['Authorization' (cat 3 'Bearer ' access.gce.toke.vat) ~]
~
~
==
:* /reserve-ip/[nam]
~['googleapis' 'www']
/compute/v1/projects/urbcloud/regions/us-central1/addresses
[%post (joba name/s/nam)]
%^ mo ['Content-Type' 'application/json' ~]
['Authorization' (cat 3 'Bearer ' access.gce.toke.vat) ~]
~
*quay
==
::
++ ask-disk-status
|= pax=path ^- move
~& 'ask disk status'
=+ :- safe=(slav %uv ?~(pax !! -.pax))
snap=?.(?=([* ^] pax) !! i.t.pax)
=+ link=(need (epur ?~(pax !! safe)))
=. r.link ['access_token'^access.gce.toke.vat r.link]
:^ ost %them `wire`/disk-status/snap
`(unit hiss)`[~ [link [%get ~ ~]]]
++ thou-reserve-ip
|= [pax=path resp=httr]
~& resp
~| r.resp
=+ parsed=(rash q:(need r.resp) apex:poja)
=+ ur=(need ((ot 'targetLink'^so ~):jo parsed))
~& initial-response/parsed
=+ name=-:(flop q.q:(need (epur ur)))
=+(buf=`@da`(add ~s10 now) :_(+>.$ [ost %wait `path`/check-ip-status/[name] buf]~))
::
++ disk-status ::receive
|= [ins-img=@t resp=httr]
^- [(list move) _+>.$]
~& 'disk status called'
=+ hcode=p.resp
?: =('200' hcode)
~| 'did not receive 200' !!
=+ :-(parsed=(rash q:(need r.resp) apex:poja) jo)
~& parsed
=+ :- status=(need ((ot status/so ~) parsed))
lin=(need ((ot 'selfLink'^so ~) parsed))
=+ link=(scot %uv lin)
?: =('DONE' status)
~& resp
~& 'boot disk now running, now starting instance'
=+ target=(need ((ot 'targetLink'^so ~):jo parsed))
=+ nam=-:(flop q.q:(need (epur target)))
~& nam
:_ +>.$ ~[(create-gce nam ins-img)]
++ wake-check-ip-status
|= [name=path ~]
~& this-is-the-name/name
=+ nam=?~(name !! -.name)
:_ +>.$
[ost %wait `path`[%check-status link ins-img ~] `@da`(add ~s3 now)]~ :: refesh every 10 sec
:_ ~
%- httpreq
:* `path`/check-ip-status/[nam]
~['googleapis' 'www']
`path`/compute/v1/projects/urbcloud/regions/us-central1/addresses/[nam]
%get
%^ mo ['Content-Type' 'application/json' ~]
['Authorization' (cat 3 'Bearer ' access.gce.toke.vat) ~]
~
*quay
==
++ thou-check-ip-status
|= [name=path resp=httr]
~& api-resp/resp
=+ parsed=(rash q:(need r.resp) apex:poja)
!!
::?. =('RESERVED' (need ((ot status/so ~):jo parsed)))
::
++ create-gce
|= [name=@t snap=@t]
~& create-gce-received/snap
=+ src=(cat 3 'compute/v1/projects/urbcloud/zones/us-central1-a/disks/' name)
|= jon=json
=+ ^- [name=@t image=@t number=@ud]
(need ((ot name/so 'instance_img'^so number/ni ~):jo jon))
|- ^- (list move)
?~ number ~
:_ $(number (dec number))
=+ nam=(cat 3 name (scot %ud number))
=+ ^- body=json
%- jobe
:~ name/s/name 'machineType'^s/'zones/us-central1-a/machineTypes/n1-standard-1'
:~ name/s/nam 'machineType'^s/'zones/us-central1-a/machineTypes/n1-standard-1'
:- %disks :- %a :_ ~
(jobe boot/b/%.y type/s/'persistent' source/s/src ~)
%- jobe
:+ 'initializeParams'^`json`(joba 'sourceImage'^s/image)
boot/b/%.y
~
:- 'networkInterfaces' :- %a :_ ~
(joba 'network' `json`[%s 'global/networks/default'])
==
^- move
%- httpreq
:* `path`/create-gce
`(list cord)`~['googleapis' 'www'] `path`/compute/v1/projects/urbcloud/zones/us-central1-a/'instances'
@ -373,80 +428,180 @@ $% [%diff %json json]
~
`quay`[%key access.gce.toke.vat]~
==
::
++ wake
|= [pour-path=path ~]
?+ -.pour-path !!
%refresh-do
:_ +>.$
[list-instances-do]~
%refresh-gce
:_ +>.$
[list-instances-gce]~
%check-status
:_ +>.$
[(ask-disk-status +.pour-path)]~
==
::
++ list-instances-gce
++ thou-create-gce |=([path resp=httr] ~&(resp :_(+>.$ ~)))
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: perform actions on instances (both kinds) ::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++ poke-json :: receive action from client
|= jon=json
^- [(list move) _+>.$]
=+ action=`cloud-command`(need (parse-cloud-command jon))
:_ +>.$
?- -.action
%create-gce [(reserve-ip p.action)]~
%create-do [(create-do p.action)]~
::%create-gce [(create-gce p.action)]
%action [(instance-action [id name act]:action)]~
==
++ instance-action
|= [id=@t name=@t action=droplet-action]
=+ d=(~(got by insts.vat) id)
~| 'can\'t find id'
=+ typ=?~(d !! -.d)
?- typ
%do
=+ ^= meth
?: ?=(%delete -.action)
%delt
[%post (jobe type/s/(convert-do -.action) ?.(?=(%snapshot -.action) ~ [name/s/p.action ~]))]
^- move
=+ ^= req
%- httpreq :*
/do/[-.action]
~[%digitalocean %api]
?:(?=(%delt meth) /v2/droplets/[id] /v2/droplets/[id]/actions)
meth
%^ mo ['Content-Type' 'application/json' ~]
['Authorization' (cat 3 'Bearer ' access.do.toke.vat) ~] ~
*quay
==
req
::
%gce
=+ ^= head-query
:- %^ mo ['Content-Type' 'application/json' ~]
['Authorization' (cat 3 'Bearer ' access.gce.toke.vat) ~] ~
*quay
?- -.action
?(%start %stop %reboot %'snapshot')
=+ end=/compute/v1/projects/urbcloud/zones/us-central1-a/instances/[name]
%- httpreq
:* /gce-act/[-.action] ~['googleapis' 'www']
(welp end [?:(?=(%reboot -.action) 'reset' -.action) ~])
[%post ~]
head-query
==
::
%delete
=+ end=/compute/v1/projects/urbcloud/zones/us-central1-a/instances/[name]
%- httpreq
:* /gce-act/[-.action] ~['googleapis' 'www']
end
%delt
head-query
==
==
==
++ thou-do-act
|= [pax=path resp=httr]
~& [resp act/pax]
:_ +>.$ ~
::
++ thou-gce-act
|= [pax=path resp=httr]
~& [resp act/pax]
:_ +>.$ ~
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: retrieve google instances and images ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++ list-gce
^- (list move)
:+ (list-something-gce /zones/['us-central1-a']/instances)
(list-something-gce /global/snapshots)
~
::
++ list-something-gce
|= endpoint=path
=+ ^= lis
:*
/list-gce
~[%googleapis %www] /compute/v1/projects/urbcloud/zones/['us-central1-a']/'instances'
/list-gce/[-.endpoint]
~[%googleapis %www] (welp /compute/v1/projects/urbcloud endpoint)
%get ~
^- quay
[%'access_token' access.gce.toke.vat]~
==
~! lis
~! +<:httpreq
(httpreq lis)
::
++ receive-list-gce
|= resp=httr
++ thou-list-gce-zones :: instances
|= [pax=path resp=httr]
^- [(list move) _+>.$]
=+ parsed=(rash q:(need r.resp) apex:poja) :: body httr to json
~| 'no list received or bad json'
=+ items=(need ((ot items/(ar some) ~):jo parsed))
=+ ^- ins=(list ,[@t instance])
~| 'bad-json'^items
%+ turn items
|= in=json
=< [id .]
^- instance
:- %gce
%- need
%. in =+ jo
%- ot
:~ name/so id/so status/so 'creationTimestamp'^(su parse-iso8601) ::zone/so
'machineType'^(cu tail-url so)
~| 'bad-json'^items
%+ turn items
|= in=json
=< [id .]
^- instance
:- %gce
%- need
%. in =+ jo
%- ot
:~ name/so id/so status/so 'creationTimestamp'^(su parse-iso8601) ::zone/so
'machineType'^(cu tail-url so)
:: 'networkInterfaces'^parse-ip-gce
==
=+ ^= new
%+ skip ins
|=(a=[@t instance] (~(has by insts.vat) id.a))
==
=. insts.vat
(~(gas by insts.vat) new)
%- mo
%+ weld ins
%+ skip (~(tap by insts.vat)) :: keep non-gce
|= a=[@t instance] ?=(%gce +<.a)
=+ buf=`@da`(add ~s10 now)
:_ +>.$
=+ lis=(~(tap by insts.vat))
:_ (spam (state-to-json (turn lis |=(a=[@t instance] +.a))))
[ost %wait /refresh-gce buf]
++ list-instances-do
=+ liz=(~(tap by insts.vat))
=+ tail=(turn liz |=(a=[@t instance] +.a))
:_ +>.$ ::
:- [ost %wait /refresh-gce buf]
(spam (instance-to-json tail))
::
++ thou-list-gce-global :: imgs
|= [pax=path resp=httr]
^- [(list move) _+>.$]
=+ parsed=(rash q:(need r.resp) apex:poja)
=+ imgz=(need ((ot items/(ar some) ~):jo parsed))
=. images.vat
%- mo
%+ weld
%+ skip (~(tap by images.vat) *(list ,[[@t @t] image]))
|=(a=[[@t @t] image] ?=(%gce ->.a))
%+ turn imgz
|= a=json
=< [[name %gce] .]
^- image
:- %gce
%- need
%. a =+ jo
%- ot
[name/so id/so ~]
:_ +>.$ [(spam `json`(image-to-json `(list image)`(map-to-list images.vat)))]
::
++ wake-refresh-gce |=([path ~] [list-gce +>.$])
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: list digital ocean droplets and images ::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
++ list-do
:+((list-something-do %droplets) (list-something-do %images) ~)
++ list-something-do
|= som=@tas
=+ ^= lis
:~ /list-do
~[%digitalocean %api] /v2/droplets
:~ /list-do/[som]
~[%digitalocean %api] /v2/[som]
%get
(mo ['Content-Type' 'application/json' ~] ['Authorization' (cat 3 'Bearer ' access.do.toke.vat) ~] ~)
==
(httpreq lis)
::
++ receive-list-do
|= resp=httr
++ thou-list-do-droplets
|= [pax=path resp=httr]
^- [(list move) _+>.$]
=+ parsed=(rash q:(need r.resp) apex:poja) :: parse httr to json
~| recieve-list/parsed
=+ dar=(need ((ot droplets/(ar some) ~):jo parsed)) :: reparse ar of insts
=. insts.vat
%- ~(gas by insts.vat)
^- dropz=(list ,[@t instance])
=+ ^- dropz=(list ,[@t instance])
~| bad-json/-.dar
%+ turn dar
|= drp=json ^- [@t instance]
@ -459,66 +614,37 @@ $% [%diff %json json]
=+ jo
%- ot
:~ name/so id/parse-id-text status/so 'created_at'^(su parse-iso8601) ::region/parse-region
image/(ot name/so ~) ::disk/ni
:: networks/parse-ip-do
image/(ot name/so ~) ::disk/ni networks/parse-ip-do
==
=. insts.vat
%- mo
%+ weld dropz
%+ skip (~(tap by insts.vat) *(list ,[@t instance]))
|=(a=[@t instance] ?=(%do +>.$))
=+ buf=`@da`(add ~s10 now)
:_ +>.$
=+ lis=(~(tap by insts.vat) *(list ,[@t instance]))
:_ (spam (state-to-json (turn lis |=(a=[@t instance] +.a))))
[ost %wait /refresh-do buf]
++ thou
|= [pour-path=path resp=httr]
^- [(list move) _+>.$]
?+ -.pour-path ~& pour-path !!
%auth-do
(receive-auth -.pour-path resp)
::
%auth-gce
(receive-auth -.pour-path resp)
::
%list-do
(receive-list-do resp)
%list-gce
(receive-list-gce resp)
::
$?
%delete %reboot %'power_cycle' %shutdown %'power_off'
%'power_on' %'password_reset' %'enable_ipv6' %'enable_private_networking'
%snapshot %upgrade :: add retrieve droplet action
%create-do %create-gce %action-test
==
:_ +>.$ ~
::
?(%create-gce-disk %disk-status)
=+ snap=?~(t.pour-path !! i.t.pour-path)
(disk-status snap resp)
::
%check-status
:_ +>.$ ~[(ask-disk-status +.pour-path)]
::
%pub
:_ +>.$ ~
::
==
++ publish
|= [act=(list speech)]
^- move
=+ ^= spchz
%+ turn act
|= sp=speech
=+ ^= tail
:- ^- audience
:+ :- `partner`[%& our ?+((clan our) !! %czar %court, %duke %porch)]
^- (pair envelope delivery)
[`envelope`[& ~] %pending]
~
~
`statement`[now ~ sp]
^- thought
:- `@`(sham eny tail)
tail
=+ mez=[%talk-command [%publish `(list thought)`spchz]]
[ost %send /pub [our %talk] %poke mez]
:- [ost %wait /refresh-do buf]
%- spam
%- instance-to-json
%+ turn (~(tap by insts.vat) *(list ,[@t instance]))
|=(a=[@t instance] +.a)
::
++ thou-list-do-images
|= [pax=path resp=httr]
=+ parsed=(rash q:(need r.resp) apex:poja)
~| crashed-do-images/parsed
=+ imgz=(need ((ot images/(ar (ot [name/so distribution/so id/no ~])) ~):jo parsed))
=+ ^- images=(list ,[[@t @t] image])
%+ turn imgz
|= [name=@t dist=@t id=@t]
=+ nom=(cat 3 name dist)
[[%do nom] `image`[%do nom id]]
=. images.vat
%- mo
%+ weld images
%+ skip (~(tap by images.vat) *(list ,[[@t @t] image]))
|=(a=[[@t @t] image] ?=(%do ->.a))
:_ +>.$ ~[(spam `json`(image-to-json `(list image)`(map-to-list images.vat)))]
::
++ wake-refresh-do |=([path ~] [list-do +>.$])
--

View File

@ -672,7 +672,7 @@
^- (quip move +>)
~? !=(src.hid our.hid) [%dojo-peer-stranger ost.hid src.hid pax]
:: ?> =(src.hid our.hid)
?< (~(has by hoc) ost.hid)
~? (~(has by hoc) ost.hid) [%dojo-peer-replaced ost.hid pax]
?> =(~ pax)
=< he-abet
%~ he-peer he

View File

@ -1,5 +1,5 @@
:: :: ::
:::: /hoon/hood/ape :: ::
:: :: ::
:::: /hoon/hood/ape :: ::
:: :: ::
/? 314 :: zuse version
/+ sole, talk, helm, kiln, drum :: libraries
@ -53,12 +53,12 @@
++ coup-kiln-spam ::
|= [way=wire saw=(unit tang)]
~? ?=(^ saw) [%kiln-spam-lame u.saw]
[~ +>]
[~ +>]
::
++ coup-drum-phat (wrap take-coup-phat):from-drum
++ diff-sole-effect-drum-phat (wrap diff-sole-effect-phat):from-drum
++ from-lib
|* _[%helm ..$ ,_abet]:*helm-work
|* _[%helm ..$ ,_abet]:(helm-work)
=> .(+< [identity start finish]=+<)
=- [wrap=- *start] :: usage (wrap handle-arm):from-foo
|* handle=_finish
@ -66,9 +66,9 @@
=. +>.handle (start hid (able identity))
(ably (handle +<))
::
++ from-drum (from-lib %drum [..$ ,_se-abet]:*drum-work)
++ from-helm (from-lib %helm [..$ ,_abet]:*helm-work)
++ from-kiln (from-lib %kiln [..$ ,_abet]:*kiln-work)
++ from-drum (from-lib %drum [..$ ,_se-abet]:(drum-work))
++ from-helm (from-lib %helm [..$ ,_abet]:(helm-work))
++ from-kiln (from-lib %kiln [..$ ,_abet]:(kiln-work))
::
++ poke-dill-belt (wrap poke-dill-belt):from-drum
++ poke-helm-init (wrap poke-init):from-helm

View File

@ -1,5 +1,5 @@
:: :: ::
:::: /hoon/oct1/ape :::::: dependencies
:::: /hoon/oct1/ape :::::: dependencies
:: :: ::
/? 310 :: arvo version
/- *sole, *oct1 :: structures

View File

@ -1,5 +1,5 @@
:: :: ::
:::: /hoon/oct2/ape :::::: dependencies
:::: /hoon/oct2/ape :::::: dependencies
:: :: ::
/? 310 :: arvo version
/- *sole, *oct2 :: structures

View File

@ -1,5 +1,5 @@
:: :: ::
:::: /hoon/oct3/ape :::::: dependencies
:::: /hoon/oct3/ape :::::: dependencies
:: :: ::
/? 310 :: arvo version
/- *sole, *oct3 :: structures

View File

@ -1,9 +1,12 @@
:: :: ::
:::: /hoon/talk/app :: ::
:: :: ::
/? 314
/- *talk, *sole
/+ talk, sole
:::: /hoon/talk/app :: ::
:: :: ::
/? 314
/- *talk, *sole
/+ talk, sole
/= talk-doc
/; |=(a=wain (turn a |=(b=cord [%txt "? {(trip b)}"])))
/: /===/pub/doc/talk/help /txt/
::
::::
::
@ -74,6 +77,7 @@
:: ::
++ work :: interface action
$% [%number p=? q=@ud] :: activate by number
[%help ~] :: print usage info
[%join p=(set partner)] ::
[%say p=speech] ::
[%invite p=span q=(list partner)] ::
@ -175,18 +179,14 @@
++ work
%+ knee *^work |. ~+
;~ pose
%+ stag %create
;~ pfix (jest %create)
;~ plug
;~(pfix ace pore)
;~(pfix ;~(plug ace cen) sym)
;~(pfix ace qut)
==
;~ (glue ace) (perk %create ~)
pore
;~(pfix cen sym)
qut
==
::
%+ stag %join
;~(pfix (jest %join) ;~(pfix ace parq))
::
;~((glue ace) (perk %join ~) parq)
;~(plug (perk %help ~) (easy ~))
(stag %number nump)
(stag %target parz)
==
@ -268,7 +268,6 @@
%- ~(gas in *(set partner))
(turn (~(tap by aud)) |=([a=partner *] a))
::
::
++ sh-poss :: passive update
|= lix=(set partner)
=+ sap=(sh-pare lix)
@ -287,7 +286,8 @@
::
++ sh-rend :: print on one line
|= gam=telegram
(sh-pass:(sh-fact %txt ~(tr-line tr man.she gam)) q.q.gam)
=+ lin=~(tr-line tr man.she gam)
(sh-pass:(sh-fact %txt lin) q.q.gam)
::
++ sh-numb :: print msg number
|= num=@ud
@ -789,18 +789,20 @@
%create (create +.job)
%target (target +.job)
%probe (probe +.job)
%help (help)
%say (say +.job)
==
::
++ activate :: from %number
|= gam=telegram
^+ +>+>+>
^+ ..sh-work
~& [%activate gam]
sh-prod(active.she `~(tr-pals tr man.she gam))
::
++ help |=(~ (sh-fact %mor talk-doc)) :: %help
++ join :: %join
|= lix=(set partner)
^+ +>+>+>
^+ ..sh-work
=+ loc=loc.system.she
%^ sh-tell %design man.she
:- ~
@ -816,20 +818,20 @@
::
++ invite :: %invite
|= [nom=span tal=(list partner)]
^+ +>+>+>
^+ ..sh-work
!!
::
++ banish :: %banish
|= [nom=span tal=(list partner)]
^+ +>+>+>
^+ ..sh-work
!!
::
++ create :: %create
|= [por=posture nom=span txt=cord]
^+ +>+>+>
^+ ..sh-work
?: (~(has in stories) nom)
(sh-lame "{(trip nom)}: already exists")
=. +>+>+>
=. ..sh-work
%^ sh-tell %design nom
:- ~
:+ *(set partner)
@ -843,7 +845,7 @@
::
++ number :: %number
|= [rel=? num=@ud]
^+ +>+>+>
^+ ..sh-work
=+ roy=(~(got by stories) man.she)
=. num
?. rel num
@ -855,15 +857,15 @@
::
++ probe :: inquire
|= cuz=station
^+ +>+>+>
^+ ..sh-work
~& [%probe cuz]
+>+>+>
..sh-work
::
++ say :: publish
|= sep=speech
^+ +>+>+>
=^ sir +>+>+> sh-uniq
%= +>+>+>.$
^+ ..sh-work
=^ sir ..sh-work sh-uniq
%= ..sh-work
coz :_ coz
[%publish [[sir sh-whom [now.hid ~ sep]] ~]]
==
@ -1043,7 +1045,6 @@
::
++ ra-coup-repeat ::
|= [[num=@ud her=@p man=span] saw=(unit tang)]
~& [%ra-coup-repeat +<]
(ra-repeat num [%& her man] saw)
::
++ ra-repeat :: remove from outbox
@ -1104,11 +1105,12 @@
~& [%bad-subscribe-story-c i.t.pax]
(ra-evil %talk-no-story)
=+ soy=~(. pa i.t.pax u.pur)
=^ who +>.$ (ra-human her)
=. soy ?.((~(has in vab) %a) soy (pa-watch:soy her))
=. soy ?.((~(has in vab) %x) soy (pa-master:soy her))
=. soy (pa-notify:soy her %hear who)
=. soy ?.((~(has in vab) %f) soy (pa-listen:soy her t.t.pax))
=^ who +>.$ (ra-human her)
pa-abet:(pa-notify:soy her %hear who)
pa-abet:soy
::
++ ra-think :: publish/review
|= [pub=? her=ship tiz=(list thought)]
@ -1391,7 +1393,7 @@
(pa-sauce ost [%quit ~]~)
=+ ^= ruv ^- (unit river)
?: ?=(~ pax)
`[[%ud count] [%da (dec (bex 128))]]
`[[%ud ?:((lth count 64) 0 (sub count 64))] [%da (dec (bex 128))]]
?: ?=([@ ~] pax)
=+ say=(slay i.pax)
?. ?=([~ %$ ?(%ud %da) @] say) ~
@ -1677,7 +1679,6 @@
::
++ coup-repeat ::
|= [way=wire saw=(unit tang)]
~& [%coup-repeat way saw]
%+ etch-repeat [%repeat way] |= [num=@ud src=@p man=span]
ra-abet:(~(ra-coup-repeat ra ost.hid ~) [num src man] saw)
::

View File

@ -1331,8 +1331,8 @@
(deer q.fud r.fud ?-(kay %dead ~, %good [~ s.fud]))
::
%carp
=+ zol=(~(get by olz.weg) s.fud)
?^ zol cock(kay u.zol)
:: =+ zol=(~(get by olz.weg) s.fud)
:: ?^ zol cock(kay u.zol)
=^ neb nys.weg
=+ neb=(~(get by nys.weg) s.fud)
?^ neb [u.neb nys.weg]
@ -1350,7 +1350,7 @@
:: ~& [%carp q.fud s.fud q.neb p.r.neb]
?: =(q.neb p.r.neb)
=: nys.weg (~(del by nys.weg) s.fud)
olz.weg (~(put by olz.weg) s.fud kay)
:: olz.weg (~(put by olz.weg) s.fud kay)
==
(golf p.neb r.neb)
=. +>.$ cock

View File

@ -836,7 +836,8 @@
==
::
++ apply-foreign-update :: apply subscription
|= $: gar=(map aeon tako) :: new ids
|= $: lem=(unit ,@da) :: complete up to
gar=(map aeon tako) :: new ids
let=aeon :: next id
lar=(set yaki) :: new commits
bar=(set blob) :: new content
@ -881,6 +882,7 @@
~
$(yon +(yon))
%= +>.$
lim (max (fall lem lim) lim)
hit.dom hit
let.dom let
hut.ran hut
@ -956,6 +958,8 @@
%nako !>(~|([%harding [&1 &2 &3]:q.r.u.rut] ((hard nako) q.r.u.rut)))
==
?. ?=(%nako p.r.u.rut) +>+.$
=+ rav=`rave`q.u.ruv
?> ?=(%many -.rav)
|- ^+ +>+.^$
=+ nez=[%w [%ud let.dom] ~]
=+ nex=(~(get by haw.u.ref) nez)
@ -964,10 +968,15 @@
=. nak.u.ref `((hard nako) q.q.u.u.nex)
=. +>+.^$
?: =(0 let.dom)
=> (apply-foreign-update (need nak.u.ref))
?>(?=(^ ref) .)
=> (validate-plops [%ud let.dom] bar:(need nak.u.ref))
?>(?=(^ ref) .)
=< ?>(?=(^ ref) .)
%+ apply-foreign-update
?.(?=(%da -.q.q.rav) ~ `p.q.q.rav)
(need nak.u.ref)
=< ?>(?=(^ ref) .)
%^ validate-plops
[%ud let.dom]
?.(?=(%da -.q.q.rav) ~ `p.q.q.rav)
bar:(need nak.u.ref)
%= $
haw.u.ref (~(del by haw.u.ref) nez)
==
@ -1032,11 +1041,12 @@
wake(haw.u.ref (~(put by haw.u.ref) [car cas pax] `p.res))
::
++ validate-plops
|= [cas=case pop=(set plop)]
|= [cas=case lem=(unit ,@da) pop=(set plop)]
^+ +>
=- %_(+>.$ tag [- tag])
=+ lum=(scot %da (fall lem *@da))
:* hen %pass
[%foreign-plops (scot %p who) (scot %p for) syd ~]
[%foreign-plops (scot %p who) (scot %p for) syd lum ~]
%f %exec who [for syd cas] ~ %tabl
^- (list (pair silk silk))
%+ turn (~(tap in pop))
@ -1055,7 +1065,7 @@
==
::
++ take-foreign-plops
|= res=gage
|= [lem=(unit ,@da) res=gage]
^+ +>
?> ?=(^ ref)
?> ?=(^ nak.u.ref)
@ -1072,9 +1082,11 @@
%indirect ~| %plop-indirect-not-implemented !!
==
%^ apply-foreign-update
gar.u.nak.u.ref
let.u.nak.u.ref
[lar.u.nak.u.ref (sa lat)]
lem
gar.u.nak.u.ref
:+ let.u.nak.u.ref
lar.u.nak.u.ref
(sa lat)
::
++ mabe :: maybe fire function
|* [rov=rove fun=$+(@da _+>.^$)]
@ -1568,11 +1580,11 @@
:- -:!>(*arch)
^- arch
=+ ^- descendants=(list (pair path lobe))
:: ~& > %turning
:: =- ~& > %turned -
:: ~& %turning
:: =- ~& %turned -
%+ turn
:: ~& > %skimming
:: =- ~& > %skimmed -
:: ~& %skimming
:: =- ~& %skimmed -
%+ skim (~(tap by (~(del by q.yak) pax)))
|= [paf=path lob=lobe]
=(pax (scag len paf))
@ -2400,8 +2412,7 @@
:_ ..^$(fat.ruf (~(put by fat.ruf) p.q.hic [hen ~]))
=+ [bos=(sein p.q.hic) can=(clan p.q.hic)]
%- zing ^- (list (list move))
:~ ~& [%bos bos p.q.hic]
?: =(bos p.q.hic) ~
:~ ?: =(bos p.q.hic) ~
[hen %pass / %c %merg p.q.hic %base bos %kids %init]~
::
~
@ -2697,12 +2708,13 @@
[mos ..^$]
::
%foreign-plops
?> ?=([@ @ @ ~] t.tea)
?> ?=([@ @ @ @ ~] t.tea)
=+ our=(slav %p i.t.tea)
=+ her=(slav %p i.t.t.tea)
=* syd i.t.t.t.tea
=+ lem=(slav %da i.t.t.t.t.tea)
=+ zax=(do now hen [our her] syd ruf)
=+ zat=(take-foreign-plops:zax q.q.hin)
=+ zat=(take-foreign-plops:zax ?~(lem ~ `lem) q.q.hin)
=^ mos ruf
=+ zot=abet.zat
[-.zot (posh her syd +.zot ruf)]
@ -2729,7 +2741,7 @@
::
%mere
?: ?=(%& -.p.+.q.hin)
~& 'inital merge succeeded'
~& 'initial merge succeeded'
[~ ..^$]
~> %slog.
:^ 0 %rose [" " "[" "]"]

View File

@ -159,7 +159,7 @@
|= [err=@tas tac=(list tank)]
=+ ^= wol ^- wall
:- (trip err)
(zing (turn tac |=(a=tank (~(win re a) [0 wid]))))
(zing (turn (flop tac) |=(a=tank (~(win re a) [0 wid]))))
|- ^+ +>.^$
?~ wol +>.^$
$(wol t.wol, +>.^$ (from %out (tuba i.wol)))
@ -285,12 +285,7 @@
[%c %mere *]
?: ?=(%& -.p.sih)
+>.$
~| %dill-mere-fail
~| p.p.p.sih
|-
?~ q.p.p.sih !!
~> %mean.|.(i.q.p.p.sih) :: pull ford fail into stack trace
$(q.p.p.sih t.q.p.p.sih)
(mean >%dill-mere-fail< >p.p.p.sih< q.p.p.sih)
::
[%g %onto *]
:: ~& [%take-gall-onto +>.sih]

View File

@ -59,7 +59,6 @@
[%si ~] :: response done
[%of p=ixor q=$|(~ whir-of)] :: associated view
[%on p=span:,@uvH ~] :: dependency
[%to p=ixor q=span:ship r=term s=wire] :: associated app
== ::
++ whir-of ,[p=span:ship q=term r=wire] :: path in dock
-- ::
@ -179,7 +178,7 @@
|= [wid=@u tan=tang]
^- tape
=+ rolt=|=(a=wall `tape`?~(a ~ :(weld i.a "\0a" $(a t.a))))
(rolt (turn tan |=(a=tank (rolt (wash 0^wid a)))))
(rolt (turn (flop tan) |=(a=tank (rolt (wash 0^wid a)))))
::
::
++ add-cookies
@ -188,7 +187,7 @@
=+ cuh=(turn `(list ,@t)`cug |=(a=@t set-cookie/a))
hit(q (weld cuh q.hit))
::
++ add-poll :: inject dependency
++ inject :: inject dependency
|= [dep=@uvH max=[[%html ~] [[%head ~] hed=marl] [[%body ~] tal=marl] ~]]
^- manx
=: hed.max :_(hed.max ;meta(charset "utf-8", urb_injected "");)
@ -198,7 +197,7 @@
max(hed :_(hed.max ;script@"/~/on/{<dep>}.js"(urb_injected "");))
::
++ add-json :: inject window.urb
|= [urb=json jaz=cord] ^- cord
|= [urb=json jaz=cord] ^- cord
=- (cat 3 (crip -) jaz)
"""
var _urb = {(pojo urb)}
@ -222,7 +221,6 @@
|= tan=tang
;html
;head
;meta(charset "utf-8");
;link(rel "stylesheet", href "/home/lib/base.css");
;title: server error
==
@ -688,7 +686,7 @@
%diff
?> ?=([%of @ ^] tee)
?. ?=(%json p.p.cuf)
::~> %slog.`%*(. >[%backing p.p.cuf %q-p-cuf]< &3.+> (sell q.p.cuf))
~> %slog.`%*(. >[%backing p.p.cuf %q-p-cuf]< &3.+> (sell q.p.cuf))
(back tee %json p.cuf)
(get-rush:(ire-ix p.tee) q.tee ((hard json) q.q.p.cuf))
::
@ -744,12 +742,6 @@
=* cay p.q.sih
?> ?=(%json p.cay) :: XX others
((hard json) q.q.cay)
::
[%to ^]
?: ?=(%| -.q.sih)
(mean-json 500 ~ %cast-fail p.q.sih)
~| tee
(new-mess:(ire-ix p.tee) [(slav %p q.tee) r.tee] s.tee p.q.sih)
::
[%at ^]
?. ?=([%& %js ^] q.sih)
@ -772,7 +764,7 @@
=- `silk`[%cast %mime %done ~ cay(q.q -)]
?+ p.cay q.q.cay :: inject dependency long-poll
%urb =| urb=[[%html ~] [[%head ~] marl] [[%body ~] manx marl] ~]
.*(.(urb q.q.cay) !=((add-poll p.sih urb)))
.*(.(urb q.q.cay) !=((inject p.sih urb)))
==
~| q.q.cay
=+ ((hard ,[mit=mite rez=octs]) q.q.cay)
@ -816,7 +808,7 @@
|= [sas=@ud dep=@uvH mez=tang]
^+ +>
:: (back ha/~ dep %tang !>(mez)) ::tang->urb chain may be source of failure
(give-html sas ~ (add-poll dep (render-tang mez)))
(give-html sas ~ (inject dep (render-tang mez)))
::
++ give-html
|= [sas=@ud cug=(list ,@t) max=manx]
@ -1127,10 +1119,8 @@
%mess
:- %|
=^ orx ..ya ?:(is-anon new-view:for-client [(need grab-oryx) ..ya])
=+ [vew=(ire-ix (oryx-to-ixor orx)) cay=[%json !>(`json`s.hem)]]
?: ?=(%json q.hem) ((teba new-mess.vew) p.hem r.hem cay)
%+ back to/[(oryx-to-ixor orx) (scot %p p.p.hem) q.p.hem r.hem]
[q.hem cay]
=+ vew=(ire-ix (oryx-to-ixor orx))
((teba new-mess.vew) p.hem r.hem q.hem %json !>(`json`s.hem))
::
%poll
?: ?=([~ %js] p.pok) :: XX treat non-json cases?
@ -1375,12 +1365,12 @@
[+(p.eve) (~(put by q.eve) p.eve a)]
::
++ new-mess
|= [a=dock b=wire c=cage] ^+ ..ix
(hurl-note [a b] [%g %deal [him -.a] +.a %poke c])
|= [a=dock b=wire c=mark d=cage] ^+ ..ix
(hurl-note [a b] [%g %deal [him -.a] +.a %punk c d])
::
++ add-subs
|= [a=dock %json b=wire c=path] ^+ ..ix
(hurl-note [a b] [%g %deal [him -.a] +.a %peer c])
(hurl-note [a b] [%g %deal [him -.a] +.a %peel %json c])
::
++ del-subs :: XX per path?
|= [a=dock %json b=wire c=path] ^+ ..ix

View File

@ -6,7 +6,6 @@
=> =~
:: structures
|%
::
++ gift gift-ford :: out result <-$
++ heel path :: functional ending
++ kiss kiss-ford :: in request ->$
@ -57,7 +56,7 @@
++ calx :: concrete cache line
$% [%hood p=calm q=(pair beam cage) r=hood] :: compile
[%bake p=calm q=(trel mark beam heel) r=(unit vase)]:: load
[%lilt p=calm q=arch r=(jug mark mark)] :: translation graph
[%lilt p=calm q=beak r=(jug mark mark)] :: translation graph
[%slit p=calm q=[p=type q=type] r=type] :: slam type
[%slim p=calm q=[p=type q=twig] r=(pair type nock)]:: mint
[%slap p=calm q=[p=vase q=twig] r=vase] :: compute
@ -221,6 +220,7 @@
?- -.+.sih
%writ
?~ p.sih +>.$
:: ~& writ/tea
=+ [dap=(~(got by deh.bay) dep) bem=`beam`[bek sup]]
=- ?~(dop con con(deh.bay (~(put by deh.bay) dep dop)))
^- [dop=$|(~ _dap) con=_+>.$]
@ -335,6 +335,11 @@
%2 nuf
%1 nuf
%0
:: ~& :- %clef-new
:: ?+ sem `@tas`sem
:: %hood [%hood (tope &1.q.q.hoc)]
:: %bake [%bake `mark`&1.q.q.hoc (tope &2.q.q.hoc)]
:: ==
:- p=(came p.nuf `calx`[sem `calm`[now p.q.nuf] q.q.hoc q.q.nuf])
q=q.nuf
==
@ -379,7 +384,7 @@
%1 q.nuf
%2 [%2 p=(grom `_p.q.nuf`p.q.hoc p.q.nuf) q=q.q.nuf]
%0 [%0 p=(grom `_p.q.nuf`p.q.hoc p.q.nuf) q=q.q.nuf]
== ==
== ==
::
++ coup :: toon to bolt
|= cof=cafe
@ -533,13 +538,13 @@
++ fade :: compile to hood
|= [cof=cafe for=mark bem=beam]
^- (bolt hood)
%+ cool |.(leaf/"ford: fade {<[(tope bem)]>}")
:: %+ cool |.(leaf/"ford: fade {<[(tope bem)]>}")
%+ cope (cope (make cof [%bake for bem ~]) furl)
|= [cof=cafe cay=cage]
%+ (clef %hood) (fine cof bem(r [%ud 0]) cay)
^- (burg (pair beam cage) hood)
|= [cof=cafe bum=beam cay=cage]
:: ~& fade/clef-miss/bem
:: ~& fade/clef-miss/bem
=+ rul=(fair bum)
?. ?=(@ q.q.cay)
(flaw cof ~)
@ -551,7 +556,7 @@
++ fang :: protocol door
|= [cof=cafe for=mark]
^- (bolt vase)
%+ cope (make cof [%core bek /[for]/mar])
%+ cope (make cof [%core (norm ska bek /[for]/mar)])
;~(cope furl feel)
::
++ fair :: hood parsing rule
@ -835,7 +840,9 @@
|= [cof=cafe arc=arch]
?^ q.arc
%+ (flux some) cof
|=([cof=cafe arg=heel] (cope (liar cof bem) (lake for)))
|= [cof=cafe arg=heel] ^- (bolt vase)
%+ cool |.(leaf/"ford: load {<for>} {<(tope bem)>}")
(cope (liar cof bem) (lake for))
?. (~(has by r.arc) %hook)
(flue cof)
%+ cope (lend cof bem(s [%hook s.bem]))
@ -843,7 +850,8 @@
?~ q.arc
(flue cof)
%+ (flux some) cof
|= [cof=cafe arg=heel]
|= [cof=cafe arg=heel] ^- (bolt vase)
%+ cool |.(leaf/"ford: hook {<for>} {<(tope bem)>}")
%+ cope (fade cof %hook bem)
|= [cof=cafe hyd=hood]
(cope (abut:(meow bem arg) cof hyd) (lake for))
@ -908,7 +916,7 @@
?~ von
[p=*cafe q=[%1 [[%x bem ~] ~ ~]]]
?~ u.von
(flaw cof leaf/"lear: file unavailable" (smyt (tope bem)) ~)
(flaw cof leaf/"file unavailable" (smyt (tope bem)) ~)
(fine cof %& u.u.von)
::
++ lend :: load arch
@ -917,7 +925,7 @@
=+ von=(save ~ %cy bem)
?~ von [p=cof q=[%1 [%y bem ~] ~ ~]]
%+ flag (norm ska bem)
(fine cof ((hard arch) q.q:(need u.von)))
(fine cof ?>(?=([~ %arch ^] u.von) ((hard arch) q.q.u.u.von)))
::
++ liar :: load vase
|= [cof=cafe bem=beam]
@ -926,7 +934,7 @@
?~ von
[p=*cafe q=[%1 [[%x bem ~] ~ ~]]]
?~ u.von
(flaw cof leaf/"liar: file unavailable" (smyt (tope bem)) ~)
(flaw cof leaf/"file not found" (smyt (tope bem)) ~)
(fine cof q.u.u.von)
::
++ lily :: translation targets
@ -937,13 +945,14 @@
::
++ lilt
|= cof=cafe ^- (bolt (jug mark mark))
%+ (clef %lilt) (fine cof bek)
^- (burg beak (jug mark mark))
|= [cof=cafe bek=beak]
=. ^bek bek
%+ cope (lend cof [bek /mar])
|= [cof=cafe arc=arch]
%+ (clef %lilt) (fine cof arc)
|= [cof=cafe arc=arch]
:: =- =+((cope - |=([cafe lil=(jug mark mark)] ~&(lil=lil (flue cof)))) +<)
=+ all=(~(tap by r.arc))
~! all
=+ all=(~(tap by r.arc))
|- ^- (bolt (jug mark mark))
?~ all (flue cof)
%+ cope $(cof cof, all t.all)
@ -999,7 +1008,6 @@
%+ cope ((~(got by mal) i.wuy) cof arg)
|= [cof=cafe hoc=vase]
(cope (lope cof i.wuy t.wuy hoc) (flux some))
::
++ lime :: load beam
|= [cof=cafe for=mark bem=beam arg=heel]
=+ [mob=bem mer=(flop arg)]
@ -1069,7 +1077,7 @@
++ mail :: cached mint
|= [cof=cafe sut=type gen=twig]
^- (bolt (pair type nock))
%+ (clef %slim) (fine cof sut gen)
%+ (clef %slim) (fine cof sut gen)
|= [cof=cafe sut=type gen=twig]
=+ puz=(mule |.((~(mint ut sut) [%noun gen])))
?- -.puz
@ -1088,7 +1096,6 @@
++ make :: reduce silk
|= [cof=cafe kas=silk]
^- (bolt gage)
:: ~& [%make (,@tas -.kas)]
?- -.kas
^
%. [cof p.kas q.kas]
@ -1103,17 +1110,17 @@
==
::
%bake
:: ~& > [p.kas (tope q.kas)]
%+ cool |.(leaf/"ford: bake {<p.kas>} {<(tope q.kas)>}")
:: ~& > [p.kas (tope q.kas)]
:: %+ cool |.(leaf/"ford: bake {<p.kas>} {<(tope q.kas)>}")
%+ cope (lima cof p.kas q.kas r.kas)
|= [cof=cafe vux=(unit vase)]
?~ vux
(flaw cof leaf/"bake failed" (smyt (tope q.kas)) ~)
(flaw cof leaf/"file not found" (smyt (tope q.kas)) ~)
(fine cof [%& p.kas u.vux])
::
%boil
^- (bolt gage)
:: %+ cool |.(leaf/"ford: boil {<p.kas>} {<(tope q.kas)>} {<r.kas>}")
%+ cool |.(leaf/"ford: boil {<p.kas>} {<(tope q.kas)>} {<r.kas>}")
%+ cope (lamp cof q.kas)
|= [cof=cafe bem=beam]
%+ cope (lime cof p.kas bem r.kas)
@ -1673,8 +1680,9 @@
~
::
++ load :: highly forgiving
:: |= old=axle
:: ..^$(+>- old)
|= old=axle
=. pol.old (~(run by pol.old) |=(baby +<(jav ~)))
..^$(+>- old)
::=. old
:: ?. ?=([%0 *] old) old :: remove at 1
:: :- %1
@ -1683,13 +1691,13 @@
:: ?> ?=([n=[p=* q=[tad=* dym=* deh=* jav=*]] l=* r=*] +.old)
:: :- [p.n.+.old [tad.q.n.+.old dym.q.n.+.old deh.q.n.+.old ~]]
:: [$(+.old l.+.old) $(+.old r.+.old)]
|= old=*
=+ lox=((soft axle) old)
^+ ..^$
?~ lox
~& %ford-reset
..^$
..^$(+>- u.lox)
::|= old=*
::=+ lox=((soft axle) old)
::^+ ..^$
::?~ lox
:: ~& %ford-reset
:: ..^$
::..^$(+>- u.lox)
::
++ scry
|= [fur=(unit (set monk)) ren=@tas who=ship syd=desk lot=coin tyl=path]

View File

@ -175,10 +175,12 @@
++ mo-boon :: complete old boot
|= [dap=dude byk=beak dep=@uvH gux=gage]
^+ +>
?. (~(has by bum) dap)
=+ sut=(~(get by bum) dap)
?~ sut
~& [%gall-old-boon dap]
+>
=. +> (mo-bold byk dap dep)
+>.$
=. bum (~(put by bum) dap u.sut(byk byk))
=. +>.$ (mo-bold byk dap dep)
?- -.gux
%tabl ~|(%made-tabl !!)
%| (mo-give %onto %| p.gux)
@ -216,9 +218,11 @@
=^ num +>.$ (mo-bale him)
=+ ^= roc ^- rook
?- -.q.caz
%peel !!
%poke [%m p.p.q.caz q.q.p.q.caz]
%pull [%u ~]
%puff !!
%punk !!
%peer [%s p.q.caz]
==
%+ mo-pass
@ -307,6 +311,25 @@
?> ?=([%f %made *] sih)
?> ?=([@ @ @ @ ~] t.pax)
(mo-boon i.t.pax (mo-chew t.t.pax) +>.sih)
::
%pel :: translated peer
?> ?=([@ @ ~] t.pax)
=+ :* mar=i.t.pax
dap=i.t.t.pax
==
?: ?=([%f %made *] sih)
?- -.q.+.sih
%tabl ~|(%made-tabl !!)
%| ~& [%mo-cyst-fail p.q.+>.sih] :: XX better errors pls
(mo-give %unto %quit ~) ::
%& (mo-give %unto %diff p.q.+>.sih)
==
?> ?=([%g %unto *] sih)
?. ?=(%diff -.+>.sih)
(mo-give %unto +>.sih)
%+ mo-pass
[%sys pax]
[%f %exec our (mo-beak dap) ~ %cast mar %done ~ `cage`+>+.sih]
::
%red :: diff ack
?> ?=([@ @ @ ~] t.pax)
@ -372,6 +395,14 @@
==
::
%way :: outbound request
?: ?=([%a %went *] sih) :: XX AWFUL
~& %way-went-bug
?> ?=([@ ~] t.pax)
%- mo-awed
:* p.+>.sih
(?(%peer %poke %pull) i.t.pax)
~
==
?> ?=([%a %woot *] sih)
?> ?=([@ ~] t.pax)
%- mo-awed
@ -435,13 +466,13 @@
^+ +>
?. (~(has by bum) dap) +>
=+ suf=(~(get by wub) dap)
=+ neh=hen
?~ suf +>.$
|- ^+ +>.^$
?: =(~ kys.u.suf)
+>.^$(hen neh, wub (~(del by wub) dap))
+>.^$(wub (~(del by wub) dap))
=^ lep kys.u.suf [p q]:~(get to kys.u.suf)
$(+>.^$ (mo-clip(hen p.lep) dap q.lep r.lep))
$(moz :_(moz [p.lep %slip %g %deal [q.q.q.lep our] dap r.lep]))
:: $(+>.^$ (mo-clip(hen p.lep) dap q.lep r.lep))
::
++ mo-beak :: build beak
|= dap=dude
@ -454,6 +485,14 @@
%+ mo-pass
[%sys %val (scot %p q.q.pry) dap ~]
[%f %exec our (mo-beak dap) ~ %vale p.cub our q.cub]
?: ?=(%punk -.cub)
%+ mo-pass
[%sys %val (scot %p q.q.pry) dap ~]
[%f %exec our (mo-beak dap) ~ %cast p.cub %done ~ q.cub]
?: ?=(%peel -.cub)
%+ mo-pass
[%sys %pel p.cub dap ~]
[%g %deal [q.q.pry our] dap %peer q.cub]
ap-abet:(ap-club:(ap-abed:ap dap pry) cub)
::
++ mo-club :: local action
@ -580,9 +619,11 @@
|= cub=club
^+ +>
?- -.cub
%peel !!
%poke (ap-poke +.cub)
%peer (ap-peer +.cub)
%puff !!
%punk !!
%pull ap-pull
%pump ap-fall
==
@ -877,9 +918,9 @@
^+ +>
=+ cug=(ap-find /lame)
?~ cug
=. why (turn why |=(a=tank rose/[~ "! " ~]^[a]~))
=. why [>%ap-lame< >wut< (turn why |=(a=tank rose/[~ "! " ~]^[a]~))]
~& [%ap-lame dap]
~> %slog.`%*(. >[%ap-lame wut %why]< |2.+> why)
~> %slog.`%*(. >[%wh %y]< +> (flop why))
+>.$
=^ cam +>.$
%+ ap-call q.u.cug
@ -924,11 +965,11 @@
|= [pax=path cuf=cuft]
^+ +>
?- -.cuf
%coup (ap-punk q.q.pry %coup +.pax `!>(p.cuf))
%coup (ap-take q.q.pry %coup +.pax `!>(p.cuf))
%diff (ap-diff q.q.pry pax p.cuf)
%doff !!
%quit (ap-punk q.q.pry %quit +.pax ~)
%reap (ap-punk q.q.pry %reap +.pax `!>(p.cuf))
%quit (ap-take q.q.pry %quit +.pax ~)
%reap (ap-take q.q.pry %reap +.pax `!>(p.cuf))
==
::
++ ap-prep :: install
@ -981,12 +1022,12 @@
~& [%ap-kill dap ost]
(ap-give:ap-pull %quit ~)
::
++ ap-punk :: non-diff gall take
++ ap-take :: non-diff gall take
|= [her=ship cog=term pax=path vux=(unit vase)]
^+ +>
=+ cug=(ap-find cog pax)
?~ cug
~& [%ap-punk-none cog pax]
~& [%ap-take-none cog pax]
+>.$
=^ cam +>.$
%+ ap-call q.u.cug
@ -1093,7 +1134,7 @@
(mo-come:(mo-abed:mo q.p.q.hic hen) p.p.q.hic q.q.hic)
::
%init
~& [%gall-init p.q.hic]
:: ~& [%gall-init p.q.hic]
[~ ..^$(pol.all (~(put by pol.all) p.q.hic [hen ~ ~ ~]))]
::
%rote

View File

@ -155,7 +155,7 @@
++ rule |=(tub=nail `edge`[p.tub ~ ~ tub]) :: parsing rule
++ span ,@ta :: text-atom (ASCII)
++ spot ,[p=path q=pint] :: range in file
++ tang (list tank) :: general error
++ tang (list tank) :: bottom-first error
++ tank $% [%leaf p=tape] :: printing formats
$: %palm :: backstep list
p=[p=tape q=tape r=tape s=tape] ::
@ -1852,7 +1852,7 @@
|= [a=?(~ @u) b=tang] ^+ same :: .= ~&(%a 1)
?~(b same ~>(%slog.[a i.b] $(b t.b))) :: ((slog `~[>%a<]) 1)
::
++ mean |=(a=tang (fear a |.(!!))) :: deify stack trace
++ mean |=(a=tang (fear (flop a) |.(!!))) :: deify stack trace
++ fear :: insert user mean
|* [a=tang _|?(**)]
^+ (+<+)
@ -4023,7 +4023,7 @@
[10 [b=* c=*] d=*]
=+ ben=$(fol c.fol)
?. ?=(%0 -.ben) ben
?: ?=(?(%hunk %lose %mean %spot) b.fol)
?: ?=(?(%hunk %hand %lose %mean %spot) b.fol)
$(fol d.fol, tax [[b.fol p.ben] tax])
$(fol d.fol)
::
@ -4064,6 +4064,7 @@
?+ -.i.p.ton rex
%hunk [(tank +.i.p.ton) rex]
%lose [[%leaf (rip 3 (,@ +.i.p.ton))] rex]
%hand :_(rex [%leaf (scow %p (mug +.i.p.ton))])
%mean :_ rex
?@ +.i.p.ton [%leaf (rip 3 (,@ +.i.p.ton))]
=+ mac=(mack +.i.p.ton +<.i.p.ton)
@ -4154,7 +4155,7 @@
|* [hel=(list) hev=(list)]
|- ^+ hev
=+ ^= sev
=+ [inx=0 sev=*(map ,@t (list ,@ud))]
=+ [inx=0 sev=*(map ,_i.-.hev (list ,@ud))]
|- ^+ sev
?~ hev sev
=+ guy=(~(get by sev) i.hev)
@ -6442,7 +6443,7 @@
:- %mean
=+ fek=~(feck ap p.gen)
?^ fek [%dtzz %tas u.fek]
[%brdt [%cnhp [%cnzy %cain] [%zpgr p.gen] ~]]
[%brdt [%cnhp [%cnzy %cain] [%zpgr [%tsgr [~ 3] p.gen]] ~]]
q.gen
::
[%sgcb *] [%sggr [%mean [%brdt p.gen]] q.gen]
@ -10083,7 +10084,6 @@
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::: :::::: Postface ::::::
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
~& %post-start
=+ pit=`vase`!>(.) ::
=+ bud=pit :: becomes tang
=+ vil=(viol p.bud) :: cached reflexives

View File

@ -2540,12 +2540,12 @@
:::: %gall
::
++ club :: agent action
$% :: [%peel p=mark q=path] :: translated peer
$% [%peel p=mark q=path] :: translated peer
[%peer p=path] :: subscribe
[%poke p=cage] :: apply
[%puff p=mark q=noun] :: unchecked poke
[%pull ~] :: unsubscribe
:: [%punk p=mark q=cage] :: translated poke
[%punk p=mark q=cage] :: translated poke
[%pump ~] :: pump yes/no
== ::
++ cuft :: internal gift

View File

@ -1,5 +1,5 @@
:: :: ::
:::: /hoon/drum/lib :: ::
:::: /hoon/drum/lib :: ::
:: :: ::
/? 310 :: version
!: :: ::
@ -65,7 +65,7 @@
?: =(%pawn myr)
[[%base %dojo] ~]
?: =(%earl myr) ~
[[%home %dojo] [%home %talk] ~]
[[%home %talk] [%home %dojo] ~]
::
++ deft-fish :: default connects
|= our=ship
@ -76,8 +76,8 @@
[[our %dojo] ~]
?: =(%earl myr)
=+ dad=(sein our)
[[dad %dojo] [dad %talk] ~]
[[our %dojo] [our %talk] ~]
[[dad %talk] [dad %dojo] ~]
[[our %talk] [our %dojo] ~]
::
++ deft-mast :: default master
|= our=ship
@ -155,7 +155,7 @@
(most ;~(plug com ace) sp-gill)
%+ cook
|= a=ship
[[a %dojo] [a %talk] ~]
[[a %talk] [a %dojo] ~]
;~(pfix sig fed:ag)
==
::
@ -222,7 +222,7 @@
?~ saw +>
=+ gyl=(drum-phat way)
?: (se-aint gyl) +>.$
~& [%drum-coup-fail src ost gyl u.saw]
=. u.saw :_(u.saw >[%drum-coup-fail src ost gyl]<)
(se-dump:(se-drop & gyl) u.saw)
::
++ take-onto ::
@ -366,7 +366,7 @@
|= tac=(list tank)
^+ +>
?. se-ably (se-talk tac)
=+ wol=`wall`(zing (turn tac |=(a=tank (~(win re a) [0 edg]))))
=+ wol=`wall`(zing (turn (flop tac) |=(a=tank (~(win re a) [0 edg]))))
|- ^+ +>.^$
?~ wol +>.^$
$(wol t.wol, +>.^$ (se-blit %out (tuba i.wol)))
@ -791,7 +791,7 @@
::
++ ta-tan :: print tanks
|= tac=(list tank)
=+ wol=`wall`(zing (turn tac |=(a=tank (~(win re a) [0 edg]))))
=+ wol=`wall`(zing (turn (flop tac) |=(a=tank (~(win re a) [0 edg]))))
|- ^+ +>.^$
?~ wol +>.^$
$(wol t.wol, +>+>.^$ (se-text i.wol))

View File

@ -138,7 +138,6 @@
=< abet
%- emil(bur ~)
:~ [%cash /helm p.u.bur q.u.bur u.wil]
~& [%unsyncing our %base (sein our) %kids]
[%poke /helm [our %hood] %hood-unsync %base (sein our) %kids]
==
::

View File

@ -106,9 +106,7 @@
::
++ do-info
|= [mez=tape pax=path tor=toro]
=+ syd=q:(need (tome pax))
=- abet:abet:(spam:(work syd) leaf/mez ~)
(emit %info /kiln our tor)
abet:(emit:(spam leaf/mez ~) %info /kiln our tor)
::
++ poke-rm |=(a=path (do-info "removed" a (fray a)))
++ poke-cp
@ -184,8 +182,9 @@
==
::
++ start
=. . %- spam
[leaf/"activated sync from {<sud>} on {<her>} to {<syd>}" ~]
:: XX remove feedback for demo
:: =. . %- spam
:: [leaf/"activated sync from {<sud>} on {<her>} to {<syd>}" ~]
%- blab :_ ~
:* ost %warp
/kiln/sync/[syd]/(scot %p her)/[sud]

View File

@ -1,9 +0,0 @@
|% ++ mean |=(a=tang (mean-wrap a |.(!!)))
++ mean-wrap
|* [a=tang _|?(**)]
^+ (+<+)
=> .(a `tang`a)
?~ a (+<+)
~> %mean.|.(i.a)
$(a t.a)
--

View File

@ -1,10 +1,10 @@
:: :: ::
:::: /hoon/oct1/lib :: :: dependencies
:::: /hoon/oct1/lib :::::: dependencies
:: :: ::
/? 310 :: arvo version
/- *oct1 :: structures
:: :: ::
:::: :: :: semantics
:::: :::::: semantics
!: :: ::
|% ::
++ icon |=(? ?:(+< 'X' 'O')) :: display at

View File

@ -1,12 +1,12 @@
:: :: ::
:::: /hoon/oct2/lib :: :: dependencies
:::: /hoon/oct2/lib :::::: dependencies
:: :: ::
/? 310 :: arvo version
/- *oct2 :: structures
:: :: ::
:::: :: :: semantics
:::: :::::: semantics
!: :: ::
|%
|% ::
++ icon |=(? ?:(+< 'X' 'O')) :: display at
++ bo :: per board
|_ bud=board ::

View File

@ -1,12 +1,12 @@
:: :: ::
:::: /hoon/oct3/lib :: :: dependencies
:::: /hoon/oct3/lib :::::: dependencies
:: :: ::
/? 310 :: arvo version
/- *oct3 :: structures
:: :: ::
:::: :: :: semantics
:::: :::::: semantics
!: :: ::
|%
|% ::
++ icon |=(? ?:(+< 'X' 'O')) :: display at
++ bo :: per board
|_ bud=board ::

View File

@ -19,16 +19,14 @@
::
++ said :: app message
|= [our=@p dap=term now=@da eny=@uvI mes=(list tank)]
:: ~> %slog.`(sell (slap !>(.) tsgl/[cnzy/'envelope' cnzz//[`1]/thought])) :: XX fails
:- %talk-command
^- command
:- %publish
|- ^- (list thought)
?~ mes ~
((slog 0 mes) ~)
:: :_ $(mes t.mes, eny (sham eny mes))
:: ^- thought
:: :+ (shaf %thot eny)
:: [[[%& our (main our)] [*envelope %pending]] ~ ~]
:: [now *bouquet [%app dap (crip ~(ram re i.mes))]]
:_ $(mes t.mes, eny (sham eny mes))
^- thought
:+ (shaf %thot eny)
[[[%& our (main our)] [*envelope %pending]] ~ ~]
[now *bouquet [%app dap (crip ~(ram re i.mes))]]
--

16
base/mar/cloud-auth.hoon Normal file
View File

@ -0,0 +1,16 @@
:: this mark is used to receive incoming oauth2 tokens that we use to poke our %gall server
::
:::: /hook/door/do-auth/mar
::
/? 310
!:
|_ cod=cord
::
++ grab :: converter arm
|%
++ noun ,@t :: clam from noun
++ json (cork (ot authcode/so platform/so ~):jo need) :: (need (so:jo jon))
--
--

View File

@ -0,0 +1,16 @@
:: this mark is used to receive incoming oauth2 tokens that we use to poke our %gall server
::
:::: /hook/door/do-auth/mar
::
/? 310
!:
|_ cod=cord
::
++ grab :: converter arm
|%
++ noun ,@t :: clam from noun
++ json (cork (ot authcode/so platform/so ~):jo need) :: (need (so:jo jon))
--
--

View File

@ -0,0 +1,9 @@
!:
|_ cod=cord
::
++ grab :: converter am
|%
++ noun ,@t :: clam from noun
++ json (cork (ot secret/so platform/so ~):jo need) :: (need (so:jo jon))
--
--

View File

@ -0,0 +1,9 @@
!:
|_ cod=cord
::
++ grab :: converter am
|%
++ noun ,@t :: clam from noun
++ json (cork (ot secret/so platform/so ~):jo need) :: (need (so:jo jon))
--
--

View File

@ -8,8 +8,34 @@
++ grow :: convert to
|%
++ mime `^mime`[/text/hoon (taco own)] :: convert to %mime
++ elem ;div:(pre:"{(trip own)}") :: convert to %html
++ hymn ;html:(head:title:"Source" "+{elem}")
++ elem :: convert to %html
;div:pre(urb_codemirror ""):"{(trip own)}"
:: =+ gen-id="src-{<`@ui`(mug own)>}"
:: ;div
:: ;textarea(id "{gen-id}"):"{(trip own)}"
:: ;script:"""
:: CodeMirror.fromTextArea(
:: window[{<gen-id>}],
:: \{lineNumbers:true, readOnly:true}
:: )
:: """
:: ==
++ hymn
:: ;html:(head:title:"Source" "+{elem}")
;html
;head
;title:"Source"
;script@"//cdnjs.cloudflare.com/ajax/libs/codemirror/4.3.0/codemirror.js";
;script@"/{(trip &2:%)}/lib/syntax/hoon.js";
;link(rel "stylesheet", href "//cdnjs.cloudflare.com/ajax/libs/".
"codemirror/4.3.0/codemirror.min.css");
;link/"/{(trip &2:%)}/lib/syntax/codemirror.css"(rel "stylesheet");
==
;body
;textarea#src:"{(trip own)}"
;script:'CodeMirror.fromTextArea(src, {lineNumbers:true, readOnly:true})'
==
==
++ txt
(lore (cat 3 own '\0a'))
--

View File

@ -2,8 +2,8 @@
:::: /hoon/httr/mar
::
/? 314
!:
|_ hit=httr
::
++ grow |% ++ wall (turn wain trip)
++ wain (lore cord)
++ json (need (poja cord))

View File

@ -28,7 +28,7 @@
|= [wid=@u tan=tang]
^- tape
=+ rolt=|=(a=wall `tape`?~(a ~ ?~(t.a i.a :(weld i.a "\0a" $(a t.a)))))
(rolt (turn tan |=(a=tank (rolt (wash 0^wid a)))))
(rolt (turn (flop tan) |=(a=tank (rolt (wash 0^wid a)))))
::
--
!:

View File

@ -91,7 +91,7 @@
%lin (jobe say/[%b p.a] txt/[%s q.a] ~)
%url (jobe url/[%s (crip (earf p.a))] ~)
%exp (jobe code/[%s p.a] ~)
%app (jobe txt/[%s p.a] ~)
%app (jobe app/[%s p.a] txt/[%s q.a] ~)
:: %inv (jobe ship/(jope p.a) party/[%s q.a] ~)
==
::

View File

@ -1,5 +1,5 @@
::
:::: /hoon/core/elem/mar
:::: /hoon/core/tang/mar
::
/? 314
!:
@ -10,7 +10,7 @@
++ elem
=- ;pre:code:"{(trip (role (turn - crip)))}" :: XX
^- wall %- zing ^- (list wall)
(turn tan |=(a=tank (wash 0^160 a)))
(turn (flop tan) |=(a=tank (wash 0^160 a)))
--
++ grab :: convert from
|%

View File

@ -15,7 +15,7 @@
=> v=.
|%
++ mime => v [/text/plain (taco (role txt))]
++ elem => v ;div: {(trip (role txt))}
++ elem => v ;pre: {(trip (role txt))}
--
++ grad
|%

View File

@ -24,19 +24,18 @@ function HashToJSON() {
DOControls = React.createClass({
createDroplet: function(){
urb.send({appl: "cloud",
data: {
action:'create-do',
name:$('#name').val(),
region:$('#region').val(),
size:$('#size').val(),
image:$('#image').val(),
ssh:[], // $('#ssh').val()]
backups:null,//$('#backups').val(),
ipv6:null,//$('#ipv6').val(),
priv_networking:null,//$('#priv-networking').val(),
user_data:null//$('#user-data').val()
},
mark: "json"})
mark: "json",
data: {'create-do':{
name:$('#name').val(),
region:$('#region').val(),
size:$('#size').val(),
image:$('#image').val(),
ssh:[], // $('#ssh').val()]
backups:null,//$('#backups').val(),
ipv6:null,//$('#ipv6').val(),
priv_networking:null,//$('#priv-networking').val(),
user_data:null//$('#user-data').val()
}}})
},
render: function(){
@ -73,24 +72,25 @@ GCEControls = React.createClass({
createDroplet: function(){
urb.send({
appl: 'cloud',
data: {action:'create-gce',
mark: 'json',
data: {'create-gce':{
// project:$('#project').val(),
// zone:$('#zone').val(),
// name:$('#gname').val(),
// machine_type:$('#machine_type').val() /
},
mark: 'json'})
}}})
},
createDisk: function(){
urb.send({
appl: 'cloud',
data: {action:'create-gce',
mark: 'json',
data: {'create-gce':{
snap:$('#gsnap').val(),
number:$('#number').val(),
number:parseInt($('#number').val()),
name:$('#gcpName').val(),
instance_img:$('#instance_image').val()},
mark: 'json'})
instance_img:$('#instance_image').val()
}}})
},
render: function(){
@ -118,30 +118,32 @@ GCEControls = React.createClass({
})
Droplet = React.createClass({
dropletAction:function(id, action){
urb.send({
appl:"cloud",
data: {action:action,
id:id}})
dropletAction: function(act){
return function(){
var action = {act:{}, id:this.props.id, name:this.props.name}
switch(act){
case "snapshot":
action.act[act] = this.refs.snapname.getDOMNode().value
break; default:
action.act[act] = null
}
urb.send({appl: "cloud", data: {action:action}})}
},
render: function() {
var $this = this //local var, else it always points at second
var acts = ["start","stop","reboot","delete"]
var acts = ["start","stop","reboot","delete"] //,"snapshot"]
var buttons = [];
var buttons = acts.map(function(act){
return b({onClick:function(){
$this.dropletAction($this.props.id, act)
}}, act)
})
var buttons = acts.map(function(act){ return b({onClick:$this.dropletAction(act).bind($this)}, act)})
kay = Object.keys(this.props)
kay = kay.filter(function(b){return b!="children"}) // XX individually adress props
return div({},
return div({},[
buttons,
//input({ref:'snapname',placeholder:'Name of Snapshot'}),
table({},
tr({},kay.map(function(k){return th({},k)})),
tr({},kay.map(function(k){return td({},JSON.stringify($this.props[k]))}))),
hr())
hr()])
}
})
@ -181,10 +183,16 @@ Page = recl({
render: function(){
var drops = [], imgs = []
if(this.props.instances) drops = this.props.instances.map(Droplet)
if(this.props.images) imgs = this.props.images.map(
function(i){return div({},i.name)}
)
return (div({},
DOControls({handleClick:this.handleClick,sendSecret:this.sendSecret}),
GCEControls({handleClick:this.handleClick,sendSecret:this.sendSecret}),
this.props.droplets.map(Droplet)
drops,
imgs
))
}
})
@ -194,6 +202,6 @@ authcode.gce = hash.access_token
mounted = React.render(Page({droplets:[]}), $("#container")[0])
urb.bind("/", function(err,d) {
mounted.setProps({droplets:d.data})
mounted.setProps(d.data)
return})

View File

@ -1,7 +1,7 @@
urbit
=====
is a general-purpose computing stack designed to live in the cloud.
is a general-purpose computing stack designed to live in the cloud.
<list dataPreview="true"></list>

View File

@ -707,7 +707,7 @@ odor and a value, and tries to cast the value to that odor.
|= [* b=manx]
b
/@
/elem/
/psal/
::
^- manx
;html
@ -762,24 +762,24 @@ the computation below it. You can think of it sort of like setting an
environment variable. Everything below uses our `++beam` `/%%/lib`.
If we take the next few lines and write them as pseudo code in wide form
they might look something like this, `(/; [gate] (/@ /elem/))`. That
they might look something like this, `(/; [gate] (/@ /psal/))`. That
being the case, let's start at the bottom and move upwards since that's
how our data flows. In depth documentation on individual `++horn` runes
can be found in the [horn section of the rune library]().
`/elem/` loads our `elem` mark. Marks are like content types, and we
keep them in `/main/mar/`. You can open `/main/mar/elem/door.hook` to
`/psal/` loads our `psal` mark. Marks are like content types, and we
keep them in `/main/mar/`. You can open `/main/mar/psal/door.hook` to
see that we specify the ways in which a particular mark can be converted
to produced well typed output. The general form of this is [`/mark/`]()
where `mark` exists in the `/main/mar/` directory. A `elem` is a partial
where `mark` exists in the `/main/mar/` directory. A `psal` is a partial
`hymn`, where `hymn` is the hoon structure for `html`.
`/@` loads a list of files in numerical order from the previously
specified `++beam` using our mark, `elem`. `/@` has a few close
specified `++beam` using our mark, `psal`. `/@` has a few close
relatives. `/&`, for example, reads files by `@da` or absolute date. You
can see the rest in the [horn section of the library]().
`/;` takes the output from `/@` and `/elem/` and passes it to a twig. In
`/;` takes the output from `/@` and `/psal/` and passes it to a twig. In
this case, a gate. Our `/@` actually produces a [`++list`]() of
pairs of `[@ manx]` where the `@` is the filename, and the `manx` is the
converted contents. We use [`++turn`](), one of our `++list`

View File

@ -120,7 +120,7 @@ Retrieieves the %eyre FCGI, producing a [`++epic`](). Used primarily in
`but` is a [`++path`]().
~zod/main=> (fuel [[p=~zod q=%try r=[%ud p=2]] s=/elem] /web/'._.~-~~~~.gen~-~-_~~05vg0001v09f0n30fbh7dn6ab2jakmmspdq04nef5h70qbd5lh6atr4c5j2qrbldpp62q1df1in0sr1ding0c3qgt7kclj74qb65lm6atrkc5k2qpr5e1mmispdchin4p3fegmiqrjpdlo62p1dchsn4p39comn8pbcehgmsbbef5p7crrifr3o035dhgfrk2b5__')
~zod/main=> (fuel [[p=~zod q=%try r=[%ud p=2]] s=/psal] /web/'._.~-~~~~.gen~-~-_~~05vg0001v09f0n30fbh7dn6ab2jakmmspdq04nef5h70qbd5lh6atr4c5j2qrbldpp62q1df1in0sr1ding0c3qgt7kclj74qb65lm6atrkc5k2qpr5e1mmispdchin4p3fegmiqrjpdlo62p1dchsn4p39comn8pbcehgmsbbef5p7crrifr3o035dhgfrk2b5__')
[ qix={}
ced
[ hut=[p=%.y q=[~ 8.445] r=[%.n p=.0.0.0.0]]
@ -130,7 +130,7 @@ Retrieieves the %eyre FCGI, producing a [`++epic`](). Used primarily in
cip=[%.y p=.127.0.0.1]
cum={}
]
bem=[[p=~zod q=%try r=[%ud p=2]] s=/elem]
bem=[[p=~zod q=%try r=[%ud p=2]] s=/psal]
but=/
nyp=/gen
]

View File

@ -25,7 +25,7 @@ stack made of thin layers, which is much easier to learn a layer at a
time.
And unlike most fundamental theories of computing, there's really
nothing smart or interesting about nock. Of course, in a strictly formal
nothing smart or interesting about nock. Of course, in a strictly formal
sense, all of computing is math. But that doesn't mean it needs to feel
like math. nock is a simple mechanical device and it's meant to feel
that way.

14
base/pub/doc/talk.md Normal file
View File

@ -0,0 +1,14 @@
<div class="short">
talk
====
talk is our messaging application.
talk is in dire need of better documentation
</div>
------------------------------------------------------------------------
This document should include <a href="./talk/help">the command reference</a> somehow.

View File

@ -0,0 +1,32 @@
!! actual helptext
<-~michep-banlur: hello urbiters
<-~michep-banlur: is there a list of ; commands for that chat somewhere?
<-~michep-banlur: eh, i mean for this new chat. things changed a lot
----------[5.990]
<-~hidduc-posmeg: i'm not aware of a list
<-~hidduc-posmeg: but i know of ;join
<-~hidduc-posmeg: and ;create
<-~michep-banlur: right, thanks
<-~wictuc-folrex: welcome back, ~michep-banlur
----------[5.995]
<-~wictuc-folrex: there's four types of ; commands
<-~wictuc-folrex: ;join ;create ;<number> and ;<target>
<-~wictuc-folrex: where ;<number> "activates" a previous message
<-~wictuc-folrex: and ;<target> sets where you send the message
<-~wictuc-folrex: for example, ;~sampel-sipnym
----------[6.000]
<-~wictuc-folrex: would start private messaging ~sampel-sipnym
<-~michep-banlur: ahh, that is th new bare ~ship-name
<-~wictuc-folrex: yeah, although a target can also be a channel
<-~wictuc-folrex: like ;/urbit-meta
<-~wictuc-folrex: which means urbit-meta on ~doznec
----------[6.005]
<-~wictuc-folrex: you can also do ;~sampel-sipnym/channel-name
<-~michep-banlur: right
<-~wictuc-folrex: and, of course, just ;
----------------| for /urbit-meta
----------------| --bye ~modnut-migryd
<-~wictuc-folrex: makes it "autotarget"
<-~wictuc-folrex: which means, roughly, send to whatever channel the last
----------[6.010]
<-~wictuc-folrex: message was from

View File

@ -1,16 +1,29 @@
::
::
:::: /hook/hymn/fab/oct3/pub/
::
:: :: ::
:::: /hook/hymn/fab/oct3/pub/ ::::::
:: :: ::
=+ dez=(trip &2:%)
^- manx
;html
;head
;meta(charset "utf-8");
;script(type "text/javascript", src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js");
;script(type "text/javascript", src "/~~/~/at/base/lib/urb.js");
;link(type "text/css", rel "stylesheet", href "/{dez}/lib/base.css");
;link(type "text/css", rel "stylesheet", href "/{dez}/pub/oct3/src/main.css");
;script
=type "text/javascript"
=src "//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"
==
;script
=type "text/javascript"
=src "/~~/~/at/base/lib/urb.js"
==
;link
=type "text/css"
=rel "stylesheet"
=href "/{dez}/lib/base.css"
==
;link
=type "text/css"
=rel "stylesheet"
=href "/{dez}/pub/oct3/src/main.css")
==
;title: :oct3
==
;body

View File

@ -1,84 +1,84 @@
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau.woff");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-italic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-italic.woff");
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-medium.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-medium.woff");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff");
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-bold.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-bold.woff");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-bolditalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-bolditalic.woff");
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-super.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-super.woff");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-superitalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-superitalic.woff");
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-extralight.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-extralight.woff");
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-light.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-light.woff");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-regular.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-regular.woff");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-medium.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-medium.woff");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-bold.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-bold.woff");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-black.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-black.woff");
font-weight: 700;
font-style: normal;
}

View File

@ -1,84 +1,84 @@
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau.woff");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-italic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-italic.woff");
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-medium.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-medium.woff");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff");
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-bold.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-bold.woff");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-bolditalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-bolditalic.woff");
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-super.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-super.woff");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-superitalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-superitalic.woff");
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-extralight.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-extralight.woff");
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-light.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-light.woff");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-regular.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-regular.woff");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-medium.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-medium.woff");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-bold.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-bold.woff");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-black.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-black.woff");
font-weight: 700;
font-style: normal;
}
@ -322,7 +322,7 @@ body {
opacity: 1;
}
.sour-ctrl input {
color: #fff;
color: #555;
background-color: transparent;
border: none;
font-size: 0.8rem;
@ -343,7 +343,7 @@ body {
font-weight: 400;
font-size: 1.2rem;
margin-left: 0.6rem;
color: #fff;
color: #555;
}
.sour-ctrl input:focus::-webkit-input-placeholder {
color: transparent;
@ -427,6 +427,7 @@ a {
}
.sig {
font-size: 2rem;
margin-left: 0.7rem;
margin-right: 0.3rem;
}
.sig:before {
@ -440,7 +441,7 @@ a {
.type.public:before {
content: "▒";
font-size: 0.8rem;
line-height: 0.8rem;
line-height: 1.2rem;
}
.mess,
.iden,
@ -466,7 +467,6 @@ a {
background-color: #fff;
}
.attr .iden {
margin-left: 0.3rem;
line-hieght: 1.4rem;
}
.audi,

View File

@ -263,7 +263,7 @@ body
// add source
.sour-ctrl input
color white
color #555
background-color transparent
border none
font-size .8rem
@ -284,7 +284,7 @@ body
font-weight 400
font-size 1.2rem
margin-left .6rem
color white
color #555
.sour-ctrl input:focus::-webkit-input-placeholder
color transparent
@ -377,6 +377,7 @@ a
.sig
font-size 2rem
margin-left .7rem
margin-right .3rem
.sig:before
@ -390,7 +391,7 @@ a
.type.public:before
content ""
font-size .8rem
line-height .8rem
line-height 1.2rem
.mess
.iden
@ -416,7 +417,6 @@ a
background-color white
.attr .iden
margin-left .3rem
line-hieght 1.4rem
.audi

View File

View File

@ -33,6 +33,7 @@ module.exports = recl
StationActions.setTyping @state.station,state
_blur: ->
@$writing.text @$writing.text()
MessageActions.setTyping false
@typing false
@ -77,6 +78,15 @@ module.exports = recl
_writingKeyUp: (e) ->
if not window.urb.util.isURL @$writing.text()
@$length.toggleClass('valid-false',(@$writing.text().length > 62))
r = window.getSelection().getRangeAt(0).cloneRange()
@$writing.text @$writing.text()
setTimeout =>
s = window.getSelection()
s.removeAllRanges()
s.addRange r
console.log r
,0
_writingKeyDown: (e) ->
if e.keyCode is 13

View File

@ -1,4 +1,4 @@
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/MessageActions.coffee":[function(require,module,exports){
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var MessageDispatcher;
MessageDispatcher = require('../dispatcher/Dispatcher.coffee');
@ -86,8 +86,7 @@ module.exports = {
};
},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/dispatcher/Dispatcher.coffee"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/StationActions.coffee":[function(require,module,exports){
},{"../dispatcher/Dispatcher.coffee":7}],2:[function(require,module,exports){
var StationDispatcher;
StationDispatcher = require('../dispatcher/Dispatcher.coffee');
@ -174,8 +173,7 @@ module.exports = {
};
},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/dispatcher/Dispatcher.coffee"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/MemberComponent.coffee":[function(require,module,exports){
},{"../dispatcher/Dispatcher.coffee":7}],3:[function(require,module,exports){
var div, input, recl, ref, textarea;
recl = React.createClass;
@ -203,8 +201,7 @@ module.exports = recl({
});
},{}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/MessagesComponent.coffee":[function(require,module,exports){
},{}],4:[function(require,module,exports){
var Member, Message, MessageActions, MessageStore, StationActions, StationStore, a, br, div, input, moment, recl, ref, textarea;
moment = require('moment-timezone');
@ -473,8 +470,7 @@ module.exports = recl({
});
},{"../actions/MessageActions.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/MessageActions.coffee","../actions/StationActions.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/StationActions.coffee","../stores/MessageStore.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/stores/MessageStore.coffee","../stores/StationStore.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/stores/StationStore.coffee","./MemberComponent.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/MemberComponent.coffee","moment-timezone":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/index.js"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/StationComponent.coffee":[function(require,module,exports){
},{"../actions/MessageActions.coffee":1,"../actions/StationActions.coffee":2,"../stores/MessageStore.coffee":19,"../stores/StationStore.coffee":20,"./MemberComponent.coffee":3,"moment-timezone":14}],5:[function(require,module,exports){
var Member, StationActions, StationStore, a, div, h1, input, recl, ref, textarea;
recl = React.createClass;
@ -660,8 +656,7 @@ module.exports = recl({
});
},{"../actions/StationActions.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/StationActions.coffee","../stores/StationStore.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/stores/StationStore.coffee","./MemberComponent.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/MemberComponent.coffee"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/WritingComponent.coffee":[function(require,module,exports){
},{"../actions/StationActions.coffee":2,"../stores/StationStore.coffee":20,"./MemberComponent.coffee":3}],6:[function(require,module,exports){
var Member, MessageActions, MessageStore, StationActions, StationStore, br, div, input, recl, ref, textarea;
recl = React.createClass;
@ -712,6 +707,7 @@ module.exports = recl({
}
},
_blur: function() {
this.$writing.text(this.$writing.text());
MessageActions.setTyping(false);
return this.typing(false);
},
@ -765,9 +761,21 @@ module.exports = recl({
}
},
_writingKeyUp: function(e) {
var r;
if (!window.urb.util.isURL(this.$writing.text())) {
return this.$length.toggleClass('valid-false', this.$writing.text().length > 62);
this.$length.toggleClass('valid-false', this.$writing.text().length > 62);
}
r = window.getSelection().getRangeAt(0).cloneRange();
this.$writing.text(this.$writing.text());
return setTimeout((function(_this) {
return function() {
var s;
s = window.getSelection();
s.removeAllRanges();
s.addRange(r);
return console.log(r);
};
})(this), 0);
},
_writingKeyDown: function(e) {
var txt;
@ -936,8 +944,7 @@ module.exports = recl({
});
},{"../actions/MessageActions.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/MessageActions.coffee","../actions/StationActions.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/StationActions.coffee","../stores/MessageStore.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/stores/MessageStore.coffee","../stores/StationStore.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/stores/StationStore.coffee","./MemberComponent.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/MemberComponent.coffee"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/dispatcher/Dispatcher.coffee":[function(require,module,exports){
},{"../actions/MessageActions.coffee":1,"../actions/StationActions.coffee":2,"../stores/MessageStore.coffee":19,"../stores/StationStore.coffee":20,"./MemberComponent.coffee":3}],7:[function(require,module,exports){
var Dispatcher;
Dispatcher = require('flux').Dispatcher;
@ -958,8 +965,7 @@ module.exports = _.merge(new Dispatcher(), {
});
},{"flux":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/flux/index.js"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/main.coffee":[function(require,module,exports){
},{"flux":10}],8:[function(require,module,exports){
$(function() {
var $c, MessagesComponent, StationActions, StationComponent, WritingComponent, clean, rend;
StationActions = require('./actions/StationActions.coffee');
@ -989,8 +995,7 @@ $(function() {
});
},{"./actions/StationActions.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/StationActions.coffee","./components/MessagesComponent.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/MessagesComponent.coffee","./components/StationComponent.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/StationComponent.coffee","./components/WritingComponent.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/components/WritingComponent.coffee","./move.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/move.coffee","./persistence/MessagePersistence.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/persistence/MessagePersistence.coffee","./persistence/StationPersistence.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/persistence/StationPersistence.coffee","./util.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/util.coffee"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/move.coffee":[function(require,module,exports){
},{"./actions/StationActions.coffee":2,"./components/MessagesComponent.coffee":4,"./components/StationComponent.coffee":5,"./components/WritingComponent.coffee":6,"./move.coffee":9,"./persistence/MessagePersistence.coffee":17,"./persistence/StationPersistence.coffee":18,"./util.coffee":21}],9:[function(require,module,exports){
var ldy, setSo, so;
so = {};
@ -1090,8 +1095,7 @@ $(window).on('scroll', function(e) {
$(window).on('scroll', window.util.checkScroll);
},{}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/flux/index.js":[function(require,module,exports){
},{}],10:[function(require,module,exports){
/**
* Copyright (c) 2014-2015, Facebook, Inc.
* All rights reserved.
@ -1103,7 +1107,7 @@ $(window).on('scroll', window.util.checkScroll);
module.exports.Dispatcher = require('./lib/Dispatcher')
},{"./lib/Dispatcher":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/flux/lib/Dispatcher.js"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/flux/lib/Dispatcher.js":[function(require,module,exports){
},{"./lib/Dispatcher":11}],11:[function(require,module,exports){
/*
* Copyright (c) 2014, Facebook, Inc.
* All rights reserved.
@ -1355,7 +1359,7 @@ var _prefix = 'ID_';
module.exports = Dispatcher;
},{"./invariant":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/flux/lib/invariant.js"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/flux/lib/invariant.js":[function(require,module,exports){
},{"./invariant":12}],12:[function(require,module,exports){
/**
* Copyright (c) 2014, Facebook, Inc.
* All rights reserved.
@ -1410,7 +1414,7 @@ var invariant = function(condition, format, a, b, c, d, e, f) {
module.exports = invariant;
},{}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/data/packed/latest.json":[function(require,module,exports){
},{}],13:[function(require,module,exports){
module.exports={
"version": "2014j",
"zones": [
@ -2000,11 +2004,11 @@ module.exports={
"Pacific/Pohnpei|Pacific/Ponape"
]
}
},{}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/index.js":[function(require,module,exports){
},{}],14:[function(require,module,exports){
var moment = module.exports = require("./moment-timezone");
moment.tz.load(require('./data/packed/latest.json'));
},{"./data/packed/latest.json":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/data/packed/latest.json","./moment-timezone":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/moment-timezone.js"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/moment-timezone.js":[function(require,module,exports){
},{"./data/packed/latest.json":13,"./moment-timezone":15}],15:[function(require,module,exports){
//! moment-timezone.js
//! version : 0.2.5
//! author : Tim Wood
@ -2407,7 +2411,7 @@ moment.tz.load(require('./data/packed/latest.json'));
return moment;
}));
},{"moment":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/node_modules/moment/moment.js"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/node_modules/moment/moment.js":[function(require,module,exports){
},{"moment":16}],16:[function(require,module,exports){
//! moment.js
//! version : 2.10.3
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
@ -5519,7 +5523,7 @@ moment.tz.load(require('./data/packed/latest.json'));
return _moment;
}));
},{}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/persistence/MessagePersistence.coffee":[function(require,module,exports){
},{}],17:[function(require,module,exports){
var MessageActions;
MessageActions = require('../actions/MessageActions.coffee');
@ -5597,8 +5601,7 @@ module.exports = {
};
},{"../actions/MessageActions.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/MessageActions.coffee"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/persistence/StationPersistence.coffee":[function(require,module,exports){
},{"../actions/MessageActions.coffee":1}],18:[function(require,module,exports){
var StationActions;
StationActions = require('../actions/StationActions.coffee');
@ -5722,8 +5725,7 @@ module.exports = {
};
},{"../actions/StationActions.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/actions/StationActions.coffee"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/stores/MessageStore.coffee":[function(require,module,exports){
},{"../actions/StationActions.coffee":2}],19:[function(require,module,exports){
var EventEmitter, MessageDispatcher, MessageStore, _fetching, _last, _listening, _messages, _station, _typing, moment;
moment = require('moment-timezone');
@ -5868,8 +5870,7 @@ MessageStore.dispatchToken = MessageDispatcher.register(function(payload) {
module.exports = MessageStore;
},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/dispatcher/Dispatcher.coffee","events":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js","moment-timezone":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/node_modules/moment-timezone/index.js"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/stores/StationStore.coffee":[function(require,module,exports){
},{"../dispatcher/Dispatcher.coffee":7,"events":22,"moment-timezone":14}],20:[function(require,module,exports){
var EventEmitter, StationDispatcher, StationStore, _audience, _config, _listening, _members, _station, _stations, _typing, _validAudience;
EventEmitter = require('events').EventEmitter;
@ -6068,8 +6069,7 @@ StationStore.dispatchToken = StationDispatcher.register(function(payload) {
module.exports = StationStore;
},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/dispatcher/Dispatcher.coffee","events":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js"}],"/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/util.coffee":[function(require,module,exports){
},{"../dispatcher/Dispatcher.coffee":7,"events":22}],21:[function(require,module,exports){
if (!window.util) {
window.util = {};
}
@ -6180,8 +6180,7 @@ _.merge(window.util, {
});
},{}],"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js":[function(require,module,exports){
},{}],22:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
@ -6241,10 +6240,8 @@ EventEmitter.prototype.emit = function(type) {
er = arguments[1];
if (er instanceof Error) {
throw er; // Unhandled 'error' event
} else {
throw TypeError('Uncaught, unspecified "error" event.');
}
return false;
throw TypeError('Uncaught, unspecified "error" event.');
}
}
@ -6486,4 +6483,4 @@ function isUndefined(arg) {
return arg === void 0;
}
},{}]},{},["/Users/galen/Documents/src/urbit/urb/zod/base/pub/talk/src/js/main.coffee"]);
},{}]},{},[8]);

View File

@ -4,42 +4,42 @@
@font-face
font-family "bau"
src url("http://storage.googleapis.com/urbit-extra/bau.woff")
src url("https://storage.googleapis.com/urbit-extra/bau.woff")
font-weight 400
font-style normal
@font-face
font-family "bau"
src url("http://storage.googleapis.com/urbit-extra/bau-italic.woff")
src url("https://storage.googleapis.com/urbit-extra/bau-italic.woff")
font-weight 400
font-style italic
@font-face
font-family "bau"
src url("http://storage.googleapis.com/urbit-extra/bau-medium.woff")
src url("https://storage.googleapis.com/urbit-extra/bau-medium.woff")
font-weight 500
font-style normal
@font-face
font-family "bau"
src url("http://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff")
src url("https://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff")
font-weight 500
font-style italic
@font-face
font-family "bau"
src url("http://storage.googleapis.com/urbit-extra/bau-bold.woff")
src url("https://storage.googleapis.com/urbit-extra/bau-bold.woff")
font-weight 600
font-style normal
@font-face
font-family "bau"
src url("http://storage.googleapis.com/urbit-extra/bau-bolditalic.woff")
src url("https://storage.googleapis.com/urbit-extra/bau-bolditalic.woff")
font-weight 600
font-style italic
@font-face
font-family "bau"
src url("http://storage.googleapis.com/urbit-extra/bau-super.woff")
src url("https://storage.googleapis.com/urbit-extra/bau-super.woff")
font-weight 600
font-style normal
@font-face
font-family "bau"
src url("http://storage.googleapis.com/urbit-extra/bau-superitalic.woff")
src url("https://storage.googleapis.com/urbit-extra/bau-superitalic.woff")
font-weight 600
font-style italic
@ -49,21 +49,21 @@
@font-face
font-family "scp"
src url("http://storage.googleapis.com/urbit-extra/scp-extralight.woff")
src url("https://storage.googleapis.com/urbit-extra/scp-extralight.woff")
font-weight 200
font-style normal
@font-face
font-family "scp"
src url("http://storage.googleapis.com/urbit-extra/scp-light.woff")
src url("https://storage.googleapis.com/urbit-extra/scp-light.woff")
font-weight 300
font-style normal
@font-face
font-family "scp"
src url("http://storage.googleapis.com/urbit-extra/scp-regular.woff")
src url("https://storage.googleapis.com/urbit-extra/scp-regular.woff")
font-weight 400
font-style normal
@font-face
font-family "scp"
src url("http://storage.googleapis.com/urbit-extra/scp-medium.woff")
src url("https://storage.googleapis.com/urbit-extra/scp-medium.woff")
font-weight 500
font-style normal

View File

@ -1,72 +1,72 @@
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau.woff");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-italic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-italic.woff");
font-weight: 400;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-medium.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-medium.woff");
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-mediumitalic.woff");
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-bold.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-bold.woff");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-bolditalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-bolditalic.woff");
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-super.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-super.woff");
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: "bau";
src: url("http://storage.googleapis.com/urbit-extra/bau-superitalic.woff");
src: url("https://storage.googleapis.com/urbit-extra/bau-superitalic.woff");
font-weight: 600;
font-style: italic;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-extralight.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-extralight.woff");
font-weight: 200;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-light.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-light.woff");
font-weight: 300;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-regular.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-regular.woff");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: "scp";
src: url("http://storage.googleapis.com/urbit-extra/scp-medium.woff");
src: url("https://storage.googleapis.com/urbit-extra/scp-medium.woff");
font-weight: 500;
font-style: normal;
}
@ -357,6 +357,18 @@ li:before {
.list h1 {
font-size: 0.7rem;
}
#body .CodeMirror {
font-size: 0.8rem;
line-height: 1rem;
}
#body .CodeMirror .cm-header {
font-weight: 200;
}
#body .CodeMirror-gutters {
background-color: #fff;
padding-right: 1rem;
margin-left: -1rem;
}
@media only screen and (max-width: 1170px) {
#nav,
#nav > div,

View File

@ -282,4 +282,16 @@ li:before
.list h1
font-size .7rem
#body .CodeMirror
font-size .8rem
line-height 1rem
#body .CodeMirror .cm-header
font-weight 200
#body .CodeMirror-gutters
background-color #fff
padding-right 1rem
margin-left -1rem
@import 'mobile'

View File

@ -1,4 +1,4 @@
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/actions/TreeActions.coffee":[function(require,module,exports){
var TreeDispatcher, TreePersistence;
TreeDispatcher = require('../dispatcher/Dispatcher.coffee');
@ -72,7 +72,7 @@ module.exports = {
},{"../dispatcher/Dispatcher.coffee":8,"../persistence/TreePersistence.coffee":13}],2:[function(require,module,exports){
},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/dispatcher/Dispatcher.coffee","../persistence/TreePersistence.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/persistence/TreePersistence.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/AnchorComponent.coffee":[function(require,module,exports){
var TreeActions, TreeStore, a, div, recl, ref;
TreeStore = require('../stores/TreeStore.coffee');
@ -295,7 +295,7 @@ module.exports = recl({
},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":14}],3:[function(require,module,exports){
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/actions/TreeActions.coffee","../stores/TreeStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/stores/TreeStore.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/BodyComponent.coffee":[function(require,module,exports){
var TreeActions, TreeStore, div, input, load, recl, ref, textarea;
TreeStore = require('../stores/TreeStore.coffee');
@ -360,7 +360,7 @@ module.exports = recl({
},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":14,"./LoadComponent.coffee":7}],4:[function(require,module,exports){
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/actions/TreeActions.coffee","../stores/TreeStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/stores/TreeStore.coffee","./LoadComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/LoadComponent.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/CodeMirror.coffee":[function(require,module,exports){
var div, recl, ref, textarea;
recl = React.createClass;
@ -384,7 +384,7 @@ module.exports = recl({
},{}],5:[function(require,module,exports){
},{}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/KidsComponent.coffee":[function(require,module,exports){
var TreeActions, TreeStore, a, div, hr, li, recl, ref, ul;
TreeStore = require('../stores/TreeStore.coffee');
@ -451,7 +451,7 @@ module.exports = recl({
},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":14}],6:[function(require,module,exports){
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/actions/TreeActions.coffee","../stores/TreeStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/stores/TreeStore.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/ListComponent.coffee":[function(require,module,exports){
var TreeActions, TreeStore, a, div, h1, li, load, recl, ref, ul;
TreeStore = require('../stores/TreeStore.coffee');
@ -546,7 +546,7 @@ module.exports = recl({
},{"../actions/TreeActions.coffee":1,"../stores/TreeStore.coffee":14,"./LoadComponent.coffee":7}],7:[function(require,module,exports){
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/actions/TreeActions.coffee","../stores/TreeStore.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/stores/TreeStore.coffee","./LoadComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/LoadComponent.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/LoadComponent.coffee":[function(require,module,exports){
var div, input, recl, ref, textarea;
recl = React.createClass;
@ -584,7 +584,7 @@ module.exports = recl({
},{}],8:[function(require,module,exports){
},{}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/dispatcher/Dispatcher.coffee":[function(require,module,exports){
var Dispatcher;
Dispatcher = require('flux').Dispatcher;
@ -606,7 +606,7 @@ module.exports = _.extend(new Dispatcher(), {
},{"flux":10}],9:[function(require,module,exports){
},{"flux":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/node_modules/flux/index.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/main.coffee":[function(require,module,exports){
var rend;
rend = React.render;
@ -766,7 +766,7 @@ $(function() {
},{"./actions/TreeActions.coffee":1,"./components/AnchorComponent.coffee":2,"./components/BodyComponent.coffee":3,"./components/CodeMirror.coffee":4,"./components/KidsComponent.coffee":5,"./components/ListComponent.coffee":6,"./persistence/TreePersistence.coffee":13}],10:[function(require,module,exports){
},{"./actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/actions/TreeActions.coffee","./components/AnchorComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/AnchorComponent.coffee","./components/BodyComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/BodyComponent.coffee","./components/CodeMirror.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/CodeMirror.coffee","./components/KidsComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/KidsComponent.coffee","./components/ListComponent.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/components/ListComponent.coffee","./persistence/TreePersistence.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/persistence/TreePersistence.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/node_modules/flux/index.js":[function(require,module,exports){
/**
* Copyright (c) 2014-2015, Facebook, Inc.
* All rights reserved.
@ -778,7 +778,7 @@ $(function() {
module.exports.Dispatcher = require('./lib/Dispatcher')
},{"./lib/Dispatcher":11}],11:[function(require,module,exports){
},{"./lib/Dispatcher":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/node_modules/flux/lib/Dispatcher.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/node_modules/flux/lib/Dispatcher.js":[function(require,module,exports){
/*
* Copyright (c) 2014, Facebook, Inc.
* All rights reserved.
@ -1030,7 +1030,7 @@ var _prefix = 'ID_';
module.exports = Dispatcher;
},{"./invariant":12}],12:[function(require,module,exports){
},{"./invariant":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/node_modules/flux/lib/invariant.js"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/node_modules/flux/lib/invariant.js":[function(require,module,exports){
/**
* Copyright (c) 2014, Facebook, Inc.
* All rights reserved.
@ -1085,7 +1085,7 @@ var invariant = function(condition, format, a, b, c, d, e, f) {
module.exports = invariant;
},{}],13:[function(require,module,exports){
},{}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/persistence/TreePersistence.coffee":[function(require,module,exports){
var TreeActions;
TreeActions = require('../actions/TreeActions.coffee');
@ -1107,7 +1107,7 @@ module.exports = {
},{"../actions/TreeActions.coffee":1}],14:[function(require,module,exports){
},{"../actions/TreeActions.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/actions/TreeActions.coffee"}],"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/stores/TreeStore.coffee":[function(require,module,exports){
var EventEmitter, MessageDispatcher, TreeStore, _cont, _curr, _load, _snip, _tree;
EventEmitter = require('events').EventEmitter;
@ -1321,7 +1321,7 @@ module.exports = TreeStore;
},{"../dispatcher/Dispatcher.coffee":8,"events":15}],15:[function(require,module,exports){
},{"../dispatcher/Dispatcher.coffee":"/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/dispatcher/Dispatcher.coffee","events":"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js"}],"/usr/local/lib/node_modules/watchify/node_modules/browserify/node_modules/events/events.js":[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
@ -1381,8 +1381,10 @@ EventEmitter.prototype.emit = function(type) {
er = arguments[1];
if (er instanceof Error) {
throw er; // Unhandled 'error' event
} else {
throw TypeError('Uncaught, unspecified "error" event.');
}
throw TypeError('Uncaught, unspecified "error" event.');
return false;
}
}
@ -1624,4 +1626,4 @@ function isUndefined(arg) {
return arg === void 0;
}
},{}]},{},[9]);
},{}]},{},["/Users/galen/Documents/src/urbit-test/urb/zod/base/pub/tree/src/js/main.coffee"]);

View File

@ -1,5 +1,5 @@
:: :: ::
:::: /hoon/oct1/sur :::::: dependencies
:::: /hoon/oct1/sur :::::: dependencies
:: :: ::
/? 310 :: arvo version
:: :: ::

View File

@ -1,7 +1,7 @@
:: :: ::
:::: /hoon/oct2/sur :::::: dependencies
:::: /hoon/oct2/sur :::::: dependencies
:: :: ::
/? 310 ::
/? 310 :: arvo version
:: :: ::
:::: :::::: semantics
:: :: ::

View File

@ -1,7 +1,7 @@
:: :: ::
:::: /hoon/oct3/sur :::::: dependencies
:::: /hoon/oct3/sur :::::: dependencies
:: :: ::
/? 310 ::
/? 310 :: arvo version
:: :: ::
:::: :::::: semantics
:: :: ::