tungsten 0.5.1 → 0.5.3

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 (191) hide show
  1. package/dist/.build-complete +1 -1
  2. package/dist/Components.d.ts +14 -6
  3. package/dist/Components.d.ts.map +1 -1
  4. package/dist/Components.js +67 -23
  5. package/dist/DomPointer.js +1 -1
  6. package/dist/DomRegion.js +2 -2
  7. package/dist/Framework.js +1 -1
  8. package/dist/FunctionComponentStandIn.d.ts +4 -0
  9. package/dist/FunctionComponentStandIn.d.ts.map +1 -1
  10. package/dist/FunctionComponentStandIn.js +11 -1
  11. package/dist/Json.type.d.ts.map +1 -1
  12. package/dist/Servers/DevServer.js +1 -1
  13. package/dist/Servers/MatchedRouteInfo.d.ts +1 -1
  14. package/dist/Servers/MatchedRouteInfo.d.ts.map +1 -1
  15. package/dist/Servers/ProdServer.js +2 -3
  16. package/dist/Servers/initStores.d.ts.map +1 -1
  17. package/dist/Servers/loadEnvsDev.js +2 -2
  18. package/dist/Store/makeStore.d.ts.map +1 -1
  19. package/dist/Store/makeStore.js +7 -3
  20. package/dist/api/ApiMethod.type.d.ts +2 -0
  21. package/dist/api/ApiMethod.type.d.ts.map +1 -0
  22. package/dist/api/ApiRoute.d.ts +2 -2
  23. package/dist/api/ApiRoute.d.ts.map +1 -1
  24. package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts +2 -2
  25. package/dist/babelPlugins/BabelExtractComponentStylesheet.d.ts.map +1 -1
  26. package/dist/babelPlugins/BabelExtractComponentStylesheet.js +1 -1
  27. package/dist/babelPlugins/BabelTransformBindDirect.d.ts.map +1 -1
  28. package/dist/babelPlugins/BabelTransformBindDirect.js +2 -4
  29. package/dist/babelPlugins/BabelTransformBindVar.js +2 -3
  30. package/dist/babelPlugins/BabelTransformDocInit.js +1 -1
  31. package/dist/babelPlugins/BabelTransformPackageImports.d.ts +1 -0
  32. package/dist/babelPlugins/BabelTransformPackageImports.d.ts.map +1 -1
  33. package/dist/babelPlugins/BabelTransformPackageImports.js +51 -69
  34. package/dist/babelPlugins/BabelTypes.d.ts.map +1 -1
  35. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsCjs.d.ts.map +1 -1
  36. package/dist/babelPlugins/transformPackageImports/BabelTransformDependencyImportsEsm.d.ts.map +1 -1
  37. package/dist/bin/commands/build.js +0 -1
  38. package/dist/bin/commands/compile.js +4 -4
  39. package/dist/build/babel.user.common.config.d.ts +2 -1
  40. package/dist/build/babel.user.common.config.d.ts.map +1 -1
  41. package/dist/build/babel.user.common.config.js +16 -10
  42. package/dist/build/compileJavascript.d.ts.map +1 -1
  43. package/dist/build/compileJavascript.js +3 -4
  44. package/dist/build/compileStyles.d.ts.map +1 -1
  45. package/dist/build/compileStyles.js +7 -3
  46. package/dist/build/createClientFiles.js +2 -3
  47. package/dist/build/createInstanceConfigFile.js +1 -1
  48. package/dist/build/devBundle.rollup.config.js +6 -6
  49. package/dist/build/frameworkDestLocation.d.ts.map +1 -1
  50. package/dist/build/frameworkDestLocation.js +5 -2
  51. package/dist/build/makeBabelRawConfig.js +1 -1
  52. package/dist/build/makeBabelUserProdConfig.js +2 -4
  53. package/dist/build/packageIdentifier.d.ts +6 -0
  54. package/dist/build/packageIdentifier.d.ts.map +1 -0
  55. package/dist/build/packageIdentifier.js +19 -0
  56. package/dist/build/rollup.user.prod.config.js +12 -12
  57. package/dist/build/sassImportParser.js +0 -3
  58. package/dist/clone.js +1 -3
  59. package/dist/compat/types.d.ts.map +1 -1
  60. package/dist/componentProxyHandlers.js +1 -1
  61. package/dist/components/NativeHtml.d.ts +1 -1
  62. package/dist/components/NativeHtml.d.ts.map +1 -1
  63. package/dist/components/Protected.d.ts +1 -1
  64. package/dist/components/Protected.d.ts.map +1 -1
  65. package/dist/components/Stylesheet.js +0 -1
  66. package/dist/components/bindable/BindableInputTyped.d.ts.map +1 -1
  67. package/dist/components/library/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  68. package/dist/components/library/RichTextEditor/RichTextEditor.js +3 -3
  69. package/dist/createRef.d.ts +1 -1
  70. package/dist/createRef.d.ts.map +1 -1
  71. package/dist/createRef.js +1 -1
  72. package/dist/env/getEnvSchemas.d.ts +3 -4
  73. package/dist/env/getEnvSchemas.d.ts.map +1 -1
  74. package/dist/env/registerEnvSchemas.d.ts +4 -2
  75. package/dist/env/registerEnvSchemas.d.ts.map +1 -1
  76. package/dist/foreach.d.ts.map +1 -1
  77. package/dist/frameworkConfigSchema.js +1 -3
  78. package/dist/helpers/forwardingFetch.d.ts +3 -0
  79. package/dist/helpers/forwardingFetch.d.ts.map +1 -0
  80. package/dist/helpers/forwardingFetch.js +14 -0
  81. package/dist/helpers/index.d.ts +2 -0
  82. package/dist/helpers/index.d.ts.map +1 -1
  83. package/dist/helpers/index.js +3 -1
  84. package/dist/helpers/perRequest.d.ts +3 -0
  85. package/dist/helpers/perRequest.d.ts.map +1 -0
  86. package/dist/helpers/perRequest.js +17 -0
  87. package/dist/hmr/instanceRegistry.js +2 -2
  88. package/dist/hooks/useCallback.d.ts.map +1 -1
  89. package/dist/hydrate/hydrate.d.ts +1 -2
  90. package/dist/hydrate/hydrate.d.ts.map +1 -1
  91. package/dist/hydrate/hydrate.js +1 -3
  92. package/dist/hydrate/reconcileHydratedAttributes.js +1 -1
  93. package/dist/importDevModuleWithRetry.js +1 -1
  94. package/dist/index.d.ts +1 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +4 -0
  97. package/dist/indexInner.d.ts +1 -2
  98. package/dist/indexInner.d.ts.map +1 -1
  99. package/dist/logAndReturn.d.ts.map +1 -1
  100. package/dist/markOptionSelected.js +1 -1
  101. package/dist/mutatingFunctions.js +0 -3
  102. package/dist/postcssPlugins/TransformCssNames.js +2 -2
  103. package/dist/render/addImportMap.js +0 -1
  104. package/dist/requests/fetch/delete.d.ts +2 -1
  105. package/dist/requests/fetch/delete.d.ts.map +1 -1
  106. package/dist/requests/fetch/delete.js +7 -7
  107. package/dist/requests/fetch/get.d.ts.map +1 -1
  108. package/dist/requests/fetch/get.js +4 -6
  109. package/dist/requests/fetch/mergeFetchInit.d.ts +2 -0
  110. package/dist/requests/fetch/mergeFetchInit.d.ts.map +1 -0
  111. package/dist/requests/fetch/mergeFetchInit.js +17 -0
  112. package/dist/requests/fetch/patch.d.ts.map +1 -1
  113. package/dist/requests/fetch/patch.js +4 -6
  114. package/dist/requests/fetch/post.d.ts.map +1 -1
  115. package/dist/requests/fetch/post.js +4 -6
  116. package/dist/requests/fetch/put.d.ts.map +1 -1
  117. package/dist/requests/fetch/put.js +4 -6
  118. package/dist/routing/ParamsFromPath.d.ts.map +1 -1
  119. package/dist/routing/RouteType.d.ts +1 -8
  120. package/dist/routing/RouteType.d.ts.map +1 -1
  121. package/dist/routing/RouteTypes.d.ts +11 -0
  122. package/dist/routing/RouteTypes.d.ts.map +1 -1
  123. package/dist/routing/Routes.d.ts +7 -8
  124. package/dist/routing/Routes.d.ts.map +1 -1
  125. package/dist/routing/__fluentRouteBuilder.d.ts +80 -0
  126. package/dist/routing/__fluentRouteBuilder.d.ts.map +1 -0
  127. package/dist/routing/__fluentRouteBuilder.js +183 -0
  128. package/dist/routing/__fluentRoutes.d.ts +2 -0
  129. package/dist/routing/__fluentRoutes.d.ts.map +1 -0
  130. package/dist/routing/__fluentRoutes.js +59 -0
  131. package/dist/staticGen/staticGen.d.ts.map +1 -1
  132. package/dist/testing/host.d.ts +1 -1
  133. package/dist/testing/host.d.ts.map +1 -1
  134. package/dist/testing/host.js +1 -2
  135. package/dist/testing/hydrateTestApp.js +5 -9
  136. package/dist/testing/normalize.d.ts +2 -0
  137. package/dist/testing/normalize.d.ts.map +1 -0
  138. package/dist/testing/normalize.js +1 -0
  139. package/dist/update/guardedUpdate.d.ts +9 -0
  140. package/dist/update/guardedUpdate.d.ts.map +1 -0
  141. package/dist/update/guardedUpdate.js +20 -0
  142. package/dist/update/integrateUpdateVdom.js +2 -2
  143. package/dist/zones/react.d.ts.map +1 -1
  144. package/dist/zones/react.js +2 -2
  145. package/package.json +7 -10
  146. package/types/env.d.ts +11 -11
  147. package/types/index.d.ts +7 -3
  148. package/types/jsx/html.d.ts +5 -5
  149. package/types/jsx/html.events.d.ts +202 -200
  150. package/types/jsx/html.global.d.ts +150 -150
  151. package/types/jsx/html.values.d.ts +29 -29
  152. package/types/jsx/jsx.d.ts +16 -5
  153. package/vendor/babel-core.js +13 -8
  154. package/vendor/babel-parser.js +5 -1
  155. package/vendor/babel-plugin-syntax-import-assertions.js +5 -1
  156. package/vendor/babel-preset-react.js +13 -8
  157. package/vendor/babel-preset-typescript.js +13 -8
  158. package/vendor/babel-types.js +5 -1
  159. package/vendor/chalk-extensions.js +6 -161
  160. package/vendor/chalk.js +4 -0
  161. package/vendor/chokidar.js +17 -13
  162. package/vendor/{chunk-B_NeooyV.js → chunk-BSJqV47f.js} +4 -0
  163. package/vendor/{chunk-1UuLTU0U.js → chunk-BYvDIO7e.js} +4 -0
  164. package/vendor/chunk-BfcfwwoF.js +15 -0
  165. package/vendor/{chunk-CPArXGxa.js → chunk-BiUcnLhT.js} +4 -0
  166. package/vendor/chunk-Bu8ZRE-c.js +179 -0
  167. package/vendor/chunk-CmnhIuzX.js +167 -0
  168. package/vendor/chunk-Cqrj-Zqr.js +8579 -0
  169. package/vendor/{chunk-1TN2rK3j.js → chunk-D2EnpcLg.js} +7 -3
  170. package/vendor/{chunk-C9FSKeSx.js → chunk-DHmjZ22y.js} +4 -0
  171. package/vendor/{chunk-C3YkUGz5.js → chunk-Hy-cCmu-.js} +4 -0
  172. package/vendor/{chunk-C12hSZn7.js → chunk-Lqa6rV_r.js} +4 -0
  173. package/vendor/{chunk-C3fcZDjl.js → chunk-OUnVY4Wm.js} +24 -191
  174. package/vendor/cjs-module-lexer.js +4 -0
  175. package/vendor/dotenv.js +10 -6
  176. package/vendor/express.js +30 -31
  177. package/vendor/import-meta-resolve.js +4 -0
  178. package/vendor/manifest.json +3 -2
  179. package/vendor/postcss.js +9 -8544
  180. package/vendor/precinct.js +326959 -0
  181. package/vendor/serialize-javascript.js +4 -0
  182. package/vendor/sxy-lib-arrays.js +4 -0
  183. package/vendor/sxy-lib-object-copy.js +5 -1
  184. package/vendor/sxy-lib-objects.js +4 -0
  185. package/vendor/sxy-lib-promises.js +4 -0
  186. package/vendor/sxy-package-investigator.js +7 -3
  187. package/vendor/valibot.js +4 -0
  188. package/dist/.tsbuildinfo +0 -1
  189. package/dist/api/Method.d.ts +0 -2
  190. package/dist/api/Method.d.ts.map +0 -1
  191. /package/dist/api/{Method.js → ApiMethod.type.js} +0 -0
