tungsten 0.3.3 → 0.3.5

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 (153) hide show
  1. package/dist/.build-complete +1 -1
  2. package/dist/Components.d.ts +6 -1
  3. package/dist/Components.d.ts.map +1 -1
  4. package/dist/Components.js +103 -40
  5. package/dist/DomPointer.d.ts +11 -0
  6. package/dist/DomPointer.d.ts.map +1 -1
  7. package/dist/DomPointer.js +15 -0
  8. package/dist/DomRegion.d.ts +2 -0
  9. package/dist/DomRegion.d.ts.map +1 -1
  10. package/dist/DomRegion.js +23 -3
  11. package/dist/Framework.d.ts.map +1 -1
  12. package/dist/Framework.js +28 -6
  13. package/dist/FrameworkConfig.d.ts +2 -0
  14. package/dist/FrameworkConfig.d.ts.map +1 -1
  15. package/dist/Instance/Instance.d.ts +1 -1
  16. package/dist/Instance/Instance.d.ts.map +1 -1
  17. package/dist/Servers/DevServer.d.ts.map +1 -1
  18. package/dist/Servers/DevServer.js +3 -3
  19. package/dist/Servers/ProdServer.d.ts +1 -1
  20. package/dist/Servers/ProdServer.d.ts.map +1 -1
  21. package/dist/Servers/ProdServer.js +13 -3
  22. package/dist/Servers/loadEnvsDev.d.ts.map +1 -1
  23. package/dist/Servers/loadEnvsDev.js +17 -6
  24. package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts +13 -0
  25. package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts.map +1 -0
  26. package/dist/babelPlugins/BabelExtractComponentStylesheet.js +24 -0
  27. package/dist/babelPlugins/BabelTransformComponentStyles.d.ts +2 -0
  28. package/dist/babelPlugins/BabelTransformComponentStyles.d.ts.map +1 -1
  29. package/dist/babelPlugins/BabelTransformComponentStyles.js +21 -5
  30. package/dist/babelPlugins/BabelTransformPackageImports.d.ts +1 -0
  31. package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
  32. package/dist/babelPlugins/BabelTransformPackageImports.js +21 -9
  33. package/dist/bin/commands/build.d.ts.map +1 -1
  34. package/dist/bin/commands/build.js +9 -2
  35. package/dist/bin/commands/compile.d.ts.map +1 -1
  36. package/dist/bin/commands/compile.js +7 -2
  37. package/dist/build/CompilationInfo.d.ts +1 -0
  38. package/dist/build/CompilationInfo.d.ts.map +1 -1
  39. package/dist/build/combineComponentCss.d.ts +1 -1
  40. package/dist/build/combineComponentCss.d.ts.map +1 -1
  41. package/dist/build/combineComponentCss.js +3 -3
  42. package/dist/build/compileJavascript.d.ts.map +1 -1
  43. package/dist/build/compileJavascript.js +2 -2
  44. package/dist/build/compileUserApp.d.ts.map +1 -1
  45. package/dist/build/compileUserApp.js +14 -5
  46. package/dist/build/frameworkStylesheets.d.ts +5 -0
  47. package/dist/build/frameworkStylesheets.d.ts.map +1 -0
  48. package/dist/build/frameworkStylesheets.js +49 -0
  49. package/dist/build/getPackageDirForFile.d.ts +2 -0
  50. package/dist/build/getPackageDirForFile.d.ts.map +1 -0
  51. package/dist/build/getPackageDirForFile.js +11 -0
  52. package/dist/build/getSxyClientPackageAliases.d.ts.map +1 -1
  53. package/dist/build/getSxyClientPackageAliases.js +3 -1
  54. package/dist/build/makeBabelUserDevConfig.d.ts +1 -1
  55. package/dist/build/makeBabelUserDevConfig.d.ts.map +1 -1
  56. package/dist/build/makeBabelUserDevConfig.js +3 -2
  57. package/dist/build/makeBabelUserProdConfig.d.ts +1 -1
  58. package/dist/build/makeBabelUserProdConfig.d.ts.map +1 -1
  59. package/dist/build/makeBabelUserProdConfig.js +4 -2
  60. package/dist/build/rollup.user.prod.config.d.ts.map +1 -1
  61. package/dist/build/rollup.user.prod.config.js +4 -1
  62. package/dist/build/rollupExtractComponentStylesheets.d.ts +12 -0
  63. package/dist/build/rollupExtractComponentStylesheets.d.ts.map +1 -0
  64. package/dist/build/rollupExtractComponentStylesheets.js +35 -0
  65. package/dist/compat/context.d.ts +1 -1
  66. package/dist/compat/context.d.ts.map +1 -1
  67. package/dist/componentCss/i/T-components-library-RichTextEditor-RichTextEditor.css +115 -0
  68. package/dist/componentCss/i/T-components-library-__StatefulMessage-StatefulMessage.css +25 -0
  69. package/dist/componentCss/tungsten.css +2 -0
  70. package/dist/componentProxyHandlers.d.ts +2 -1
  71. package/dist/componentProxyHandlers.d.ts.map +1 -1
  72. package/dist/componentProxyHandlers.js +45 -9
  73. package/dist/components/GoToComponent.d.ts +1 -1
  74. package/dist/components/GoToComponent.d.ts.map +1 -1
  75. package/dist/components/_GoToComponent.d.ts +10 -0
  76. package/dist/components/_GoToComponent.d.ts.map +1 -0
  77. package/dist/components/_GoToComponent.js +13 -0
  78. package/dist/components/library/RichTextEditor/RichTextEditor.d.ts +50 -0
  79. package/dist/components/library/RichTextEditor/RichTextEditor.d.ts.map +1 -0
  80. package/dist/components/library/RichTextEditor/RichTextEditor.js +458 -0
  81. package/dist/components/library/RichTextEditor/StoredContentNode.d.ts +5 -0
  82. package/dist/components/library/RichTextEditor/StoredContentNode.d.ts.map +1 -0
  83. package/dist/components/library/RichTextEditor/StoredContentNode.js +1 -0
  84. package/dist/components/library/RichTextEditor/activeFormats.d.ts +20 -0
  85. package/dist/components/library/RichTextEditor/activeFormats.d.ts.map +1 -0
  86. package/dist/components/library/RichTextEditor/activeFormats.js +48 -0
  87. package/dist/components/library/RichTextEditor/contentTree.d.ts +30 -0
  88. package/dist/components/library/RichTextEditor/contentTree.d.ts.map +1 -0
  89. package/dist/components/library/RichTextEditor/contentTree.js +81 -0
  90. package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.d.ts +30 -0
  91. package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.d.ts.map +1 -0
  92. package/dist/components/library/RichTextEditor/sanitizeAuthoredHtml.js +97 -0
  93. package/dist/components/library/__StatefulMessage/MessageData.d.ts +7 -0
  94. package/dist/components/library/__StatefulMessage/MessageData.d.ts.map +1 -0
  95. package/dist/components/library/__StatefulMessage/MessageData.js +1 -0
  96. package/dist/components/library/__StatefulMessage/StatefulMessage.d.ts +22 -0
  97. package/dist/components/library/__StatefulMessage/StatefulMessage.d.ts.map +1 -0
  98. package/dist/components/library/__StatefulMessage/StatefulMessage.js +88 -0
  99. package/dist/components/library/index.d.ts +5 -0
  100. package/dist/components/library/index.d.ts.map +1 -0
  101. package/dist/components/library/index.js +7 -0
  102. package/dist/defaultConfig.d.ts +1 -0
  103. package/dist/defaultConfig.d.ts.map +1 -1
  104. package/dist/defaultConfig.js +1 -0
  105. package/dist/env/addToEnv.d.ts +2 -0
  106. package/dist/env/addToEnv.d.ts.map +1 -0
  107. package/dist/env/addToEnv.js +19 -0
  108. package/dist/findUserConfig.d.ts +1 -1
  109. package/dist/indexInner.d.ts +5 -5
  110. package/dist/indexInner.d.ts.map +1 -1
  111. package/dist/indexInner.js +2 -1
  112. package/dist/postcssPlugins/TransformCssNames.d.ts.map +1 -1
  113. package/dist/postcssPlugins/TransformCssNames.js +10 -2
  114. package/dist/propsAreEqual.d.ts +8 -0
  115. package/dist/propsAreEqual.d.ts.map +1 -0
  116. package/dist/propsAreEqual.js +97 -0
  117. package/dist/render/HeadData.d.ts +1 -0
  118. package/dist/render/HeadData.d.ts.map +1 -1
  119. package/dist/render/contentToHtml.d.ts.map +1 -1
  120. package/dist/render/contentToHtml.js +1 -0
  121. package/dist/render/instantiateClassComponent.d.ts.map +1 -1
  122. package/dist/render/instantiateClassComponent.js +4 -0
  123. package/dist/render/processHead.d.ts.map +1 -1
  124. package/dist/render/processHead.js +14 -1
  125. package/dist/settings.d.ts +2 -0
  126. package/dist/settings.d.ts.map +1 -1
  127. package/dist/settings.js +3 -0
  128. package/dist/stateTracking.d.ts +47 -0
  129. package/dist/stateTracking.d.ts.map +1 -0
  130. package/dist/stateTracking.js +83 -0
  131. package/dist/staticGen/staticGen.d.ts.map +1 -1
  132. package/dist/staticGen/staticGen.js +117 -107
  133. package/dist/testing/installTestStyleProcessors.d.ts +2 -0
  134. package/dist/testing/installTestStyleProcessors.d.ts.map +1 -0
  135. package/dist/testing/installTestStyleProcessors.js +21 -0
  136. package/dist/testing/temp/componentPackageMock.d.ts +18 -0
  137. package/dist/testing/temp/componentPackageMock.d.ts.map +1 -0
  138. package/dist/testing/temp/componentPackageMock.js +37 -0
  139. package/dist/testing/temp/contentHtmlElements.d.ts +3 -0
  140. package/dist/testing/temp/contentHtmlElements.d.ts.map +1 -0
  141. package/dist/testing/temp/contentHtmlElements.js +12 -0
  142. package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
  143. package/dist/update/integrateUpdateVdom.js +160 -51
  144. package/dist/update/pendingMounts.d.ts +25 -0
  145. package/dist/update/pendingMounts.d.ts.map +1 -0
  146. package/dist/update/pendingMounts.js +55 -0
  147. package/package.json +4 -2
  148. package/dist/env/injectEnv.d.ts +0 -2
  149. package/dist/env/injectEnv.d.ts.map +0 -1
  150. package/dist/env/injectEnv.js +0 -9
  151. package/dist/env/parseEnv.d.ts +0 -2
  152. package/dist/env/parseEnv.d.ts.map +0 -1
  153. package/dist/env/parseEnv.js +0 -14
