toiljs 0.0.14 → 0.0.16

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 (225) hide show
  1. package/.babelrc +13 -13
  2. package/.gitattributes +2 -2
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +38 -38
  4. package/.github/ISSUE_TEMPLATE/bug_report.yml +90 -90
  5. package/.github/ISSUE_TEMPLATE/config.yml +8 -8
  6. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -20
  7. package/.github/PULL_REQUEST_TEMPLATE.md +43 -43
  8. package/.github/changelog-config.json +45 -45
  9. package/.github/dependabot.yml +27 -27
  10. package/.github/workflows/ci.yml +191 -191
  11. package/.prettierrc.json +11 -11
  12. package/.vscode/settings.json +9 -9
  13. package/CHANGELOG.md +5 -5
  14. package/LICENSE +187 -187
  15. package/README.md +339 -315
  16. package/as-pect.asconfig.json +34 -34
  17. package/as-pect.config.js +65 -65
  18. package/assets/logo.svg +36 -36
  19. package/build/backend/.tsbuildinfo +1 -1
  20. package/build/cli/.tsbuildinfo +1 -1
  21. package/build/cli/index.js +2926 -191
  22. package/build/client/.tsbuildinfo +1 -1
  23. package/build/client/dev/devtools.d.ts +6 -0
  24. package/build/client/dev/devtools.js +442 -0
  25. package/build/client/dev/error-overlay.d.ts +9 -0
  26. package/build/client/dev/error-overlay.js +19 -4
  27. package/build/client/head/metadata.d.ts +3 -1
  28. package/build/client/head/metadata.js +8 -0
  29. package/build/client/index.d.ts +4 -4
  30. package/build/client/index.js +2 -2
  31. package/build/client/navigation/navigation.d.ts +2 -0
  32. package/build/client/navigation/navigation.js +9 -1
  33. package/build/client/navigation/prefetch.d.ts +1 -0
  34. package/build/client/navigation/prefetch.js +35 -0
  35. package/build/client/routing/Router.js +1 -1
  36. package/build/client/routing/hooks.js +6 -2
  37. package/build/client/routing/loader.d.ts +25 -0
  38. package/build/client/routing/loader.js +53 -7
  39. package/build/client/routing/mount.js +4 -3
  40. package/build/compiler/.tsbuildinfo +1 -1
  41. package/build/compiler/config.d.ts +18 -0
  42. package/build/compiler/config.js +8 -0
  43. package/build/compiler/docs.js +16 -16
  44. package/build/compiler/generate.js +3 -0
  45. package/build/compiler/index.d.ts +2 -2
  46. package/build/compiler/index.js +3 -1
  47. package/build/compiler/plugin.js +156 -0
  48. package/build/compiler/prerender.d.ts +1 -0
  49. package/build/compiler/prerender.js +2 -1
  50. package/build/compiler/seo.d.ts +2 -2
  51. package/build/compiler/seo.js +8 -6
  52. package/build/compiler/ssg.d.ts +5 -0
  53. package/build/compiler/ssg.js +121 -0
  54. package/build/io/.tsbuildinfo +1 -1
  55. package/build/logger/.tsbuildinfo +1 -1
  56. package/build/shared/.tsbuildinfo +1 -1
  57. package/eslint.config.js +48 -48
  58. package/examples/basic/client/404.tsx +11 -11
  59. package/examples/basic/client/components/.gitkeep +1 -1
  60. package/examples/basic/client/global-error.tsx +13 -13
  61. package/examples/basic/client/layout.tsx +25 -25
  62. package/examples/basic/client/public/images/.gitkeep +1 -1
  63. package/examples/basic/client/public/images/logo.svg +36 -36
  64. package/examples/basic/client/public/robots.txt +2 -2
  65. package/examples/basic/client/routes/docs/[...slug].tsx +12 -12
  66. package/examples/basic/client/routes/features/error/error.tsx +16 -16
  67. package/examples/basic/client/routes/features/template/b.tsx +14 -14
  68. package/examples/basic/client/routes/files/[[...slug]].tsx +21 -21
  69. package/examples/basic/client/routes/gallery/layout.tsx +13 -13
  70. package/examples/basic/client/routes/io.tsx +24 -24
  71. package/examples/basic/client/routes/loader-demo/loading.tsx +13 -13
  72. package/examples/basic/client/routes/search.tsx +61 -61
  73. package/examples/basic/client/toil.tsx +5 -5
  74. package/package.json +155 -147
  75. package/presets/eslint.js +88 -88
  76. package/presets/no-uint8array-tostring.js +200 -200
  77. package/presets/prettier.json +18 -18
  78. package/presets/tsconfig.json +37 -37
  79. package/src/backend/index.ts +160 -160
  80. package/src/cli/proc.ts +50 -50
  81. package/src/cli/updates.ts +69 -69
  82. package/src/cli/validate.ts +31 -31
  83. package/src/client/channel/channel.ts +146 -146
  84. package/src/client/components/Form.tsx +65 -65
  85. package/src/client/components/Script.tsx +113 -113
  86. package/src/client/components/Slot.tsx +21 -21
  87. package/src/client/dev/devtools.tsx +973 -0
  88. package/src/client/dev/error-overlay.tsx +30 -4
  89. package/src/client/head/head.ts +167 -167
  90. package/src/client/head/metadata.ts +19 -1
  91. package/src/client/index.ts +19 -9
  92. package/src/client/navigation/NavLink.tsx +86 -86
  93. package/src/client/navigation/navigation.ts +25 -5
  94. package/src/client/navigation/prefetch.ts +169 -130
  95. package/src/client/navigation/scroll.ts +53 -53
  96. package/src/client/routing/Router.tsx +8 -2
  97. package/src/client/routing/action.ts +122 -122
  98. package/src/client/routing/error-boundary.tsx +43 -43
  99. package/src/client/routing/hooks.ts +21 -6
  100. package/src/client/routing/loader.ts +325 -225
  101. package/src/client/routing/match.ts +47 -47
  102. package/src/client/routing/mount.tsx +54 -52
  103. package/src/client/routing/params-context.ts +10 -10
  104. package/src/client/routing/slot-context.ts +7 -7
  105. package/src/client/search/search.ts +189 -189
  106. package/src/client/search/use-page-search.ts +73 -73
  107. package/src/client/types.ts +73 -73
  108. package/src/compiler/config.ts +47 -1
  109. package/src/compiler/docs.ts +228 -228
  110. package/src/compiler/generate.ts +394 -391
  111. package/src/compiler/index.ts +64 -54
  112. package/src/compiler/pages.ts +70 -70
  113. package/src/compiler/plugin.ts +170 -2
  114. package/src/compiler/prerender.ts +5 -1
  115. package/src/compiler/seo.ts +23 -7
  116. package/src/compiler/ssg.ts +162 -0
  117. package/src/io/BinaryReader.ts +340 -340
  118. package/src/io/BinaryWriter.ts +385 -385
  119. package/src/io/FastMap.ts +127 -127
  120. package/src/io/index.ts +11 -11
  121. package/src/io/lengths.ts +14 -14
  122. package/src/io/types.ts +18 -18
  123. package/src/logger/index.ts +22 -22
  124. package/src/server/index.ts +10 -10
  125. package/src/server/main.ts +13 -13
  126. package/src/server/tsconfig.json +4 -4
  127. package/src/shared/index.ts +10 -10
  128. package/std/client/index.d.ts +15 -15
  129. package/std/client/package.json +3 -3
  130. package/test/assembly/example.spec.ts +7 -7
  131. package/test/channel.test.ts +21 -21
  132. package/test/dom/Link.test.tsx +47 -47
  133. package/test/dom/NavLink.test.tsx +37 -37
  134. package/test/dom/error-overlay.test.tsx +44 -44
  135. package/test/dom/loader.test.tsx +121 -121
  136. package/test/dom/navigation.test.ts +59 -59
  137. package/test/dom/revalidate.test.tsx +38 -38
  138. package/test/dom/route-head.test.tsx +78 -78
  139. package/test/dom/router-loading.test.tsx +44 -44
  140. package/test/dom/scroll.test.ts +56 -56
  141. package/test/dom/use-metadata.test.tsx +58 -0
  142. package/test/io.test.ts +93 -93
  143. package/test/navlink.test.ts +28 -28
  144. package/test/placeholder.test.ts +9 -9
  145. package/test/routes.test.ts +76 -76
  146. package/test/seo.test.ts +175 -164
  147. package/test/slot-layouts.test.ts +69 -69
  148. package/test/ssg.test.ts +36 -0
  149. package/test/update.test.ts +44 -44
  150. package/test/validate.test.ts +42 -42
  151. package/toil-routes.d.ts +7 -0
  152. package/toilconfig.json +30 -30
  153. package/tsconfig.backend.json +13 -13
  154. package/tsconfig.base.json +35 -35
  155. package/tsconfig.cli.json +13 -13
  156. package/tsconfig.client.json +14 -14
  157. package/tsconfig.compiler.json +13 -13
  158. package/tsconfig.io.json +12 -12
  159. package/tsconfig.json +22 -22
  160. package/tsconfig.logger.json +12 -12
  161. package/tsconfig.server.json +10 -10
  162. package/tsconfig.shared.json +12 -12
  163. package/vitest.config.ts +26 -26
  164. package/.idea/codeStyles/Project.xml +0 -54
  165. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  166. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  167. package/.idea/modules.xml +0 -8
  168. package/.idea/prettier.xml +0 -7
  169. package/.idea/toiljs.iml +0 -8
  170. package/.idea/vcs.xml +0 -6
  171. package/.toil/entry.tsx +0 -9
  172. package/.toil/index.html +0 -12
  173. package/.toil/routes.ts +0 -9
  174. package/build/cli/configure.d.ts +0 -16
  175. package/build/cli/configure.js +0 -272
  176. package/build/cli/create.d.ts +0 -16
  177. package/build/cli/create.js +0 -420
  178. package/build/cli/diagnostics.d.ts +0 -55
  179. package/build/cli/diagnostics.js +0 -333
  180. package/build/cli/doctor.d.ts +0 -6
  181. package/build/cli/doctor.js +0 -249
  182. package/build/cli/features.d.ts +0 -25
  183. package/build/cli/features.js +0 -107
  184. package/build/cli/index.d.ts +0 -2
  185. package/build/cli/proc.d.ts +0 -6
  186. package/build/cli/proc.js +0 -31
  187. package/build/cli/ui.d.ts +0 -9
  188. package/build/cli/ui.js +0 -75
  189. package/build/cli/update.d.ts +0 -7
  190. package/build/cli/update.js +0 -117
  191. package/build/cli/updates.d.ts +0 -10
  192. package/build/cli/updates.js +0 -45
  193. package/build/cli/validate.d.ts +0 -4
  194. package/build/cli/validate.js +0 -19
  195. package/build/client/Link.d.ts +0 -8
  196. package/build/client/Link.js +0 -44
  197. package/build/client/NavLink.d.ts +0 -14
  198. package/build/client/NavLink.js +0 -37
  199. package/build/client/Router.d.ts +0 -7
  200. package/build/client/Router.js +0 -55
  201. package/build/client/channel.d.ts +0 -23
  202. package/build/client/channel.js +0 -94
  203. package/build/client/error-boundary.d.ts +0 -16
  204. package/build/client/error-boundary.js +0 -19
  205. package/build/client/head.d.ts +0 -26
  206. package/build/client/head.js +0 -87
  207. package/build/client/hooks.d.ts +0 -17
  208. package/build/client/hooks.js +0 -48
  209. package/build/client/lazy.d.ts +0 -16
  210. package/build/client/lazy.js +0 -53
  211. package/build/client/match.d.ts +0 -2
  212. package/build/client/match.js +0 -32
  213. package/build/client/mount.d.ts +0 -2
  214. package/build/client/mount.js +0 -13
  215. package/build/client/navigation.d.ts +0 -13
  216. package/build/client/navigation.js +0 -97
  217. package/build/client/params-context.d.ts +0 -2
  218. package/build/client/params-context.js +0 -2
  219. package/build/client/prefetch.d.ts +0 -11
  220. package/build/client/prefetch.js +0 -100
  221. package/build/client/runtime.d.ts +0 -31
  222. package/build/client/runtime.js +0 -112
  223. package/build/client/scroll.d.ts +0 -8
  224. package/build/client/scroll.js +0 -36
  225. package/toil-env.d.ts +0 -16