@@ -1,20 +1,20 @@
1
1
  import { TungstenError } from '../../TungstenError.js';
2
2
  import { _fetchPromise } from './_fetchPromise.js';
3
+ import { mergeFetchInit } from './mergeFetchInit.js';
3
4
  const method = 'DELETE';
4
5
  export async function httpDelete(url, data, extras) {
5
6
  const _fetch = await _fetchPromise;
6
- const response = await _fetch(url, {
7
+ const response = await _fetch(url, mergeFetchInit({
7
8
  method,
8
9
  headers: {
9
10
  'Accept': 'application/json',
10
11
  'Content-Type': 'application/json'
11
12
  },
12
- // cors?
13
- // credentials?
14
- body: JSON.stringify(data),
15
- ...extras
16
- });
17
- if (response.status !== 200) throw new TungstenError(`${method} request to ${url} returned an invalid status: ${response.status}`);
13
+ body: JSON.stringify(data)
14
+ }, extras));
15
+ if (response.status !== 200) {
16
+ throw new TungstenError(`${method} request to ${url} returned an invalid status: ${response.status}`);
17
+ }
18
18
  const jsonData = await response.json();
19
19
  return jsonData;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/get.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAKnD,wBAAsB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,0CA0BlF"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/get.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAOnD,wBAAsB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,0CAuBlF"}
