@lynx-js/web-core-server 0.14.1 → 0.15.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @lynx-js/web-core-server
2
2
 
3
+ ## 0.15.0
4
+
5
+ ### Patch Changes
6
+
7
+ - feat: support to dump the css og system's style ([#1272](https://github.com/lynx-family/lynx-stack/pull/1272))
8
+
9
+ - perf: use rust implemented style transformer ([#1094](https://github.com/lynx-family/lynx-stack/pull/1094))
10
+
11
+ ## 0.14.2
12
+
13
+ ### Patch Changes
14
+
15
+ - 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))
16
+
3
17
  ## 0.14.1
4
18
 
5
19
  ## 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 { _attributes, _children, innerHTML, } from '@lynx-js/offscreen-document/webworker';
1
+ import { _attributes, _children, innerHTML, _cssRuleContents, } from '@lynx-js/offscreen-document/webworker';
2
2
  import { escapeHtml } from './utils/escapeHtml.js';
3
3
  function getInnerHTMLImpl(buffer, element, shadowrootTemplates) {
4
4
  const localName = element.localName;
@@ -19,6 +19,9 @@ function getInnerHTMLImpl(buffer, element, shadowrootTemplates) {
19
19
  : templateImpl;
20
20
  buffer.push('<template shadowrootmode="open">', template, '</template>');
21
21
  }
22
+ if (element[_cssRuleContents]?.length) {
23
+ buffer.push(...element[_cssRuleContents]);
24
+ }
22
25
  if (element[innerHTML]) {
23
26
  buffer.push(element[innerHTML]);
24
27
  }
@@ -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.15.0",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [],
@@ -22,10 +22,10 @@
22
22
  "README.md"
23
23
  ],
24
24
  "devDependencies": {
25
- "@lynx-js/offscreen-document": "0.1.2",
26
- "@lynx-js/web-constants": "0.14.1",
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"
25
+ "@lynx-js/offscreen-document": "0.1.3",
26
+ "@lynx-js/web-constants": "0.15.0",
27
+ "@lynx-js/web-elements-template": "0.8.0",
28
+ "@lynx-js/web-mainthread-apis": "0.15.0",
29
+ "@lynx-js/web-worker-rpc": "0.15.0"
30
30
  }
31
31
  }