@@ -12533,6 +12533,27 @@
12533 ?~ subs ~
12533 ?~ subs ~
12534 `[u.init u.update u.view u.subs]
12534 `[u.init u.update u.view u.subs]
12536+:: A data page is only the direct two-component source call. Grouping is
12537+:: transparent, but page aliases, qualified wings and other kinds are not.
12540+ ^- (unit [load=term view=term])
12541+ ?. ?=(%value -.d) ~
12543+ ?: ?=(%group -.val.d) $(val.d inner.val.d)
12544+ ?. ?=(%call -.val.d) ~
12545+ =/ head=(unit term) (program-main-wing head.val.d)
12547+ ?. =(%page u.head) ~
12548+ ?. ?=([* * ~] args.val.d) ~
12549+ =/ args=(list expr) args.val.d
12550+ ?> ?=([* * ~] args)
12551+ =/ load=(unit term) (program-main-wing i.args)
12552+ =/ view=(unit term) (program-main-wing i.t.args)
12536++ program-empty-null
12557++ program-empty-null
12537 |= e=expr
12558 |= e=expr
@@ -13497,36 +13518,45 @@
13497 =/ callback=expr (program-transparent i.args.request)
13518 =/ callback=expr (program-transparent i.args.request)
13498 ?. ?=(%ctor -.callback) |
13519 ?. ?=(%ctor -.callback) |
13499 ?. ?=(%term form.tag.callback) |
13520 ?. ?=(%term form.tag.callback) |
13521+ ?=(^ (derived-request-member case face imports graph prelude))
13523+:: Exact derived-member and request-evidence identity, shared by direct
13524+:: program watches and direct data-page loads. Only a plain request in the
13525+:: selected interface's own source-backed graph can establish this shape.
13526+++ derived-request-member
13527+ |= [case=term face=term imports=ijimports graph=irequest-graph prelude=ifile]
13500 =/ selected=(list [face=term interface=ifile])
13529 =/ selected=(list [face=term interface=ifile])
13501 (skim imports |=(j=[face=term interface=ifile] =(face face.j)))
13530 (skim imports |=(j=[face=term interface=ifile] =(face face.j)))
13502− ?. ?=([* ~] selected) |
13531+ ?. ?=([* ~] selected) ~
13503 =/ iface=ifile interface.i.selected
13532 =/ iface=ifile interface.i.selected
13504 =/ member=(unit ischeme) (ienv-lookup case values.iface)
13533 =/ member=(unit ischeme) (ienv-lookup case values.iface)
13505− ?~ member |
13534+ ?~ member ~
13506− ?~ source.iface |
13535+ ?~ source.iface ~
13507 =/ evidence=(list irequest-evidence)
13536 =/ evidence=(list irequest-evidence)
13508 (skim requests.graph |=(r=irequest-evidence &(=(api-at.r at.iface) =(name.r case))))
13537 (skim requests.graph |=(r=irequest-evidence &(=(api-at.r at.iface) =(name.r case))))
13509− ?. ?=([* ~] evidence) |
13538+ ?. ?=([* ~] evidence) ~
13510 =/ request-evidence=irequest-evidence i.evidence
13539 =/ request-evidence=irequest-evidence i.evidence
13511− ?. =(u.source.iface api-source.request-evidence) |
13540+ ?. =(u.source.iface api-source.request-evidence) ~
13512− ?. =(name.path.path.request-evidence case) |
13541+ ?. =(name.path.path.request-evidence case) ~
13513− ?~ graph.iface |
13542+ ?~ graph.iface ~
13514− ?. (lien requests.u.graph.iface |=(r=irequest-evidence =(r request-evidence))) |
13543+ ?. (lien requests.u.graph.iface |=(r=irequest-evidence =(r request-evidence))) ~
13515− ?. ?=(~ scry.path.path.request-evidence) |
13544+ ?. ?=(~ scry.path.path.request-evidence) ~
13516− ?. &(?=(~ diffs.path.request-evidence) ?=(~ diffs.path.path.request-evidence)) |
13545+ ?. &(?=(~ diffs.path.request-evidence) ?=(~ diffs.path.path.request-evidence)) ~
13517− ?: (lien segments.path.path.request-evidence |=(p=pseg !?=(%knot -.p))) |
13546+ ?: (lien segments.path.path.request-evidence |=(p=pseg !?=(%knot -.p))) ~
13518− ?. ?=([@ ~] vars.u.member) |
13547+ ?. ?=([@ ~] vars.u.member) ~
13519 =/ message=@ud i.vars.u.member
13548 =/ message=@ud i.vars.u.member
13520− ?. ?=(%fn -.typ.u.member) |
13549+ ?. ?=(%fn -.typ.u.member) ~
13521− ?. ?=(%fn -.sample.typ.u.member) |
13550+ ?. ?=(%fn -.sample.typ.u.member) ~
13522− ?. =(sample.sample.typ.u.member full.path.request-evidence) |
13551+ ?. =(sample.sample.typ.u.member full.path.request-evidence) ~
13523− ?. =(product.sample.typ.u.member [%var message]) |
13552+ ?. =(product.sample.typ.u.member [%var message]) ~
13524 =/ prep=iprelude [prelude prelude-values.graph prelude-molds.graph]
13553 =/ prep=iprelude [prelude prelude-values.graph prelude-molds.graph]
13525 =/ ask=(unit ischeme) (request-compatible-ask prep)
13554 =/ ask=(unit ischeme) (request-compatible-ask prep)
13526− ?~ ask |
13555+ ?~ ask ~
13527 =/ result=(unit itype) (template-apply u.ask ~[[%var message]])
13556 =/ result=(unit itype) (template-apply u.ask ~[[%var message]])
13528− ?~ result |
13557+ ?~ result ~
13529− =(product.typ.u.member u.result)
13558+ ?. =(product.typ.u.member u.result) ~
13531++ program-main-context
13561++ program-main-context
13532 |= [main=def ds=(list def) resolution=iresolved initial=istate]
13562 |= [main=def ds=(list def) resolution=iresolved initial=istate]
@@ -13540,6 +13570,77 @@
13540 (add-supported-defs-core ~[main] ds checked heads env.resolution molds.initial globals.initial externals.initial surs.initial mark-externals.initial marks.initial jimports.initial reserved-molds.initial at.initial prelude.initial artifacts.resolution grec-index.initial)
13570 (add-supported-defs-core ~[main] ds checked heads env.resolution molds.initial globals.initial externals.initial surs.initial mark-externals.initial marks.initial jimports.initial reserved-molds.initial at.initial prelude.initial artifacts.resolution grec-index.initial)
13541 [env.completed grouped.resolution artifacts.completed]
13571 [env.completed grouped.resolution artifacts.completed]
13573+:: A static main may retain a generic element message in its ordinary
13574+:: scheme. Instantiate that scheme, specialize it to canonical element !!,
13575+:: and publish only the resulting closed scheme.
13576+++ static-main-specialized
13577+ |= [env=ienv prelude=(unit ifile)]
13580+ =/ element=(unit ischeme) (find-jibb-mold %element u.prelude)
13582+ =/ main=(unit ischeme) (ienv-lookup %main env)
13584+ =/ canonical=(unit itype) (template-apply u.element ~[[%empty ~]])
13586+ =/ instance=[typ=itype state=istate] (instantiate-scheme u.main *istate)
13587+ =/ fit=ifit (itype-fit typ.instance u.canonical ~ next.state.instance)
13588+ ?. ?=(%ok -.fit) ~
13589+ =/ closed=itype (itype-normalize typ.instance sub.fit)
13590+ ?^ (itype-vars closed) ~
13591+ ?: (itype-has-tag closed) ~
13592+ ?. ?=(%union -.closed) ~
13593+ ?. ?=(%union -.u.canonical) ~
13594+ ?. &(=(origin.closed origin.u.canonical) =(args.closed args.u.canonical)) ~
13595+ =/ exact=ifit (direct-invariant closed u.canonical ~ next.fit)
13596+ ?. ?=(%ok -.exact) ~
13599+:: The load of a direct data page must itself be a direct gate whose
13600+:: transparent body is one plain derived request with a wing or ctor reply.
13601+++ page-load-derived
13602+ |= [name=term ds=(list def) imports=ijimports graph=irequest-graph prelude=ifile]
13604+ =/ loads=(list def)
13605+ (skim ds |=(d=def &(?=(%value -.d) =(name name.d))))
13606+ ?. ?=([* ~] loads) |
13607+ =/ load=def i.loads
13608+ ?> ?=(%value -.load)
13609+ ?. |(?=(%gate -.val.load) ?=(%gate-wide -.val.load)) |
13612+ %gate body.val.load
13613+ %gate-wide body.val.load
13616+ =. body (program-transparent body)
13617+ ?. ?=(%call -.body) |
13618+ ?. ?=([* ~] args.body) |
13619+ =/ head=expr (program-transparent head.body)
13620+ ?. ?=(%wing -.head) |
13621+ ?. ?=([@ @ ~] names.head) |
13622+ =/ reply=expr (program-transparent i.args.body)
13623+ ?. ?| &(?=(%wing -.reply) ?=([@ ~] names.reply))
13624+ &(?=(%ctor -.reply) ?=(%term form.tag.reply))
13627+ ?=(^ (derived-request-member i.names.head i.t.names.head imports graph prelude))
13629+++ page-main-closed
13630+ |= [parts=[load=term view=term] ds=(list def) env=ienv prelude=(unit ifile) imports=ijimports graph=irequest-graph]
13633+ =/ page=(unit ischeme) (find-jibb-mold %page u.prelude)
13635+ =/ main=(unit ischeme) (ienv-lookup %main env)
13637+ ?. ?=(~ vars.u.main) |
13638+ ?. ?=(~ (itype-vars typ.u.main)) |
13639+ =/ instance=[typ=itype state=istate] (instantiate-scheme u.page *istate)
13640+ =/ main-fit=ifit (direct-invariant typ.u.main typ.instance ~ next.state.instance)
13641+ ?. ?=(%ok -.main-fit) |
13642+ (page-load-derived load.parts ds imports graph u.prelude)
13543++ program-main-closed
13644++ program-main-closed
13544 |= [parts=[init=term update=term view=term subs=term] ds=(list def) env=ienv prelude=(unit ifile) imports=ijimports graph=irequest-graph]
13645 |= [parts=[init=term update=term view=term subs=term] ds=(list def) env=ienv prelude=(unit ifile) imports=ijimports graph=irequest-graph]
@@ -13617,7 +13718,9 @@
13617 =/ main=(unit def) (program-main-def defs.mod)
13718 =/ main=(unit def) (program-main-def defs.mod)
13618 =/ main-parts=(unit [init=term update=term view=term subs=term])
13719 =/ main-parts=(unit [init=term update=term view=term subs=term])
13619 ?~(main ~ (program-main-parts u.main))
13720 ?~(main ~ (program-main-parts u.main))
13721+ =/ page-parts=(unit [load=term view=term])
13722+ ?~(main ~ (page-main-parts u.main))
13620− ?. ?~(main & &(!?=([%ui %stores *] at) ?=(^ main-parts)))
13723+ ?: &(?=([%ui %stores *] at) ?=(^ main))
13621 [%| [(crip "module kind needs unsupported inference: {(spud at)}") ~]]
13724 [%| [(crip "module kind needs unsupported inference: {(spud at)}") ~]]
13622 =/ js=jimports-detailed-result (resolve-jibb-imports-detailed imports.mod externals mark-externals modules active prelude-values prelude-molds cache prelude)
13725 =/ js=jimports-detailed-result (resolve-jibb-imports-detailed imports.mod externals mark-externals modules active prelude-values prelude-molds cache prelude)
13623 ?: ?=(%| -.js) [%| p.js]
13726 ?: ?=(%| -.js) [%| p.js]
@@ -13690,7 +13793,19 @@
13690 =/ initial=irequest-graph [(silt `(list path)`~[at]) ~ modules prelude prelude-values prelude-molds externals mark-externals]
13793 =/ initial=irequest-graph [(silt `(list path)`~[at]) ~ modules prelude prelude-values prelude-molds externals mark-externals]
13691 =/ graph=(unit irequest-graph) (request-graph-merge resolved.p.js initial (add 1 (lent resolved.p.js)))
13794 =/ graph=(unit irequest-graph) (request-graph-merge resolved.p.js initial (add 1 (lent resolved.p.js)))
13692 ?~ graph [%| ['module request evidence needs unsupported inference' ~]]
13795 ?~ graph [%| ['module request evidence needs unsupported inference' ~]]
13796+ =/ static-main=(unit ischeme)
13800+ (static-main-specialized env prelude)
13801+ =? env ?=(^ static-main)
13802+ [[%main u.static-main] (skim env |=(entry=[name=term scheme=ischeme] !=(%main name.entry)))]
13693− ?. ?~(main & ?~(main-parts | (program-main-closed u.main-parts defs.mod env prelude resolved.p.js u.graph)))
13805+ ?^ main-parts (program-main-closed u.main-parts defs.mod env prelude resolved.p.js u.graph)
13806+ ?^ page-parts (page-main-closed u.page-parts defs.mod env prelude resolved.p.js u.graph)
13694 [%| [(crip "module kind needs unsupported inference: {(spud at)}") ~]]
13809 [%| [(crip "module kind needs unsupported inference: {(spud at)}") ~]]
13695 =/ iface=ifile [env p.mts at ~ artifacts.resolution ~ `src graph]
13810 =/ iface=ifile [env p.mts at ~ artifacts.resolution ~ `src graph]
13696 [%& [iface [[at iface] cache.p.js]]]
13811 [%& [iface [[at iface] cache.p.js]]]