@@ -1,31 +0,0 @@
1
- import { type ComponentType, type ReactNode } from 'react';
2
- import { type RouteParams } from './match.js';
3
- export interface RouteDef {
4
- readonly pattern: string;
5
- readonly load: () => Promise<{
6
- default: ComponentType;
7
- }>;
8
- }
9
- export type LayoutLoader = (() => Promise<{
10
- default: ComponentType<{
11
- children?: ReactNode;
12
- }>;
13
- }>) | null;
14
- export type NotFoundLoader = (() => Promise<{
15
- default: ComponentType;
16
- }>) | null;
17
- export declare function navigate(href: string): void;
18
- export declare function useParams(): RouteParams;
19
- export declare function useNavigate(): (href: string) => void;
20
- export declare function useLocation(): string;
21
- export declare function Link(props: {
22
- href: string;
23
- className?: string;
24
- children?: ReactNode;
25
- }): ReactNode;
26
- export declare function Router(props: {
27
- routes: RouteDef[];
28
- layout?: LayoutLoader;
29
- notFound?: NotFoundLoader;
30
- }): ReactNode;
31
- export declare function mount(routes: RouteDef[], layout?: LayoutLoader, notFound?: NotFoundLoader): void;
@@ -1,112 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, lazy, Suspense, useContext, useEffect, useState, } from 'react';
3
- import { createRoot } from 'react-dom/client';
4
- import { matchRoute } from './match.js';
5
- const listeners = new Set();
6
- export function navigate(href) {
7
- window.history.pushState({}, '', href);
8
- for (const listener of listeners)
9
- listener();
10
- }
11
- const ParamsContext = createContext({});
12
- export function useParams() {
13
- return useContext(ParamsContext);
14
- }
15
- export function useNavigate() {
16
- return navigate;
17
- }
18
- export function useLocation() {
19
- const [pathname, setPathname] = useState(() => window.location.pathname);
20
- useEffect(() => {
21
- const update = () => {
22
- setPathname(window.location.pathname);
23
- };
24
- listeners.add(update);
25
- window.addEventListener('popstate', update);
26
- return () => {
27
- listeners.delete(update);
28
- window.removeEventListener('popstate', update);
29
- };
30
- }, []);
31
- return pathname;
32
- }
33
- export function Link(props) {
34
- const { href, className, children } = props;
35
- const onClick = (e) => {
36
- if (e.defaultPrevented ||
37
- e.button !== 0 ||
38
- e.metaKey ||
39
- e.ctrlKey ||
40
- e.shiftKey ||
41
- e.altKey)
42
- return;
43
- e.preventDefault();
44
- navigate(href);
45
- };
46
- return (_jsx("a", { href: href, className: className, onClick: onClick, children: children }));
47
- }
48
- const pageCache = new Map();
49
- function pageComponent(route) {
50
- let component = pageCache.get(route);
51
- if (!component) {
52
- component = lazy(route.load);
53
- pageCache.set(route, component);
54
- }
55
- return component;
56
- }
57
- let layoutComponent = null;
58
- let layoutLoader = null;
59
- function resolveLayout(loader) {
60
- if (layoutLoader !== loader || !layoutComponent) {
61
- layoutComponent = lazy(loader);
62
- layoutLoader = loader;
63
- }
64
- return layoutComponent;
65
- }
66
- let notFoundComponent = null;
67
- let notFoundLoader = null;
68
- function resolveNotFound(loader) {
69
- if (notFoundLoader !== loader || !notFoundComponent) {
70
- notFoundComponent = lazy(loader);
71
- notFoundLoader = loader;
72
- }
73
- return notFoundComponent;
74
- }
75
- export function Router(props) {
76
- const { routes, layout = null, notFound = null } = props;
77
- const pathname = useLocation();
78
- let matched;
79
- let params = {};
80
- for (const route of routes) {
81
- const result = matchRoute(route.pattern, pathname);
82
- if (result) {
83
- matched = route;
84
- params = result;
85
- break;
86
- }
87
- }
88
- let page;
89
- if (matched) {
90
- const Page = pageComponent(matched);
91
- page = (_jsx(Suspense, { fallback: null, children: _jsx(Page, {}) }));
92
- }
93
- else if (notFound) {
94
- const NotFound = resolveNotFound(notFound);
95
- page = (_jsx(Suspense, { fallback: null, children: _jsx(NotFound, {}) }));
96
- }
97
- else {
98
- page = _jsx("div", { style: { padding: 24, fontFamily: 'system-ui' }, children: "404 \u2014 Not found" });
99
- }
100
- const withParams = _jsx(ParamsContext.Provider, { value: params, children: page });
101
- if (layout) {
102
- const Layout = resolveLayout(layout);
103
- return (_jsx(Suspense, { fallback: null, children: _jsx(Layout, { children: withParams }) }));
104
- }
105
- return withParams;
106
- }
107
- export function mount(routes, layout = null, notFound = null) {
108
- const el = document.getElementById('root');
109
- if (!el)
110
- throw new Error('toil: #root element not found');
111
- createRoot(el).render(_jsx(Router, { routes: routes, layout: layout, notFound: notFound }));
112
- }
@@ -1,8 +0,0 @@
1
- export declare function enableManualScrollRestoration(): void;
2
- export declare function rememberScroll(key: string): void;
3
- export declare function planScroll(opts: {
4
- restoreKey?: string;
5
- hash: string;
6
- toTop: boolean;
7
- }): void;
8
- export declare function applyScroll(): void;
@@ -1,36 +0,0 @@
1
- const positions = new Map();
2
- let plan = null;
3
- export function enableManualScrollRestoration() {
4
- if (typeof window !== 'undefined' && 'scrollRestoration' in window.history) {
5
- window.history.scrollRestoration = 'manual';
6
- }
7
- }
8
- export function rememberScroll(key) {
9
- positions.set(key, window.scrollY);
10
- }
11
- export function planScroll(opts) {
12
- plan = {
13
- restore: opts.restoreKey !== undefined ? (positions.get(opts.restoreKey) ?? 0) : null,
14
- hash: opts.hash,
15
- toTop: opts.toTop,
16
- };
17
- }
18
- export function applyScroll() {
19
- const current = plan;
20
- plan = null;
21
- if (!current)
22
- return;
23
- if (current.hash) {
24
- const el = document.getElementById(decodeURIComponent(current.hash.slice(1)));
25
- if (el) {
26
- el.scrollIntoView();
27
- return;
28
- }
29
- }
30
- if (current.restore !== null) {
31
- window.scrollTo(0, current.restore);
32
- return;
33
- }
34
- if (current.toTop)
35
- window.scrollTo(0, 0);
36
- }
package/toil-env.d.ts DELETED
@@ -1,16 +0,0 @@
1
- // AUTO-GENERATED by toil — do not edit.
2
- import type {
3
- BinaryWriter as ToilBinaryWriter,
4
- BinaryReader as ToilBinaryReader,
5
- FastMap as ToilFastMap,
6
- FastSet as ToilFastSet,
7
- } from 'toiljs/io';
8
-
9
- declare global {
10
- const BinaryWriter: typeof ToilBinaryWriter;
11
- const BinaryReader: typeof ToilBinaryReader;
12
- const FastMap: typeof ToilFastMap;
13
- const FastSet: typeof ToilFastSet;
14
- }
15
-
16
- export {};