@thestarweb/star-framework-app-web 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/browser/index.js +8 -0
  2. package/dist/browser/index.js.map +1 -0
  3. package/dist/cli/dev-server.js +64 -0
  4. package/dist/cli/dev-server.js.map +1 -0
  5. package/dist/cli/index.js +117 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/cli/types.js +2 -0
  8. package/dist/cli/types.js.map +1 -0
  9. package/dist/cli-helper.js +2 -0
  10. package/dist/cli-helper.js.map +1 -0
  11. package/dist/index.js +14 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/interceptor/index.js +26 -0
  14. package/dist/interceptor/index.js.map +1 -0
  15. package/dist/interceptor/middleware-to-interceptor/index.js +32 -0
  16. package/dist/interceptor/middleware-to-interceptor/index.js.map +1 -0
  17. package/dist/interceptor/middleware-to-interceptor/mock-res.js +241 -0
  18. package/dist/interceptor/middleware-to-interceptor/mock-res.js.map +1 -0
  19. package/dist/interceptor/middleware-to-interceptor/mook-req.js +180 -0
  20. package/dist/interceptor/middleware-to-interceptor/mook-req.js.map +1 -0
  21. package/dist/interceptor/types.js +6 -0
  22. package/dist/interceptor/types.js.map +1 -0
  23. package/dist/params/index.js +10 -0
  24. package/dist/params/index.js.map +1 -0
  25. package/dist/request/index.js +46 -0
  26. package/dist/request/index.js.map +1 -0
  27. package/dist/return-types/index.js +2 -0
  28. package/dist/return-types/index.js.map +1 -0
  29. package/dist/return-types/response-with-meta.js +25 -0
  30. package/dist/return-types/response-with-meta.js.map +1 -0
  31. package/dist/route/index.js +20 -0
  32. package/dist/route/index.js.map +1 -0
  33. package/dist/route/types.js +17 -0
  34. package/dist/route/types.js.map +1 -0
  35. package/dist/runtime/index.js +84 -0
  36. package/dist/runtime/index.js.map +1 -0
  37. package/dist/runtime/type.js +11 -0
  38. package/dist/runtime/type.js.map +1 -0
  39. package/dist/server/body/helper.js +118 -0
  40. package/dist/server/body/helper.js.map +1 -0
  41. package/dist/server/body/json.js +211 -0
  42. package/dist/server/body/json.js.map +1 -0
  43. package/dist/server/body/types.js +6 -0
  44. package/dist/server/body/types.js.map +1 -0
  45. package/dist/server/dump-api-type.js +59 -0
  46. package/dist/server/dump-api-type.js.map +1 -0
  47. package/dist/server/index.js +103 -0
  48. package/dist/server/index.js.map +1 -0
  49. package/dist/server/types.js +8 -0
  50. package/dist/server/types.js.map +1 -0
  51. package/dist/server/utils/pass-through-readable.js +13 -0
  52. package/dist/server/utils/pass-through-readable.js.map +1 -0
  53. package/dist/view/const.js +2 -0
  54. package/dist/view/const.js.map +1 -0
  55. package/dist/view/data-context/conetext.js +70 -0
  56. package/dist/view/data-context/conetext.js.map +1 -0
  57. package/dist/view/data-context/index.js +13 -0
  58. package/dist/view/data-context/index.js.map +1 -0
  59. package/dist/view/html/create-element.js +20 -0
  60. package/dist/view/html/create-element.js.map +1 -0
  61. package/dist/view/html/index.js +4 -0
  62. package/dist/view/html/index.js.map +1 -0
  63. package/dist/view/html/parse-html-to-v-dom.js +317 -0
  64. package/dist/view/html/parse-html-to-v-dom.js.map +1 -0
  65. package/dist/view/html/render-v-dom-to-string.js +46 -0
  66. package/dist/view/html/render-v-dom-to-string.js.map +1 -0
  67. package/dist/view/html/types.js +21 -0
  68. package/dist/view/html/types.js.map +1 -0
  69. package/dist/view/index.js +7 -0
  70. package/dist/view/index.js.map +1 -0
  71. package/dist/view/layout.js +24 -0
  72. package/dist/view/layout.js.map +1 -0
  73. package/dist/view/render/html-render.js +21 -0
  74. package/dist/view/render/html-render.js.map +1 -0
  75. package/dist/view/render/index.js +3 -0
  76. package/dist/view/render/index.js.map +1 -0
  77. package/dist/view/render/render.js +183 -0
  78. package/dist/view/render/render.js.map +1 -0
  79. package/dist/view/render/sf-v-dom-render.js +40 -0
  80. package/dist/view/render/sf-v-dom-render.js.map +1 -0
  81. package/dist/view/types.js +10 -0
  82. package/dist/view/types.js.map +1 -0
  83. package/dist/view/utils/find-route-dom.js +22 -0
  84. package/dist/view/utils/find-route-dom.js.map +1 -0
  85. package/dist/view/utils/get-render/client.js +77 -0
  86. package/dist/view/utils/get-render/client.js.map +1 -0
  87. package/dist/view/utils/get-render/common.js +87 -0
  88. package/dist/view/utils/get-render/common.js.map +1 -0
  89. package/dist/view/utils/get-render/index.js +4 -0
  90. package/dist/view/utils/get-render/index.js.map +1 -0
  91. package/dist/view/utils/get-render/server.js +60 -0
  92. package/dist/view/utils/get-render/server.js.map +1 -0
  93. package/dist/view/utils/index.js +3 -0
  94. package/dist/view/utils/index.js.map +1 -0
  95. package/dist/view/view.js +10 -0
  96. package/dist/view/view.js.map +1 -0
  97. package/package.json +41 -0
  98. package/resource/default-index.html +11 -0
  99. package/src/browser/index.ts +7 -0
  100. package/src/cli/dev-server.ts +66 -0
  101. package/src/cli/index.ts +122 -0
  102. package/src/cli/types.ts +7 -0
  103. package/src/cli-helper.ts +5 -0
  104. package/src/index.ts +24 -0
  105. package/src/interceptor/index.ts +26 -0
  106. package/src/interceptor/middleware-to-interceptor/index.ts +29 -0
  107. package/src/interceptor/middleware-to-interceptor/mock-res.ts +255 -0
  108. package/src/interceptor/middleware-to-interceptor/mook-req.ts +218 -0
  109. package/src/interceptor/types.ts +7 -0
  110. package/src/params/index.ts +12 -0
  111. package/src/request/index.ts +65 -0
  112. package/src/return-types/index.ts +1 -0
  113. package/src/return-types/response-with-meta.ts +17 -0
  114. package/src/route/index.ts +43 -0
  115. package/src/route/types.ts +11 -0
  116. package/src/server/body/helper.ts +110 -0
  117. package/src/server/body/json.ts +217 -0
  118. package/src/server/body/types.ts +6 -0
  119. package/src/server/dump-api-type.ts +64 -0
  120. package/src/server/index.ts +113 -0
  121. package/src/server/types.ts +11 -0
  122. package/src/server/utils/pass-through-readable.ts +10 -0
  123. package/src/view/const.ts +1 -0
  124. package/src/view/data-context/conetext.ts +59 -0
  125. package/src/view/data-context/index.ts +18 -0
  126. package/src/view/html/create-element.ts +20 -0
  127. package/src/view/html/index.ts +3 -0
  128. package/src/view/html/parse-html-to-v-dom.ts +348 -0
  129. package/src/view/html/render-v-dom-to-string.ts +79 -0
  130. package/src/view/html/types.ts +32 -0
  131. package/src/view/index.ts +6 -0
  132. package/src/view/layout.ts +20 -0
  133. package/src/view/render/html-render.ts +21 -0
  134. package/src/view/render/index.ts +2 -0
  135. package/src/view/render/render.ts +225 -0
  136. package/src/view/render/sf-v-dom-render.ts +34 -0
  137. package/src/view/types.ts +18 -0
  138. package/src/view/utils/find-route-dom.ts +19 -0
  139. package/src/view/utils/get-render/client.ts +76 -0
  140. package/src/view/utils/get-render/common.ts +113 -0
  141. package/src/view/utils/get-render/index.ts +3 -0
  142. package/src/view/utils/get-render/server.ts +71 -0
  143. package/src/view/utils/index.ts +2 -0
  144. package/src/view/view.ts +7 -0
  145. package/test/body.test.ts +29 -0
  146. package/tsconfig.build.json +9 -0
  147. package/tsconfig.json +8 -0
