@mantou/gem 2.2.14 → 2.3.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 (82) hide show
  1. package/dist/gem.js +7 -7
  2. package/dist/gem.mjs +7 -7
  3. package/elements/base/link.d.ts.map +1 -1
  4. package/elements/base/link.js +6 -3
  5. package/elements/base/link.js.map +1 -1
  6. package/elements/base/modal-factory.d.ts +3 -2
  7. package/elements/base/modal-factory.d.ts.map +1 -1
  8. package/elements/base/route.d.ts +8 -3
  9. package/elements/base/route.d.ts.map +1 -1
  10. package/elements/base/route.js +84 -44
  11. package/elements/base/route.js.map +1 -1
  12. package/elements/base/use.d.ts.map +1 -1
  13. package/elements/base/use.js +11 -0
  14. package/elements/base/use.js.map +1 -1
  15. package/helper/hmr.d.ts +3 -2
  16. package/helper/hmr.d.ts.map +1 -1
  17. package/helper/hmr.js +95 -23
  18. package/helper/hmr.js.map +1 -1
  19. package/helper/i18n.d.ts +2 -1
  20. package/helper/i18n.d.ts.map +1 -1
  21. package/helper/i18n.js +9 -1
  22. package/helper/i18n.js.map +1 -1
  23. package/helper/theme.d.ts +8 -4
  24. package/helper/theme.d.ts.map +1 -1
  25. package/helper/theme.js +15 -10
  26. package/helper/theme.js.map +1 -1
  27. package/lib/decorators.d.ts.map +1 -1
  28. package/lib/decorators.js +31 -46
  29. package/lib/decorators.js.map +1 -1
  30. package/lib/history.d.ts +10 -7
  31. package/lib/history.d.ts.map +1 -1
  32. package/lib/history.js +37 -51
  33. package/lib/history.js.map +1 -1
  34. package/lib/lit-html.d.ts +15 -0
  35. package/lib/lit-html.d.ts.map +1 -1
  36. package/lib/lit-html.js +3 -1
  37. package/lib/lit-html.js.map +1 -1
  38. package/lib/reactive.d.ts +6 -2
  39. package/lib/reactive.d.ts.map +1 -1
  40. package/lib/reactive.js +114 -118
  41. package/lib/reactive.js.map +1 -1
  42. package/lib/server.d.ts +26 -0
  43. package/lib/server.d.ts.map +1 -0
  44. package/lib/server.js +45 -0
  45. package/lib/server.js.map +1 -0
  46. package/lib/store.d.ts +4 -1
  47. package/lib/store.d.ts.map +1 -1
  48. package/lib/store.js +24 -9
  49. package/lib/store.js.map +1 -1
  50. package/lib/utils.d.ts +2 -2
  51. package/lib/utils.d.ts.map +1 -1
  52. package/lib/utils.js +20 -7
  53. package/lib/utils.js.map +1 -1
  54. package/lib/version.d.ts +1 -1
  55. package/lib/version.d.ts.map +1 -1
  56. package/lib/version.js +1 -1
  57. package/lib/version.js.map +1 -1
  58. package/package.json +3 -4
  59. package/src/elements/base/link.ts +5 -3
  60. package/src/elements/base/route.ts +84 -49
  61. package/src/elements/base/use.ts +11 -0
  62. package/src/helper/hmr.ts +105 -37
  63. package/src/helper/i18n.ts +12 -1
  64. package/src/helper/theme.ts +19 -10
  65. package/src/lib/decorators.ts +38 -51
  66. package/src/lib/history.ts +37 -46
  67. package/src/lib/lit-html.ts +3 -1
  68. package/src/lib/reactive.ts +115 -124
  69. package/src/lib/server.ts +59 -0
  70. package/src/lib/store.ts +24 -9
  71. package/src/lib/utils.ts +22 -7
  72. package/src/lib/version.ts +1 -1
  73. package/src/test/elements/gesture.test.ts +13 -5
  74. package/src/test/elements/route.test.ts +102 -0
  75. package/src/test/elements/title.test.ts +7 -0
  76. package/src/test/gem-element/advance.test.ts +19 -0
  77. package/src/test/gem-element/basic.test.ts +33 -0
  78. package/src/test/history.test.ts +19 -0
  79. package/src/test/store.test.ts +12 -0
  80. package/src/test/theme.test.ts +8 -1
  81. package/src/test/utils.test.ts +6 -0
  82. package/src/test/utils.ts +56 -0