@@ -1,6 +1,7 @@
1
1
  import { TungstenError } from '../../TungstenError.js';
2
2
  import { _fetchPromise } from './_fetchPromise.js';
3
3
  import { paramsObjectToParamsString } from './paramsObjectToParamsString.js';
4
+ import { mergeFetchInit } from './mergeFetchInit.js';
4
5
  const method = 'GET';
5
6
  export async function get(url, data, extras) {
6
7
  const _fetch = await _fetchPromise;
@@ -11,15 +12,12 @@ export async function get(url, data, extras) {
11
12
  url += '?' + paramsObjectToParamsString(data);
12
13
  }
13
14
  }
14
- const response = await _fetch(url, {
15
+ const response = await _fetch(url, mergeFetchInit({
15
16
  method,
16
17
  headers: {
17
18
  'Accept': 'application/json'
18
- },
19
- // cors?
20
- // credentials?
21
- ...extras
22
- });
19
+ }
20
+ }, extras));
23
21
  if (response.status !== 200) throw new TungstenError(`${method} request to ${url} returned an invalid status: ${response.status}`);
24
22
  const jsonData = await response.json();
25
23
  return jsonData;
@@ -0,0 +1,2 @@
1
+ export declare function mergeFetchInit(base: RequestInit, extras?: RequestInit): RequestInit;
2
+ //# sourceMappingURL=mergeFetchInit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeFetchInit.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/mergeFetchInit.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,CASnF"}
@@ -0,0 +1,17 @@
1
+ // extras over base, with the headers merged (extras' win by name) rather than replaced - a plain
2
+ // spread let a caller forwarding a cookie silently drop the JSON content-type
3
+ export function mergeFetchInit(base, extras) {
4
+ if (extras === undefined) return base;
5
+ const merged = {
6
+ ...base,
7
+ ...extras
8
+ };
9
+ if (base.headers !== undefined && extras.headers !== undefined) {
10
+ const headers = new Headers(base.headers);
11
+ new Headers(extras.headers).forEach((value, key) => {
12
+ headers.set(key, value);
13
+ });
14
+ merged.headers = headers;
15
+ }
16
+ return merged;
17
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/patch.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAInD,wBAAsB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,0CAoB3E"}
1
+ {"version":3,"file":"patch.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/patch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAMnD,wBAAsB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,0CAiB3E"}
@@ -1,19 +1,17 @@
1
1
  import { TungstenError } from '../../TungstenError.js';
2
2
  import { _fetchPromise } from './_fetchPromise.js';
3
+ import { mergeFetchInit } from './mergeFetchInit.js';
3
4
  const method = 'PATCH';
4
5
  export async function patch(url, data, extras) {
5
6
  const _fetch = await _fetchPromise;
6
- const response = await _fetch(url, {
7
+ const response = await _fetch(url, mergeFetchInit({
7
8
  method,
8
9
  headers: {
9
10
  'Content-Type': 'application/json',
10
11
  'Accept': 'application/json'
11
12
  },
12
- // cors?
13
- // credentials?
14
- body: JSON.stringify(data),
15
- ...extras
16
- });
13
+ body: JSON.stringify(data)
14
+ }, extras));
17
15
  if (response.status !== 200) throw new TungstenError(`${method} request to ${url} returned an invalid status: ${response.status}`);
18
16
  const jsonData = await response.json();
19
17
  return jsonData;
@@ -1 +1 @@
1
- {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/post.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAInD,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,0CAoB1E"}
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/post.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAMnD,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,0CAiB1E"}
@@ -1,19 +1,17 @@
1
1
  import { TungstenError } from '../../TungstenError.js';
2
2
  import { _fetchPromise } from './_fetchPromise.js';
3
+ import { mergeFetchInit } from './mergeFetchInit.js';
3
4
  const method = 'POST';
4
5
  export async function post(url, data, extras) {
5
6
  const _fetch = await _fetchPromise;
6
- const response = await _fetch(url, {
7
+ const response = await _fetch(url, mergeFetchInit({
7
8
  method,
8
9
  headers: {
9
10
  'Content-Type': 'application/json',
10
11
  'Accept': 'application/json'
11
12
  },
12
- // cors?
13
- // credentials?
14
- body: JSON.stringify(data),
15
- ...extras
16
- });
13
+ body: JSON.stringify(data)
14
+ }, extras));
17
15
  if (response.status !== 200) throw new TungstenError(`${method} request to ${url} returned an invalid status: ${response.status}`);
18
16
  const jsonData = await response.json();
19
17
  return jsonData;
@@ -1 +1 @@
1
- {"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/put.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAInD,wBAAsB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,0CAoBzE"}
1
+ {"version":3,"file":"put.d.ts","sourceRoot":"","sources":["../../../src/requests/fetch/put.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAKnD,wBAAsB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,0CAiBzE"}
@@ -1,19 +1,17 @@
1
1
  import { TungstenError } from '../../TungstenError.js';
2
2
  import { _fetchPromise } from './_fetchPromise.js';
3
+ import { mergeFetchInit } from './mergeFetchInit.js';
3
4
  const method = 'PUT';
4
5
  export async function put(url, data, extras) {
5
6
  const _fetch = await _fetchPromise;
6
- const response = await _fetch(url, {
7
+ const response = await _fetch(url, mergeFetchInit({
7
8
  method,
8
9
  headers: {
9
10
  'Content-Type': 'application/json',
10
11
  'Accept': 'application/json'
11
12
  },
12
- // cors?
13
- // credentials?
14
- body: JSON.stringify(data),
15
- ...extras
16
- });
13
+ body: JSON.stringify(data)
14
+ }, extras));
17
15
  if (response.status !== 200) throw new TungstenError(`${method} request to ${url} returned an invalid status: ${response.status}`);
18
16
  const jsonData = await response.json();
19
17
  return jsonData;
@@ -1 +1 @@
1
- {"version":3,"file":"ParamsFromPath.d.ts","sourceRoot":"","sources":["../../src/routing/ParamsFromPath.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,KAAK,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GACrF,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACpF,KAAK,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AACxC,KAAK,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;AAErC,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,MAAM,IAAI,CAAC,GACtE,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG;KAAG,CAAC,IAAI,GAAG,GAAG,MAAM;CAAE,CAAC,CAAC;AAE/C,MAAM,MAAM,cAAc,CACtB,CAAC,SAAS,MAAM,EAChB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,EAC5C,IAAI,SAAS,MAAM,GAAG,EAAE,EACxB,OAAO,SAAS,OAAO,GAAG,KAAK,IAC/B,CAAC,SAAS,GAAG,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,GACrC,KAAK,SAAS,GAAG,GACb,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GACtD,OAAO,SAAS,IAAI,GAChB,KAAK,SAAS,KAAK,GACf,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,GACvD,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAC3D,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,GACrD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ParamsFromPath.d.ts","sourceRoot":"","sources":["../../src/routing/ParamsFromPath.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,KAAK,UAAU,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GACrF,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AACnF,KAAK,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAA;AACvC,KAAK,KAAK,GAAG,UAAU,GAAG,UAAU,CAAA;AAEpC,KAAK,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,MAAM,IAAI,CAAC,GACtE,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,GAAG;KAAG,CAAC,IAAI,GAAG,GAAG,MAAM;CAAE,CAAC,CAAA;AAE9C,MAAM,MAAM,cAAc,CACtB,CAAC,SAAS,MAAM,EAChB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,EAC5C,IAAI,SAAS,MAAM,GAAG,EAAE,EACxB,OAAO,SAAS,OAAO,GAAG,KAAK,IAC/B,CAAC,SAAS,GAAG,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,GACrC,KAAK,SAAS,GAAG,GACb,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GACtD,OAAO,SAAS,IAAI,GAChB,KAAK,SAAS,KAAK,GACf,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,GACvD,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,GAC3D,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,GACrD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA"}
@@ -1,9 +1,2 @@
1
- import type { RouteDataFunction } from './RouteDataFunction.type.js';
2
- import type { ContentNode } from '../ContentNode.js';
3
- import type { RouteContentFunction } from './RouteContentFunction.js';
4
- export type RouteType<Params extends object, DataType> = {
5
- data?: RouteDataFunction<Params, DataType>;
6
- content: ContentNode | RouteContentFunction<Params, DataType>;
7
- };
8
- export type Route<Params extends object, DataType> = RouteType<Params, DataType>;
1
+ export {};
9
2
  //# sourceMappingURL=RouteType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RouteType.d.ts","sourceRoot":"","sources":["../../src/routing/RouteType.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAErE,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,MAAM,EAAE,QAAQ,IAAI;IACrD,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC1C,OAAO,EAAE,WAAW,GAAG,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CAChE,CAAA;AAED,MAAM,MAAM,KAAK,CAAC,MAAM,SAAS,MAAM,EAAE,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"RouteType.d.ts","sourceRoot":"","sources":["../../src/routing/RouteType.ts"],"names":[],"mappings":""}
@@ -1,4 +1,15 @@
1
1
  import type { Routes } from './Routes.js';
2
+ import type { RouteDataFunction } from './RouteDataFunction.type.js';
3
+ import type { ContentNode } from '../ContentNode.js';
4
+ import type { RouteContentFunction } from './RouteContentFunction.js';
5
+ export type Endpoint<Params extends object, DataType> = {
6
+ data?: RouteDataFunction<Params, DataType>;
7
+ content: ContentNode | RouteContentFunction<Params, DataType>;
8
+ };
9
+ export type Method = 'GET' | 'QUERY' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
10
+ export type Route = Endpoint<object, unknown> & {
11
+ [K in Method]?: Endpoint<object, unknown>;
12
+ };
2
13
  export type Path = `/${string}`;
3
14
  export type SpecialRoute = 'default' | '404' | 'error';
4
15
  export type RouteKey = Path | SpecialRoute;
@@ -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,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAA;AACtD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,YAAY,CAAA;AAE1C,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":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAErE,MAAM,MAAM,QAAQ,CAAC,MAAM,SAAS,MAAM,EAAE,QAAQ,IAAI;IACpD,IAAI,CAAC,EAAE,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC1C,OAAO,EAAE,WAAW,GAAG,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CAChE,CAAA;AAGD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAA;AAE1E,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;KAC3C,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC5C,CAAA;AAED,MAAM,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAA;AAC/B,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAA;AACtD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,YAAY,CAAA;AAE1C,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,21 +1,20 @@
1
- import type { Path } from './RouteTypes.js';
2
- import type { RouteType } from './RouteType.js';
1
+ import type { Path, Endpoint } from './RouteTypes.js';
3
2
  import type { ErrorRouteType } from './ErrorRouteType.js';
4
3
  export type MinimumRoutes = {
5
- default: RouteType<any, any>;
4
+ default: Endpoint<any, any>;
6
5
  } | {
7
- '404': RouteType<any, any>;
6
+ '404': Endpoint<any, any>;
8
7
  };
9
8
  export type Routes = {
10
- [key in Path]: RouteType<any, any>;
9
+ [key in Path]: Endpoint<any, any>;
11
10
  } & {
12
11
  'error'?: ErrorRouteType;
13
12
  } & ({
14
- 'default': RouteType<any, any>;
13
+ 'default': Endpoint<any, any>;
15
14
  } | {
16
- '404': RouteType<any, any>;
15
+ '404': Endpoint<any, any>;
17
16
  });
18
- export type CustomRoutes<Route extends RouteType<any, any>> = {
17
+ export type CustomRoutes<Route extends Endpoint<any, any>> = {
19
18
  [key in Path]: Route;
20
19
  } & {
21
20
  error: ErrorRouteType;
@@ -1 +1 @@
1
- {"version":3,"file":"Routes.d.ts","sourceRoot":"","sources":["../../src/routing/Routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,MAAM,aAAa,GACnB;IAAE,OAAO,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,GAChC;IAAE,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,CAAA;AAEpC,MAAM,MAAM,MAAM,GAAG;KAAG,GAAG,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;CAAE,GACzD;IAAE,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,GAC5B,CACE;IAAE,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,GAChC;IAAE,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,CACnC,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI;KAAG,GAAG,IAAI,IAAI,GAAG,KAAK;CAAE,GACpF;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,GACzB,CACE;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CACrB,CAAA"}
1
+ {"version":3,"file":"Routes.d.ts","sourceRoot":"","sources":["../../src/routing/Routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,MAAM,aAAa,GACnB;IAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,GAC/B;IAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,CAAA;AAEnC,MAAM,MAAM,MAAM,GAAG;KAAG,GAAG,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;CAAE,GACxD;IAAE,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,GAC5B,CACE;IAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,GAC/B;IAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,CAClC,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,KAAK,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI;KAAG,GAAG,IAAI,IAAI,GAAG,KAAK;CAAE,GACnF;IAAE,KAAK,EAAE,cAAc,CAAA;CAAE,GACzB,CACE;IAAE,SAAS,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CACrB,CAAA"}
@@ -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":"AACA,OAAO,EACH,WAAW,EAAE,cAAc,EAAE,oBAAoB,EACjD,iBAAiB,EAAE,QAAQ,EAC9B,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAGlD,KAAK,EAAE,GAAG;IACN,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,WAAW,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CACxD,CAAA;AAaD,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,IAClD;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC;CAAE,GAAG,EAAE,CAAA;AAExD,wBAAgB,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,GAc7C,oBAAoB,CAAC,CAAC,CAAC,CAC3C;AAGD,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAA;AAE7C,KAAK,6BAA6B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC9D,MAAM,SAAS,MAAM,CAAC,GAClB;IAAE,CAAC,gBAAgB,CAAC,EAAE,mCAAmC,CAAA;CAAE,GAC3D,MAAM,SAAS,MAAM,CAAC,GAClB;IAAE,CAAC,gBAAgB,CAAC,EAAE,mCAAmC,CAAA;CAAE,GAC3D,SAAS,SAAS,MAAM,CAAC,GACrB;IAAE,CAAC,gBAAgB,CAAC,EAAE,sCAAsC,CAAA;CAAE,GAC9D,CAAC,CAAA;AAEnB,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,CAAC;SAG1C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,6BAA6B,CAAC,CAAC,CAAC;aAUrE,CAAC,YAAY,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAMzC,CAAC,SAAS,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,WAAW,CAAC,GAChF,MAAM,CAAC;gBAAE,IAAI,EAAE,CAAC,CAAA;aAAE,GAAG,CAAC,GAAG;gBAAE,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,OAAO,EAAE,CAAC,CAAA;aAAE,CAAC;;sBASvF,CAAC,SAAS,WAAW,WAAW,CAAC,GAAG,MAAM,CAAC;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,GAAG,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC,CAAA;SAAE,CAAC;;SAQ7F,CAAC,YAAY,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAWzC,CAAC,SAAS,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,WAAW,CAAC,GAChF,MAAM,CAAC;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,GAAG;YAAE,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,CAAC,CAAA;SAAE,CAAC;;kBAUnF,CAAC,SAAS,WAAW,WAAW,CAAC,GAAG,MAAM,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,CAAC,CAAA;KAAE,CAAC;EAO7F;AAOD,wBAAgB,KAAK,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EAC/E,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,6BAA6B,CAAC,CAAC,CAAC;SASxC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,6BAA6B,CAAC,EAAE,CAAC;aAWxE,CAAC,YAAY,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAUzC,CAAC,SAAS,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,WAAW,CAAC,GAChF,MAAM,CAAC;gBAAE,IAAI,EAAE,CAAC,CAAA;aAAE,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAC3C;gBAAE,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,OAAO,EAAE,CAAC,CAAA;aAAE,CAC9D;;sBAQC,CAAC,SAAS,WAAW,WAAW,CAAC,GACzC,MAAM,CAAC;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG;YAAE,OAAO,EAAE,CAAC,CAAA;SAAE,CAAC;;SAQtE,CAAC,YAAY,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAWzC,CAAC,SAAS,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,WAAW,WAAW,CAAC,GAChF,MAAM,CAAC;YAAE,IAAI,EAAE,CAAC,CAAA;SAAE,GAAG,CAAC,GAAG;YAAE,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,CAAC,CAAA;SAAE,CAAC;;kBASvF,CAAC,SAAS,WAAW,WAAW,CAAC,GAAG,MAAM,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,CAAA;KAAE,CAAC;EAUjG"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=__fluentRoutes.d.ts.map
@@ -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;AAiBhD,wBAAsB,SAAS,CAAC,SAAS,EAAE,SAAS,iBA+MnD"}
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"}
@@ -44,6 +44,6 @@ export type Hosted<Component extends TungstenBaseComponent<any, any>> = HostedCo
44
44
  * State is not proxied (the construct package is marked `hosted`), so nothing
45
45
  * re-renders on its own: updateProps() and updateState() are the renders.
46
46
  */
47
- export declare function host<Props extends TungstenComponentPropsBase, Component extends TungstenBaseComponent<any, any>>(ComponentType: new (pkg: ConstructPackage<NoInfer<Props>, undefined>) => Component, ...args: HostArgs<Props>): Promise<Hosted<Component>>;
47
+ export declare function host<Props extends TungstenComponentPropsBase, Component extends TungstenBaseComponent<Props, any>>(ComponentType: new (pkg: ConstructPackage<NoInfer<Props>, undefined>) => Component, ...args: HostArgs<Props>): Promise<Hosted<Component>>;
48
48
  export {};
49
49
  //# sourceMappingURL=host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/testing/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/testing/host.ts"],"names":[],"mappings":"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"}