tungsten 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-complete +1 -1
- package/dist/Components.d.ts +14 -6
- package/dist/Components.d.ts.map +1 -1
- package/dist/Components.js +67 -23
- package/dist/DomPointer.js +1 -1
- package/dist/DomRegion.js +2 -2
- package/dist/Framework.d.ts.map +1 -1
- package/dist/Framework.js +9 -3
- package/dist/FrameworkConfig.d.ts +0 -1
- package/dist/FrameworkConfig.d.ts.map +1 -1
- package/dist/FunctionComponentStandIn.d.ts +4 -0
- package/dist/FunctionComponentStandIn.d.ts.map +1 -1
- package/dist/FunctionComponentStandIn.js +11 -1
- package/dist/Json.type.d.ts.map +1 -1
- package/dist/Servers/DevServer.js +1 -1
- package/dist/Servers/MatchedRouteInfo.d.ts +1 -1
- package/dist/Servers/MatchedRouteInfo.d.ts.map +1 -1
- package/dist/Servers/ProdServer.js +2 -3
- package/dist/Servers/initStores.d.ts.map +1 -1
- package/dist/Servers/loadEnvsDev.d.ts.map +1 -1
- package/dist/Servers/loadEnvsDev.js +8 -3
- package/dist/Store/makeStore.d.ts.map +1 -1
- package/dist/Store/makeStore.js +7 -3
- package/dist/api/ApiMethod.type.d.ts +2 -0
- package/dist/api/ApiMethod.type.d.ts.map +1 -0
- package/dist/api/ApiRoute.d.ts +2 -2
- package/dist/api/ApiRoute.d.ts.map +1 -1
- package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts +2 -2
- package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts.map +1 -1
- package/dist/babelPlugins/BabelExtractComponentStylesheet.js +1 -1
- package/dist/babelPlugins/BabelTransformBindDirect.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformBindDirect.js +2 -4
- package/dist/babelPlugins/BabelTransformBindVar.js +2 -3
- package/dist/babelPlugins/BabelTransformDocInit.js +1 -1
- package/dist/babelPlugins/BabelTransformPackageImports.d.ts +1 -0
- package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
- package/dist/babelPlugins/BabelTransformPackageImports.js +51 -69
- package/dist/babelPlugins/BabelTypes.d.ts.map +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.d.ts.map +1 -1
- package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.d.ts.map +1 -1
- package/dist/bin/commands/build.js +0 -1
- package/dist/build/babel.user.common.config.d.ts +2 -1
- package/dist/build/babel.user.common.config.d.ts.map +1 -1
- package/dist/build/babel.user.common.config.js +16 -10
- package/dist/build/compileJavascript.d.ts.map +1 -1
- package/dist/build/compileJavascript.js +3 -4
- package/dist/build/compileStyles.d.ts.map +1 -1
- package/dist/build/compileStyles.js +7 -3
- package/dist/build/createClientFiles.js +2 -3
- package/dist/build/createInstanceConfigFile.js +1 -1
- package/dist/build/devBundle.rollup.config.js +6 -6
- package/dist/build/frameworkDestLocation.d.ts.map +1 -1
- package/dist/build/frameworkDestLocation.js +5 -2
- package/dist/build/makeBabelRawConfig.js +1 -1
- package/dist/build/makeBabelUserProdConfig.js +2 -4
- package/dist/build/packageIdentifier.d.ts +6 -0
- package/dist/build/packageIdentifier.d.ts.map +1 -0
- package/dist/build/packageIdentifier.js +19 -0
- package/dist/build/rollup.user.prod.config.js +12 -12
- package/dist/build/sassImportParser.js +0 -3
- package/dist/clone.js +1 -3
- package/dist/compat/types.d.ts.map +1 -1
- package/dist/componentProxyHandlers.js +1 -1
- package/dist/components/NativeHtml.d.ts +1 -1
- package/dist/components/NativeHtml.d.ts.map +1 -1
- package/dist/components/Protected.d.ts +1 -1
- package/dist/components/Protected.d.ts.map +1 -1
- package/dist/components/Stylesheet.js +0 -1
- package/dist/components/bindable/BindableInputTyped.d.ts.map +1 -1
- package/dist/components/library/RichTextEditor/RichTextEditor.d.ts.map +1 -1
- package/dist/components/library/RichTextEditor/RichTextEditor.js +3 -3
- package/dist/createRef.d.ts +1 -1
- package/dist/createRef.d.ts.map +1 -1
- package/dist/createRef.js +1 -1
- package/dist/env/droppedCoreEnvKeys.d.ts +5 -0
- package/dist/env/droppedCoreEnvKeys.d.ts.map +1 -0
- package/dist/env/droppedCoreEnvKeys.js +9 -0
- package/dist/foreach.d.ts.map +1 -1
- package/dist/frameworkConfigSchema.d.ts +11 -0
- package/dist/frameworkConfigSchema.d.ts.map +1 -1
- package/dist/frameworkConfigSchema.js +15 -4
- package/dist/getUserConfig.d.ts.map +1 -1
- package/dist/getUserConfig.js +7 -2
- package/dist/headChildren.d.ts +2 -0
- package/dist/headChildren.d.ts.map +1 -0
- package/dist/headChildren.js +16 -0
- package/dist/helpers/forwardingFetch.d.ts +3 -0
- package/dist/helpers/forwardingFetch.d.ts.map +1 -0
- package/dist/helpers/forwardingFetch.js +14 -0
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +3 -1
- package/dist/helpers/perRequest.d.ts +3 -0
- package/dist/helpers/perRequest.d.ts.map +1 -0
- package/dist/helpers/perRequest.js +17 -0
- package/dist/hmr/instanceRegistry.js +2 -2
- package/dist/hooks/useCallback.d.ts.map +1 -1
- package/dist/hydrate/hydrate.d.ts +1 -2
- package/dist/hydrate/hydrate.d.ts.map +1 -1
- package/dist/hydrate/hydrate.js +13 -20
- package/dist/hydrate/reconcileHydratedAttributes.js +1 -1
- package/dist/importDevModuleWithRetry.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/indexInner.d.ts +1 -2
- package/dist/indexInner.d.ts.map +1 -1
- package/dist/logAndReturn.d.ts.map +1 -1
- package/dist/markOptionSelected.js +1 -1
- package/dist/mutatingFunctions.js +0 -3
- package/dist/postcssPlugins/TransformCssNames.js +2 -2
- package/dist/render/addImportMap.d.ts.map +1 -1
- package/dist/render/addImportMap.js +1 -1
- package/dist/render/processHead.d.ts.map +1 -1
- package/dist/render/processHead.js +18 -12
- package/dist/requests/fetch/delete.d.ts +2 -1
- package/dist/requests/fetch/delete.d.ts.map +1 -1
- package/dist/requests/fetch/delete.js +7 -7
- package/dist/requests/fetch/get.d.ts.map +1 -1
- package/dist/requests/fetch/get.js +4 -6
- package/dist/requests/fetch/mergeFetchInit.d.ts +2 -0
- package/dist/requests/fetch/mergeFetchInit.d.ts.map +1 -0
- package/dist/requests/fetch/mergeFetchInit.js +17 -0
- package/dist/requests/fetch/patch.d.ts.map +1 -1
- package/dist/requests/fetch/patch.js +4 -6
- package/dist/requests/fetch/post.d.ts.map +1 -1
- package/dist/requests/fetch/post.js +4 -6
- package/dist/requests/fetch/put.d.ts.map +1 -1
- package/dist/requests/fetch/put.js +4 -6
- package/dist/routing/ParamsFromPath.d.ts.map +1 -1
- package/dist/routing/RouteType.d.ts +1 -8
- package/dist/routing/RouteType.d.ts.map +1 -1
- package/dist/routing/RouteTypes.d.ts +11 -0
- package/dist/routing/RouteTypes.d.ts.map +1 -1
- package/dist/routing/Routes.d.ts +7 -8
- package/dist/routing/Routes.d.ts.map +1 -1
- package/dist/routing/__fluentRouteBuilder.d.ts +80 -0
- package/dist/routing/__fluentRouteBuilder.d.ts.map +1 -0
- package/dist/routing/__fluentRouteBuilder.js +183 -0
- package/dist/routing/__fluentRoutes.d.ts +2 -0
- package/dist/routing/__fluentRoutes.d.ts.map +1 -0
- package/dist/routing/__fluentRoutes.js +59 -0
- package/dist/staticGen/staticGen.d.ts.map +1 -1
- package/dist/testing/host.d.ts.map +1 -1
- package/dist/testing/host.js +1 -2
- package/dist/testing/hydrateTestApp.js +5 -9
- package/dist/update/guardedUpdate.d.ts +9 -0
- package/dist/update/guardedUpdate.d.ts.map +1 -0
- package/dist/update/guardedUpdate.js +20 -0
- package/dist/update/integrateUpdateVdom.d.ts.map +1 -1
- package/dist/update/integrateUpdateVdom.js +5 -3
- package/dist/zones/react.d.ts.map +1 -1
- package/dist/zones/react.js +2 -2
- package/package.json +7 -10
- package/types/env.d.ts +11 -11
- package/types/index.d.ts +7 -3
- package/types/jsx/html.d.ts +5 -5
- package/types/jsx/html.events.d.ts +202 -200
- package/types/jsx/html.global.d.ts +150 -150
- package/types/jsx/html.values.d.ts +29 -29
- package/types/jsx/jsx.d.ts +16 -5
- package/vendor/babel-core.js +13 -8
- package/vendor/babel-parser.js +5 -1
- package/vendor/babel-plugin-syntax-import-assertions.js +5 -1
- package/vendor/babel-preset-react.js +13 -8
- package/vendor/babel-preset-typescript.js +13 -8
- package/vendor/babel-types.js +5 -1
- package/vendor/chalk-extensions.js +6 -161
- package/vendor/chalk.js +4 -0
- package/vendor/chokidar.js +17 -13
- package/vendor/{chunk-B_NeooyV.js → chunk-BSJqV47f.js} +4 -0
- package/vendor/{chunk-1UuLTU0U.js → chunk-BYvDIO7e.js} +4 -0
- package/vendor/chunk-BfcfwwoF.js +15 -0
- package/vendor/{chunk-CPArXGxa.js → chunk-BiUcnLhT.js} +4 -0
- package/vendor/chunk-Bu8ZRE-c.js +179 -0
- package/vendor/chunk-CmnhIuzX.js +167 -0
- package/vendor/chunk-Cqrj-Zqr.js +8579 -0
- package/vendor/{chunk-1TN2rK3j.js → chunk-D2EnpcLg.js} +7 -3
- package/vendor/{chunk-C9FSKeSx.js → chunk-DHmjZ22y.js} +4 -0
- package/vendor/{chunk-C3YkUGz5.js → chunk-Hy-cCmu-.js} +4 -0
- package/vendor/{chunk-C12hSZn7.js → chunk-Lqa6rV_r.js} +4 -0
- package/vendor/{chunk-C3fcZDjl.js → chunk-OUnVY4Wm.js} +24 -191
- package/vendor/cjs-module-lexer.js +4 -0
- package/vendor/dotenv.js +10 -6
- package/vendor/express.js +30 -31
- package/vendor/import-meta-resolve.js +4 -0
- package/vendor/manifest.json +3 -2
- package/vendor/postcss.js +9 -8544
- package/vendor/precinct.js +326959 -0
- package/vendor/serialize-javascript.js +4 -0
- package/vendor/sxy-lib-arrays.js +4 -0
- package/vendor/sxy-lib-object-copy.js +5 -1
- package/vendor/sxy-lib-objects.js +4 -0
- package/vendor/sxy-lib-promises.js +4 -0
- package/vendor/sxy-package-investigator.js +7 -3
- package/vendor/valibot.js +4 -0
- package/dist/.tsbuildinfo +0 -1
- package/dist/api/Method.d.ts +0 -2
- package/dist/api/Method.d.ts.map +0 -1
- /package/dist/api/{Method.js → ApiMethod.type.js} +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ContentNode, ParamsFromPath, RouteContentFunction, RouteDataFunction, RouteKey } from 'tungsten';
|
|
2
|
+
import { Expand } from 'tungsten/types/helpers.js';
|
|
3
|
+
type FR = {
|
|
4
|
+
path: RouteKey;
|
|
5
|
+
content: ContentNode | RouteContentFunction<any, any>;
|
|
6
|
+
};
|
|
7
|
+
export type FluentRoutesToRoutes<T extends readonly FR[]> = {
|
|
8
|
+
[E in T[number] as E['path'] & string]: E;
|
|
9
|
+
} & {};
|
|
10
|
+
export declare function fluentRoutes<const T extends readonly FR[]>(frs: T): FluentRoutesToRoutes<T>;
|
|
11
|
+
declare const $invalidKeyError: unique symbol;
|
|
12
|
+
type MustNotIncludePathDataContent<T extends Record<string, unknown>> = 'path' extends keyof T ? {
|
|
13
|
+
[$invalidKeyError]: 'meta may not contain key \'path\'';
|
|
14
|
+
} : 'data' extends keyof T ? {
|
|
15
|
+
[$invalidKeyError]: 'meta may not contain key \'data\'';
|
|
16
|
+
} : 'content' extends keyof T ? {
|
|
17
|
+
[$invalidKeyError]: 'meta may not contain key \'content\'';
|
|
18
|
+
} : T;
|
|
19
|
+
export declare function routeLegacy<P extends RouteKey>(path: P): {
|
|
20
|
+
meta<M extends Record<string, unknown>>(meta: M & MustNotIncludePathDataContent<M>): {
|
|
21
|
+
data<D>(dataFunc: RouteDataFunction<ParamsFromPath<P>, D>): {
|
|
22
|
+
content<C extends RouteContentFunction<ParamsFromPath<P>, D> | ContentNode>(content: C): Expand<{
|
|
23
|
+
path: P;
|
|
24
|
+
} & M & {
|
|
25
|
+
data: RouteDataFunction<ParamsFromPath<P>, D>;
|
|
26
|
+
content: C;
|
|
27
|
+
}>;
|
|
28
|
+
};
|
|
29
|
+
content<const C extends ContentNode>(content: C): Expand<{
|
|
30
|
+
path: P;
|
|
31
|
+
} & M & {
|
|
32
|
+
content: C;
|
|
33
|
+
}>;
|
|
34
|
+
};
|
|
35
|
+
data<D>(dataFunc: RouteDataFunction<ParamsFromPath<P>, D>): {
|
|
36
|
+
content<C extends RouteContentFunction<ParamsFromPath<P>, D> | ContentNode>(content: C): Expand<{
|
|
37
|
+
path: P;
|
|
38
|
+
} & {
|
|
39
|
+
data: RouteDataFunction<ParamsFromPath<P>, D>;
|
|
40
|
+
content: C;
|
|
41
|
+
}>;
|
|
42
|
+
};
|
|
43
|
+
content<const C extends ContentNode>(content: C): Expand<{
|
|
44
|
+
path: P;
|
|
45
|
+
} & {
|
|
46
|
+
content: C;
|
|
47
|
+
}>;
|
|
48
|
+
};
|
|
49
|
+
export declare function route<P extends RouteKey, M extends Record<string, unknown> = {}>(path: P, meta?: M & MustNotIncludePathDataContent<M>): {
|
|
50
|
+
meta<M2 extends Record<string, unknown>>(meta: M2 & MustNotIncludePathDataContent<M2>): {
|
|
51
|
+
data<D>(dataFunc: RouteDataFunction<ParamsFromPath<P>, D>): {
|
|
52
|
+
content<C extends RouteContentFunction<ParamsFromPath<P>, D> | ContentNode>(content: C): Expand<{
|
|
53
|
+
path: P;
|
|
54
|
+
} & Omit<M, keyof M2> & M2 & {
|
|
55
|
+
data: RouteDataFunction<ParamsFromPath<P>, D>;
|
|
56
|
+
content: C;
|
|
57
|
+
}>;
|
|
58
|
+
};
|
|
59
|
+
content<const C extends ContentNode>(content: C): Expand<{
|
|
60
|
+
path: P;
|
|
61
|
+
} & Omit<M, keyof M2> & M2 & {
|
|
62
|
+
content: C;
|
|
63
|
+
}>;
|
|
64
|
+
};
|
|
65
|
+
data<D>(dataFunc: RouteDataFunction<ParamsFromPath<P>, D>): {
|
|
66
|
+
content<C extends RouteContentFunction<ParamsFromPath<P>, D> | ContentNode>(content: C): Expand<{
|
|
67
|
+
path: P;
|
|
68
|
+
} & M & {
|
|
69
|
+
data: RouteDataFunction<ParamsFromPath<P>, D>;
|
|
70
|
+
content: C;
|
|
71
|
+
}>;
|
|
72
|
+
};
|
|
73
|
+
content<const C extends ContentNode>(content: C): Expand<{
|
|
74
|
+
path: P;
|
|
75
|
+
} & M & {
|
|
76
|
+
content: C;
|
|
77
|
+
}>;
|
|
78
|
+
};
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=__fluentRouteBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__fluentRouteBuilder.d.ts","sourceRoot":"","sources":["../../src/routing/__fluentRouteBuilder.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { TungstenError } from 'tungsten';
|
|
2
|
+
export function fluentRoutes(frs) {
|
|
3
|
+
const routes = frs.reduce((prev, route) => {
|
|
4
|
+
if (route.path !== '/' && route.path.endsWith('/')) {
|
|
5
|
+
throw new Error(`Invalid path ${route.path} - trailing slashes are not allowed`);
|
|
6
|
+
}
|
|
7
|
+
if (route.path in prev) {
|
|
8
|
+
throw new Error(`Duplicate path ${route.path}`);
|
|
9
|
+
}
|
|
10
|
+
prev[route.path] = route;
|
|
11
|
+
return prev;
|
|
12
|
+
}, {/*default: { path: 'default', content: null }*/});
|
|
13
|
+
return routes; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
14
|
+
}
|
|
15
|
+
export function routeLegacy(path) {
|
|
16
|
+
const r = {
|
|
17
|
+
path
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
meta(meta) {
|
|
21
|
+
if ('path' in meta) throw new TungstenError(`meta may not include key 'path' in route '${r.path}'`);
|
|
22
|
+
if ('data' in meta) throw new TungstenError(`meta may not include key 'data' in route '${r.path}'`);
|
|
23
|
+
if ('content' in meta) throw new TungstenError(`meta may not include key 'content' in route '${r.path}'`);
|
|
24
|
+
//Object.assign(r, meta)
|
|
25
|
+
const rm = {
|
|
26
|
+
path: r.path,
|
|
27
|
+
...meta
|
|
28
|
+
};
|
|
29
|
+
return {
|
|
30
|
+
data(dataFunc) {
|
|
31
|
+
const rmd = {
|
|
32
|
+
...rm,
|
|
33
|
+
data: dataFunc
|
|
34
|
+
};
|
|
35
|
+
return {
|
|
36
|
+
content(content) {
|
|
37
|
+
return {
|
|
38
|
+
...rmd,
|
|
39
|
+
content
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
content(content) {
|
|
45
|
+
return {
|
|
46
|
+
...rm,
|
|
47
|
+
content
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
data(dataFunc) {
|
|
53
|
+
// const rd = r as { // eslint-disable-line no-type-assertion/no-type-assertion
|
|
54
|
+
// path: P
|
|
55
|
+
// data: RouteDataFunction<Params<P>, D>
|
|
56
|
+
// }
|
|
57
|
+
// rd.data = dataFunc
|
|
58
|
+
const rd = {
|
|
59
|
+
path: r.path,
|
|
60
|
+
data: dataFunc
|
|
61
|
+
};
|
|
62
|
+
return {
|
|
63
|
+
content(content) {
|
|
64
|
+
return {
|
|
65
|
+
...rd,
|
|
66
|
+
content
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
// does not accept a function by choice - but could be relaxed
|
|
72
|
+
content(content) {
|
|
73
|
+
return {
|
|
74
|
+
path: r.path,
|
|
75
|
+
content
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
export function route(path, meta) {
|
|
81
|
+
const r = {
|
|
82
|
+
path
|
|
83
|
+
}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
84
|
+
if (meta) {
|
|
85
|
+
if ('path' in meta) throw new TungstenError(`meta may not include key 'path' in route '${r.path}'`);
|
|
86
|
+
if ('data' in meta) throw new TungstenError(`meta may not include key 'data' in route '${r.path}'`);
|
|
87
|
+
if ('content' in meta) throw new TungstenError(`meta may not include key 'content' in route '${r.path}'`);
|
|
88
|
+
Object.assign(r, meta);
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
meta(meta) {
|
|
92
|
+
if ('path' in meta) throw new TungstenError(`meta may not include key 'path' in route '${r.path}'`);
|
|
93
|
+
if ('data' in meta) throw new TungstenError(`meta may not include key 'data' in route '${r.path}'`);
|
|
94
|
+
if ('content' in meta) throw new TungstenError(`meta may not include key 'content' in route '${r.path}'`);
|
|
95
|
+
//Object.assign(r, meta)
|
|
96
|
+
const rm = {
|
|
97
|
+
...r,
|
|
98
|
+
...meta
|
|
99
|
+
}; // with generics TS will use an intersection not an overriding merge here.
|
|
100
|
+
// We use Omit manually to model hte spread
|
|
101
|
+
return {
|
|
102
|
+
data(dataFunc) {
|
|
103
|
+
// const rmd = r as { path: P } & M & { // eslint-disable-line no-type-assertion/no-type-assertion
|
|
104
|
+
// data: RouteDataFunction<Params<P>, D>
|
|
105
|
+
// }
|
|
106
|
+
// rmd.data = dataFunc
|
|
107
|
+
const rmd = {
|
|
108
|
+
...rm,
|
|
109
|
+
data: dataFunc
|
|
110
|
+
};
|
|
111
|
+
return {
|
|
112
|
+
content(content) {
|
|
113
|
+
return {
|
|
114
|
+
...rmd,
|
|
115
|
+
content
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
},
|
|
120
|
+
content(content) {
|
|
121
|
+
return {
|
|
122
|
+
...rm,
|
|
123
|
+
content
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
},
|
|
128
|
+
data(dataFunc) {
|
|
129
|
+
// const rd = r as { // eslint-disable-line no-type-assertion/no-type-assertion
|
|
130
|
+
// path: P
|
|
131
|
+
// data: RouteDataFunction<ParamsFromPath<P>, D>
|
|
132
|
+
// }
|
|
133
|
+
// rd.data = dataFunc
|
|
134
|
+
const rd = {
|
|
135
|
+
...r,
|
|
136
|
+
data: dataFunc
|
|
137
|
+
};
|
|
138
|
+
return {
|
|
139
|
+
content(content) {
|
|
140
|
+
return {
|
|
141
|
+
...rd,
|
|
142
|
+
content
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
},
|
|
147
|
+
// does not accept a function by choice - but could be relaxed
|
|
148
|
+
content(content) {
|
|
149
|
+
// const rc = r as { path: P, content: C } // eslint-disable-line no-type-assertion/no-type-assertion
|
|
150
|
+
// rc.content = content
|
|
151
|
+
// return rc
|
|
152
|
+
return {
|
|
153
|
+
...r,
|
|
154
|
+
content
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
// function data<D>(dataFunc: () => Promise<D>) {
|
|
160
|
+
// const r: Partial<RouteType<any, any>> = {
|
|
161
|
+
// data: dataFunc
|
|
162
|
+
// }
|
|
163
|
+
// return {
|
|
164
|
+
// content(content: ContentNode) {
|
|
165
|
+
// r.content = content
|
|
166
|
+
// return {
|
|
167
|
+
// meta(meta: object) {
|
|
168
|
+
// }
|
|
169
|
+
// }
|
|
170
|
+
// }
|
|
171
|
+
// meta
|
|
172
|
+
// }
|
|
173
|
+
// }
|
|
174
|
+
// export const fluentRoutes = {
|
|
175
|
+
// '/': {
|
|
176
|
+
// name: 'Browse',
|
|
177
|
+
// content: <Browse />,
|
|
178
|
+
// },
|
|
179
|
+
// '404': {
|
|
180
|
+
// hidden: true,
|
|
181
|
+
// content: <NotFound />,
|
|
182
|
+
// },
|
|
183
|
+
// } as const satisfies Routes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__fluentRoutes.d.ts","sourceRoot":"","sources":["../../src/routing/__fluentRoutes.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import { fluentRoutes, route, routeLegacy } from "./__fluentRouteBuilder.js";
|
|
3
|
+
import { jsx as _jsx } from "tungsten/jsx-runtime";
|
|
4
|
+
function Browse() {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
function HandlerRepro() {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
function NotFound() {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
// const r = fluentRoutes([
|
|
14
|
+
// route('/')
|
|
15
|
+
// .meta({ name: 'Browse' })
|
|
16
|
+
// .content(<Browse />),
|
|
17
|
+
// route('404').content(<NotFound />),
|
|
18
|
+
// route('/data')
|
|
19
|
+
// .data(() => Promise.resolve(5))
|
|
20
|
+
// .content((d) => <span>{d}</span>)
|
|
21
|
+
// ])
|
|
22
|
+
const r = fluentRoutes([route('/').meta({
|
|
23
|
+
name: 'Browse'
|
|
24
|
+
}).content(_jsx(Browse, {})), routeLegacy('/repro').meta({
|
|
25
|
+
name: 'Handler repro',
|
|
26
|
+
hidden: true
|
|
27
|
+
}).content(_jsx(HandlerRepro, {})), routeLegacy('404').meta({
|
|
28
|
+
hidden: true
|
|
29
|
+
}).content(_jsx(NotFound, {}))]);
|
|
30
|
+
const rrrr1 = route('/', {
|
|
31
|
+
name: 'Browse'
|
|
32
|
+
}).content(_jsx(Browse, {}));
|
|
33
|
+
const rrrr2 = routeLegacy('/repro').meta({
|
|
34
|
+
name: 'Handler repro',
|
|
35
|
+
hidden: true
|
|
36
|
+
}).data(() => Promise.resolve(5)).content(_jsx(HandlerRepro, {}));
|
|
37
|
+
const r2 = fluentRoutes([route('/', {
|
|
38
|
+
name: 'Browse'
|
|
39
|
+
}).content(_jsx(Browse, {})), route('/repro', {
|
|
40
|
+
name: 'Handler repro',
|
|
41
|
+
hidden: true
|
|
42
|
+
}).content(_jsx(HandlerRepro, {})), route('404', {
|
|
43
|
+
hidden: true
|
|
44
|
+
}).content(_jsx(NotFound, {}))]);
|
|
45
|
+
// export const routes = {
|
|
46
|
+
// '/': {
|
|
47
|
+
// name: 'Browse',
|
|
48
|
+
// content: <Browse />,
|
|
49
|
+
// },
|
|
50
|
+
// '/repro': {
|
|
51
|
+
// name: 'Handler repro',
|
|
52
|
+
// hidden: true,
|
|
53
|
+
// content: <HandlerRepro />,
|
|
54
|
+
// },
|
|
55
|
+
// '404': {
|
|
56
|
+
// hidden: true,
|
|
57
|
+
// content: <NotFound />,
|
|
58
|
+
// },
|
|
59
|
+
// } as const satisfies Routes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staticGen.d.ts","sourceRoot":"","sources":["../../src/staticGen/staticGen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"staticGen.d.ts","sourceRoot":"","sources":["../../src/staticGen/staticGen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAgBhD,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,iBA+MnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/testing/host.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EACjC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAI3F,KAAK,OAAO,CAAC,SAAS,IAAI,SAAS,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAA;CAAE,GAAG,KAAK,GAAG,KAAK,CAAA;AAInF,KAAK,SAAS,CAAC,SAAS,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,IAC1D,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,MAAM,GACtE,MAAM,GACN,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;AAe5C,KAAK,eAAe,GACd,MAAM,uBAAuB,CAAC,GAAG,EAAE,GAAG,CAAC,GACvC,MAAM,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACtC,MAAM,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AAEpD,KAAK,cAAc,GAAG,MAAM,UAAU,CAAC,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/testing/host.ts"],"names":[],"mappings":"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"}
|
package/dist/testing/host.js
CHANGED
|
@@ -4,7 +4,7 @@ const isPromise = value => value instanceof Promise || typeof value === 'object'
|
|
|
4
4
|
// The same list at runtime. Underscore-prefixed members are excluded by rule
|
|
5
5
|
// (the framework's naming scheme), so only the plain-named ones are listed, and
|
|
6
6
|
// frameworkMembersAreComplete below fails to compile if one is ever missed.
|
|
7
|
-
const frameworkMemberNames = ['props', 'routeParams', 'routeData', 'parentComponent', 'childComponents', 'globalData', 'state', 'storeData', 'style', 'title', 'content', 'render', 'init', 'clientInit', 'serverInit', 'componentDidMount', 'componentDidHydrate', 'componentDidUpdate', 'componentDidRender', 'componentWillUnmount', 'componentDidUnmount', 'shouldStoreComponentUpdate', 'setState', 'triggerUpdate', '
|
|
7
|
+
const frameworkMemberNames = ['props', 'routeParams', 'routeData', 'parentComponent', 'childComponents', 'globalData', 'state', 'storeData', 'style', 'title', 'content', 'render', 'init', 'clientInit', 'serverInit', 'componentDidMount', 'componentDidHydrate', 'componentDidUpdate', 'componentDidRender', 'componentWillUnmount', 'componentDidUnmount', 'shouldStoreComponentUpdate', 'setState', 'triggerUpdate', 'pickProps', 'pickState', 'using', 'reactive', 'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval'];
|
|
8
8
|
const frameworkMembers = new Set(frameworkMemberNames);
|
|
9
9
|
/**
|
|
10
10
|
* Constructs a component outside of any app and drives it the way the framework
|
|
@@ -91,7 +91,6 @@ ComponentType, ...args) {
|
|
|
91
91
|
if (contentFunction === undefined) {
|
|
92
92
|
throw new Error(`host(): ${ComponentType.name} has no content or render function.`);
|
|
93
93
|
}
|
|
94
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- the base declares the stateful (props, state) shape for both
|
|
95
94
|
const call = contentFunction;
|
|
96
95
|
const result = simple ? call(component.props) : call(component.props, stateful.state);
|
|
97
96
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- ContentOf recovers the concrete component's own return type
|
|
@@ -109,8 +109,8 @@ class HydrateTestAppImplementation {
|
|
|
109
109
|
*/
|
|
110
110
|
export async function hydrateTestApp(RootComponent, ...args) {
|
|
111
111
|
await waitForEnvIfLoading();
|
|
112
|
-
const options = args[0];
|
|
113
|
-
const suppliedDocument = options?.document ?? globalThis.document;
|
|
112
|
+
const options = args[0];
|
|
113
|
+
const suppliedDocument = options?.document ?? globalThis.document;
|
|
114
114
|
if (suppliedDocument === undefined) {
|
|
115
115
|
// eslint-disable-line @typescript-eslint/no-unnecessary-condition
|
|
116
116
|
throw new Error('hydrateTestApp() requires options.document when no global document is available.');
|
|
@@ -134,7 +134,7 @@ export async function hydrateTestApp(RootComponent, ...args) {
|
|
|
134
134
|
const clientProps = options?.props ?? {}; // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
135
135
|
const serverProps = options?.serverProps ?? clientProps;
|
|
136
136
|
const location = options?.location ?? '/';
|
|
137
|
-
const globalData = options?.globalData ?? {};
|
|
137
|
+
const globalData = options?.globalData ?? {};
|
|
138
138
|
const matchedRouteInfo = {
|
|
139
139
|
key: null,
|
|
140
140
|
params: options?.routeParams ?? {},
|
|
@@ -167,9 +167,7 @@ export async function hydrateTestApp(RootComponent, ...args) {
|
|
|
167
167
|
stores,
|
|
168
168
|
storeSubscriptions
|
|
169
169
|
} = initStores(location, null, globalData, matchedRouteInfo);
|
|
170
|
-
const ssrInstance = new Instance(location, instanceConfig, null, emptyRoutes, emptyRoutes,
|
|
171
|
-
// eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
172
|
-
internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo, {
|
|
170
|
+
const ssrInstance = new Instance(location, instanceConfig, null, emptyRoutes, emptyRoutes, internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo, {
|
|
173
171
|
document,
|
|
174
172
|
window: document.defaultView,
|
|
175
173
|
scheduler: ssrScheduler,
|
|
@@ -213,9 +211,7 @@ export async function hydrateTestApp(RootComponent, ...args) {
|
|
|
213
211
|
scheduler,
|
|
214
212
|
navigation: false
|
|
215
213
|
};
|
|
216
|
-
const instance = new Instance(location, instanceConfig, null, emptyRoutes, emptyRoutes,
|
|
217
|
-
// eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
|
|
218
|
-
internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo, runtimeContext);
|
|
214
|
+
const instance = new Instance(location, instanceConfig, null, emptyRoutes, emptyRoutes, internalStore, stores, storeSubscriptions, globalData, matchedRouteInfo, runtimeContext);
|
|
219
215
|
try {
|
|
220
216
|
for (const override of options?.stores ?? []) {
|
|
221
217
|
const store = override.registration.getStore(instance.stores);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { UpdateResult } from './UpdateResult.js';
|
|
2
|
+
export type UpdateGuardHost = {
|
|
3
|
+
__unmountStarted: boolean;
|
|
4
|
+
__currentUpdate?: Promise<UpdateResult>;
|
|
5
|
+
__nextUpdate?: Promise<UpdateResult>;
|
|
6
|
+
__cancelledUpdateResult: () => UpdateResult;
|
|
7
|
+
};
|
|
8
|
+
export declare function guardedUpdate(host: UpdateGuardHost, run: () => Promise<UpdateResult>): Promise<UpdateResult>;
|
|
9
|
+
//# sourceMappingURL=guardedUpdate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardedUpdate.d.ts","sourceRoot":"","sources":["../../src/update/guardedUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,MAAM,eAAe,GAAG;IAC1B,gBAAgB,EAAE,OAAO,CAAA;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IACpC,uBAAuB,EAAE,MAAM,YAAY,CAAA;CAC9C,CAAA;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB5G"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// One update per component at a time. A request while one is in flight gets a single rerun
|
|
2
|
+
// after it, shared by every such request: writes landing mid-update coalesce, and no update
|
|
3
|
+
// reconciles against a tree the in-flight one is about to replace (overlappingUpdate test).
|
|
4
|
+
export function guardedUpdate(host, run) {
|
|
5
|
+
const current = host.__currentUpdate;
|
|
6
|
+
if (current !== undefined) {
|
|
7
|
+
host.__nextUpdate ??= current.then(rerun, rerun);
|
|
8
|
+
return host.__nextUpdate;
|
|
9
|
+
}
|
|
10
|
+
const update = run().finally(() => {
|
|
11
|
+
if (host.__currentUpdate === update) delete host.__currentUpdate;
|
|
12
|
+
});
|
|
13
|
+
host.__currentUpdate = update;
|
|
14
|
+
return update;
|
|
15
|
+
function rerun() {
|
|
16
|
+
delete host.__nextUpdate;
|
|
17
|
+
if (host.__unmountStarted) return host.__cancelledUpdateResult();
|
|
18
|
+
return guardedUpdate(host, run);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"integrateUpdateVdom.d.ts","sourceRoot":"","sources":["../../src/update/integrateUpdateVdom.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IsHTMLElement } from '../DomNodes.js';
|
|
2
2
|
import { DomRegion } from '../DomRegion.js';
|
|
3
3
|
import { DomPointer } from '../DomPointer.js';
|
|
4
|
+
import { appHeadChildrenStart } from '../headChildren.js';
|
|
4
5
|
import { ContentNodeComponentIsClassComponent, ContentNodeIsNonRendered, ContentNodeIsLiteral, ContentNodeIsHtml, ContentNodeIsComponent, ContentNodeIsArray, ContentNodeIsFragment, ContentNodeIsElement, ContentNodeElementHasValidKey } from '../ContentNode.js';
|
|
5
6
|
import { StringIsHtmlEvent, htmlEvents } from '../htmlEvents.js';
|
|
6
7
|
import { out, warn } from '../appOutput.js';
|
|
@@ -79,7 +80,7 @@ function debug(...texts) {
|
|
|
79
80
|
//console.log(...texts)
|
|
80
81
|
//console.log(getStackTrace().split('\n')[2])
|
|
81
82
|
}
|
|
82
|
-
const timing = false;
|
|
83
|
+
const timing = false;
|
|
83
84
|
// need to be adapted to work for func components?
|
|
84
85
|
export async function integrateElementUpdateVdom(element, newContent) {
|
|
85
86
|
let startTime = 0;
|
|
@@ -507,7 +508,8 @@ async function updateHtmlElement(tungstenElement, instance, newNode, oldNode, do
|
|
|
507
508
|
newNode: newChildren,
|
|
508
509
|
oldNode: oldChildren,
|
|
509
510
|
domRegion: new DomRegion(domNode),
|
|
510
|
-
|
|
511
|
+
// the head's children start past what the server added to it
|
|
512
|
+
domPointer: new DomPointer(domNode, newNode[$type] === 'head' ? appHeadChildrenStart(domNode) : 0),
|
|
511
513
|
parentNode: newNode
|
|
512
514
|
});
|
|
513
515
|
// Reapply the controlled value after reconciling the options. Updating the
|
|
@@ -583,7 +585,7 @@ function moveDomNode(domNode, domPointer) {
|
|
|
583
585
|
// is not a child at all (indexOf -1), or index is past the end (undefined).
|
|
584
586
|
// one live-NodeList read, reused as the insertBefore reference below -- see
|
|
585
587
|
// DomPointer.insert() for why these reads are worth counting
|
|
586
|
-
const reference = domPointer.parent.childNodes[domPointer.index];
|
|
588
|
+
const reference = domPointer.parent.childNodes[domPointer.index];
|
|
587
589
|
if (reference !== domNode) {
|
|
588
590
|
//console.log('document.activeElement', document.activeElement, domNode == document.activeElement, domNode === document.activeElement)
|
|
589
591
|
const ownerDocument = domNode.ownerDocument;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/zones/react.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/zones/react.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAGpD,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,MAAM,IAC7C,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,GAC3B,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAA;AAEvC,KAAK,aAAa,GAAG;IACjB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IAC/B,OAAO,IAAI,IAAI,CAAA;CAClB,CAAA;AAED,KAAK,kBAAkB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,CAAA;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAC3B,KAAK,EAAE;QACH,SAAS,EAAE,GAAG,CAAA;QACd,aAAa,EAAE,kBAAkB,CAAA;KACpC,CAAA;IACD,MAAM,EAAE;QACJ,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAAA;QACxC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,aAAa,CAAA;KAC/D,CAAA;IACD,MAAM,EAAE;QACJ,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAA;KAC5C,CAAA;CACJ,CAAA;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,IAAI;IAC/C,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACpC,KAAK,EAAE,KAAK,CAAA;IACZ,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAA;IACjB,OAAO,EAAE,gBAAgB,CAAA;CAC5B,CAAA;AAED,qBAAa,SAAS,CAAC,KAAK,SAAS,MAAM,CAAE,SAAQ,uBAAuB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/F,OAAO,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAyC;IACpF,SAAS,EAAE,aAAa,GAAG,SAAS,CAAA;IACpC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAA;IAClD,aAAa,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC,SAAS,UAAQ;IAEjB,OAAO,QAAa,OAAO,CAAC,WAAW,CAAC,CAsBvC;IAED,iBAAiB,QAAO,IAAI,CAG3B;IAED,kBAAkB,QAAO,IAAI,CAE5B;IAED,oBAAoB,QAAO,IAAI,CAM9B;IAED,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,WAAW;CAOtB"}
|
package/dist/zones/react.js
CHANGED
|
@@ -2,13 +2,13 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import { TungstenSimpleComponent } from "../Components.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createHtmlElementRef } from '../createRef.js';
|
|
6
6
|
import { isServer } from '../isServer.js';
|
|
7
7
|
import { jsx as _jsx } from "tungsten/jsx-runtime";
|
|
8
8
|
export class ReactZone extends TungstenSimpleComponent {
|
|
9
9
|
constructor(...args) {
|
|
10
10
|
super(...args);
|
|
11
|
-
_defineProperty(this, "hostRef",
|
|
11
|
+
_defineProperty(this, "hostRef", createHtmlElementRef());
|
|
12
12
|
_defineProperty(this, "reactRoot", void 0);
|
|
13
13
|
_defineProperty(this, "reactCreateElement", void 0);
|
|
14
14
|
_defineProperty(this, "errorBoundary", void 0);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tungsten",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -72,7 +72,8 @@
|
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@babel/cli": "^7.29.7",
|
|
74
74
|
"@babel/generator": "^7.29.1",
|
|
75
|
-
"@
|
|
75
|
+
"@eslint/js": "^10.0.1",
|
|
76
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
76
77
|
"@types/babel-types": "^7.0.16",
|
|
77
78
|
"@types/babel__generator": "^7.27.0",
|
|
78
79
|
"@types/chai": "^4.3.20",
|
|
@@ -80,24 +81,20 @@
|
|
|
80
81
|
"@types/react": "19.1.9",
|
|
81
82
|
"@types/react-dom": "19.1.7",
|
|
82
83
|
"@types/serialize-javascript": "^5.0.4",
|
|
83
|
-
"@typescript-eslint/eslint-plugin": "^8.69.0",
|
|
84
|
-
"@typescript-eslint/parser": "^8.69.0",
|
|
85
84
|
"babel-plugin-replace-import-extension": "^1.1.5",
|
|
86
85
|
"babel-plugin-sxy-transform-import-extensions": "^1.0.5",
|
|
87
86
|
"babel-plugin-transform-import-extension": "^1.0.3",
|
|
88
87
|
"chai": "^4.5.0",
|
|
89
88
|
"cross-env": "^7.0.3",
|
|
90
|
-
"eslint": "^
|
|
91
|
-
"eslint-
|
|
92
|
-
"eslint-plugin-import": "^2.32.0",
|
|
93
|
-
"eslint-plugin-no-type-assertion": "^1.3.0",
|
|
94
|
-
"eslint-plugin-unused-imports": "^3.2.0",
|
|
89
|
+
"eslint": "^10.10.0",
|
|
90
|
+
"eslint-plugin-unused-imports": "^4.4.1",
|
|
95
91
|
"happy-dom": "^20.11.1",
|
|
96
92
|
"npm-run-all": "^4.1.5",
|
|
97
93
|
"rimraf": "^5.0.10",
|
|
98
94
|
"rollup-plugin-visualizer": "^5.14.0",
|
|
99
95
|
"sxy-test-runner": "^2.4.9",
|
|
100
|
-
"typescript": "^6.0.3"
|
|
96
|
+
"typescript": "^6.0.3",
|
|
97
|
+
"typescript-eslint": "^8.70.0"
|
|
101
98
|
},
|
|
102
99
|
"peerDependencies": {
|
|
103
100
|
"react": "^18.2.0 || ^19.0.0",
|
package/types/env.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
// declare global {
|
|
7
|
-
// var tungstenPrivateEnv: TungstenPrivateEnv | undefined
|
|
8
|
-
// var tungstenPublicEnv: TungstenPublicEnv | undefined
|
|
9
|
-
// }
|
|
10
|
-
|
|
11
|
-
export {}
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
// declare global {
|
|
7
|
+
// var tungstenPrivateEnv: TungstenPrivateEnv | undefined
|
|
8
|
+
// var tungstenPublicEnv: TungstenPublicEnv | undefined
|
|
9
|
+
// }
|
|
10
|
+
|
|
11
|
+
export {}
|
package/types/index.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
|
|
4
4
|
// the stylesheet module declarations live in a script file: this one is a module, and a
|
|
5
5
|
// `declare module '*.css'` here would augment the app's own '*.css' declaration, which cannot add exports.
|
|
6
6
|
// A reference, as an import of a script file is refused
|
|
7
7
|
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
|
8
8
|
/// <reference path="./assets.d.ts" />
|
|
9
|
+
// The global JSX namespace, declared on purpose: it otherwise reached apps only through the
|
|
10
|
+
// Bindable components' declaration files happening to import from jsx.d.ts
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
|
12
|
+
/// <reference path="./jsx/jsx.d.ts" />
|
|
9
13
|
// Disposable and Symbol.dispose appear in the shipped types (component using(), browser storage), and in
|
|
10
14
|
// TS 6 that lib comes only with ESNext - so bring it in here rather than require it of every app's lib list
|
|
11
15
|
/// <reference lib="esnext.disposable" />
|
|
@@ -34,14 +38,14 @@ declare global {
|
|
|
34
38
|
//// Apps fill these by declaration merging in their env module: `interface TungstenPrivateEnv extends PrivateEnv {}`.
|
|
35
39
|
//// Empty here on purpose: a base that extended the core env types would collide with an app whose schema
|
|
36
40
|
//// makes a core field required (TS2320). Tungsten's own reads of the core fields come from src/env/Interfaces.ts
|
|
37
|
-
|
|
41
|
+
|
|
38
42
|
declare global {
|
|
39
43
|
interface TungstenPrivateEnv {}
|
|
40
44
|
interface TungstenPublicEnv {}
|
|
41
45
|
var tungstenPrivateEnv: TungstenPrivateEnv
|
|
42
46
|
var tungstenPublicEnv: TungstenPublicEnv
|
|
43
47
|
}
|
|
44
|
-
|
|
48
|
+
|
|
45
49
|
|
|
46
50
|
//// In dev, cjsHelpers.ts installs a partial `process` on the browser global so that converted
|
|
47
51
|
//// CommonJS packages can read process.env.NODE_ENV. It flags itself with __tungstenCjsShim so
|