@lynx-js/web-core-server 0.14.1 → 0.14.2

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @lynx-js/web-core-server
2
2
 
3
+ ## 0.14.2
4
+
5
+ ### Patch Changes
6
+
7
+ - chore: extract shared logic from web-core and web-core-server's loadTemplate into a unified generateTemplate function ([#1211](https://github.com/lynx-family/lynx-stack/pull/1211))
8
+
3
9
  ## 0.14.1
4
10
 
5
11
  ## 0.14.0
@@ -50,6 +50,8 @@ export async function createLynxView(config) {
50
50
  firstPaintReady();
51
51
  }, () => {
52
52
  // mark timing
53
+ }, () => {
54
+ // flush mark timing
53
55
  }, () => {
54
56
  // report error
55
57
  }, () => {
@@ -1,4 +1,4 @@
1
- import { globalMuteableVars } from '@lynx-js/web-constants';
1
+ import { generateTemplate } from '@lynx-js/web-constants';
2
2
  import os from 'node:os';
3
3
  import fs from 'node:fs/promises';
4
4
  import path from 'node:path';
@@ -12,112 +12,13 @@ async function createJsModuleUrl(content, filename) {
12
12
  await fs.writeFile(fileUrl, content, { flag: 'w+' });
13
13
  return fileUrl;
14
14
  }
15
- async function generateJavascriptUrl(obj, injectVars, injectWithBind, muteableVars, templateName) {
16
- injectVars = injectVars.concat(muteableVars);
17
- return Object.fromEntries(await Promise.all(Object.entries(obj).map(async ([name, content]) => {
18
- return [
19
- name,
20
- await createJsModuleUrl([
21
- '//# allFunctionsCalledOnLoad\n',
22
- 'globalThis.module.exports = function(lynx_runtime) {',
23
- 'const module= {exports:{}};let exports = module.exports;',
24
- 'var {',
25
- injectVars.join(','),
26
- '} = lynx_runtime;',
27
- ...injectWithBind.map((nm) => `const ${nm} = lynx_runtime.${nm}?.bind(lynx_runtime);`),
28
- ';var globDynamicComponentEntry = \'__Card__\';',
29
- 'var {__globalProps} = lynx;',
30
- 'lynx_runtime._updateVars=()=>{',
31
- ...muteableVars.map((nm) => `${nm} = lynx_runtime.__lynxGlobalBindingValues.${nm};`),
32
- '};\n',
33
- content,
34
- '\n return module.exports;}',
35
- ].join(''), `${templateName}-${name.replaceAll('/', '')}.js`),
36
- ];
37
- })));
38
- }
39
- const mainThreadInjectVars = [
40
- 'lynx',
41
- 'globalThis',
42
- '_ReportError',
43
- '_SetSourceMapRelease',
44
- '__AddConfig',
45
- '__AddDataset',
46
- '__GetAttributes',
47
- '__GetComponentID',
48
- '__GetDataByKey',
49
- '__GetDataset',
50
- '__GetElementConfig',
51
- '__GetElementUniqueID',
52
- '__GetID',
53
- '__GetTag',
54
- '__SetAttribute',
55
- '__SetConfig',
56
- '__SetDataset',
57
- '__SetID',
58
- '__UpdateComponentID',
59
- '__GetConfig',
60
- '__UpdateListCallbacks',
61
- '__AppendElement',
62
- '__ElementIsEqual',
63
- '__FirstElement',
64
- '__GetChildren',
65
- '__GetParent',
66
- '__InsertElementBefore',
67
- '__LastElement',
68
- '__NextElement',
69
- '__RemoveElement',
70
- '__ReplaceElement',
71
- '__ReplaceElements',
72
- '__SwapElement',
73
- '__CreateComponent',
74
- '__CreateElement',
75
- '__CreatePage',
76
- '__CreateView',
77
- '__CreateText',
78
- '__CreateRawText',
79
- '__CreateImage',
80
- '__CreateScrollView',
81
- '__CreateWrapperElement',
82
- '__CreateList',
83
- '__AddEvent',
84
- '__GetEvent',
85
- '__GetEvents',
86
- '__SetEvents',
87
- '__AddClass',
88
- '__SetClasses',
89
- '__GetClasses',
90
- '__AddInlineStyle',
91
- '__SetInlineStyles',
92
- '__SetCSSId',
93
- '__OnLifecycleEvent',
94
- '__FlushElementTree',
95
- '__LoadLepusChunk',
96
- 'SystemInfo',
97
- '_I18nResourceTranslation',
98
- '_AddEventListener',
99
- ];
100
- const backgroundInjectVars = [
101
- 'NativeModules',
102
- 'globalThis',
103
- 'lynx',
104
- 'lynxCoreInject',
105
- 'SystemInfo',
106
- ];
107
- const backgroundInjectWithBind = [
108
- 'Card',
109
- 'Component',
110
- ];
111
15
  export async function loadTemplate(rawTemplate, templateName = Math.random().toString(36).substring(2, 7)) {
112
16
  if (templateCache.has(rawTemplate)) {
113
17
  return templateCache.get(rawTemplate);
114
18
  }
115
19
  templateName += Math.random().toString(36).substring(2, 7);
116
- const decodedTemplate = templateCache.get(rawTemplate) ?? {
117
- ...rawTemplate,
118
- lepusCode: await generateJavascriptUrl(rawTemplate.lepusCode, mainThreadInjectVars, [], globalMuteableVars, templateName + '-lepusCode'),
119
- manifest: await generateJavascriptUrl(rawTemplate.manifest, backgroundInjectVars, backgroundInjectWithBind, [], templateName + '-manifest'),
120
- };
20
+ const decodedTemplate = templateCache.get(rawTemplate)
21
+ ?? await generateTemplate(rawTemplate, createJsModuleUrl, templateName + '-lepusCode');
121
22
  templateCache.set(rawTemplate, decodedTemplate);
122
23
  /**
123
24
  * This will cause a memory leak, which is expected.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lynx-js/web-core-server",
3
- "version": "0.14.1",
3
+ "version": "0.14.2",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [],
@@ -23,9 +23,9 @@
23
23
  ],
24
24
  "devDependencies": {
25
25
  "@lynx-js/offscreen-document": "0.1.2",
26
- "@lynx-js/web-constants": "0.14.1",
26
+ "@lynx-js/web-constants": "0.14.2",
27
27
  "@lynx-js/web-elements-template": "0.7.7",
28
- "@lynx-js/web-mainthread-apis": "0.14.1",
29
- "@lynx-js/web-worker-rpc": "0.14.1"
28
+ "@lynx-js/web-mainthread-apis": "0.14.2",
29
+ "@lynx-js/web-worker-rpc": "0.14.2"
30
30
  }
31
31
  }