package/lib/reactive.js CHANGED
@@ -1,35 +1,30 @@
1
1
  // biome-ignore-all lint/plugin/no_this_effect: 兼容生命周期
2
+ import { isServer, ssrHooks } from './server';
2
3
  import { connect } from './store';
3
- import { addListener, addMicrotask, createUpdater, GemError, isArrayChange, LinkedList, randomStr, raw, } from './utils';
4
+ import { addListener, addMicrotask, assignState, createUpdater, GemError, isArrayChange, LinkedList, randomStr, raw, } from './utils';
4
5
  export let html = ((arr, ...args) => raw(arr, ...args.map((e) => (e instanceof Element ? e.outerHTML : e))));
5
6
  export let render = ((value, container) => (container.innerHTML = value));
6
7
  export function setEngine(h, r) {
7
8
  html = h;
8
9
  render = r;
9
10
  }
10
- let hydrationEngine = (_value, _container) => {
11
- return;
12
- };
13
- export function setHydrationEngine(engine) {
14
- hydrationEngine = engine;
15
- }
11
+ /** 渲染元素内容,SSR 时由 `ssrHooks.render` 接管 */
12
+ export const _renderRoot = (value, container) => ssrHooks.render?.(value, container) || render(value, container);
16
13
  const { assign, defineProperty } = Object;
17
14
  // https://github.com/tc39/proposal-decorator-metadata
18
15
  defineProperty(Symbol, 'metadata', { value: Symbol.for('Symbol.metadata') });
19
16
  const execCallback = (fun) => typeof fun === 'function' && fun();
20
- const ssrNativeQueueMicrotask = globalThis.nQM;
21
17
  // 读取构造样式表,跨多个 gem 工作
22
18
  export const SheetToken = Symbol.for('gem@sheetToken');
23
19
  // 更新元素,跨多个 gem 工作
24
20
  export const UpdateToken = Symbol.for('gem@update');
25
21
  const BoundaryCSSState = 'gem-style-boundary';
26
22
  const ElementCSSState = 'gem-element';
27
- /**@internal */
23
+ /** 渲染出错时在元素上派发,`@fallback` 处理时取消,SSR 时 `@server` 方法出错也会派发 */
28
24
  export const _RenderErrorEvent = 'gem@render-error';
29
25
  // fix modal-factory type error
30
26
  const updateTokenAlias = UpdateToken;
