tungsten 0.2.25 → 0.3.1

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 (83) hide show
  1. package/dist/ContentNode.d.ts +7 -0
  2. package/dist/ContentNode.d.ts.map +1 -1
  3. package/dist/Instance/Instance.d.ts.map +1 -1
  4. package/dist/Instance/Instance.js +7 -5
  5. package/dist/Instance/gotoRedirect.sxyt.d.ts +2 -0
  6. package/dist/Instance/gotoRedirect.sxyt.d.ts.map +1 -0
  7. package/dist/Instance/gotoRedirect.sxyt.js +148 -0
  8. package/dist/Servers/DevServer.d.ts +7 -0
  9. package/dist/Servers/DevServer.d.ts.map +1 -1
  10. package/dist/Servers/DevServer.js +38 -1
  11. package/dist/Servers/routing.d.ts.map +1 -1
  12. package/dist/Servers/routing.js +10 -1
  13. package/dist/build/compileJavascript.d.ts.map +1 -1
  14. package/dist/build/compileJavascript.js +86 -1
  15. package/dist/build/compileStyles.d.ts +1 -1
  16. package/dist/build/compileStyles.d.ts.map +1 -1
  17. package/dist/build/compileStyles.js +10 -4
  18. package/dist/build/compileUserApp.d.ts.map +1 -1
  19. package/dist/build/compileUserApp.js +7 -2
  20. package/dist/components/RawHtml.d.ts +36 -0
  21. package/dist/components/RawHtml.d.ts.map +1 -0
  22. package/dist/components/RawHtml.js +30 -0
  23. package/dist/components/RawHtml.sxyt.d.ts +2 -0
  24. package/dist/components/RawHtml.sxyt.d.ts.map +1 -0
  25. package/dist/components/RawHtml.sxyt.js +104 -0
  26. package/dist/dev/liveReloadHub.d.ts +6 -0
  27. package/dist/dev/liveReloadHub.d.ts.map +1 -0
  28. package/dist/dev/liveReloadHub.js +12 -0
  29. package/dist/hydrate/hydrate.d.ts.map +1 -1
  30. package/dist/hydrate/hydrate.js +11 -4
  31. package/dist/hydrate/reconcileHydratedAttributes.d.ts +24 -0
  32. package/dist/hydrate/reconcileHydratedAttributes.d.ts.map +1 -0
  33. package/dist/hydrate/reconcileHydratedAttributes.js +73 -0
  34. package/dist/hydrate/reconcileHydratedAttributes.sxyt.d.ts +2 -0
  35. package/dist/hydrate/reconcileHydratedAttributes.sxyt.d.ts.map +1 -0
  36. package/dist/hydrate/reconcileHydratedAttributes.sxyt.js +173 -0
  37. package/dist/indexInner.d.ts +4 -0
  38. package/dist/indexInner.d.ts.map +1 -1
  39. package/dist/indexInner.js +3 -0
  40. package/dist/innerHtmlFromProps.d.ts +16 -0
  41. package/dist/innerHtmlFromProps.d.ts.map +1 -0
  42. package/dist/innerHtmlFromProps.js +31 -0
  43. package/dist/innerHtmlFromProps.sxyt.d.ts +2 -0
  44. package/dist/innerHtmlFromProps.sxyt.d.ts.map +1 -0
  45. package/dist/innerHtmlFromProps.sxyt.js +99 -0
  46. package/dist/rawHtml/HtmlAllowList.d.ts +17 -0
  47. package/dist/rawHtml/HtmlAllowList.d.ts.map +1 -0
  48. package/dist/rawHtml/HtmlAllowList.js +1 -0
  49. package/dist/rawHtml/decodeHtmlEntities.d.ts +8 -0
  50. package/dist/rawHtml/decodeHtmlEntities.d.ts.map +1 -0
  51. package/dist/rawHtml/decodeHtmlEntities.js +105 -0
  52. package/dist/rawHtml/htmlParsingTags.d.ts +23 -0
  53. package/dist/rawHtml/htmlParsingTags.d.ts.map +1 -0
  54. package/dist/rawHtml/htmlParsingTags.js +55 -0
  55. package/dist/rawHtml/parseHtml.d.ts +35 -0
  56. package/dist/rawHtml/parseHtml.d.ts.map +1 -0
  57. package/dist/rawHtml/parseHtml.js +214 -0
  58. package/dist/rawHtml/parseHtml.sxyt.d.ts +2 -0
  59. package/dist/rawHtml/parseHtml.sxyt.d.ts.map +1 -0
  60. package/dist/rawHtml/parseHtml.sxyt.js +239 -0
  61. package/dist/rawHtml/safeHtmlAllowList.d.ts +18 -0
  62. package/dist/rawHtml/safeHtmlAllowList.d.ts.map +1 -0
  63. package/dist/rawHtml/safeHtmlAllowList.js +47 -0
  64. package/dist/rawHtml/tokenizeHtml.d.ts +25 -0
  65. package/dist/rawHtml/tokenizeHtml.d.ts.map +1 -0
  66. package/dist/rawHtml/tokenizeHtml.js +148 -0
  67. package/dist/render/processHead.d.ts.map +1 -1
  68. package/dist/render/processHead.js +10 -0
  69. package/dist/render/processProps.d.ts.map +1 -1
  70. package/dist/render/processProps.js +14 -2
  71. package/dist/render/processProps.sxyt.d.ts +2 -0
  72. package/dist/render/processProps.sxyt.d.ts.map +1 -0
  73. package/dist/render/processProps.sxyt.js +90 -0
  74. package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
  75. package/dist/render/renderingTreeToHtml.js +8 -0
  76. package/dist/routing/RouteTypes.d.ts +1 -1
  77. package/dist/routing/RouteTypes.d.ts.map +1 -1
  78. package/dist/routing/routeSymbols.d.ts +9 -0
  79. package/dist/routing/routeSymbols.d.ts.map +1 -0
  80. package/dist/routing/routeSymbols.js +4 -0
  81. package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
  82. package/dist/update/integrateUpdateVdom.js +28 -7
  83. package/package.json +3 -3