@@ -15,7 +15,8 @@ export function processHead(headNode, headData) {
15
15
  clientImportAliases,
16
16
  dev,
17
17
  siteBasePath,
18
- hmr
18
+ hmr,
19
+ frameworkCss
19
20
  } = headData;
20
21
  //console.log('processing head. dev is', dev)
21
22
  if (headNode[$props].children === undefined) headNode[$props].children = [];else if (!Array.isArray(headNode[$props].children)) headNode[$props].children = [headNode[$props].children];
@@ -28,6 +29,18 @@ export function processHead(headNode, headData) {
28
29
  href: `${siteBasePath}/${componentCssFolder}/${componentCssFile}`
29
30
  }
30
31
  });
32
+ // unshifted after the app's, so it lands before it and app rules win on equal specificity
33
+ if (frameworkCss !== undefined) {
34
+ headNode[$props].children.unshift({
35
+ [$type]: 'link',
36
+ [$props]: {
37
+ 'data--t-internal': undefined,
38
+ 'data--t-persist': true,
39
+ rel: 'stylesheet',
40
+ href: `${siteBasePath}${frameworkCss}`
41
+ }
42
+ });
43
+ }
31
44
  // entry script
32
45
  const scriptNode = {
33
46
  [$type]: 'script',
@@ -15,6 +15,8 @@ export declare const publicFolder = ".public";
15
15
  export declare const assetsFolder = ".assets";
16
16
  export declare const componentCssFolder = ".componentCss";
17
17
  export declare const componentCssFile = "ccss.css";
18
+ export declare const frameworkCssFolder = ".tungstenCss";
19
+ export declare const frameworkCssFile = "tungsten.css";
18
20
  export declare const packagesFolder = ".packages";
19
21
  export declare const unusedStyleReporting: boolean;
20
22
  export declare const packageName = "tungsten";
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,cAAc,CAAA;AACtC,eAAO,MAAM,gBAAgB,SAAS,CAAA;AACtC,eAAO,MAAM,mBAAmB,kBAAuB,CAAA;AACvD,eAAO,MAAM,cAAc,uBAA+C,CAAA;AAC1E,eAAO,MAAM,eAAe,mBAAwB,CAAA;AACpD,eAAO,MAAM,mBAAmB,wBAA2C,CAAA;AAC3E,eAAO,MAAM,YAAY,2BAA+B,CAAA;AACxD,eAAO,MAAM,gBAAgB,yBAA8B,CAAA;AAC3D,eAAO,MAAM,mBAAmB,4BAAiC,CAAA;AACjE,eAAO,MAAM,qBAAqB,cAAc,CAAA;AAChD,eAAO,MAAM,YAAY,WAAW,CAAA;AAEpC,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,kBAAkB,kBAAkB,CAAA;AACjD,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAC1C,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC,eAAO,MAAM,oBAAoB,EAAE,OAAe,CAAA;AAElD,eAAO,MAAM,WAAW,aAAa,CAAA;AACrC,eAAO,MAAM,sBAAsB,aAAa,CAAA;AAChD,eAAO,MAAM,qBAAqB,YAAY,CAAA;AAC9C,eAAO,MAAM,mBAAmB,SAAS,CAAA"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,cAAc,CAAA;AACtC,eAAO,MAAM,gBAAgB,SAAS,CAAA;AACtC,eAAO,MAAM,mBAAmB,kBAAuB,CAAA;AACvD,eAAO,MAAM,cAAc,uBAA+C,CAAA;AAC1E,eAAO,MAAM,eAAe,mBAAwB,CAAA;AACpD,eAAO,MAAM,mBAAmB,wBAA2C,CAAA;AAC3E,eAAO,MAAM,YAAY,2BAA+B,CAAA;AACxD,eAAO,MAAM,gBAAgB,yBAA8B,CAAA;AAC3D,eAAO,MAAM,mBAAmB,4BAAiC,CAAA;AACjE,eAAO,MAAM,qBAAqB,cAAc,CAAA;AAChD,eAAO,MAAM,YAAY,WAAW,CAAA;AAEpC,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,YAAY,YAAY,CAAA;AACrC,eAAO,MAAM,kBAAkB,kBAAkB,CAAA;AACjD,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAE1C,eAAO,MAAM,kBAAkB,iBAAiB,CAAA;AAChD,eAAO,MAAM,gBAAgB,iBAAiB,CAAA;AAC9C,eAAO,MAAM,cAAc,cAAc,CAAA;AAEzC,eAAO,MAAM,oBAAoB,EAAE,OAAe,CAAA;AAElD,eAAO,MAAM,WAAW,aAAa,CAAA;AACrC,eAAO,MAAM,sBAAsB,aAAa,CAAA;AAChD,eAAO,MAAM,qBAAqB,YAAY,CAAA;AAC9C,eAAO,MAAM,mBAAmB,SAAS,CAAA"}
package/dist/settings.js CHANGED
@@ -16,6 +16,9 @@ export const publicFolder = '.public';
16
16
  export const assetsFolder = '.assets';