31
- const rootStyleSheetInfo = new WeakMap();
32
- const rootUpdateFnMap = new WeakMap();
27
+ const rootSheetsMap = new WeakMap();
33
28
  class GemCSSStyleSheet extends CSSStyleSheet {
34
29
  #ele;
35
30
  cssText = '';
@@ -56,40 +51,34 @@ class GemCSSSheet {
56
51
  setContent(v) {
57
52
  this.#content = v;
58
53
  }
59
- // 不需要 GC
60
- #record = new Map();
61
- #used = new Map();
54
+ // 对同一类 dom 只使用同一个样式表,key 是元素类或者 `this`,不需要 GC
55
+ #sheets = new Map();
56
+ #apply({ sheet, scope }) {
57
+ sheet.replaceSync(scope ? `${scope}{ ${this.#content} }` : this.#content);
58
+ }
62
59
  getStyle(host, isEleTheme) {
63
60
  const isLight = host && !host.internals?.shadowRoot;
64
- // 对同一类 dom 只使用同一个样式表
65
61
  const key = isLight ? host.constructor : this;
66
- if (!this.#record.has(key)) {
67
- const sheet = new GemCSSStyleSheet({ media: this.#media });
68
- this.#record.set(key, sheet);
62
+ let item = this.#sheets.get(key);
63
+ if (!item) {
64
+ // light dom 嵌套时需要选择子元素
65
+ // `> *` 实际上是多范围?是否存在性能问题
66
+ // 不能使用 @layer,两个 @layer 不能覆盖,只有顺序起作用
67
+ // 所以外部不能通过元素名称选择器来覆盖样式,除非样式在之前插入(会自动反转应用到尾部, see `adoptRootStyleSheets`)
68
+ const scope = !isLight
69
+ ? ''
70
+ : isEleTheme
71
+ ? '@scope'
72
+ : `@scope (${host.tagName}) to (:state(${BoundaryCSSState}) > *)`;
73
+ item = { sheet: new GemCSSStyleSheet({ media: this.#media }), scope };
74
+ this.#sheets.set(key, item);
75
+ this.#apply(item);
69
76
  }
70
- const sheet = this.#record.get(key);
71
- // 只执行一次
72
- if (!this.#used.has(sheet)) {
73
- let style = this.#content;
74
- let scope = '';
75
- if (isLight) {
76
- // light dom 嵌套时需要选择子元素
77
- // `> *` 实际上是多范围?是否存在性能问题
78
- scope = isEleTheme ? '@scope' : `@scope (${host.tagName}) to (:state(${BoundaryCSSState}) > *)`;
79
- // 不能使用 @layer,两个 @layer 不能覆盖,只有顺序起作用
80
- // 所以外部不能通过元素名称选择器来覆盖样式,除非样式在之前插入(会自动反转应用到尾部, see `appleCSSStyleSheet`)
81
- style = `${scope}{ ${style} }`;
82
- }
83
- sheet.replaceSync(style);
84
- this.#used.set(sheet, scope);
85
- }
86
- return sheet;
77
+ return item.sheet;
87
78
  }
88
79
  // 一般用于主题更新
89
80
  updateStyle() {
90
- this.#used.forEach((scope, sheet) => {
91
- sheet.replaceSync(scope ? `${scope}{${this.#content}}` : this.#content);
92
- });
81
+ this.#sheets.forEach((item) => this.#apply(item));
93
82
  }
94
83
  }
95
84
  export function css(mediaOrRules, ...rest) {
@@ -124,56 +113,59 @@ export function css(mediaOrRules, ...rest) {
124
113
  styleSheet.setContent(style);
125
114
  return sheet;
126
115
  }
127
- const updateStyleSheets = (map, sheets, value) => {
116
+ const updateRootSheets = ({ counts, update }, sheets, value) => {
128
117
  let needUpdate = false;
129
118
  sheets.forEach((e) => {
130
- const count = map.get(e) || 0;
119
+ const count = counts.get(e) || 0;
131
120
  needUpdate ||= (value === 1 && count === 0) || (value === -1 && count === 1);
132
121
  // count 为 0 时不立即删除,以便更新时识别是否外部样式
133
122
  // 但是只要挂载 document 的样式表就不会被 GC 了, 是否要在闲时 GC?
134
- map.set(e, count + value);
123
+ counts.set(e, count + value);
135
124
  });
136
- if (needUpdate) {
137
- // 避免重复更新,例如 list 元素增删,全 light dom 时 document 更新
138
- // 在 SSR 中应该区别 effect 强制执行
139
- addMicrotask(rootUpdateFnMap.get(map), ssrNativeQueueMicrotask);
140
- }
125
+ // 避免重复更新,例如 list 元素增删,全 light dom 时 document 更新
126
+ // 在 SSR 中应该区别 effect 强制执行
127
+ if (needUpdate)
128
+ addMicrotask(update);
141
129
  };
142
- const appleCSSStyleSheet = (ele, sheets) => {
130
+ /** light DOM 元素的样式表添加到渲染根中,返回移除函数 */
131
+ const adoptRootStyleSheets = (ele, sheets) => {
143
132
  const root = ele.getRootNode();
144
- if (!rootStyleSheetInfo.has(root)) {
145
- const map = new Map();
146
- rootStyleSheetInfo.set(root, map);
147
- rootUpdateFnMap.set(map, () => {
133
+ let rootSheets = rootSheetsMap.get(root);
134
+ if (!rootSheets) {
135
+ const counts = new Map();
136
+ const update = () => {
148
137
  // 先找到外部样式表
149
- const newSheets = (root.adoptedStyleSheets || []).filter((e) => !map.has(e));
150
- map.forEach((count, sheet) => count && newSheets.push(sheet));
138
+ const newSheets = (root.adoptedStyleSheets || []).filter((e) => !counts.has(e));
139
+ counts.forEach((count, sheet) => count && newSheets.push(sheet));
151
140
  // 外层元素的样式要放到最后,以提升优先级,但是只考虑第一次出现样式表的位置
152
141
  root.adoptedStyleSheets = newSheets.reverse();
153
- });
142
+ };
143
+ rootSheets = { counts, update };
144
+ rootSheetsMap.set(root, rootSheets);
154
145
  }
155
- const map = rootStyleSheetInfo.get(root);
156
- updateStyleSheets(map, sheets, 1);
157
- return () => updateStyleSheets(map, sheets, -1);
146
+ updateRootSheets(rootSheets, sheets, 1);
147
+ return () => updateRootSheets(rootSheets, sheets, -1);
158
148
  };
159
149
  /**必须使用在字段中,否则会读取到错误的实例 */
160
150
  export let createState;
151
+ function runEffect(item, values) {
152
+ execCallback(item.preCallback);
153
+ item.preCallback = item.callback(values, item.values);
154
+ item.values = values;
155
+ // 更新时也要设置,避免异步的 `#initEffect` 重复执行
156
+ item.initialized = true;
157
+ }
161
158
  function execEffectList(list) {
162
- list?.forEach((effectItem) => {
163
- const { callback, getDep, values, preCallback } = effectItem;
164
- const newValues = getDep?.();
165
- if (!getDep || !values || isArrayChange(values, newValues)) {
166
- execCallback(preCallback);
167
- effectItem.preCallback = callback(newValues, values);
168
- effectItem.values = newValues;
169
- // 更新时也要设置,避免异步的 `#initEffect` 重复执行
170
- effectItem.initialized = true;
171
- }
159
+ list.forEach((item) => {
160
+ const values = item.getDep?.();
161
+ if (!item.getDep || !item.values || isArrayChange(item.values, values))
162
+ runEffect(item, values);
172
163
  });
173
164
  }
174
165
  function clearEffect(list) {
175
166
  return list.filter((e) => {
176
167
  execCallback(e.preCallback);
168
+ e.preCallback = undefined;
177
169
  e.initialized = false;
178
170
  e.values = undefined;
179
171
  return e.fixed;
@@ -187,10 +179,16 @@ const tick = (timeStamp = performance.now()) => {
187
179
  if (performance.now() > timeStamp + 50)
188
180
  return requestAnimationFrame(tick);
189
181
  const task = noBlockingTaskList.get();
190
- if (task) {
182
+ if (!task)
183
+ return;
184
+ // 出错时继续执行后面的任务,否则剩下的任务不会再被调度
185
+ try {
191
186
  task();
192
- tick(timeStamp);
193
187
  }
188
+ catch (err) {
189
+ reportError(err);
190
+ }
191
+ tick(timeStamp);
194
192
  };
195
193
  noBlockingTaskList.addEventListener('start', () => addMicrotask(tick));
196
194
  let currentConstructGemElement;
@@ -207,9 +205,7 @@ export class GemElement extends HTMLElement {
207
205
  #rendering;
208
206
  #clearStyle;
209
207
  [updateTokenAlias]() {
210
- // 避免 `connectedCallback` 中的 property 赋值造成多余更新
211
- if (this.#isMounted)
212
- addMicrotask(this.#update);
208
+ this.#scheduleUpdate();
213
209
  }
214
210
  static {
215
211
  createState = (initState) => {
@@ -218,15 +214,14 @@ export class GemElement extends HTMLElement {
218
214
  const effect = ele.#effectList.at(0);
219
215
  // https://github.com/mantou132/gem/issues/203
220
216
  // SSR 不会执行 initEffect,应该跳过
221
- if (!ssrNativeQueueMicrotask && ele.#isMounted && effect && !effect.initialized) {
217
+ if (!isServer && ele.#isMounted && effect && !effect.initialized) {
222
218
  throw new GemError(`Don't set state sync before insert the DOM`);
223
219
  }
224
- assign(state, payload);
220
+ assignState(state, payload);
225
221
  // 避免无限刷新
226
- // 挂载前 set state 不应该触发更新
227
222
  // SSR 中渲染 <gem-route>,其他情况的 SSR 应该也可以执行
228
- if (!ele.#rendering && ele.#isMounted)
229
- addMicrotask(ele.#update, ssrNativeQueueMicrotask);
223
+ if (!ele.#rendering)
224
+ ele.#scheduleUpdate();
230
225
  });
231
226
  ele.#internals.stateList.push(state);
232
227
  return state;
@@ -241,6 +236,10 @@ export class GemElement extends HTMLElement {
241
236
  // 这里认为 rest 不会有自定义字段和 ShadowRootInit 参数冲突
242
237
  this.#renderRoot = !mode ? this : this.shadowRoot || this.attachShadow({ mode, delegatesFocus, ...rest });
243
238
  this.#internals = this.attachInternals();
239
+ // 定义前添加的 ShadowRoot 对 `ElementInternals` 不可见,例如客户端填充了服务端内容的延时视图元素
240
+ if (this.#renderRoot !== this && !this.#internals.shadowRoot) {
241
+ defineProperty(this.#internals, 'shadowRoot', { value: this.#renderRoot });
242
+ }
244
243
  this.#internals.stateList = [];
245
244
  this.#internals.sheets = [];
246
245
  assign(this.#internals, internalsAria);
@@ -281,9 +280,6 @@ export class GemElement extends HTMLElement {
281
280
  #execEffect = () => {
282
281
  execEffectList(this.#effectList);
283
282
  };
284
- #execMemo = () => {
285
- execEffectList(this.#memoList);
286
- };
287
283
  /**
288
284
  * - 条件渲染
289
285
  * - 没有 `render` 时显示子内容
@@ -294,17 +290,23 @@ export class GemElement extends HTMLElement {
294
290
  #render = (item) => {
295
291
  try {
296
292
  this.#rendering = true;
297
- this.#execMemo();
293
+ execEffectList(this.#memoList);
298
294
  const isLight = this.#renderRoot === this;
299
295
  const temp = item ? item.render() : isLight ? undefined : html `<slot></slot>`;
300
296
  if (temp === undefined)
301
297
  return;
302
- const r = temp !== null ? temp : html `<style>${isLight ? '@scope' : ':host'}{&{display:none!important;}}</style>`;
303
- hydrationEngine(r, this.#renderRoot) || render(r, this.#renderRoot);
298
+ // `<style>` 中不使用绑定,SSR 水合不支持
299
+ const r = temp ??
300
+ (isLight
301
+ ? html `<style>@scope{&{display:none!important;}}</style>`
302
+ : html `<style>:host{&{display:none!important;}}</style>`);
303
+ _renderRoot(r, this.#renderRoot);
304
304
  }
305
305
  catch (err) {
306
- this.dispatchEvent(new CustomEvent(_RenderErrorEvent, { bubbles: true, composed: true, detail: err }));
307
- throw err;
306
+ const evt = new CustomEvent(_RenderErrorEvent, { bubbles: true, composed: true, cancelable: true, detail: err });
307
+ // `@fallback` 处理了错误
308
+ if (this.dispatchEvent(evt))
309
+ throw err;
308
310
  }
309
311
  finally {
310
312
  this.#rendering = false;
@@ -316,17 +318,25 @@ export class GemElement extends HTMLElement {
316
318
  // 当有渲染函数,但是没一个符合条件时跳过
317
319
  (item || !this.#renderList.length)) {
318
320
  this.#render(item);
319
- addMicrotask(this.#execEffect);
321
+ if (!isServer)
322
+ addMicrotask(this.#execEffect);
320
323
  }
321
324
  };
322
- #update = () => {
323
- if (this.#metadata.noBlocking) {
324
- noBlockingTaskList.add(this.#updateCallback);
325
+ // `@async()` 的元素在空闲时执行,SSR 需要同步执行
326
+ #schedule = (task) => {
327
+ if (this.#metadata.noBlocking && !isServer) {
328
+ noBlockingTaskList.add(task);
325
329
  }
326
330
  else {
327
- this.#updateCallback();
331
+ task();
328
332
  }
329
333
  };
334
+ #update = () => this.#schedule(this.#updateCallback);
335
+ // 挂载前(例如 `connectedCallback` 中的 property 赋值)不需要更新,挂载时会渲染
336
+ #scheduleUpdate = () => {
337
+ if (this.#isMounted)
338
+ addMicrotask(this.#update);
339
+ };
330
340
  #prepareStyle = () => {
331
341
  const { adoptedStyleSheets = [] } = this.#metadata;
332
342
  const { shadowRoot, sheets } = this.#internals;
@@ -336,21 +346,14 @@ export class GemElement extends HTMLElement {
336
346
  }
337
347
  else {
338
348
  this.prepend(...sheets.map((e) => e.element));
339
- return appleCSSStyleSheet(this, clsSheets);
349
+ return adoptRootStyleSheets(this, clsSheets);
340
350
  }
341
351
  };
342
352
  /**
343
353
  * 元素挂载后执行还未初始化的副作用
344
354
  * */
345
355
  #initEffect = () => {
346
- this.#effectList?.forEach((effectItem) => {
347
- const { callback, getDep, initialized } = effectItem;
348
- if (!initialized) {
349
- effectItem.values = getDep?.();
350
- effectItem.preCallback = callback(effectItem.values);
351
- effectItem.initialized = true;
352
- }
353
- });
356
+ this.#effectList.forEach((item) => !item.initialized && runEffect(item, item.getDep?.()));
354
357
  };
355
358
  #compat = () => {
356
359
  if (this.willMount)
@@ -365,7 +368,8 @@ export class GemElement extends HTMLElement {
365
368
  this.#renderList.push({ render: this.render.bind(this), condition: this.shouldUpdate?.bind(this) });
366
369
  };
367
370
  #disconnectStore;
368
- #connectedCallback = async () => {
371
+ // 同步执行,SSR 需要捕获渲染错误
372
+ #connectedCallback = () => {
369
373
  if (this.#isAppendReason) {
370
374
  this.#isAppendReason = false;
371
375
  // https://github.com/mantou132/gem/issues/202
@@ -373,6 +377,8 @@ export class GemElement extends HTMLElement {
373
377
  this.#clearStyle = this.#prepareStyle();
374
378
  return;
375
379
  }
380
+ if (ssrHooks.connect?.(this, this.#connectedCallback))
381
+ return;
376
382
  this.#notInCons = true;
377
383
  this.#compat();
378
384
  const { observedStores, mode, penetrable } = this.#metadata;
@@ -388,7 +394,9 @@ export class GemElement extends HTMLElement {
388
394
  this.#clearStyle = this.#prepareStyle();
389
395
  // 等待所有元素的样式被应用,再执行回调
390
396
  // 这让 mounted 和 effect 回调和其他回调一样保持一样的异步行为
391
- addMicrotask(this.#initEffect);
397
+ // SSR 不执行副作用
398
+ if (!isServer)
399
+ addMicrotask(this.#initEffect);
392
400
  };
393
401
  /**
394
402
  * @private
@@ -396,12 +404,7 @@ export class GemElement extends HTMLElement {
396
404
  * use `@mounted`
397
405
  */
398
406
  connectedCallback() {
399
- if (this.#metadata.noBlocking) {
400
- noBlockingTaskList.add(this.#connectedCallback);
401
- }
402
- else {
403
- this.#connectedCallback();
404
- }
407
+ this.#schedule(this.#connectedCallback);
405
408
  return undefined;
406
409
  }
407
410
  /**
@@ -439,17 +442,10 @@ export class GemElement extends HTMLElement {
439
442
  * ```
440
443
  * */
441
444
  effect = (callback, getDep) => {
442
- const effectItem = {
443
- callback,
444
- getDep,
445
- initialized: this.#isMounted,
446
- fixed: !this.#notInCons,
447
- };
445
+ const effectItem = { callback, getDep, fixed: !this.#notInCons };
448
446
  // 已挂载时立即执行副作用,未挂载时等挂载后执行
449
- if (this.#isMounted) {
450
- effectItem.values = getDep?.();
451
- effectItem.preCallback = callback(effectItem.values);
452
- }
447
+ if (this.#isMounted)
448
+ runEffect(effectItem, getDep?.());
453
449
  this.#effectList.push(effectItem);
454
450
  };
455
451
  /**
@@ -480,6 +476,6 @@ export class GemElement extends HTMLElement {
480
476
  * @helper
481
477
  * async
482
478
  */
483
- update = () => addMicrotask(this.#update);
479
+ update = () => this.#scheduleUpdate();
484
480
  }
485
481
  //# sourceMappingURL=reactive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../src/lib/reactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../src/lib/reactive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { GemElement } from './reactive';
2
+ /** 服务端渲染时不执行副作用,同步更新 */
3
+ export declare const isServer: boolean;
4
+ /** SSR 接入 Gem 的钩子,`@mantou/gem-ssr` 在服务端和客户端分别设置 */
5
+ export declare const ssrHooks: {
6
+ /** 渲染元素内容,返回 `true` 时跳过渲染:服务端收集模版,客户端水合 */
7
+ render?: (value: unknown, container: HTMLElement | DocumentFragment) => boolean;
8
+ /** 元素挂载前调用,返回 `true` 时推迟挂载,之后调用 `connect` 挂载:客户端恢复状态,等待父模版水合 */
9
+ connect?: (ele: GemElement, connect: () => void) => boolean;
10
+ /** 创建有 key 的 store,返回初始值:客户端恢复服务端的值 */
11
+ createStore?: (key: string) => object | undefined;
12
+ /** 更新有 key 的 store:服务端记录,渲染后输出到页面中 */
13
+ updateStore?: (key: string, store: object) => void;
14
+ };
15
+ /**
16
+ * SSR 时返回当前请求中 `key` 对应的值,第一次访问时使用 `init` 创建,
17
+ * 不在请求中(包括客户端)时返回 `key` 本身
18
+ */
19
+ export declare const getRequestValue: <T extends object>(key: T, init: () => T) => T;
20
+ /**
21
+ * SSR 时对象的读写转到当前请求的副本上,副本在第一次访问时从原对象浅复制
22
+ *
23
+ * 嵌套的对象没有复制,原地修改会影响所有请求,应该替换顶层属性,例如 `store({ list: [...store.list, item] })`
24
+ */
25
+ export declare const isolate: <T extends object>(target: T) => T;
26
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/lib/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,wBAAwB;AACxB,eAAO,MAAM,QAAQ,SAAoB,CAAC;AAE1C,oDAAoD;AACpD,eAAO,MAAM,QAAQ,EAAE;IACrB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,GAAG,gBAAgB,KAAK,OAAO,CAAC;IAChF,gEAAgE;IAChE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC;IAC5D,uCAAuC;IACvC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAClD,sCAAsC;IACtC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAO3D,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,CAcjC,CAAC"}
package/lib/server.js ADDED
@@ -0,0 +1,45 @@
1
+ // SSR 相关的功能都在这里
2
+ //
3
+ // `@mantou/gem-ssr` 在加载 Gem 前提供 `__GEM_SSR__`,返回当前请求的作用域,
4
+ // 客户端构建时 `unplugin-gem` 把 `globalThis.__GEM_SSR__` 替换成 `undefined`,SSR 代码会被压缩移除
5
+ const { get, set, has, deleteProperty, defineProperty, getOwnPropertyDescriptor, ownKeys } = Reflect;
6
+ const getRequestScope = globalThis.__GEM_SSR__;
7
+ /** 服务端渲染时不执行副作用,同步更新 */
8
+ export const isServer = !!getRequestScope;
9
+ /** SSR 接入 Gem 的钩子,`@mantou/gem-ssr` 在服务端和客户端分别设置 */
10
+ export const ssrHooks = {};
11
+ /**
12
+ * SSR 时返回当前请求中 `key` 对应的值,第一次访问时使用 `init` 创建,
13
+ * 不在请求中(包括客户端)时返回 `key` 本身
14
+ */
15
+ export const getRequestValue = getRequestScope
16
+ ? (key, init) => {
17
+ const scope = getRequestScope();
18
+ if (!scope)
19
+ return key;
20
+ if (!scope.has(key))
21
+ scope.set(key, init());
22
+ return scope.get(key);
23
+ }
24
+ : (key) => key;
25
+ /**
26
+ * SSR 时对象的读写转到当前请求的副本上,副本在第一次访问时从原对象浅复制
27
+ *
28
+ * 嵌套的对象没有复制,原地修改会影响所有请求,应该替换顶层属性,例如 `store({ list: [...store.list, item] })`
29
+ */
30
+ export const isolate = getRequestScope
31
+ ? (target) => {
32
+ const copy = () => ({ ...target });
33
+ const current = () => getRequestValue(target, copy);
34
+ return new Proxy(target, {
35
+ get: (_, key) => get(current(), key),
36
+ set: (_, key, value) => set(current(), key, value),
37
+ has: (_, key) => has(current(), key),
38
+ deleteProperty: (_, key) => deleteProperty(current(), key),
39
+ defineProperty: (_, key, descriptor) => defineProperty(current(), key, descriptor),
40
+ getOwnPropertyDescriptor: (_, key) => getOwnPropertyDescriptor(current(), key),
41
+ ownKeys: () => ownKeys(current()),
42
+ });
43
+ }
44
+ : (target) => target;
45
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/lib/server.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,EAAE;AACF,0DAA0D;AAC1D,gFAAgF;AAIhF,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;AAErG,MAAM,eAAe,GAA0D,UAAkB,CAAC,WAAW,CAAC;AAE9G,wBAAwB;AACxB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,eAAe,CAAC;AAE1C,oDAAoD;AACpD,MAAM,CAAC,MAAM,QAAQ,GASjB,EAAE,CAAC;AAEP;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAmD,eAAe;IAC5F,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACZ,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,GAAG,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IACH,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AAEjB;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAuC,eAAe;IACxE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACpD,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC;YACpC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;YAClD,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC;YACpC,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC;YAC1D,cAAc,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC;YAClF,wBAAwB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC;YAC9E,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IACH,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC"}
package/lib/store.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  import { type Updater } from './utils';
2
2
  export type Store<T = any> = Updater<T>;
3
- export declare function createStore<T = any>(originStore: T): ((value?: Partial<T>) => void) & Omit<{
3
+ /**
4
+ * 创建 store,`key` 用来在 SSR 时同步服务端的值,`swc-plugin-gem` 的 `ssr` 选项会为模块顶层的 store 自动添加
5
+ */
6
+ export declare function createStore<T = any>(originStore: T, key?: string): ((value?: Partial<T>) => void) & Omit<{
4
7
  name: never;
5
8
  apply: never;
6
9
  call: never;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/lib/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAEpE,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAKxC,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC,aACC,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;;gBAO7D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,6BAI1D"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/lib/store.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AAEjF,MAAM,MAAM,KAAK,CAAC,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAOxC;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,aAIzB,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;;gBAYjD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,6BAK1D"}
package/lib/store.js CHANGED
@@ -1,17 +1,32 @@
1
- import { addMicrotask, createUpdater } from './utils';
1
+ import { getRequestValue, isolate, isServer, ssrHooks } from './server';
2
+ import { addMicrotask, assignState, createUpdater } from './utils';
2
3
  /**@internal */
3
4
  export const _StoreListenerMap = new WeakMap();
4
- export function createStore(originStore) {
5
- const store = createUpdater(originStore, (value) => {
6
- // biome-ignore lint/plugin/assign: 未知类型
7
- Object.assign(store, value);
8
- _StoreListenerMap.get(store)?.forEach((func) => addMicrotask(func));
9
- });
10
- _StoreListenerMap.set(store, new Set());
5
+ const createListeners = () => new Set();
6
+ /**
7
+ * 创建 store,`key` 用来在 SSR 时同步服务端的值,`swc-plugin-gem` 的 `ssr` 选项会为模块顶层的 store 自动添加
8
+ */
9
+ export function createStore(originStore, key) {
10
+ const listeners = createListeners();
11
+ // SSR 时每个请求使用独立的值
12
+ const store = isolate(createUpdater(originStore, (value) => {
13
+ assignState(store, value);
14
+ listeners.forEach(addMicrotask);
15
+ if (!isServer)
16
+ return;
17
+ // SSR 时请求中添加的监听器只属于当前请求,其他请求更新 store 时不会触发
18
+ getRequestValue(listeners, createListeners).forEach(addMicrotask);
19
+ if (key)
20
+ ssrHooks.updateStore?.(key, store);
21
+ }));
22
+ if (key)
23
+ assignState(store, ssrHooks.createStore?.(key));
24
+ _StoreListenerMap.set(store, listeners);
11
25
  return store;
12
26
  }
13
27
  export function connect(store, func) {
14
- const listeners = _StoreListenerMap.get(store);
28
+ const storeListeners = _StoreListenerMap.get(store);
29
+ const listeners = storeListeners && getRequestValue(storeListeners, createListeners);
15
30
  listeners?.add(func);
16
31
  return () => listeners?.delete(func);
17
32
  }
package/lib/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/lib/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAIpE,eAAe;AACf,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA+B,CAAC;AAE5E,MAAM,UAAU,WAAW,CAAU,WAAc;IACjD,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,KAAkB,EAAE,EAAE;QAC9D,wCAAwC;QACxC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5B,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAc,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAiB,EAAE,IAAgB;IACzD,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/lib/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAIjF,eAAe;AACf,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAA+B,CAAC;AAE5E,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAc,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAU,WAAc,EAAE,GAAY;IAC/D,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,kBAAkB;IAClB,MAAM,KAAK,GAAG,OAAO,CACnB,aAAa,CAAC,WAAW,EAAE,CAAC,KAAkB,EAAE,EAAE;QAChD,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1B,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,2CAA2C;QAC3C,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,GAAG;YAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CACH,CAAC;IACF,IAAI,GAAG;QAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAiB,EAAE,IAAgB;IACzD,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,cAAc,IAAI,eAAe,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IACrF,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}