tungsten 0.1.59 → 0.1.60
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/dist/AnyComponent.d.ts.map +1 -1
- package/dist/ComponentInstance.d.ts +1 -2
- package/dist/ComponentInstance.d.ts.map +1 -1
- package/dist/ComponentInstance.js +4 -1
- package/dist/ComponentRenderInfo.type.d.ts +6 -0
- package/dist/ComponentRenderInfo.type.d.ts.map +1 -0
- package/dist/ComponentRenderInfo.type.js +1 -0
- package/dist/Components.d.ts +4 -2
- package/dist/Components.d.ts.map +1 -1
- package/dist/Components.js +10 -4
- package/dist/ContentNode.d.ts +3 -1
- package/dist/ContentNode.d.ts.map +1 -1
- package/dist/ContentNode.js +1 -0
- package/dist/Framework.d.ts +1 -1
- package/dist/Framework.d.ts.map +1 -1
- package/dist/Framework.js +42 -25
- package/dist/FrameworkConfig.d.ts +20 -4
- package/dist/FrameworkConfig.d.ts.map +1 -1
- package/dist/FunctionComponent.d.ts +2 -0
- package/dist/FunctionComponent.d.ts.map +1 -1
- package/dist/FunctionComponentStandIn.d.ts +4 -4
- package/dist/FunctionComponentStandIn.d.ts.map +1 -1
- package/dist/FunctionComponentStandIn.js +4 -2
- package/dist/Instance/InstanceConfig.d.ts +2 -0
- package/dist/Instance/InstanceConfig.d.ts.map +1 -1
- package/dist/RenderedContentNode.d.ts +1 -1
- package/dist/RenderedContentNode.d.ts.map +1 -1
- package/dist/RenderedContentNode.js +2 -2
- package/dist/RenderingNode.d.ts +23 -8
- package/dist/RenderingNode.d.ts.map +1 -1
- package/dist/RenderingNode.js +39 -8
- package/dist/Servers/DevServer.d.ts.map +1 -1
- package/dist/Servers/DevServer.js +74 -25
- package/dist/Servers/ProdServer.d.ts +5 -1
- package/dist/Servers/ProdServer.d.ts.map +1 -1
- package/dist/Servers/ProdServer.js +49 -33
- package/dist/TungstenElement.d.ts +3 -0
- package/dist/TungstenElement.d.ts.map +1 -0
- package/dist/TungstenElement.js +1 -0
- package/dist/_client/client.d.ts +4 -1
- package/dist/_client/client.d.ts.map +1 -1
- package/dist/_client/client.js +16 -9
- package/dist/babelPlugins/BabelTransformCjsToEsm.d.ts +1 -1
- package/dist/babelPlugins/BabelTransformCjsToEsm.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction.d.ts +1 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction2.d.ts +1 -1
- package/dist/babelPlugins/BabelTransformCjsToFunction2.d.ts.map +1 -1
- package/dist/babelPlugins/{BabelTransformCssImport.d.ts → BabelTransformCssImports.d.ts} +3 -2
- package/dist/babelPlugins/BabelTransformCssImports.d.ts.map +1 -0
- package/dist/babelPlugins/{BabelTransformCssImport.js → BabelTransformCssImports.js} +27 -5
- package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformPackageImports.js +75 -37
- package/dist/babelPlugins/BabelTransformRemoveServerBlocks.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformRemoveServerBlocks.js +5 -0
- package/dist/babelPlugins/BabelTransformRemoveServerCode.d.ts +2 -0
- package/dist/babelPlugins/BabelTransformRemoveServerCode.d.ts.map +1 -0
- package/dist/babelPlugins/BabelTransformRemoveServerCode.js +1 -0
- package/dist/babelPlugins/fixImportsInSassErrorMessage.d.ts.map +1 -1
- package/dist/babelPlugins/{BabelTransformDependencyImportsCjs.d.ts → transformPackageImports/BabelTransformDependencyImportsCjs.d.ts} +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.d.ts.map +1 -0
- package/dist/babelPlugins/{BabelTransformDependencyImportsCjs.js → transformPackageImports/BabelTransformDependencyImportsCjs.js} +12 -3
- package/dist/babelPlugins/{BabelTransformDependencyImportsEsm.d.ts → transformPackageImports/BabelTransformDependencyImportsEsm.d.ts} +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.d.ts.map +1 -0
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.js +112 -0
- package/dist/bin/commands/compileSimplePackage.d.ts +2 -0
- package/dist/bin/commands/compileSimplePackage.d.ts.map +1 -0
- package/dist/bin/commands/compileSimplePackage.js +51 -0
- package/dist/bin/commands/static.js +2 -2
- package/dist/bin/index.d.ts.map +1 -1
- package/dist/bin/index.js +5 -0
- package/dist/build/babel.user.common.config.js +9 -3
- package/dist/build/bundle.d.ts +1 -2
- package/dist/build/bundle.d.ts.map +1 -1
- package/dist/build/bundle.js +7 -4
- package/dist/build/compileJavascript.d.ts.map +1 -1
- package/dist/build/compileJavascript.js +22 -11
- package/dist/build/compilePackages.d.ts +0 -5
- package/dist/build/compilePackages.d.ts.map +1 -1
- package/dist/build/compilePackages.js +89 -82
- package/dist/build/compileUserApp.d.ts.map +1 -1
- package/dist/build/copyPackageModulesToPackagesFolder.d.ts.map +1 -1
- package/dist/build/copyPackageModulesToPackagesFolder.js +3 -1
- package/dist/build/createClientFiles.d.ts.map +1 -1
- package/dist/build/createClientFiles.js +43 -52
- package/dist/build/createInstanceConfigFile.d.ts +4 -0
- package/dist/build/createInstanceConfigFile.d.ts.map +1 -0
- package/dist/build/{createAppConfig.js → createInstanceConfigFile.js} +2 -2
- package/dist/build/makeBabelUserDevConfig.d.ts.map +1 -1
- package/dist/build/makeBabelUserDevConfig.js +3 -2
- package/dist/build/makeBabelUserProdConfig.js +3 -2
- package/dist/components/Stylesheet.d.ts +1 -0
- package/dist/components/Stylesheet.d.ts.map +1 -1
- package/dist/components/Stylesheet.js +24 -3
- package/dist/createRef.d.ts +4 -2
- package/dist/createRef.d.ts.map +1 -1
- package/dist/createRef.js +5 -2
- package/dist/defaultConfig.d.ts +1 -0
- package/dist/defaultConfig.d.ts.map +1 -1
- package/dist/defaultConfig.js +1 -0
- package/dist/findUserConfig.d.ts.map +1 -1
- package/dist/findUserConfig.js +1 -1
- package/dist/frameworkConfigSchema.d.ts +188 -0
- package/dist/frameworkConfigSchema.d.ts.map +1 -0
- package/dist/frameworkConfigSchema.js +65 -0
- package/dist/getConfig.d.ts +1 -15
- package/dist/getConfig.d.ts.map +1 -1
- package/dist/getConfig.js +12 -11
- package/dist/getRoutes.d.ts.map +1 -1
- package/dist/getRoutes.js +20 -15
- package/dist/getUserConfig.d.ts +3 -0
- package/dist/getUserConfig.d.ts.map +1 -0
- package/dist/getUserConfig.js +25 -0
- package/dist/hooks/getCurrentComponent.d.ts +4 -0
- package/dist/hooks/getCurrentComponent.d.ts.map +1 -1
- package/dist/hooks/getCurrentComponent.js +8 -2
- package/dist/hooks/globalType.d.ts +2 -0
- package/dist/hooks/globalType.d.ts.map +1 -0
- package/dist/hooks/globalType.js +1 -0
- package/dist/hooks/useState.d.ts +1 -1
- package/dist/hooks/useState.d.ts.map +1 -1
- package/dist/hooks/useState.js +5 -5
- package/dist/hydrate/hydrate.d.ts +1 -1
- package/dist/hydrate/hydrate.d.ts.map +1 -1
- package/dist/hydrate/hydrate.js +192 -53
- package/dist/jsx-runtime.d.ts +2 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +1 -0
- package/dist/jsxRuntime.d.ts.map +1 -1
- package/dist/jsxRuntime.js +5 -1
- package/dist/makeFinalConfig.d.ts.map +1 -1
- package/dist/makeInstanceConfigFromFrameworkConfig.d.ts +4 -0
- package/dist/makeInstanceConfigFromFrameworkConfig.d.ts.map +1 -0
- package/dist/makeInstanceConfigFromFrameworkConfig.js +12 -0
- package/dist/render/componentNodeToRenderingTree.d.ts +6 -0
- package/dist/render/componentNodeToRenderingTree.d.ts.map +1 -0
- package/dist/render/componentNodeToRenderingTree.js +41 -0
- package/dist/render/contentToHtml.d.ts +9 -0
- package/dist/render/contentToHtml.d.ts.map +1 -0
- package/dist/render/contentToHtml.js +44 -0
- package/dist/render/contentToHtmlDev.d.ts +9 -0
- package/dist/render/contentToHtmlDev.d.ts.map +1 -0
- package/dist/render/contentToHtmlDev.js +4 -0
- package/dist/render/contentTreeToRenderingTree.d.ts.map +1 -1
- package/dist/render/contentTreeToRenderingTree.js +8 -8
- package/dist/render/functionComponentNodeToRenderingTree.d.ts.map +1 -1
- package/dist/render/functionComponentNodeToRenderingTree.js +4 -2
- package/dist/render/instantiateClassComponent.d.ts +2 -2
- package/dist/render/instantiateClassComponent.d.ts.map +1 -1
- package/dist/render/instantiateClassComponent.js +1 -1
- package/dist/render/instantiateComponent.d.ts.map +1 -1
- package/dist/render/processProps.d.ts.map +1 -1
- package/dist/render/processProps.js +1 -1
- package/dist/render/renderingTreeToHtml.d.ts.map +1 -1
- package/dist/render/renderingTreeToHtml.js +42 -8
- package/dist/render/rootToHtml.d.ts +2 -1
- package/dist/render/rootToHtml.d.ts.map +1 -1
- package/dist/render/rootToHtml.js +12 -6
- package/dist/render/rootToHtmlDev.d.ts +4 -3
- package/dist/render/rootToHtmlDev.d.ts.map +1 -1
- package/dist/render/rootToHtmlDev.js +2 -2
- package/dist/routing/MatchedRoute.d.ts.map +1 -1
- package/dist/routing/MatchedRoute.js +0 -3
- package/dist/routing/runContentFunction.d.ts +2 -0
- package/dist/routing/runContentFunction.d.ts.map +1 -0
- package/dist/routing/runContentFunction.js +13 -0
- package/dist/staticGen/getAppRoutes.d.ts.map +1 -1
- package/dist/staticGen/getAppRoutes.js +7 -6
- package/dist/staticGen/staticGen.d.ts.map +1 -1
- package/dist/staticGen/staticGen.js +9 -1
- package/dist/update/integrateUpdateVdom.d.ts +13 -1
- package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
- package/dist/update/integrateUpdateVdom.js +112 -49
- package/dist/validChildren.d.ts +4 -2
- package/dist/validChildren.d.ts.map +1 -1
- package/dist/validChildren.js +4 -0
- package/package.json +11 -10
- package/types/jsx/jsx.d.ts +10 -7
- package/dist/babelPlugins/BabelTransformCssImport.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformDependencyImportsCjs.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformDependencyImportsEsm.d.ts.map +0 -1
- package/dist/babelPlugins/BabelTransformDependencyImportsEsm.js +0 -85
- package/dist/build/compileEnv.d.ts +0 -2
- package/dist/build/compileEnv.d.ts.map +0 -1
- package/dist/build/compileEnv.js +0 -132
- package/dist/build/createAppConfig.d.ts +0 -4
- package/dist/build/createAppConfig.d.ts.map +0 -1
- package/dist/build/webpack.user.prod.config.d.ts +0 -2
- package/dist/build/webpack.user.prod.config.d.ts.map +0 -1
- package/dist/build/webpack.user.prod.config.js +0 -337
- package/dist/createInstanceConfigFromFrameworkConfig.d.ts +0 -4
- package/dist/createInstanceConfigFromFrameworkConfig.d.ts.map +0 -1
- package/dist/createInstanceConfigFromFrameworkConfig.js +0 -9
- package/dist/getAppConfig.d.ts +0 -3
- package/dist/getAppConfig.d.ts.map +0 -1
- package/dist/getAppConfig.js +0 -12
- package/dist/render/componentNodeToRenderingToTree.d.ts +0 -6
- package/dist/render/componentNodeToRenderingToTree.d.ts.map +0 -1
- package/dist/render/componentNodeToRenderingToTree.js +0 -15
- package/dist/render/componentNodeToTree.d.ts +0 -5
- package/dist/render/componentNodeToTree.d.ts.map +0 -1
- package/dist/render/componentNodeToTree.js +0 -16
|
@@ -3,7 +3,7 @@ import { DomRegion } from "../DomRegion.js";
|
|
|
3
3
|
import { DomPointer } from "../DomPointer.js";
|
|
4
4
|
import { ContentNodeComponentIsClassComponent, ContentNodeIsNonRendered, ContentNodeIsLiteral, ContentNodeIsHtml, ContentNodeIsComponent, ContentNodeIsArray, ContentNodeIsElement, ContentNodeElementHasValidKey } from "../ContentNode.js";
|
|
5
5
|
import { StringIsHtmlEvent, htmlEvents } from "../htmlEvents.js";
|
|
6
|
-
import { warn } from "../appOutput.js";
|
|
6
|
+
import { out, warn } from "../appOutput.js";
|
|
7
7
|
import { getStyledContentFromFunctionComponent } from "../getStyledContentFromFunctionComponent.js";
|
|
8
8
|
import { FunctionElement } from "../FunctionComponentStandIn.js";
|
|
9
9
|
import { jssToCss } from "../style/jssToCss.js";
|
|
@@ -17,12 +17,19 @@ 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 { setCurrentComponent } from 'tungsten/hooks/setCurrentComponent.js';
|
|
21
|
+
import { clearCurrentComponent } from 'tungsten/hooks/clearCurrentComponent.js';
|
|
20
22
|
function debug(...texts) {
|
|
21
23
|
//console.log(...texts)
|
|
22
24
|
//console.log(getStackTrace().split('\n')[2])
|
|
23
25
|
}
|
|
26
|
+
const timing = true; // eslint-disable-line no-type-assertion/no-type-assertion
|
|
24
27
|
// need to be adapted to work for func components?
|
|
25
28
|
export async function integrateElementUpdateVdom(element, newContent) {
|
|
29
|
+
let startTime = 0;
|
|
30
|
+
if (timing) startTime = new Date().getMilliseconds();
|
|
31
|
+
debug(`integrateElementUpdateVdom`, element);
|
|
32
|
+
debug(`integrateElementUpdateVdom`, newContent);
|
|
26
33
|
//console.log('***** integrateElementUpdateVdom', element.constructor.name, '*****')
|
|
27
34
|
//console.log(newContent, element.__currentContent)
|
|
28
35
|
// if (element.constructor.name === 'ViewpointComponent') return {
|
|
@@ -33,7 +40,7 @@ export async function integrateElementUpdateVdom(element, newContent) {
|
|
|
33
40
|
const instance = element.__instance;
|
|
34
41
|
// get the content tree that was previous rendered
|
|
35
42
|
if (element.__currentContent === $contentNull) {
|
|
36
|
-
throwError('integrateElementContent()', '__currentContent is $
|
|
43
|
+
throwError('integrateElementContent()', '__currentContent is $contentNull (element that is updating is missing info for current content)');
|
|
37
44
|
}
|
|
38
45
|
const currentContent = element.__currentContent;
|
|
39
46
|
debug(`${element.constructor.name} currentContent`, currentContent);
|
|
@@ -49,8 +56,8 @@ export async function integrateElementUpdateVdom(element, newContent) {
|
|
|
49
56
|
debug(`get position of first element for '${element.constructor.name}'`);
|
|
50
57
|
debug('dom region', domRegion);
|
|
51
58
|
const previousPositionOfFirstElement = domRegion.positionOfFirst();
|
|
52
|
-
const previousPositionOfLastElement = domRegion.positionOfLast()
|
|
53
|
-
const previousNodesLength = previousPositionOfFirstElement >= 0 ? 1 + previousPositionOfLastElement - previousPositionOfFirstElement : 0
|
|
59
|
+
//const previousPositionOfLastElement = domRegion.positionOfLast()
|
|
60
|
+
//const previousNodesLength = (previousPositionOfFirstElement >= 0) ? 1 + previousPositionOfLastElement - previousPositionOfFirstElement : 0
|
|
54
61
|
//console.log('previousPositionOfFirstElement', previousPositionOfFirstElement)
|
|
55
62
|
//console.log('previousPositionOfLastElement', previousPositionOfLastElement)
|
|
56
63
|
const domPointer = new DomPointer(domRegion.parent, previousPositionOfFirstElement);
|
|
@@ -89,6 +96,7 @@ export async function integrateElementUpdateVdom(element, newContent) {
|
|
|
89
96
|
const newPositionOfLastElement = domRegion.positionOfLast();
|
|
90
97
|
const newNodesLength = newPositionOfFirstElement >= 0 ? 1 + newPositionOfLastElement - newPositionOfFirstElement : 0;
|
|
91
98
|
//console.log('finished updating element. ', element.constructor.name, ' El positions:', newPositionOfFirstElement, newPositionOfLastElement)
|
|
99
|
+
if (timing) out(`Updated ${element.constructor.name} in ${new Date().getMilliseconds() - startTime}ms`);
|
|
92
100
|
// newNodesLength previousNodesLength
|
|
93
101
|
return {
|
|
94
102
|
renderedContent: renderedTree,
|
|
@@ -115,7 +123,10 @@ async function applyUpdate({
|
|
|
115
123
|
domPointer,
|
|
116
124
|
parentNode
|
|
117
125
|
}) {
|
|
118
|
-
//console.log('applyUpdate'
|
|
126
|
+
//console.log('applyUpdate')
|
|
127
|
+
//console.log('newNode', newNode)
|
|
128
|
+
//console.log('oldNode', oldNode)
|
|
129
|
+
//console.log('parentNode', parentNode)
|
|
119
130
|
//console.log('domPointer.index', domPointer.index)
|
|
120
131
|
debug('existing node', oldNode);
|
|
121
132
|
if (ContentNodeIsNonRendered(newNode)) {
|
|
@@ -323,13 +334,18 @@ async function applyUpdate({
|
|
|
323
334
|
//console.log('comparing html el', newNode, 'to', oldNode)
|
|
324
335
|
//console.log('applying an html node', newNode)
|
|
325
336
|
processHtmlNode(newNode, parentNode);
|
|
337
|
+
debug('old node is html', WideRenderedContentNodeIsHtml(oldNode));
|
|
338
|
+
if (WideRenderedContentNodeIsHtml(oldNode)) {
|
|
339
|
+
debug('node types', newNode[$type].toLocaleLowerCase(), oldNode[$type].toLocaleLowerCase(), newNode[$type].toLocaleLowerCase() === oldNode[$type].toLocaleLowerCase());
|
|
340
|
+
}
|
|
326
341
|
if (WideRenderedContentNodeIsHtml(oldNode) && newNode[$type].toLocaleLowerCase() === oldNode[$type].toLocaleLowerCase()) {
|
|
327
342
|
//newNode[$props].it = it
|
|
328
343
|
//console.log('updating html node', newNode[$type])
|
|
344
|
+
//console.log('old node', oldNode[$type])
|
|
329
345
|
debug('updating html node', newNode[$type]);
|
|
330
346
|
// !!!! update
|
|
331
347
|
const domNode = oldNode.domNode;
|
|
332
|
-
updateAttributes(newNode, domNode);
|
|
348
|
+
updateAttributes(newNode, oldNode, domNode);
|
|
333
349
|
domPointer.increment();
|
|
334
350
|
debug(`!!!!dom pointer index is`, domPointer.index, 'after updating html node');
|
|
335
351
|
// !!! handle children
|
|
@@ -369,27 +385,13 @@ async function applyUpdate({
|
|
|
369
385
|
if (WideRenderedContentNodeIsComponent(oldNode) && newNode[$type] === oldNode[$type] && (oldNode[$key] !== undefined && newNode[$key] !== undefined || oldNode[$key] === newNode[$key])) {
|
|
370
386
|
//console.log('updating tu el', newNode, oldNode[$key], newNode[$key])
|
|
371
387
|
// update
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
// eslint-disable-line no-type-assertion/no-type-assertion -- oldNode is proven to be class comp, because type is the same as newNode
|
|
380
|
-
domPointer
|
|
381
|
-
});
|
|
382
|
-
} else {
|
|
383
|
-
debug('updating function component', newNode[$type].name);
|
|
384
|
-
return await updateFunctionComponent({
|
|
385
|
-
parent: tungstenElement,
|
|
386
|
-
instance,
|
|
387
|
-
newNode,
|
|
388
|
-
oldNode: oldNode,
|
|
389
|
-
// eslint-disable-line no-type-assertion/no-type-assertion -- oldNode is proven to be function comp, because type is the same as newNode
|
|
390
|
-
domPointer
|
|
391
|
-
});
|
|
392
|
-
}
|
|
388
|
+
return updateComponent({
|
|
389
|
+
newNode,
|
|
390
|
+
parent: tungstenElement,
|
|
391
|
+
instance,
|
|
392
|
+
oldNode,
|
|
393
|
+
domPointer
|
|
394
|
+
});
|
|
393
395
|
} else {
|
|
394
396
|
//console.log('deleting and replacing node', oldNode)
|
|
395
397
|
//console.log('new Comp El', newNode)
|
|
@@ -411,6 +413,35 @@ async function applyUpdate({
|
|
|
411
413
|
const n = newNode; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
412
414
|
return makeRenderedContentNodeNonRendered();
|
|
413
415
|
}
|
|
416
|
+
async function updateComponent({
|
|
417
|
+
newNode,
|
|
418
|
+
parent,
|
|
419
|
+
instance,
|
|
420
|
+
oldNode,
|
|
421
|
+
domPointer
|
|
422
|
+
}) {
|
|
423
|
+
if (ContentNodeComponentIsClassComponent(newNode)) {
|
|
424
|
+
debug('updating component', newNode[$type].name);
|
|
425
|
+
return await updateClassComponent({
|
|
426
|
+
parent,
|
|
427
|
+
instance,
|
|
428
|
+
newNode,
|
|
429
|
+
oldNode: oldNode,
|
|
430
|
+
// eslint-disable-line no-type-assertion/no-type-assertion -- oldNode is proven to be class comp, because type is the same as newNode
|
|
431
|
+
domPointer
|
|
432
|
+
});
|
|
433
|
+
} else {
|
|
434
|
+
debug('updating function component', newNode[$type].name);
|
|
435
|
+
return await updateFunctionComponent({
|
|
436
|
+
parent,
|
|
437
|
+
instance,
|
|
438
|
+
newNode,
|
|
439
|
+
oldNode: oldNode,
|
|
440
|
+
// eslint-disable-line no-type-assertion/no-type-assertion -- oldNode is proven to be function comp, because type is the same as newNode
|
|
441
|
+
domPointer
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
}
|
|
414
445
|
function moveRenderedContent(renderedContent, domPointer) {
|
|
415
446
|
//console.log('moving, index', domPointer.index, renderedContent)
|
|
416
447
|
if (RenderedContentNodeIsArray(renderedContent)) {
|
|
@@ -648,7 +679,7 @@ export function processHtmlNode(node, parentNode) {
|
|
|
648
679
|
const [bindObject, bindKey] = props.bindRadio;
|
|
649
680
|
props.checked = bindObject[bindKey] === props.value;
|
|
650
681
|
const handler = event => {
|
|
651
|
-
console.log('bound radio changed 3', event.target.value)
|
|
682
|
+
//console.log('bound radio changed 3', (event.target as HTMLCheckedBindableElement).value)
|
|
652
683
|
bindObject[bindKey] = event.target.value;
|
|
653
684
|
};
|
|
654
685
|
if (eventName in props) {
|
|
@@ -722,6 +753,9 @@ async function createHtmlElement(tungstenElement, instance, node, domPointer, pa
|
|
|
722
753
|
htmlEl.appendChild(el.cloneNode(true));
|
|
723
754
|
}
|
|
724
755
|
}
|
|
756
|
+
if ('ref' in node[$props]) {
|
|
757
|
+
node[$props].ref.current = htmlEl;
|
|
758
|
+
}
|
|
725
759
|
debug('dom parent', domPointer.parent);
|
|
726
760
|
debug('dom parent children length', domPointer.parent.childNodes.length);
|
|
727
761
|
debug('domPointer.index', domPointer.index);
|
|
@@ -773,6 +807,7 @@ function addAttributes(node, domNode) {
|
|
|
773
807
|
domNode.addEventListener(eventName, handler);
|
|
774
808
|
domNode[htmlEventHandlerKey(eventName)] = handler;
|
|
775
809
|
} else {
|
|
810
|
+
//if (! (key in ignoreAttributes)) {
|
|
776
811
|
//console.log('add attr', key, attributes[key])
|
|
777
812
|
if (typeof attributes[key] === 'boolean') {
|
|
778
813
|
//console.log('bool attr', attributes[key])
|
|
@@ -781,39 +816,60 @@ function addAttributes(node, domNode) {
|
|
|
781
816
|
//console.log('string attr', String(attributes[key]))
|
|
782
817
|
domNode.setAttribute(key, String(attributes[key]));
|
|
783
818
|
}
|
|
819
|
+
//}
|
|
784
820
|
}
|
|
785
821
|
}
|
|
822
|
+
domNode.__tungsten_oldAttributes = attributes;
|
|
823
|
+
return attributes;
|
|
786
824
|
}
|
|
787
825
|
const clickEvents = [['onClick', 'click']];
|
|
788
|
-
function updateAttributes(node, domNodeHTMLElement) {
|
|
826
|
+
function updateAttributes(node, oldNode, domNodeHTMLElement) {
|
|
827
|
+
//console.log('-updateAttributes node', node)
|
|
828
|
+
//console.log('domNodeHTMLElement', domNodeHTMLElement)
|
|
789
829
|
const domNode = domNodeHTMLElement;
|
|
830
|
+
//console.log('-updateAttributes', node)
|
|
790
831
|
debug('-updateAttributes', node);
|
|
791
|
-
const
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
832
|
+
const newAttributes = processAttributes(node);
|
|
833
|
+
// are re-process the old node attribs here to we can see what we applied last time.
|
|
834
|
+
// would be better to save this and then grab it later
|
|
835
|
+
//const oldAttributes = processAttributes(oldNode)
|
|
836
|
+
const oldAttributes = domNode.__tungsten_oldAttributes;
|
|
837
|
+
//console.log('newAttributes', newAttributes)
|
|
838
|
+
//console.log('oldAttributes', oldAttributes)
|
|
839
|
+
debug('attributes', newAttributes);
|
|
840
|
+
debug('oldAttributes', oldAttributes);
|
|
841
|
+
for (const attr in oldAttributes) {
|
|
842
|
+
if (!(attr in newAttributes)) {
|
|
843
|
+
debug('remove attr', attr);
|
|
844
|
+
removeAttribute(domNode, attr);
|
|
797
845
|
}
|
|
798
846
|
}
|
|
847
|
+
// for (const attr of domNode.attributes) {
|
|
848
|
+
// if ( ! (attr.name in newAttributes) ) {
|
|
849
|
+
// debug('remove attr', attr.name)
|
|
850
|
+
// removeAttribute(domNode, attr.name)
|
|
851
|
+
// }
|
|
852
|
+
// }
|
|
799
853
|
//if (attributes.onClick !== undefined)
|
|
800
854
|
for (const [event, eventName] of clickEvents) {
|
|
801
|
-
if (
|
|
855
|
+
if (newAttributes[event] === undefined) {
|
|
802
856
|
debug('remove event', eventName);
|
|
803
857
|
//!!
|
|
804
858
|
domNode.removeEventListener(eventName, domNode[htmlEventHandlerKey(eventName)]);
|
|
805
859
|
}
|
|
806
860
|
}
|
|
807
|
-
for (const key in
|
|
861
|
+
for (const key in newAttributes) {
|
|
808
862
|
switch (key) {
|
|
809
863
|
case 'onClick':
|
|
810
864
|
{
|
|
811
865
|
debug('add onclick');
|
|
812
866
|
const clickHandlerKey = htmlEventHandlerKey('click');
|
|
813
867
|
debug('domNode.' + clickHandlerKey, domNode[clickHandlerKey]);
|
|
814
|
-
if (domNode[clickHandlerKey])
|
|
868
|
+
if (domNode[clickHandlerKey]) {
|
|
869
|
+
domNode.removeEventListener('click', domNode[clickHandlerKey]);
|
|
870
|
+
}
|
|
815
871
|
// if its a button without type="submit", prevent default to stop it from submitting forms
|
|
816
|
-
const handler =
|
|
872
|
+
const handler = newAttributes[key];
|
|
817
873
|
// const handler = (key === 'onClick' && node[$type] === 'button' && node[$props].type !== 'submit')
|
|
818
874
|
// ? (event: Event) => { event.preventDefault(); return (attributes[key] as EventListener)(event) }
|
|
819
875
|
// : attributes[key] as EventListener
|
|
@@ -829,20 +885,26 @@ function updateAttributes(node, domNodeHTMLElement) {
|
|
|
829
885
|
//if (domNode.tagName === 'input' || domNode.tagName === 'INPUT') continue
|
|
830
886
|
// try to set value directly for inputs that aren't updating with the below code
|
|
831
887
|
if (key === 'value') {
|
|
832
|
-
domNode.value = String(
|
|
888
|
+
domNode.value = String(newAttributes[key]);
|
|
833
889
|
} else {
|
|
834
|
-
if (typeof
|
|
835
|
-
if (
|
|
836
|
-
} else if (
|
|
890
|
+
if (typeof newAttributes[key] === 'boolean') {
|
|
891
|
+
if (newAttributes[key]) domNode.setAttribute(key, '');else removeAttribute(domNode, key);
|
|
892
|
+
} else if (newAttributes[key] === undefined || newAttributes[key] === null) {
|
|
837
893
|
removeAttribute(domNode, key);
|
|
838
894
|
} else {
|
|
839
|
-
domNode.setAttribute(key, String(
|
|
895
|
+
domNode.setAttribute(key, String(newAttributes[key]));
|
|
840
896
|
}
|
|
841
897
|
}
|
|
842
898
|
}
|
|
843
899
|
}
|
|
844
900
|
}
|
|
901
|
+
domNode.__tungsten_oldAttributes = newAttributes;
|
|
902
|
+
return newAttributes;
|
|
845
903
|
}
|
|
904
|
+
// const ignoreAttributes = {
|
|
905
|
+
// 'ref': true,
|
|
906
|
+
// //'key': true
|
|
907
|
+
// }
|
|
846
908
|
function processAttributes(node) {
|
|
847
909
|
const {
|
|
848
910
|
[$props]: props
|
|
@@ -852,6 +914,7 @@ function processAttributes(node) {
|
|
|
852
914
|
const attributes = {
|
|
853
915
|
...props
|
|
854
916
|
};
|
|
917
|
+
delete attributes.ref;
|
|
855
918
|
delete attributes.class;
|
|
856
919
|
if (attributes.className !== undefined) attributes.class = attributes.className;
|
|
857
920
|
delete attributes.className;
|
|
@@ -907,7 +970,7 @@ function processAttributes(node) {
|
|
|
907
970
|
}
|
|
908
971
|
return attributes;
|
|
909
972
|
}
|
|
910
|
-
async function createTungstenComponent({
|
|
973
|
+
export async function createTungstenComponent({
|
|
911
974
|
parent,
|
|
912
975
|
instance,
|
|
913
976
|
node,
|
|
@@ -923,7 +986,7 @@ async function createTungstenComponent({
|
|
|
923
986
|
// need to set a domRegion
|
|
924
987
|
// element.__domRegion = domRegion
|
|
925
988
|
}
|
|
926
|
-
let cc = 0;
|
|
989
|
+
let cc = 0; // debugging aid
|
|
927
990
|
async function createTungstenClassComponent(parent, instance, node, domPointer) {
|
|
928
991
|
//console.log('creating tung class comp', node[$type].name)
|
|
929
992
|
//console.log('domPointer', domPointer)
|
|
@@ -938,7 +1001,7 @@ async function createTungstenClassComponent(parent, instance, node, domPointer)
|
|
|
938
1001
|
routeParams: node[$routeParams],
|
|
939
1002
|
routeData: node[$routeData],
|
|
940
1003
|
instance,
|
|
941
|
-
|
|
1004
|
+
parentElement: parent
|
|
942
1005
|
});
|
|
943
1006
|
await element.__init();
|
|
944
1007
|
const content = await element.__initialContent();
|
|
@@ -995,11 +1058,11 @@ async function createTungstenFunctionComponent(parent, instance, node, domPointe
|
|
|
995
1058
|
debug(`[${x}]`, 'domPointer.parent', domPointer.parent);
|
|
996
1059
|
debug(`[${x}]`, 'dom index', domPointer.index);
|
|
997
1060
|
const element = new FunctionElement(node[$type], node[$props], node[$routeParams], node[$routeData], instance, parent);
|
|
998
|
-
|
|
1061
|
+
setCurrentComponent(element);
|
|
999
1062
|
const content = await getStyledContentFromFunctionComponent(element);
|
|
1000
1063
|
debug('new func comp content', content);
|
|
1001
1064
|
//const content = await getStyledContentFromFunctionComponent(node.type, node.props)
|
|
1002
|
-
|
|
1065
|
+
clearCurrentComponent();
|
|
1003
1066
|
debug('content', content);
|
|
1004
1067
|
const compName = node[$type].name; // should take into account other factors // maybe in render too
|
|
1005
1068
|
const openingComment = createComment({
|
package/dist/validChildren.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
import { ContentNode } from './ContentNode.js';
|
|
2
|
-
|
|
1
|
+
import { ContentNode, ContentNodeRendered } from './ContentNode.js';
|
|
2
|
+
import { RenderingNode, RenderingNodeRendered } from './RenderingNode.js';
|
|
3
|
+
export declare function validChildren(children: ContentNode): children is ContentNodeRendered;
|
|
4
|
+
export declare function validRenderingChildren(children: RenderingNode): children is RenderingNodeRendered;
|
|
3
5
|
//# sourceMappingURL=validChildren.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validChildren.d.ts","sourceRoot":"","sources":["../src/validChildren.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"validChildren.d.ts","sourceRoot":"","sources":["../src/validChildren.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAyB,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,EAAE,aAAa,EAA2B,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAElG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,IAAI,mBAAmB,CAGpF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,QAAQ,IAAI,qBAAqB,CAEjG"}
|
package/dist/validChildren.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { ContentNodeIsRendered } from "./ContentNode.js";
|
|
2
|
+
import { RenderingNodeIsRendered } from "./RenderingNode.js";
|
|
2
3
|
export function validChildren(children) {
|
|
3
4
|
return ContentNodeIsRendered(children);
|
|
4
5
|
//return children === 0 || children
|
|
6
|
+
}
|
|
7
|
+
export function validRenderingChildren(children) {
|
|
8
|
+
return RenderingNodeIsRendered(children);
|
|
5
9
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tungsten",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.60",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@rollup/plugin-commonjs": "^22.0.2",
|
|
33
33
|
"@rollup/plugin-json": "^6.1.0",
|
|
34
34
|
"@rollup/plugin-node-resolve": "^14.1.0",
|
|
35
|
-
"
|
|
35
|
+
"arktype": "^2.1.20",
|
|
36
36
|
"axios": "^0.27.2",
|
|
37
37
|
"babel-loader": "^8.3.0",
|
|
38
38
|
"babel-plugin-css-to-js": "^0.0.4",
|
|
@@ -62,8 +62,7 @@
|
|
|
62
62
|
"open": "^8.4.2",
|
|
63
63
|
"path-to-regexp": "^6.2.2",
|
|
64
64
|
"postcss": "^8.4.42",
|
|
65
|
-
"precinct": "^
|
|
66
|
-
"progress-webpack-plugin": "^1.0.16",
|
|
65
|
+
"precinct": "^12.2.0",
|
|
67
66
|
"react-router": "^6.26.1",
|
|
68
67
|
"redaxios": "^0.5.1",
|
|
69
68
|
"require-resolve-hook": "^1.1.0",
|
|
@@ -74,21 +73,23 @@
|
|
|
74
73
|
"sass": "^1.77.8",
|
|
75
74
|
"serialize-javascript": "^6.0.2",
|
|
76
75
|
"slash": "^4.0.0",
|
|
77
|
-
"supertest": "^6.3.4",
|
|
78
76
|
"sxy-dependency-tree": "^8.1.11",
|
|
79
77
|
"sxy-filing-cabinet": "^3.4.2",
|
|
80
78
|
"sxy-lib": "^3.0.2",
|
|
81
79
|
"sxy-lib-object-copy": "^2.0.5",
|
|
82
|
-
"sxy-loader": "
|
|
80
|
+
"sxy-loader": "../../sxy-loader",
|
|
83
81
|
"sxy-package-investigator": "^1.0.0",
|
|
84
|
-
"sxy-test-runner": "^1.3.5",
|
|
85
82
|
"terser-webpack-plugin": "^5.3.10",
|
|
86
|
-
"webpack-bundle-analyzer": "^4.10.2",
|
|
87
|
-
"webpack-cli": "^4.10.0",
|
|
88
|
-
"webpack-stats-plugin": "^1.1.3",
|
|
89
83
|
"zod": "^3.23.8"
|
|
90
84
|
},
|
|
91
85
|
"devDependencies": {
|
|
86
|
+
"@types/ini": "^1.3.34",
|
|
87
|
+
"progress-webpack-plugin": "^1.0.16",
|
|
88
|
+
"supertest": "^6.3.4",
|
|
89
|
+
"webpack-bundle-analyzer": "^4.10.2",
|
|
90
|
+
"webpack-cli": "^4.10.0",
|
|
91
|
+
"webpack-stats-plugin": "^1.1.3",
|
|
92
|
+
"sxy-test-runner": "^1.3.5",
|
|
92
93
|
"@babel/generator": "^7.25.6",
|
|
93
94
|
"@babel/types": "^7.25.6",
|
|
94
95
|
"@types/babel-types": "^7.0.15",
|
package/types/jsx/jsx.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import type { ContentNode, ContentNodeComponent } from 'tungsten/ContentNode.js'
|
|
3
3
|
import { TungstenBaseComponent } from 'tungsten/Components.jsx'
|
|
4
4
|
import type { FunctionComponent } from 'tungsten/FunctionComponent.js'
|
|
5
|
+
import type { TungstenRef } from 'tungsten/createRef.js'
|
|
5
6
|
|
|
6
7
|
import type { HTMLWebViewElement } from './html.global.js'
|
|
7
8
|
import type {
|
|
@@ -83,10 +84,12 @@ type Key = string | number;
|
|
|
83
84
|
interface RefObject<T> {
|
|
84
85
|
readonly current: T | null;
|
|
85
86
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
type
|
|
89
|
-
type
|
|
87
|
+
|
|
88
|
+
// Bivariance hack for consistent unsoundness with RefObject
|
|
89
|
+
// type RefCallback<T> = { bivarianceHack(instance: T | null): void }['bivarianceHack'];
|
|
90
|
+
// type Ref<T> = RefCallback<T> | RefObject<T> | null;
|
|
91
|
+
|
|
92
|
+
//type LegacyRef<T> = string | Ref<T>;
|
|
90
93
|
|
|
91
94
|
interface Attributes {
|
|
92
95
|
key?: Key | null | undefined;
|
|
@@ -97,7 +100,7 @@ interface RefAttributes<T> extends Attributes {
|
|
|
97
100
|
* Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref).
|
|
98
101
|
* @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
|
|
99
102
|
*/
|
|
100
|
-
ref?:
|
|
103
|
+
ref?: TungstenRef<T> | undefined;
|
|
101
104
|
}
|
|
102
105
|
interface ClassAttributes<T> extends Attributes {
|
|
103
106
|
/**
|
|
@@ -105,7 +108,7 @@ interface ClassAttributes<T> extends Attributes {
|
|
|
105
108
|
* Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref).
|
|
106
109
|
* @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
|
|
107
110
|
*/
|
|
108
|
-
ref?:
|
|
111
|
+
ref?: TungstenRef<T> | undefined;
|
|
109
112
|
}
|
|
110
113
|
|
|
111
114
|
interface ClassAttributes<T> extends Attributes {
|
|
@@ -114,7 +117,7 @@ interface ClassAttributes<T> extends Attributes {
|
|
|
114
117
|
* Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref).
|
|
115
118
|
* @see https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom
|
|
116
119
|
*/
|
|
117
|
-
ref?:
|
|
120
|
+
ref?: TungstenRef<T> | undefined;
|
|
118
121
|
}
|
|
119
122
|
|
|
120
123
|
type DetailedHTMLProps<E extends HTMLAttributes<T>, T> = ClassAttributes<T> & E;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BabelTransformCssImport.d.ts","sourceRoot":"","sources":["../../src/babelPlugins/BabelTransformCssImport.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAc,MAAM,iBAAiB,CAAA;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAIjD,KAAK,IAAI,GAAG;IACR,UAAU,EAAE,MAAM,CAAA;CACrB,CAAA;AACD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,WACH,KAAK;iBAKtB,UAAU;;kCAIO,QAAQ,CAAC,iBAAiB,CAAC;;EA2E7E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BabelTransformDependencyImportsCjs.d.ts","sourceRoot":"","sources":["../../src/babelPlugins/BabelTransformDependencyImportsCjs.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,KAAK,SAAS,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAA;AAClD,KAAK,KAAK,GAAG,OAAO,SAAS,CAAC;AAM9B,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAA0B,KAAK,cAAc,EAAmB,KAAK,iBAAiB,EAAsB,MAAM,aAAa,CAAA;AAIpL,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,oCAAoC,EAAE,uCAAuC,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AASzM,KAAK,IAAI,GAAG;IACR,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB,CAAA;AAED,KAAK,KAAK,GAAG;IACT,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,oCAAoC,EAAE,oCAAoC,CAAA;IAC1E,uCAAuC,EAAE,uCAAuC,CAAA;IAChF,oBAAoB,EAAE,oBAAoB,CAAA;CAC7C,CAAA;AAED,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,WACjB,KAAK;eAoC5C,GAAG;;kCAQyB,QAAQ,CAAC,iBAAiB,CAAC;uCAKtB,QAAQ,CAAC,sBAAsB,CAAC;qCAOlC,QAAQ,CAAC,oBAAoB,CAAC;6BAO/C,QAAQ,CAAC,cAAc,CAAC;;EAkD5D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BabelTransformDependencyImportsEsm.d.ts","sourceRoot":"","sources":["../../src/babelPlugins/BabelTransformDependencyImportsEsm.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,KAAK,SAAS,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAA;AAClD,KAAK,KAAK,GAAG,OAAO,SAAS,CAAC;AAO9B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAI9G,OAAO,KAAK,EACR,oBAAoB,EAAE,qBAAqB,EAAE,oCAAoC,EACjF,oBAAoB,EAAE,gBAAgB,EACzC,MAAM,mCAAmC,CAAA;AAK1C,KAAK,IAAI,GAAG;IACR,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB,CAAA;AAED,KAAK,KAAK,GAAG;IACT,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,oCAAoC,EAAE,oCAAoC,CAAA;IAC1E,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,gBAAgB,EAAE,gBAAgB,CAAA;CACrC,CAAA;AAED,wBAAgB,sCAAsC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,WACjB,KAAK;eAwB5C,GAAG;;gCAOc,QAAQ,CAAC,iBAAiB,CAAC;uCAMX,QAAQ,CAAC,sBAAsB,CAAC;qCAOlC,QAAQ,CAAC,oBAAoB,CAAC;6BAO/C,QAAQ,CAAC,cAAc,CAAC;;EA2B5D"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
// BabelTransformDependencyImportsEsm
|
|
2
|
-
// exports MakeBabelTransformDependencyImportsEsm (function)/
|
|
3
|
-
// Arg 1: opts {
|
|
4
|
-
// nonEsmDeps: string[] (should it be an obj?) -- a list of CJS/presumed CJS direct dependencies to let us switch between ESM (defualt) and CJS handling
|
|
5
|
-
// }
|
|
6
|
-
// Arg 2: funcs {
|
|
7
|
-
// funcs from the parent to do various things.
|
|
8
|
-
// passed in from the parent because this allows them to use a central cache
|
|
9
|
-
// }
|
|
10
|
-
import { dirname, relative } from 'path';
|
|
11
|
-
import slash from 'slash';
|
|
12
|
-
import { isBareImport } from "./isBareImport.js";
|
|
13
|
-
import { throwError } from 'tungsten/throwError.js';
|
|
14
|
-
export function MakeBabelTransformDependencyImportsEsm(opts, funcs) {
|
|
15
|
-
return function BabelTransformDependencyImportsEsm(babel) {
|
|
16
|
-
const t = babel.types;
|
|
17
|
-
let filename;
|
|
18
|
-
let futureFilename;
|
|
19
|
-
let packageDir;
|
|
20
|
-
function getNewLocation(location) {
|
|
21
|
-
//console.log('BabelTransformDependencyImportsEsm', 'getNewLocation', location, filename)
|
|
22
|
-
if (isBareImport(location)) {
|
|
23
|
-
const final = funcs.getExternalImportFinalImportLocation(location, filename, packageDir, 'esm');
|
|
24
|
-
if (final === location) {
|
|
25
|
-
// do we need this anymore?
|
|
26
|
-
//cliNote('calculated final location is the same as the original', location)
|
|
27
|
-
// perhaps a node module
|
|
28
|
-
return [false];
|
|
29
|
-
}
|
|
30
|
-
let rel = slash(relative(dirname(futureFilename), final));
|
|
31
|
-
if (!rel.startsWith('../')) rel = './' + rel;
|
|
32
|
-
return [true, rel];
|
|
33
|
-
} else {
|
|
34
|
-
return [false];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return {
|
|
38
|
-
pre(state) {
|
|
39
|
-
filename = state.opts.filename;
|
|
40
|
-
const packageInfo = funcs.getPackageInfoForFile(filename);
|
|
41
|
-
packageDir = packageInfo.packageDir;
|
|
42
|
-
futureFilename = funcs.getFileFinalLocation(filename, packageInfo);
|
|
43
|
-
},
|
|
44
|
-
visitor: {
|
|
45
|
-
ImportDeclaration(path) {
|
|
46
|
-
const location = path.node.source.value;
|
|
47
|
-
//console.log('BabelTransformDependencyImportsEsm', 'ImportDeclaration', path.node)
|
|
48
|
-
const [transform, newLocation] = getNewLocation(location);
|
|
49
|
-
if (transform) path.node.source.value = newLocation;
|
|
50
|
-
},
|
|
51
|
-
ExportNamedDeclaration: function (path) {
|
|
52
|
-
if (path.node.source) {
|
|
53
|
-
const location = path.node.source.value;
|
|
54
|
-
const [transform, newLocation] = getNewLocation(location);
|
|
55
|
-
if (transform) path.node.source.value = newLocation;
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
ExportAllDeclaration: function (path) {
|
|
59
|
-
if (path.node.source) {
|
|
60
|
-
const location = path.node.source.value;
|
|
61
|
-
const [transform, newLocation] = getNewLocation(location);
|
|
62
|
-
if (transform) path.node.source.value = newLocation;
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
CallExpression(path) {
|
|
66
|
-
if (path.node.callee.type === 'Import') {
|
|
67
|
-
const firstArg = path.node.arguments[0];
|
|
68
|
-
if (firstArg) {
|
|
69
|
-
if (firstArg.type === 'StringLiteral') {
|
|
70
|
-
const location = firstArg.value;
|
|
71
|
-
//console.log('BabelTransformDependencyImportsEsm', 'CallExpression', path.node)
|
|
72
|
-
const [transform, newLocation] = getNewLocation(location);
|
|
73
|
-
if (transform) path.node.arguments[0] = t.stringLiteral(newLocation);
|
|
74
|
-
} else {
|
|
75
|
-
throwError(`BabelTransformDependencyImportsEsm`, `The first argument passed to an import call in file ${filename}` + ` was a ${firstArg.type}, we we were expecting a StringLiteral.` + ` Only static imports can be processed. This file was found in the` + ` dependency chain of your Tungsten app, was this a mistake?`);
|
|
76
|
-
}
|
|
77
|
-
} else {
|
|
78
|
-
throwError(`BabelTransformDependencyImportsEsm`, `No args were passed to an import call being processed in file ${filename}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compileEnv.d.ts","sourceRoot":"","sources":["../../src/build/compileEnv.ts"],"names":[],"mappings":""}
|