@@ -13,6 +13,7 @@ import { printComponentNamesInSource } from "./printComponentNameInSource.js";
13
13
  import { RenderingNodeElementIsComponent, RenderingNodeElementIsHtml } from "../RenderingNode.js";
14
14
  import { processHead } from "./processHead.js";
15
15
  import { processRenderingNodeHtml } from "./processRenderingNodeHtml.js";
16
+ import { innerHtmlFromProps } from "../innerHtmlFromProps.js";
16
17
  //// Maybe we should build the full tree before rendering
17
18
  //// may need some merging with componentTreeToHtml
18
19
  export async function renderingNodeToHtml(node, noEscape, headData, lastSelect) {
@@ -93,6 +94,13 @@ export async function renderingNodeToHtml(node, noEscape, headData, lastSelect)
93
94
  ...attribProps
94
95
  } = node[$props]);
95
96
  debug('validChildren(children)', validRenderingChildren(children));
97
+ const innerHtml = innerHtmlFromProps(type, node[$props], validRenderingChildren(children));
98
+ if (innerHtml !== null) {
99
+ if (type in htmlVoidTags) {
100
+ throw new TungstenError(`nodeToHtml() error: node type ${type} is an HTML void type` + ` (cannot have children), but the node has dangerouslySetInnerHTML.`);
101
+ }
102
+ return html + `<${type}${attribs}>${innerHtml}</${type}>`;
103
+ }
96
104
  if (validRenderingChildren(children)) {
97
105
  if (type in htmlVoidTags) {
98
106
  throw new TungstenError(`nodeToHtml() error: node ${JSON.stringify(node)} type ${type} is an HTML void type` + ` (cannot have children), but the node has children.`);
@@ -1,6 +1,6 @@
1
1
  import type { Routes } from './Routes.js';
2
2
  export type Path = `/${string}`;
3
- export type RouteKey = Path | 'default' | '404';
3
+ export type RouteKey = Path | 'default' | '404' | 'error';
4
4
  export declare function StringIsValidRouteKey(string: string, routes: Routes): string is RouteKey;
5
5
  export declare function StringIsPath(string: string): string is Path;
6
6
  export declare function RouteKeyIsPath(path: RouteKey): path is Path;
@@ -1 +1 @@
1
- {"version":3,"file":"RouteTypes.d.ts","sourceRoot":"","sources":["../../src/routing/RouteTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAA;AAC/B,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,CAAA;AAC/C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ,CAExF;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,IAAI,CAE3D;AACD,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,IAAI,CAE3D"}
1
+ {"version":3,"file":"RouteTypes.d.ts","sourceRoot":"","sources":["../../src/routing/RouteTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAA;AAC/B,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAA;AACzD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,QAAQ,CAExF;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,IAAI,CAE3D;AACD,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,IAAI,CAE3D"}
@@ -0,0 +1,9 @@
1
+ export declare const $notFound: unique symbol;
2
+ export type $NotFound = typeof $notFound;
3
+ export declare const $404: unique symbol;
4
+ export type $404 = typeof $404;
5
+ export declare const $default: unique symbol;
6
+ export type $Default = typeof $default;
7
+ export declare const $error: unique symbol;
8
+ export type $Error = typeof $error;
9
+ //# sourceMappingURL=routeSymbols.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routeSymbols.d.ts","sourceRoot":"","sources":["../../src/routing/routeSymbols.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,SAAS,eAAqB,CAAA;AAC3C,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAA;AAExC,eAAO,MAAM,IAAI,eAAgB,CAAA;AACjC,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAA;AAE9B,eAAO,MAAM,QAAQ,eAAoB,CAAA;AACzC,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAA;AAEtC,eAAO,MAAM,MAAM,eAAkB,CAAA;AACrC,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA"}
@@ -0,0 +1,4 @@
1
+ export const $notFound = Symbol('notFound');
2
+ export const $404 = Symbol('404');
3
+ export const $default = Symbol('default');
4
+ export const $error = Symbol('error');
@@ -1 +1 @@
1
- {"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EACH,WAAW,EAAwC,eAAe,EAElE,uBAAuB,EAG1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAKlD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAA;AAE1D,OAAO,EACe,mBAAmB,EAIT,4BAA4B,EAI3D,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAUhD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAGlE,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAC5C,wBAAwB,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,KAAK,GAAG,CAAA;IACpE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB,CAAA;AAYD,wBAAsB,0BAA0B,CAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,GAC/C,OAAO,CAAC,YAAY,CAAC,CA0GvB;AA+fD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,QAuC5E;AAgED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,QAkK7E;AA6VD,KAAK,2BAA2B,GAAG;IAC/B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,uBAAuB,CAAC;IAE9B,UAAU,EAAE,UAAU,CAAA;CACzB,CAAA;AACD,wBAAsB,uBAAuB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,2BAA2B,GAC3G,OAAO,CAAC,4BAA4B,CAAC,CAU1C;AAED,MAAM,MAAM,mBAAmB,CAC3B,aAAa,SAAS,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,IACzD;IACA,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;IACtC,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAsB,2BAA2B,CAC7C,aAAa,SAAS,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,EAEzD,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,GACvB,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAgD7C;AAED,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAC/D,IAAI,CAON"}
1
+ {"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EACH,WAAW,EAAwC,eAAe,EAElE,uBAAuB,EAG1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAKlD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAAE,YAAY,EAAgB,MAAM,eAAe,CAAA;AAE1D,OAAO,EACe,mBAAmB,EAIT,4BAA4B,EAI3D,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAYhD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAGlE,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG;IAC5C,wBAAwB,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,KAAK,GAAG,CAAA;IACpE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB,CAAA;AAYD,wBAAsB,0BAA0B,CAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,GAC/C,OAAO,CAAC,YAAY,CAAC,CA0GvB;AA8gBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,QAuC5E;AAgED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,QAkK7E;AA0WD,KAAK,2BAA2B,GAAG;IAC/B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,uBAAuB,CAAC;IAE9B,UAAU,EAAE,UAAU,CAAA;CACzB,CAAA;AACD,wBAAsB,uBAAuB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,2BAA2B,GAC3G,OAAO,CAAC,4BAA4B,CAAC,CAU1C;AAED,MAAM,MAAM,mBAAmB,CAC3B,aAAa,SAAS,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,IACzD;IACA,SAAS,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;IACtC,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,wBAAsB,2BAA2B,CAC7C,aAAa,SAAS,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,EAEzD,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,EAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC/C,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,WAAW,GACvB,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAgD7C;AAED,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAC/D,IAAI,CAON"}
@@ -17,6 +17,8 @@ import { $key, $props, $routeData, $routeParams, $type } from "../contentNodeSym
17
17
  import { printComponentNamesInSource } from "../render/printComponentNameInSource.js";
18
18
  import { bindableHtmlElementsNumber, bindableHtmlElementsString } from "../components/bindable/bindableHtmlElements.js";
19
19
  import { checkedValueToBoolean } from "../checkedValueToBoolean.js";
20
+ import { innerHtmlFromProps } from "../innerHtmlFromProps.js";
21
+ import { validChildren } from "../validChildren.js";
20
22
  import { setCurrentComponent } from 'tungsten/hooks/setCurrentComponent.js';
21
23
  import { clearCurrentComponent } from 'tungsten/hooks/clearCurrentComponent.js';
22
24
  import { isDev } from "../isDev.js";
@@ -401,6 +403,15 @@ async function updateHtmlElement(tungstenElement, instance, newNode, oldNode, do
401
403
  //console.log(newNode[$type], 'children', newChildren)
402
404
  const oldChildren = oldNode.renderedChildren;
403
405
  //console.log('oldChildren', oldChildren)
406
+ const newInnerHtml = innerHtmlFromProps(newNode[$type], newNode[$props], validChildren(newChildren));
407
+ if (newInnerHtml !== null) {
408
+ // Replacing the markup wholesale is the only option: Tungsten holds the
409
+ // subtree as one opaque string and cannot diff it. Guarded so an update
410
+ // for an unrelated reason does not discard DOM state under the host.
411
+ const oldInnerHtml = innerHtmlFromProps(oldNode[$type], oldNode[$props], false);
412
+ if (newInnerHtml !== oldInnerHtml) domNode.innerHTML = newInnerHtml;
413
+ return makeRenderedContentNodeHtml(newNode, domNode, oldChildren);
414
+ }
404
415
  const renderedChildren = newNode[$props].__opaque === true ? oldChildren : await applyUpdate({
405
416
  tungstenElement: tungstenElement,
406
417
  instance,
@@ -783,13 +794,22 @@ async function createHtmlElement(tungstenElement, instance, node, domPointer, pa
783
794
  //!!!! node.domElement = el
784
795
  if (IsHTMLElement(domPointer.parent)) debug('***', node[$type], 'html created', htmlEl);
785
796
  // children
786
- const renderedChildren = await createNode({
787
- tungstenElement: tungstenElement,
788
- instance,
789
- newNode: node[$props].children,
790
- domPointer: new DomPointer(htmlEl, htmlEl.childNodes.length),
791
- parentNode: node
792
- });
797
+ const innerHtml = innerHtmlFromProps(node[$type], node[$props], validChildren(node[$props].children));
798
+ let renderedChildren;
799
+ if (innerHtml !== null) {
800
+ // The raw markup owns the whole subtree, so there is nothing to create
801
+ // and nothing to record as rendered children.
802
+ htmlEl.innerHTML = innerHtml;
803
+ renderedChildren = makeRenderedContentNodeNonRendered();
804
+ } else {
805
+ renderedChildren = await createNode({
806
+ tungstenElement: tungstenElement,
807
+ instance,
808
+ newNode: node[$props].children,
809
+ domPointer: new DomPointer(htmlEl, htmlEl.childNodes.length),
810
+ parentNode: node
811
+ });
812
+ }
793
813
  if (node[$type] === 'select') {
794
814
  if (node[$props].value !== undefined && node[$props].value !== null) {
795
815
  htmlEl.value = String(node[$props].value);
@@ -930,6 +950,7 @@ function processAttributes(node) {
930
950
  delete attributes.ref;
931
951
  delete attributes.__zoneHtml;
932
952
  delete attributes.__opaque;
953
+ delete attributes.dangerouslySetInnerHTML;
933
954
  delete attributes.class;
934
955
  if (attributes.className !== undefined) attributes.class = attributes.className;
935
956
  delete attributes.className;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tungsten",
3
- "version": "0.2.25",
3
+ "version": "0.3.1",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "bin": {
@@ -134,8 +134,8 @@
134
134
  "scripts": {
135
135
  "__build": "pnpm clean && pnpm build-prep && pnpm build-watch",
136
136
  "build": "run-s -c clean build-prep build-watch",
137
- "clean": "rimraf intermed && rimraf dist",
138
- "build-once": "rimraf intermed && rimraf dist && pnpm build-ts-once && pnpm build-babel-once",
137
+ "clean": "rimraf intermed dist",
138
+ "build-once": "rimraf intermed dist && pnpm build-ts-once && pnpm build-babel-once",
139
139
  "build-quick": "pnpm build-watch",
140
140
  "build-prep": "pnpm build-ts-once",
141
141
  "build-watch": "run-p build-ts build-babel",