17
17
  export const componentCssFolder = '.componentCss';
18
18
  export const componentCssFile = 'ccss.css';
19
+ // framework component css, kept separate from the app's so devtools names the origin
20
+ export const frameworkCssFolder = '.tungstenCss';
21
+ export const frameworkCssFile = 'tungsten.css';
19
22
  export const packagesFolder = '.packages';
20
23
  export const unusedStyleReporting = false;
21
24
  export const packageName = 'tungsten';
@@ -0,0 +1,47 @@
1
+ /**
2
+ * A monotonic clock for state writes, so a component can ask "has anything inside this
3
+ * object changed since I last rendered?".
4
+ *
5
+ * Needed because deep state is mutated in place: when a child's prop is the same array
6
+ * the parent already had, comparing before against after tells you nothing -- both sides
7
+ * are the one mutated object. Each proxy stamps the object it mutated with the current
8
+ * tick, and the props comparison walks down looking for a stamp newer than the child's
9
+ * last render.
10
+ *
11
+ * The stamp is stored under $changed on the object itself rather than in a side table
12
+ * keyed by identity, so it can be read straight back through the proxy -- the raw target
13
+ * is not always the object a caller holds, since adoption copies state shallowly.
14
+ * Symbols are invisible to Object.keys and JSON, so the stamp does not leak into user data.
15
+ *
16
+ * Stamps are deliberately not propagated to ancestors: a write would then have to touch
17
+ * every object above it. The cost is moved to update time, where the walk can stop at the
18
+ * first changed node it finds.
19
+ *
20
+ * No imports here on purpose -- the proxy handlers depend on this, so it must stay a leaf.
21
+ */
22
+ export declare const $changed: unique symbol;
23
+ /**
24
+ * Re-reads the global. Called once per update rather than per node: the global lookup is
25
+ * cheap in isolation but showed up as 12% of a 50k-row update when it ran for every dom
26
+ * node, which is the instrumentation distorting what it measures. Toggling __TW_TRACE from
27
+ * a console therefore takes effect on the next update rather than immediately.
28
+ */
29
+ export declare function refreshTracing(): boolean;
30
+ export declare function tracing(): boolean;
31
+ /**
32
+ * Each line carries the time since page load and the time since the previous traced event,
33
+ * so a stall shows up as a large `+delta` on the line that follows it -- no need to diff
34
+ * timestamps by hand. The delta is reset whenever tracing is switched back on.
35
+ */
36
+ export declare function trace(...args: unknown[]): void;
37
+ /** current tick; read when recording a render */
38
+ export declare function stateClock(): number;
39
+ /** called by the state proxies whenever the given object is mutated */
40
+ export declare function markChanged(target: object): void;
41
+ /** tick at which this object was last mutated; 0 means never */
42
+ export declare function changedAt(value: object): number;
43
+ /** record that a component has rendered with the state as it currently stands */
44
+ export declare function markRendered(element: object): void;
45
+ /** tick at which this component last rendered, or undefined if it never has */
46
+ export declare function renderedAt(element: object): number | undefined;
47
+ //# sourceMappingURL=stateTracking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateTracking.d.ts","sourceRoot":"","sources":["../src/stateTracking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,eAAO,MAAM,QAAQ,eAAoB,CAAA;AAQzC;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAGxC;AAED,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAID;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAM9C;AAMD,iDAAiD;AACjD,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIlD;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * A monotonic clock for state writes, so a component can ask "has anything inside this
3
+ * object changed since I last rendered?".
4
+ *
5
+ * Needed because deep state is mutated in place: when a child's prop is the same array
6
+ * the parent already had, comparing before against after tells you nothing -- both sides
7
+ * are the one mutated object. Each proxy stamps the object it mutated with the current
8
+ * tick, and the props comparison walks down looking for a stamp newer than the child's
9
+ * last render.
10
+ *
11
+ * The stamp is stored under $changed on the object itself rather than in a side table
12
+ * keyed by identity, so it can be read straight back through the proxy -- the raw target
13
+ * is not always the object a caller holds, since adoption copies state shallowly.
14
+ * Symbols are invisible to Object.keys and JSON, so the stamp does not leak into user data.
15
+ *
16
+ * Stamps are deliberately not propagated to ancestors: a write would then have to touch
17
+ * every object above it. The cost is moved to update time, where the walk can stop at the
18
+ * first changed node it finds.
19
+ *
20
+ * No imports here on purpose -- the proxy handlers depend on this, so it must stay a leaf.
21
+ */
22
+ export const $changed = Symbol('changed');
23
+ /**
24
+ * Set `__TW_TRACE = true` in a console (or before load) to log the props-skip decisions.
25
+ * Off by default and cheap when off -- one global read per event.
26
+ */
27
+ let tracingCached = null;
28
+ /**
29
+ * Re-reads the global. Called once per update rather than per node: the global lookup is
30
+ * cheap in isolation but showed up as 12% of a 50k-row update when it ran for every dom
31
+ * node, which is the instrumentation distorting what it measures. Toggling __TW_TRACE from
32
+ * a console therefore takes effect on the next update rather than immediately.
33
+ */
34
+ export function refreshTracing() {
35
+ tracingCached = Reflect.get(globalThis, '__TW_TRACE') === true;
36
+ return tracingCached;
37
+ }
38
+ export function tracing() {
39
+ return tracingCached ?? refreshTracing();
40
+ }
41
+ let lastTraceAt = null;
42
+ /**
43
+ * Each line carries the time since page load and the time since the previous traced event,
44
+ * so a stall shows up as a large `+delta` on the line that follows it -- no need to diff
45
+ * timestamps by hand. The delta is reset whenever tracing is switched back on.
46
+ */
47
+ export function trace(...args) {
48
+ if (!tracing()) {
49
+ lastTraceAt = null;
50
+ return;
51
+ }
52
+ const now = performance.now();
53
+ const delta = lastTraceAt === null ? 0 : now - lastTraceAt;
54
+ lastTraceAt = now;
55
+ console.log(`[tungsten ${now.toFixed(1)}ms +${delta.toFixed(1)}]`, ...args);
56
+ }
57
+ let clock = 0;
58
+ const lastRender = new WeakMap();
59
+ /** current tick; read when recording a render */
60
+ export function stateClock() {
61
+ return clock;
62
+ }
63
+ /** called by the state proxies whenever the given object is mutated */
64
+ export function markChanged(target) {
65
+ Reflect.set(target, $changed, ++clock);
66
+ // commented out: args are built on every state write even when tracing is off
67
+ //trace('changed', Array.isArray(target) ? `array(len ${target.length})` : 'object', '-> tick', clock)
68
+ }
69
+ /** tick at which this object was last mutated; 0 means never */
70
+ export function changedAt(value) {
71
+ const stamp = Reflect.get(value, $changed);
72
+ return typeof stamp === 'number' ? stamp : 0;
73
+ }
74
+ /** record that a component has rendered with the state as it currently stands */
75
+ export function markRendered(element) {
76
+ lastRender.set(element, clock);
77
+ // commented out: args are built on every render even when tracing is off
78
+ //trace('rendered', element.constructor.name, 'baseline tick', clock)
79
+ }
80
+ /** tick at which this component last rendered, or undefined if it never has */
81
+ export function renderedAt(element) {
82
+ return lastRender.get(element);
83
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"staticGen.d.ts","sourceRoot":"","sources":["../../src/staticGen/staticGen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAiBhD,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,iBA2LnD"}
1
+ {"version":3,"file":"staticGen.d.ts","sourceRoot":"","sources":["../../src/staticGen/staticGen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAiBhD,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,iBA6MnD"}
@@ -2,7 +2,7 @@ import { existsSync, promises as fsPromises } from 'fs';
2
2
  import { join, dirname } from 'path';
3
3
  import fsExtra from 'fs-extra';
4
4
  //import type { SxyFrameworkConfigComplete } from '../FrameworkConfig.js'
5
- import { staticSiteFolder, staticFolder, assetsFolder, publicFolder, bundleFolder, componentCssFolder } from "../settings.js";
5
+ import { staticSiteFolder, staticFolder, assetsFolder, publicFolder, bundleFolder, componentCssFolder, frameworkCssFolder } from "../settings.js";
6
6
  import { getAppRoutes } from "./getAppRoutes.js";
7
7
  import { cliError, cliWarn } from "../cliOutput.js";
8
8
  import { matchPath } from "../routing/matchPath.js";
@@ -36,119 +36,129 @@ export async function staticGen(framework) {
36
36
  const buildLocation = framework.compilationInfo.location;
37
37
  const server = await framework.createProdServer();
38
38
  const serverLocation = await server.start(null, true); // port, mute
39
- // ensure the target folder exists
40
- await fsPromises.mkdir(join(projectDir, staticSiteFolder), {
41
- recursive: true
42
- });
43
- const rewriteMap = {};
44
- // if ( ! Array.isArray(appRoutes) ) {
45
- // appRoutes = Object.entries(appRoutes).map( ([path, route]) => {
46
- // route.path = path as keyof typeof appRoutes
47
- // return route
48
- // } )
49
- // }
50
- // for default and 404 routes we need to identify which one is in use, and then make sure the app renders it
51
- // appRoutes = appRoutes.map( route => {
52
- // if (route.path === 'default') {
53
- // route.path === '/__default'
54
- // cliWarn(`Static site gen turning default route into __default.html. It is possible that this could conflict with a real route.`)
55
- // } else if (route.path === '404') {
56
- // route.path === '/404'
57
- // cliWarn(`Static site gen turning 404 route into __404.html. It is possible that this could conflict with a real route.`)
58
- // }
59
- // return route
60
- // })
61
- const dynamicRoutes = [];
62
- const finalRoutes = objectFilter(appRoutes, (path, route) => {
63
- if (!path.startsWith('/')) {
64
- //cliWarn(`Static gen skipping route ${route.path}, because it does not start with /, and is not default or 404`)
65
- cliWarn(`Static gen skipping route ${path}, because it does not start with /`);
66
- return false;
39
+ // the server is only here to render the pages from - leaving it up holds the event loop
40
+ // open, which is what forced the caller to hard-exit (and abort mid-teardown) instead
41
+ try {
42
+ // ensure the target folder exists
43
+ await fsPromises.mkdir(join(projectDir, staticSiteFolder), {
44
+ recursive: true
45
+ });
46
+ const rewriteMap = {};
47
+ // if ( ! Array.isArray(appRoutes) ) {
48
+ // appRoutes = Object.entries(appRoutes).map( ([path, route]) => {
49
+ // route.path = path as keyof typeof appRoutes
50
+ // return route
51
+ // } )
52
+ // }
53
+ // for default and 404 routes we need to identify which one is in use, and then make sure the app renders it
54
+ // appRoutes = appRoutes.map( route => {
55
+ // if (route.path === 'default') {
56
+ // route.path === '/__default'
57
+ // cliWarn(`Static site gen turning default route into __default.html. It is possible that this could conflict with a real route.`)
58
+ // } else if (route.path === '404') {
59
+ // route.path === '/404'
60
+ // cliWarn(`Static site gen turning 404 route into __404.html. It is possible that this could conflict with a real route.`)
61
+ // }
62
+ // return route
63
+ // })
64
+ const dynamicRoutes = [];
65
+ const finalRoutes = objectFilter(appRoutes, (path, route) => {
66
+ if (!path.startsWith('/')) {
67
+ //cliWarn(`Static gen skipping route ${route.path}, because it does not start with /, and is not default or 404`)
68
+ cliWarn(`Static gen skipping route ${path}, because it does not start with /`);
69
+ return false;
70
+ }
71
+ if (path.includes(':')) {
72
+ // separate these out
73
+ dynamicRoutes.push([path, route]);
74
+ return false;
75
+ }
76
+ return true;
77
+ });
78
+ if (count(finalRoutes) === 0) {
79
+ cliWarn('Found no valid route!');
67
80
  }
68
- if (path.includes(':')) {
69
- // separate these out
70
- dynamicRoutes.push([path, route]);
71
- return false;
81
+ for (const [path, route] of Object.entries(finalRoutes)) {
82
+ // we need to develop the rewrite map over time, because we discover links during processing
83
+ rewriteMap[path] = pathToLink(path, siteBasePath);
72
84
  }
73
- return true;
74
- });
75
- if (count(finalRoutes) === 0) {
76
- cliWarn('Found no valid route!');
77
- }
78
- for (const [path, route] of Object.entries(finalRoutes)) {
79
- // we need to develop the rewrite map over time, because we discover links during processing
80
- rewriteMap[path] = pathToLink(path, siteBasePath);
81
- }
82
- //console.log('rewriteMap', rewriteMap)
83
- async function renderPath(path, siteBasePath) {
84
- const url = serverLocation + path;
85
- let links;
86
- try {
87
- console.log('get URL', url);
88
- const response = await fetch(url);
89
- // fetch, unlike axios, resolves on non-2xx - so check explicitly, or we'd
90
- // write error pages out as static HTML
91
- if (!response.ok) throwError('renderPath', `Get request to ${url} returned an invalid status: ${response.status}`);
92
- let result = await response.text();
93
- links = findLinks(result);
94
- const newPaths = [];
95
- for (const link of links) {
96
- if (!StringIsPath(link)) throwError('renderRoute', `Found a link '${link}' that did not start with /`);
97
- if (!(link in rewriteMap)) {
98
- for (const [path, dynamicRoute] of dynamicRoutes) {
99
- if (RouteKeyIsPath(path)) {
100
- if (matchPath(path, link)) {
101
- //console.log('link', link)
102
- //console.log('in?', link in rewriteMap)
103
- //console.log(`link ${link} matched dynamic route ${dynamicRoute.path}`)
104
- newPaths.push(link);
105
- rewriteMap[link] = pathToLink(link, siteBasePath);
85
+ //console.log('rewriteMap', rewriteMap)
86
+ const renderPath = async (path, siteBasePath) => {
87
+ const url = serverLocation + path;
88
+ let links;
89
+ try {
90
+ console.log('get URL', url);
91
+ const response = await fetch(url);
92
+ // fetch, unlike axios, resolves on non-2xx - so check explicitly, or we'd
93
+ // write error pages out as static HTML
94
+ if (!response.ok) throwError('renderPath', `Get request to ${url} returned an invalid status: ${response.status}`);
95
+ let result = await response.text();
96
+ links = findLinks(result);
97
+ const newPaths = [];
98
+ for (const link of links) {
99
+ if (link.startsWith('#')) continue; // ignore anchors/hash links
100
+ if (!StringIsPath(link)) {
101
+ throwError('renderRoute', `Found a link '${link}' that did not start with /`);
102
+ }
103
+ if (!(link in rewriteMap)) {
104
+ for (const [path, dynamicRoute] of dynamicRoutes) {
105
+ if (RouteKeyIsPath(path)) {
106
+ if (matchPath(path, link)) {
107
+ //console.log('link', link)
108
+ //console.log('in?', link in rewriteMap)
109
+ //console.log(`link ${link} matched dynamic route ${dynamicRoute.path}`)
110
+ newPaths.push(link);
111
+ rewriteMap[link] = pathToLink(link, siteBasePath);
112
+ }
113
+ } else {
114
+ // default
115
+ // 404
106
116
  }
107
- } else {
108
- // default
109
- // 404
110
117
  }
111
118
  }
112
119
  }
120
+ result = rewriteLinks(result, rewriteMap);
121
+ //const pageFileName = rewriteMap[path]
122
+ const pageFileName = pathToFileName(path);
123
+ const dest = join(projectDir, staticSiteFolder, pageFileName);
124
+ const dir = dirname(dest);
125
+ // ensure the target folder exists
126
+ // some duplication of effort here - oh well
127
+ await fsPromises.mkdir(dir, {
128
+ recursive: true
129
+ });
130
+ await fsPromises.writeFile(join(projectDir, staticSiteFolder, pageFileName), result);
131
+ // we can update the rewrite map here
132
+ // for (const route of appRoutes) { // we need to develop the rewrite map over time, because we discover links during processing
133
+ // const path = route.path
134
+ // rewriteMap[path] = pathToFileName(path)
135
+ // }
136
+ // awaited - otherwise staticGen() can return before these pages are written
137
+ for (const link of newPaths) {
138
+ await renderPath(link, siteBasePath);
139
+ }
140
+ } catch (e) {
141
+ const stack = typeof e === 'object' && e !== null && 'stack' in e ? e.stack : '';
142
+ cliError(`Static site gen - error generating path ${path} (full location ${url}): ${String(e)} ${String(stack)}`);
113
143
  }
114
- result = rewriteLinks(result, rewriteMap);
115
- //const pageFileName = rewriteMap[path]
116
- const pageFileName = pathToFileName(path);
117
- const dest = join(projectDir, staticSiteFolder, pageFileName);
118
- const dir = dirname(dest);
119
- // ensure the target folder exists
120
- // some duplication of effort here - oh well
121
- await fsPromises.mkdir(dir, {
122
- recursive: true
123
- });
124
- await fsPromises.writeFile(join(projectDir, staticSiteFolder, pageFileName), result);
125
- // we can update the rewrite map here
126
- // for (const route of appRoutes) { // we need to develop the rewrite map over time, because we discover links during processing
127
- // const path = route.path
128
- // rewriteMap[path] = pathToFileName(path)
129
- // }
130
- for (const link of newPaths) {
131
- renderPath(link, siteBasePath);
132
- }
133
- } catch (e) {
134
- const stack = typeof e === 'object' && e !== null && 'stack' in e ? e.stack : '';
135
- cliError(`Static site gen - error generating path ${path} (full location ${url}): ${String(e)} ${String(stack)}`);
144
+ };
145
+ for (const [path, route] of Object.entries(finalRoutes)) {
146
+ await renderPath(path, siteBasePath);
136
147
  }
148
+ console.log('rewriteMap', rewriteMap);
149
+ const copyPromises = [fsExtra.copy(join(buildLocation, staticFolder), join(projectDir, staticSiteFolder)),
150
+ // assets folder
151
+ existsSync(join(buildLocation, assetsFolder)) ? fsExtra.copy(join(buildLocation, assetsFolder), join(projectDir, staticSiteFolder, 'assets')) : null,
152
+ // public files
153
+ existsSync(join(buildLocation, publicFolder)) ? fsExtra.copy(join(buildLocation, publicFolder), join(projectDir, staticSiteFolder)) : null,
154
+ // copy in the bundle
155
+ fsExtra.copy(join(projectDir, bundleFolder), join(projectDir, staticSiteFolder, 'bundle')),
156
+ // copy the client.js to clientWithEnv.js, because the framework looks for this file instead.
157
+ //fsExtra.copy(join(projectDir, bundleFolder, 'client.js'), join(projectDir, bundleFolder, 'clientWithEnv.js')),
158
+ // copy in the css
159
+ fsExtra.copy(join(buildLocation, componentCssFolder), join(projectDir, staticSiteFolder, componentCssFolder)), ...(existsSync(join(buildLocation, frameworkCssFolder)) ? [fsExtra.copy(join(buildLocation, frameworkCssFolder), join(projectDir, staticSiteFolder, frameworkCssFolder))] : [])];
160
+ await Promise.all(copyPromises);
161
+ } finally {
162
+ await server.stop();
137
163
  }
138
- for (const [path, route] of Object.entries(finalRoutes)) {
139
- await renderPath(path, siteBasePath);
140
- }
141
- console.log('rewriteMap', rewriteMap);
142
- const copyPromises = [fsExtra.copy(join(buildLocation, staticFolder), join(projectDir, staticSiteFolder)),
143
- // assets folder
144
- existsSync(join(buildLocation, assetsFolder)) ? fsExtra.copy(join(buildLocation, assetsFolder), join(projectDir, staticSiteFolder, 'assets')) : null,
145
- // public files
146
- existsSync(join(buildLocation, publicFolder)) ? fsExtra.copy(join(buildLocation, publicFolder), join(projectDir, staticSiteFolder)) : null,
147
- // copy in the bundle
148
- fsExtra.copy(join(projectDir, bundleFolder), join(projectDir, staticSiteFolder, 'bundle')),
149
- // copy the client.js to clientWithEnv.js, because the framework looks for this file instead.
150
- //fsExtra.copy(join(projectDir, bundleFolder, 'client.js'), join(projectDir, bundleFolder, 'clientWithEnv.js')),
151
- // copy in the css
152
- fsExtra.copy(join(buildLocation, componentCssFolder), join(projectDir, staticSiteFolder, componentCssFolder))];
153
- await Promise.all(copyPromises);
154
164
  }
@@ -0,0 +1,2 @@
1
+ export declare function installTestStyleProcessors(moduleName?: string): void;
2
+ //# sourceMappingURL=installTestStyleProcessors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installTestStyleProcessors.d.ts","sourceRoot":"","sources":["../../src/testing/installTestStyleProcessors.ts"],"names":[],"mappings":"AAeA,wBAAgB,0BAA0B,CAAC,UAAU,SAAS,GAAG,IAAI,CAMpE"}
@@ -0,0 +1,21 @@
1
+ import { CssNames } from "../CssNames.js";
2
+ // The style processors are compiled away by babel-plugin-css-to-js in an app
3
+ // build. Tungsten's own build deliberately leaves them alone — transforming
4
+ // here would emit the stylesheet into the framework's output instead of the
5
+ // consuming app's — so the globals are absent when tungsten tests its own
6
+ // components, and constructing one throws `Sass is not defined`.
7
+ //
8
+ // Empty name maps make this a no-op rather than a partial implementation:
9
+ // styleContentSxy only rewrites a class it holds a scoped name for, so markup
10
+ // renders with the class names exactly as authored. Tests asserting on
11
+ // `.surface` or `.toolbar` therefore see what the component wrote.
12
+ //
13
+ // Styles themselves are not applied. Asserting on computed style needs the
14
+ // compiled stylesheet in the test document, which this does not provide.
15
+ export function installTestStyleProcessors(moduleName = 'test') {
16
+ const processor = () => new CssNames(moduleName);
17
+ globalThis.Css = processor;
18
+ globalThis.Sass = processor;
19
+ globalThis.Scss = processor;
20
+ globalThis.ReactZoneScss = processor;
21
+ }
@@ -0,0 +1,18 @@
1
+ import type { ConstructPackage } from '../../Components.jsx';
2
+ import type { GlobalData } from '../../routing/registerGlobalData.js';
3
+ type Options = {
4
+ stores?: unknown[];
5
+ routes?: object;
6
+ globalData?: GlobalData;
7
+ location?: string;
8
+ };
9
+ export declare const storeValue: <Value>(initialValue: Value) => {
10
+ get: () => Value;
11
+ set: (newValue: Value) => void;
12
+ subscribe: () => undefined;
13
+ unsubscribe: () => undefined;
14
+ sync: () => Value;
15
+ };
16
+ export declare const componentPackageMock: <Props extends object>(props: Props, options?: Options) => ConstructPackage<Props, undefined>;
17
+ export {};
18
+ //# sourceMappingURL=componentPackageMock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"componentPackageMock.d.ts","sourceRoot":"","sources":["../../../src/testing/temp/componentPackageMock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAGrE,KAAK,OAAO,GAAG;IAGX,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;IAGlB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,KAAK,EAAE,cAAc,KAAK;;oBAI7B,KAAK;;;;CAK5B,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,MAAM,EACrD,OAAO,KAAK,EACZ,UAAS,OAAY,KACtB,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAsBlC,CAAA"}
@@ -0,0 +1,37 @@
1
+ export const storeValue = initialValue => {
2
+ let value = initialValue;
3
+ return {
4
+ get: () => value,
5
+ set: newValue => {
6
+ value = newValue;
7
+ },
8
+ subscribe: () => undefined,
9
+ unsubscribe: () => undefined,
10
+ sync: () => value
11
+ };
12
+ };
13
+ export const componentPackageMock = (props, options = {}) => ({
14
+ props,
15
+ routeParams: undefined,
16
+ routeData: undefined,
17
+ // Framework boundary: tests supply only the Instance fields components
18
+ // read. `satisfies Partial<Instance>` checks those we do supply against
19
+ // the real Instance types (catching drift), while the assertion backfills
20
+ // the rest.
21
+ // eslint-disable-next-line no-type-assertion/no-type-assertion
22
+ instance: {
23
+ //stores: options.stores ?? [],
24
+ // eslint-disable-next-line no-type-assertion/no-type-assertion -- test boundary supplies the reactive location field read by layouts.
25
+ internalStore: {
26
+ location: storeValue(options.location ?? '/')
27
+ },
28
+ // Route passthrough: tests supply loosely-typed route maps, narrowed
29
+ // to Routes here (assertion confined to this boundary).
30
+ // eslint-disable-next-line no-type-assertion/no-type-assertion
31
+ getRoutes: () => options.routes ?? {},
32
+ globalData: options.globalData ?? {},
33
+ setTitle: () => undefined,
34
+ storeSubscriptions: new Map()
35
+ },
36
+ parentElement: null
37
+ });
@@ -0,0 +1,3 @@
1
+ import { type ContentNode, type ContentNodeHtml } from '../../ContentNode.js';
2
+ export declare const contentHtmlElements: (content: ContentNode) => ContentNodeHtml[];
3
+ //# sourceMappingURL=contentHtmlElements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentHtmlElements.d.ts","sourceRoot":"","sources":["../../../src/testing/temp/contentHtmlElements.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,KAAK,WAAW,EAChB,KAAK,eAAe,EACvB,MAAM,sBAAsB,CAAA;AAE7B,eAAO,MAAM,mBAAmB,GAAI,SAAS,WAAW,KAAG,eAAe,EAUzE,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { $props } from "../../contentNodeSymbols.js";
2
+ import { ContentNodeIsElement, ContentNodeIsHtml } from "../../ContentNode.js";
3
+ export const contentHtmlElements = content => {
4
+ if (Array.isArray(content)) {
5
+ return content.flatMap(contentHtmlElements);
6
+ }
7
+ if (!ContentNodeIsElement(content)) {
8
+ return [];
9
+ }
10
+ const descendants = contentHtmlElements(content[$props].children);
11
+ return ContentNodeIsHtml(content) ? [content, ...descendants] : descendants;
12
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"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"}