@@ -0,0 +1,183 @@
1
+ function __assignType(fn, args) {
2
+ fn.__type = args;
3
+ return fn;
4
+ }
5
+ /*@ts-ignore*/
6
+ import { __ΩRenderDataContext, __ΩSystemRenderDataContext, __ΩUserRenderDataContext } from "../data-context/index.js";
7
+ import { forkDataContextRecord, SFDataContext, } from "../data-context/index.js";
8
+ import { findRouteDom } from "../utils/index.js";
9
+ const __ΩRenderInstance = ['unMount', 'newProp', 'updateProp', () => RenderContext, 'newContext', 'updateChild', 'RenderInstance', 'PP$1!8P"2"$1#8PP7$2%$1&8Mw\'y'];
10
+ export { __ΩRenderInstance as __ΩRenderInstance };
11
+ export class WarpRenderInstance {
12
+ conetxt;
13
+ dom;
14
+ rawInstance;
15
+ dataContext;
16
+ constructor(conetxt, dom, rawInstance, dataContext) {
17
+ this.conetxt = conetxt;
18
+ this.dom = dom;
19
+ this.rawInstance = rawInstance;
20
+ this.dataContext = dataContext;
21
+ this.conetxt._instances.push(this);
22
+ }
23
+ unMount() {
24
+ if (this.rawInstance.unMount) {
25
+ this.rawInstance.unMount();
26
+ }
27
+ else {
28
+ this.dom.innerHTML = "";
29
+ }
30
+ Object.values(this.dataContext).forEach(__assignType((o) => {
31
+ (Object.values.Ω = [['"']], Object.values(o)).forEach(__assignType((c) => c instanceof SFDataContext && c.distory(), ['c', '', 'P"2!"/"']));
32
+ }, ['o', '', 'P"2!"/"']));
33
+ this.conetxt._instances = this.conetxt._instances.filter(__assignType((i) => i !== this, ['i', '', 'P"2!"/"']));
34
+ }
35
+ static __type = [() => RenderContext, 'conetxt', 'dom', () => __ΩRenderInstance, 'rawInstance', () => __ΩRenderDataContext, 'dataContext', 'constructor', 'unMount', 'WarpRenderInstance', 'PP7!2":9!2#:9n$2%:9n&2\':9"0(P"0)5w*'];
36
+ }
37
+ const __ΩIRender = ['fetchResource', () => __ΩRenderDataContext, 'dataContext', 'prop', () => RenderContext, 'chrild', 'renderToString', 'dom', () => __ΩRenderDataContext, () => RenderContext, () => __ΩRenderInstance, 'mount', () => __ΩRenderDataContext, () => RenderContext, () => __ΩRenderInstance, 'hydrate', 'IRender', 'PPP$`$J1!8Pn"2#"2$P7%2&P&&`J1\'8P!2(n)2#"2$P7*2&n+1,8P!2(n-2#"2$P7.2&n/108Mw1y'];
38
+ export { __ΩIRender as __ΩIRender };
39
+ export class RenderContext {
40
+ _systemDataContext;
41
+ _render;
42
+ _prop;
43
+ _child;
44
+ constructor(_systemDataContext, _render, _prop,
45
+ // 结尾始终要跟一个空的RenderContext
46
+ // 原因:比如一个layout命中了 但是下面的页面没有命中,但是layout切换页面时,layout本身不应该重新渲染,所以需要一开始给它一个占位的空姐点,然后更新这个空节点
47
+ _child) {
48
+ this._systemDataContext = _systemDataContext;
49
+ this._render = _render;
50
+ this._prop = _prop;
51
+ this._child = _child;
52
+ }
53
+ static createNoop(systemDataContext) {
54
+ return new RenderContext(systemDataContext, {}, {});
55
+ }
56
+ static create(systemDataContext, render, prop, child = this.createNoop(systemDataContext)) {
57
+ return new RenderContext(systemDataContext, render, prop, child);
58
+ }
59
+ get render() {
60
+ return this._render;
61
+ }
62
+ get prop() {
63
+ return this._prop;
64
+ }
65
+ get child() {
66
+ return this._child;
67
+ }
68
+ async warpRenderToString(dataContext) {
69
+ if (this._child) {
70
+ return ((await this.render.renderToString?.({
71
+ system: forkDataContextRecord(this._systemDataContext),
72
+ user: forkDataContextRecord(dataContext),
73
+ }, this.prop, this._child)) || "");
74
+ }
75
+ return "";
76
+ }
77
+ /**
78
+ * @internal
79
+ */
80
+ _instances = [];
81
+ mount(dom, dataContext) {
82
+ let instance = {};
83
+ const fullDataContext = {
84
+ system: forkDataContextRecord(this._systemDataContext),
85
+ user: forkDataContextRecord(dataContext),
86
+ };
87
+ if (this._child) {
88
+ if (this.render.mount) {
89
+ instance = this.render.mount(dom, fullDataContext, this.prop, this._child);
90
+ }
91
+ else if (this.render.renderToString) {
92
+ Promise.resolve(this.render.renderToString(fullDataContext, this.prop, this._child)).then(__assignType((html) => (dom.innerHTML = html), ['html', '', 'P"2!"/"']));
93
+ }
94
+ }
95
+ return new WarpRenderInstance(this, dom, instance, fullDataContext);
96
+ }
97
+ hydrate(dom, dataContext) {
98
+ let instance = {};
99
+ const fullDataContext = {
100
+ system: forkDataContextRecord(this._systemDataContext),
101
+ user: forkDataContextRecord(dataContext),
102
+ };
103
+ if (this._child) {
104
+ if (this.render.hydrate) {
105
+ instance = this.render.hydrate(dom, fullDataContext, this.prop, this._child);
106
+ }
107
+ else if (this.render.renderToString) {
108
+ // const vDom = parseHtmlToVDom(
109
+ // this.render.renderToString(this.prop, this._child),
110
+ // );
111
+ const routeDoms = findRouteDom(dom);
112
+ routeDoms.forEach(__assignType((r) => this.child.hydrate(r, dataContext), ['r', '', 'P"2!"/"']));
113
+ }
114
+ else if (this.render.mount) {
115
+ instance = this.render.mount(dom, fullDataContext, this.prop, this._child);
116
+ }
117
+ }
118
+ return new WarpRenderInstance(this, dom, instance, fullDataContext);
119
+ }
120
+ unmountAll() {
121
+ this._instances.forEach(__assignType((i) => i.unMount(), ['i', '', 'P"2!"/"']));
122
+ }
123
+ async updateTree(node, allowRender = true) {
124
+ let shoudldRerender = false;
125
+ const unRerenderTask = [];
126
+ if (this._render !== node._render) {
127
+ this._render = node._render;
128
+ if (allowRender) {
129
+ shoudldRerender = true;
130
+ }
131
+ }
132
+ if (this._prop !== node._prop) {
133
+ this._prop = node._prop;
134
+ if (allowRender) {
135
+ if (this._instances.every(__assignType((i) => i.rawInstance.updateProp, ['i', '', 'P"2!"/"']))) {
136
+ unRerenderTask.push(() => {
137
+ this._instances.forEach(__assignType((i) => {
138
+ i.rawInstance.updateProp(node._prop);
139
+ }, ['i', '', 'P"2!"/"']));
140
+ });
141
+ }
142
+ else {
143
+ shoudldRerender = true;
144
+ }
145
+ }
146
+ }
147
+ let childUpdated = false;
148
+ let shoudUpdateSubtree = false;
149
+ if (this._child !== node._child) {
150
+ if (!this._child || !node._child) {
151
+ this._child = node._child;
152
+ }
153
+ else {
154
+ shoudUpdateSubtree = true;
155
+ }
156
+ if (this._instances.every(__assignType((i) => i.rawInstance.updateChild, ['i', '', 'P"2!"/"']))) {
157
+ childUpdated = true;
158
+ unRerenderTask.push(() => {
159
+ this._instances.forEach(__assignType((i) => {
160
+ if (i.rawInstance.updateChild) {
161
+ i.rawInstance.updateChild(node._child);
162
+ }
163
+ }, ['i', '', 'P"2!"/"']));
164
+ });
165
+ }
166
+ }
167
+ let isRerender = allowRender && shoudldRerender;
168
+ if (shoudUpdateSubtree) {
169
+ await this._child?.updateTree(node._child, allowRender && !childUpdated && !isRerender);
170
+ }
171
+ if (isRerender) {
172
+ await Promise.all(this._instances.map(__assignType(async (i) => {
173
+ i.unMount();
174
+ await this.mount(i.dom, i.dataContext.user);
175
+ }, ['i', '', 'P"2!"/"'])));
176
+ }
177
+ else {
178
+ await Promise.all(unRerenderTask.map(__assignType((i) => i(), ['i', '', 'P"2!"/"'])));
179
+ }
180
+ }
181
+ static __type = [() => __ΩSystemRenderDataContext, '_systemDataContext', () => __ΩIRender, '_render', '_prop', () => RenderContext, '_child', 'constructor', () => __ΩSystemRenderDataContext, 'systemDataContext', 'createNoop', () => __ΩSystemRenderDataContext, () => __ΩIRender, 'render', 'prop', () => RenderContext, 'child', () => this.createNoop(systemDataContext), 'create', () => __ΩUserRenderDataContext, 'dataContext', 'warpRenderToString', () => WarpRenderInstance, '_instances', function () { return []; }, 'dom', () => __ΩUserRenderDataContext, 'mount', () => __ΩUserRenderDataContext, 'hydrate', 'unmountAll', () => RenderContext, 'node', 'allowRender', 'updateTree', 'RenderContext', 'Pn!2";n#2$;"2%;P7&2\'8;"0(Pn)2*"0+sPn,2*n-2."2/P7021>2"03s!!!Pn425"06P77F38>9P!2:n;25"0<P!2:n=25"0>P"0?PP7@2A"2B"0C5wD'];
182
+ }
183
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/view/render/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ function __assignType(fn, args) {
2
+ fn.__type = args;
3
+ return fn;
4
+ }
5
+ /*@ts-ignore*/
6
+ import { __ΩRenderDataContext } from "../data-context/index.js";
7
+ import { renderVDomToString } from "../html/render-v-dom-to-string.js";
8
+ /*@ts-ignore*/
9
+ import { __ΩHTMLVNode } from "../html/types.js";
10
+ /*@ts-ignore*/
11
+ import { __ΩIRender } from "./render.js";
12
+ import { RenderContext } from "./render.js";
13
+ export class SFVDomRender {
14
+ domFn;
15
+ constructor(domFn) {
16
+ this.domFn = domFn;
17
+ }
18
+ dom = [];
19
+ async fetchResource() {
20
+ if (typeof this.domFn === "function") {
21
+ const res = await this.domFn();
22
+ this.dom =
23
+ typeof res === "object" && "default" in res ? res.default : res;
24
+ }
25
+ else {
26
+ this.dom = this.domFn;
27
+ }
28
+ }
29
+ renderToString(context, prop, chrild) {
30
+ return renderVDomToString(this.dom, {
31
+ customizeChildrenRender: __assignType((el) => {
32
+ if (el.tagName === "sf-route") {
33
+ return () => chrild.warpRenderToString(context.user);
34
+ }
35
+ }, ['el', '', 'P"2!"/"']),
36
+ });
37
+ }
38
+ static __type = [() => __ΩHTMLVNode, () => __ΩHTMLVNode, () => __ΩHTMLVNode, () => __ΩHTMLVNode, () => __ΩHTMLVNode, () => __ΩHTMLVNode, 'default', '', 'domFn', 'constructor', () => __ΩHTMLVNode, () => __ΩHTMLVNode, 'dom', function () { return []; }, 'fetchResource', () => __ΩRenderDataContext, 'context', 'prop', () => RenderContext, 'chrild', 'renderToString', () => __ΩIRender, 'SFVDomRender', 'PPn!n"FPPn#n$FPPn%n&FJ4\'MJ`/(J2);9"0*Pn+n,FJ3-;>.P"0/Pn021"22P7324"055n6x"w7'];
39
+ }
40
+ //# sourceMappingURL=sf-v-dom-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sf-v-dom-render.js","sourceRoot":"","sources":["../../../src/view/render/sf-v-dom-render.ts"],"names":[],"mappings":";;;;;qCAAkC,0BAA0B;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;;6BAC7C,kBAAkB;;2BACL,aAAa;AAApD,OAAO,EAAW,aAAa,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,OAAO,YAAY;IAEN;IADlB,YACkB,KAKZ;QALY,UAAK,GAAL,KAAK,CAKjB;IACH,CAAC;IACI,GAAG,GAA4B,EAAE,CAAC;IAC1C,KAAK,CAAC,aAAa;QAClB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG;gBACP,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,CAAC;IACF,CAAC;IACD,cAAc,CAAC,OAA0B,EAAE,IAAS,EAAE,MAAqB;QAC1E,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,uBAAuB,eAAE,CAAC,EAAE,EAAE,EAAE;gBAC/B,IAAI,EAAE,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBAC/B,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtD,CAAC;YACF,CAAC,wBAAA;SACD,CAAC,CAAC;IACJ,CAAC;wPAlBsC,EAAE"}
@@ -0,0 +1,10 @@
1
+ const __ΩRecord = ['K', 'T', 'Record', 'l\'e#"Rb!b"Pde"!N#!w#y'];
2
+ /*@ts-ignore*/
3
+ import { __ΩIRender } from "./render/render.js";
4
+ const __ΩViewMeta = ['title', () => __ΩRecord, 'htmlMeta', 'ViewMeta', 'P&4!&&o"#4#8Mw$y'];
5
+ export { __ΩViewMeta as __ΩViewMeta };
6
+ const __ΩViewInfo = ['T', () => __ΩIRender, 'render', () => __ΩViewMeta, 'data', () => __ΩViewMeta, '', 'meta', 'ViewInfo', '"c!Pn"4#Pn$Pe$!2%n&/\'J4(8Mw)y'];
7
+ export { __ΩViewInfo as __ΩViewInfo };
8
+ const __ΩRenderConfig = ['baseUrl', 'RenderConfig', 'P&4!Mw"y'];
9
+ export { __ΩRenderConfig as __ΩRenderConfig };
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/view/types.ts"],"names":[],"mappings":";;2BAAwB,oBAAoB"}
@@ -0,0 +1,22 @@
1
+ function __assignType(fn, args) {
2
+ fn.__type = args;
3
+ return fn;
4
+ }
5
+ import { routeTagName } from "../const.js";
6
+ export function findRouteDom(root = document.body) {
7
+ const result = [];
8
+ const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
9
+ acceptNode: __assignType(function acceptNode(node) {
10
+ if (node instanceof HTMLElement &&
11
+ node.tagName.toLocaleLowerCase() === routeTagName.toLocaleLowerCase()) {
12
+ result.push(node);
13
+ return NodeFilter.FILTER_REJECT; // 跳过子节点,因为它们是嵌套的
14
+ }
15
+ return NodeFilter.FILTER_ACCEPT;
16
+ }, ['node', 'acceptNode', 'P"2!"/"']),
17
+ });
18
+ while (walker.nextNode()) { }
19
+ return result;
20
+ }
21
+ findRouteDom.__type = ['root', () => document.body, 'findRouteDom', 'P!2!>""/#'];
22
+ //# sourceMappingURL=find-route-dom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-route-dom.js","sourceRoot":"","sources":["../../../src/view/utils/find-route-dom.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,OAAoB,QAAQ,CAAC,IAAI;IAC7D,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE;QACvE,UAAU,wBAAV,UAAU,CAAC,IAAI;YACd,IACC,IAAI,YAAY,WAAW;gBAC3B,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,KAAK,YAAY,CAAC,iBAAiB,EAAE,EACpE,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC,iBAAiB;YACnD,CAAC;YACD,OAAO,UAAU,CAAC,aAAa,CAAC;QACjC,CAAC;KACD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA,CAAC;IAC5B,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,77 @@
1
+ const __ΩReturnType = ['T', 'args', '', 'ReturnType', 'l>e"!R"RPde#!P"@2"h"!/#qk#\'QRb!Pde"!p)w$y'];
2
+ function __assignType(fn, args) {
3
+ fn.__type = args;
4
+ return fn;
5
+ }
6
+ import { parseRoute } from "../../../route/index.js";
7
+ /*@ts-ignore*/
8
+ import { __ΩViewMeta } from "../../types.js";
9
+ import { findRouteDom } from "../find-route-dom.js";
10
+ import { createRootRenderContext, ssrToBrowserDataKey, updateRootRenderContext, } from "./common.js";
11
+ function listenerRoute(callback) {
12
+ const rawPush = history.pushState;
13
+ history.pushState = __assignType((data, un, url) => {
14
+ rawPush.call(history, data, un, url);
15
+ if (url)
16
+ setTimeout(callback);
17
+ }, ['data', 'un', 'url', '', 'P"2!"2""2#"/$']);
18
+ window.addEventListener("popstate", () => {
19
+ setTimeout(callback);
20
+ });
21
+ }
22
+ listenerRoute.__type = ['', 'callback', 'listenerRoute', 'PP$/!2""/#'];
23
+ function handleMeta(meta) {
24
+ document.title = meta.title;
25
+ }
26
+ handleMeta.__type = [() => __ΩViewMeta, 'meta', 'handleMeta', 'Pn!2""/#'];
27
+ export const clientRender = __assignType(async (routes) => {
28
+ const { config, pageData } = window[ssrToBrowserDataKey];
29
+ delete window[ssrToBrowserDataKey];
30
+ const route = routes("GET", location.pathname);
31
+ const getData = async () => {
32
+ const res = await fetch(location.href);
33
+ if (res.headers.get("content-type")?.includes("json")) {
34
+ return await res.json();
35
+ }
36
+ return undefined;
37
+ };
38
+ const context = await createRootRenderContext(config, route, () => pageData);
39
+ handleMeta(context.meta);
40
+ listenerRoute(async () => {
41
+ const route = routes("GET", location.pathname);
42
+ const c = await updateRootRenderContext(context, route, getData);
43
+ handleMeta(c.meta);
44
+ });
45
+ const addedEl = (WeakSet.Ω = [['!']], new WeakSet());
46
+ function handleAClick(ev) {
47
+ const target = ev.target;
48
+ if (target.download || target.target || ev.defaultPrevented)
49
+ return;
50
+ const rawHref = target.getAttribute("href");
51
+ if (!rawHref || rawHref.startsWith("#"))
52
+ return;
53
+ const route = routes("GET", target.pathname);
54
+ if (route.finalRoute) {
55
+ history.pushState(null, "", target.href.substring(target.origin.length));
56
+ ev.preventDefault();
57
+ }
58
+ }
59
+ handleAClick.__type = ['ev', 'handleAClick', 'P!2!"/"'];
60
+ window.addEventListener("click", __assignType((ev) => {
61
+ if (ev.target instanceof HTMLElement) {
62
+ let el = ev.target;
63
+ while (el && el !== document.body) {
64
+ if (el instanceof HTMLAnchorElement && !addedEl.has(el)) {
65
+ addedEl.add(el);
66
+ el.addEventListener("click", handleAClick, true);
67
+ }
68
+ el = el.parentElement;
69
+ }
70
+ }
71
+ }, ['ev', '', 'P"2!"/"']), true);
72
+ const routesElements = findRouteDom();
73
+ routesElements.forEach(__assignType((el) => {
74
+ context.render.hydrate(el, {});
75
+ }, ['el', '', 'P"2!"/"']));
76
+ }, [() => __ΩReturnType, () => parseRoute, 'routes', '', 'Pi"o!"2#"/$']);
77
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/view/utils/get-render/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ const __ΩReturnType = ['T', 'args', '', 'ReturnType', 'l>e"!R"RPde#!P"@2"h"!/#qk#\'QRb!Pde"!p)w$y'];
2
+ const __ΩPick = ['T', 'K', 'Pick', 'l+e#!e"!fRb!b"Pde""N#!w#y'];
3
+ function __assignType(fn, args) {
4
+ fn.__type = args;
5
+ return fn;
6
+ }
7
+ /*@ts-ignore*/
8
+ import { __ΩRouteType } from "../../../route/index.js";
9
+ /*@ts-ignore*/
10
+ import { __ΩSystemRenderDataContext } from "../../data-context/index.js";
11
+ import { SFRawDataContext, } from "../../data-context/index.js";
12
+ import { getLayots } from "../../layout.js";
13
+ import { RenderContext } from "../../render/index.js";
14
+ /*@ts-ignore*/
15
+ import { __ΩRenderConfig, __ΩViewMeta } from "../../types.js";
16
+ import { SFWebRequest } from "../../../request/index.js";
17
+ function createRawDataContext(config, route) {
18
+ const routeRawcontext = new SFRawDataContext(route);
19
+ const { baseUrl } = config;
20
+ return {
21
+ update: __assignType(function update(route) {
22
+ routeRawcontext.update(route);
23
+ }, [() => __ΩRouteType, "GET", 'route', 'update', 'P."o!"2#"/$']),
24
+ createChild: __assignType(function createChild() {
25
+ return {
26
+ route: routeRawcontext.createChild(),
27
+ request: new SFWebRequest(baseUrl),
28
+ baseUrl,
29
+ };
30
+ }, [() => __ΩSystemRenderDataContext, 'createChild', 'Pn!/"']),
31
+ };
32
+ }
33
+ createRawDataContext.__type = [() => __ΩRenderConfig, 'config', () => __ΩRouteType, "GET", 'route', 'createRawDataContext', 'Pn!2".$o#"2%"/&'];
34
+ const __ΩRootRenderContext = [() => RenderContext, 'render', () => __ΩReturnType, () => createRawDataContext, 'rawSystemDataContext', () => __ΩViewMeta, 'meta', 'RootRenderContext', 'PP7!4"i$o#"4%n&4\'Mw(y'];
35
+ export { __ΩRootRenderContext as __ΩRootRenderContext };
36
+ async function createRenderContext(route, dataFn, dataContext) {
37
+ if (route.finalRoute?.context?.view) {
38
+ const { obj, propertyKey } = route.finalRoute;
39
+ let view = route.finalRoute.context.view;
40
+ const layouts = route.allRoute.flatMap(__assignType((r) => getLayots(r.obj), ['r', '', 'P"2!"/"']));
41
+ const [data] = await Promise.all([
42
+ typeof obj[propertyKey] === "function"
43
+ ? dataFn()
44
+ : obj[propertyKey],
45
+ view.render.fetchResource?.(),
46
+ ...layouts.map(__assignType((l) => l.render.fetchResource?.(), ['l', '', 'P"2!"/"'])),
47
+ ]);
48
+ let render = RenderContext.create(dataContext.createChild(), view.render, data);
49
+ let meta = typeof view.meta === "function"
50
+ ? view.meta(data)
51
+ : view.meta || { title: "" };
52
+ return layouts.reduceRight(__assignType(({ render, meta }, currentValue) => {
53
+ return {
54
+ render: RenderContext.create(dataContext.createChild(), currentValue.render, undefined, render),
55
+ meta: typeof currentValue.meta === "function"
56
+ ? currentValue.meta(meta)
57
+ : currentValue.meta || meta,
58
+ };
59
+ }, ['param0', 'currentValue', '', 'P"2!"2""/#']), { render, meta });
60
+ }
61
+ else {
62
+ return {
63
+ render: RenderContext.createNoop(dataContext.createChild()),
64
+ meta: { title: "" },
65
+ };
66
+ }
67
+ }
68
+ createRenderContext.__type = [() => __ΩRouteType, "GET", 'route', '', 'dataFn', () => __ΩReturnType, () => createRawDataContext, 'dataContext', () => __ΩPick, () => __ΩRootRenderContext, "render", "meta", 'createRenderContext', 'P."o!"2#P"/$2%i\'o&"2(n*P.+.,Jo)#`/-'];
69
+ export async function createRootRenderContext(config, route, dataFn) {
70
+ const rawSystemDataContext = createRawDataContext(config, route);
71
+ return {
72
+ ...(await createRenderContext(route, dataFn, rawSystemDataContext)),
73
+ rawSystemDataContext,
74
+ };
75
+ }
76
+ createRootRenderContext.__type = [() => __ΩRenderConfig, 'config', () => __ΩRouteType, "GET", 'route', '', 'dataFn', () => __ΩRootRenderContext, 'createRootRenderContext', 'Pn!2".$o#"2%P"/&2\'n(`/)'];
77
+ export async function updateRootRenderContext(rootContext, route, dataFn) {
78
+ const newRenderContext = await createRenderContext(route, dataFn, rootContext.rawSystemDataContext);
79
+ rootContext.meta = newRenderContext.meta;
80
+ rootContext.render.updateTree(newRenderContext.render);
81
+ rootContext.rawSystemDataContext.update(route);
82
+ return rootContext;
83
+ }
84
+ updateRootRenderContext.__type = [() => __ΩRootRenderContext, 'rootContext', () => __ΩRouteType, "GET", 'route', '', 'dataFn', 'updateRootRenderContext', 'Pn!2".$o#"2%P"/&2\'"/('];
85
+ export const routeElementSelector = "sf-route";
86
+ export const ssrToBrowserDataKey = "__SFWebAppInitData";
87
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/view/utils/get-render/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // @side-only server
2
+ export { createServerRender } from "./server.js";
3
+ export { clientRender } from "./client.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/view/utils/get-render/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,60 @@
1
+ function __assignType(fn, args) {
2
+ fn.__type = args;
3
+ return fn;
4
+ }
5
+ import { ResponseWithMeta } from "../../../return-types/index.js";
6
+ import { parseHtmlToVDom, renderVDomToString } from "../../html/index.js";
7
+ import { createRootRenderContext, routeElementSelector, ssrToBrowserDataKey, } from "./common.js";
8
+ export const createServerRender = __assignType((context) => {
9
+ const htmlVDdom = parseHtmlToVDom(context.indexHtml);
10
+ return __assignType(async (prop, next) => {
11
+ const config = {
12
+ baseUrl: "/",
13
+ };
14
+ const nextPromise = next(prop);
15
+ const { accept, "sec-fetch-dest": fetchDest } = prop.header;
16
+ let pageData = undefined;
17
+ const rootContext = prop.method === "GET" &&
18
+ prop.route.finalRoute?.context?.view &&
19
+ (accept?.includes("text/html") || ["document"].includes(fetchDest))
20
+ ? await createRootRenderContext(config, prop.route, async () => {
21
+ const ret = await nextPromise;
22
+ pageData = ret.data;
23
+ return ret.data;
24
+ })
25
+ : undefined;
26
+ if (rootContext) {
27
+ const { render, meta } = rootContext;
28
+ const nextRet = await nextPromise;
29
+ const res = await render.warpRenderToString({});
30
+ return new ResponseWithMeta(renderVDomToString(htmlVDdom, {
31
+ customizeChildrenRender: __assignType((dom) => {
32
+ if (dom.tagName === routeElementSelector) {
33
+ return () => res;
34
+ }
35
+ if (dom.tagName === "head") {
36
+ return __assignType((dom, raw) => {
37
+ let res = [
38
+ `<script>window.${ssrToBrowserDataKey}=${JSON.stringify({ config, pageData })}</script>`,
39
+ raw(),
40
+ ];
41
+ res.push(`<title>${meta.title}</title>`);
42
+ if (meta.htmlMeta) {
43
+ Object.entries(meta.htmlMeta).forEach(__assignType(([k, v]) => res.push(`<meta name="${k}" content="${v}">`), ['param0', '', 'P"2!"/"']));
44
+ }
45
+ return res.join("");
46
+ }, ['dom', 'raw', '', 'P"2!"2""/#']);
47
+ }
48
+ }, ['dom', '', 'P"2!"/"']),
49
+ }), {
50
+ ...nextRet,
51
+ header: {
52
+ "content-type": "text/html; charset=utf-8",
53
+ ...nextRet.header,
54
+ },
55
+ });
56
+ }
57
+ return nextPromise;
58
+ }, ['prop', 'next', '', 'P"2!"2""/#']);
59
+ }, ['context', '', 'P"2!"/"']);
60
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/view/utils/get-render/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./get-render/index.js";
2
+ export * from "./find-route-dom.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/view/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Get } from "../route/index.js";
2
+ /*@ts-ignore*/
3
+ import { __ΩIRender } from "./render/render.js";
4
+ /*@ts-ignore*/
5
+ import { __ΩViewInfo } from "./types.js";
6
+ export function View(path, render, meta) {
7
+ return Get(path, { view: { render, meta } });
8
+ }
9
+ View.__type = ['path', () => __ΩIRender, 'render', () => __ΩViewInfo, "meta", 'meta', 'View', 'P&2!n"2#n$.%f2&8"/\''];
10
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;;2BAChB,oBAAoB;;4BACnB,YAAY;AAErC,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,MAAe,EAAE,IAAuB;IAC1E,OAAO,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@thestarweb/star-framework-app-web",
3
+ "version": "0.1.0",
4
+ "description": "Star Framework Web App",
5
+ "main": "dist/index.js",
6
+ "types": "src/index.ts",
7
+ "type": "module",
8
+ "publishConfig": {
9
+ "access": "public"
10
+ },
11
+ "scripts": {
12
+ "build": "tspc -p tsconfig.build.json",
13
+ "dev": "tspc -p tsconfig.build.json --watch",
14
+ "test": "vitest"
15
+ },
16
+ "dependencies": {
17
+ "@deepkit/type": "^1.0.19",
18
+ "@deepkit/type-compiler": "^1.0.0",
19
+ "@thestarweb/star-framework-cli": "^0.1.0",
20
+ "@thestarweb/star-framework-param-helper": "^0.1.0",
21
+ "@thestarweb/star-framework-route": "^0.1.0",
22
+ "@thestarweb/star-framework-utils": "^0.1.0",
23
+ "@thestarweb/star-framework-web-runtime-node": "^0.1.0",
24
+ "node-mocks-http": "^1.18.1",
25
+ "qs": "6.15.3",
26
+ "tslib": "^2.8.1",
27
+ "txml": "^6.0.3"
28
+ },
29
+ "peerDependencies": {
30
+ "@thestarweb/star-framework-cli": "^0.0.1",
31
+ "@types/qs": "6.15.1"
32
+ },
33
+ "devDependencies": {
34
+ "@types/node": "^26.0.1",
35
+ "ts-patch": "^4.0.1",
36
+ "typescript": "^6.0.3",
37
+ "vitest": "^4.1.9"
38
+ },
39
+ "license": "ISC",
40
+ "gitHead": "8161c026c503fbe0a7a825d9c1efbd7e527705c4"
41
+ }
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ </head>
5
+ <body>
6
+ <sf-route />
7
+ <script type="module">
8
+ import "sf:main"
9
+ </script>
10
+ </body>
11
+ </html>
@@ -0,0 +1,7 @@
1
+ import { parseRoute } from "../route/index.js";
2
+ import { clientRender } from "../view/index.js";
3
+
4
+ export function createBrowsweInstance(object: any) {
5
+ const routes = parseRoute(object);
6
+ clientRender(routes);
7
+ }