@bleedingdev/modern-js-plugin-tanstack 3.2.0-ultramodern.0
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/LICENSE +21 -0
- package/dist/cjs/cli/index.js +268 -0
- package/dist/cjs/cli/tanstackTypes.js +388 -0
- package/dist/cjs/cli.js +65 -0
- package/dist/cjs/runtime/DefaultNotFound.js +47 -0
- package/dist/cjs/runtime/basepathRewrite.js +62 -0
- package/dist/cjs/runtime/dataMutation.js +345 -0
- package/dist/cjs/runtime/hooks.js +57 -0
- package/dist/cjs/runtime/index.js +114 -0
- package/dist/cjs/runtime/lifecycle.js +125 -0
- package/dist/cjs/runtime/plugin.js +250 -0
- package/dist/cjs/runtime/plugin.node.js +304 -0
- package/dist/cjs/runtime/prefetchLink.js +55 -0
- package/dist/cjs/runtime/routeTree.js +492 -0
- package/dist/cjs/runtime/rsc/ClientSlot.js +53 -0
- package/dist/cjs/runtime/rsc/CompositeComponent.js +75 -0
- package/dist/cjs/runtime/rsc/ReplayableStream.js +141 -0
- package/dist/cjs/runtime/rsc/RscNodeRenderer.js +65 -0
- package/dist/cjs/runtime/rsc/SlotContext.js +54 -0
- package/dist/cjs/runtime/rsc/client.js +93 -0
- package/dist/cjs/runtime/rsc/createRscProxy.js +141 -0
- package/dist/cjs/runtime/rsc/index.js +42 -0
- package/dist/cjs/runtime/rsc/payloadRouter.js +211 -0
- package/dist/cjs/runtime/rsc/server.js +246 -0
- package/dist/cjs/runtime/rsc/slotUsageSanitizer.js +65 -0
- package/dist/cjs/runtime/rsc/symbols.js +72 -0
- package/dist/cjs/runtime/types.js +18 -0
- package/dist/cjs/runtime/utils.js +142 -0
- package/dist/cjs/runtime.js +58 -0
- package/dist/esm/cli/index.mjs +201 -0
- package/dist/esm/cli/tanstackTypes.mjs +341 -0
- package/dist/esm/cli.mjs +2 -0
- package/dist/esm/rslib-runtime.mjs +18 -0
- package/dist/esm/runtime/DefaultNotFound.mjs +13 -0
- package/dist/esm/runtime/basepathRewrite.mjs +28 -0
- package/dist/esm/runtime/dataMutation.mjs +305 -0
- package/dist/esm/runtime/hooks.mjs +8 -0
- package/dist/esm/runtime/index.mjs +6 -0
- package/dist/esm/runtime/lifecycle.mjs +82 -0
- package/dist/esm/runtime/plugin.mjs +214 -0
- package/dist/esm/runtime/plugin.node.mjs +268 -0
- package/dist/esm/runtime/prefetchLink.mjs +18 -0
- package/dist/esm/runtime/routeTree.mjs +452 -0
- package/dist/esm/runtime/rsc/ClientSlot.mjs +19 -0
- package/dist/esm/runtime/rsc/CompositeComponent.mjs +41 -0
- package/dist/esm/runtime/rsc/ReplayableStream.mjs +104 -0
- package/dist/esm/runtime/rsc/RscNodeRenderer.mjs +31 -0
- package/dist/esm/runtime/rsc/SlotContext.mjs +17 -0
- package/dist/esm/runtime/rsc/client.mjs +53 -0
- package/dist/esm/runtime/rsc/createRscProxy.mjs +107 -0
- package/dist/esm/runtime/rsc/index.mjs +1 -0
- package/dist/esm/runtime/rsc/payloadRouter.mjs +162 -0
- package/dist/esm/runtime/rsc/server.mjs +200 -0
- package/dist/esm/runtime/rsc/slotUsageSanitizer.mjs +31 -0
- package/dist/esm/runtime/rsc/symbols.mjs +17 -0
- package/dist/esm/runtime/types.mjs +0 -0
- package/dist/esm/runtime/utils.mjs +89 -0
- package/dist/esm/runtime.mjs +1 -0
- package/dist/esm-node/cli/index.mjs +205 -0
- package/dist/esm-node/cli/tanstackTypes.mjs +342 -0
- package/dist/esm-node/cli.mjs +3 -0
- package/dist/esm-node/rslib-runtime.mjs +19 -0
- package/dist/esm-node/runtime/DefaultNotFound.mjs +14 -0
- package/dist/esm-node/runtime/basepathRewrite.mjs +29 -0
- package/dist/esm-node/runtime/dataMutation.mjs +306 -0
- package/dist/esm-node/runtime/hooks.mjs +9 -0
- package/dist/esm-node/runtime/index.mjs +7 -0
- package/dist/esm-node/runtime/lifecycle.mjs +83 -0
- package/dist/esm-node/runtime/plugin.mjs +215 -0
- package/dist/esm-node/runtime/plugin.node.mjs +269 -0
- package/dist/esm-node/runtime/prefetchLink.mjs +19 -0
- package/dist/esm-node/runtime/routeTree.mjs +453 -0
- package/dist/esm-node/runtime/rsc/ClientSlot.mjs +20 -0
- package/dist/esm-node/runtime/rsc/CompositeComponent.mjs +42 -0
- package/dist/esm-node/runtime/rsc/ReplayableStream.mjs +105 -0
- package/dist/esm-node/runtime/rsc/RscNodeRenderer.mjs +32 -0
- package/dist/esm-node/runtime/rsc/SlotContext.mjs +18 -0
- package/dist/esm-node/runtime/rsc/client.mjs +54 -0
- package/dist/esm-node/runtime/rsc/createRscProxy.mjs +108 -0
- package/dist/esm-node/runtime/rsc/index.mjs +2 -0
- package/dist/esm-node/runtime/rsc/payloadRouter.mjs +163 -0
- package/dist/esm-node/runtime/rsc/server.mjs +201 -0
- package/dist/esm-node/runtime/rsc/slotUsageSanitizer.mjs +32 -0
- package/dist/esm-node/runtime/rsc/symbols.mjs +18 -0
- package/dist/esm-node/runtime/types.mjs +1 -0
- package/dist/esm-node/runtime/utils.mjs +90 -0
- package/dist/esm-node/runtime.mjs +2 -0
- package/dist/types/cli/index.d.ts +20 -0
- package/dist/types/cli/tanstackTypes.d.ts +11 -0
- package/dist/types/cli.d.ts +2 -0
- package/dist/types/runtime/DefaultNotFound.d.ts +2 -0
- package/dist/types/runtime/basepathRewrite.d.ts +8 -0
- package/dist/types/runtime/dataMutation.d.ts +29 -0
- package/dist/types/runtime/hooks.d.ts +18 -0
- package/dist/types/runtime/index.d.ts +9 -0
- package/dist/types/runtime/lifecycle.d.ts +22 -0
- package/dist/types/runtime/plugin.d.ts +17 -0
- package/dist/types/runtime/plugin.node.d.ts +17 -0
- package/dist/types/runtime/prefetchLink.d.ts +11 -0
- package/dist/types/runtime/routeTree.d.ts +11 -0
- package/dist/types/runtime/rsc/ClientSlot.d.ts +5 -0
- package/dist/types/runtime/rsc/CompositeComponent.d.ts +3 -0
- package/dist/types/runtime/rsc/ReplayableStream.d.ts +24 -0
- package/dist/types/runtime/rsc/RscNodeRenderer.d.ts +5 -0
- package/dist/types/runtime/rsc/SlotContext.d.ts +11 -0
- package/dist/types/runtime/rsc/client.d.ts +11 -0
- package/dist/types/runtime/rsc/createRscProxy.d.ts +7 -0
- package/dist/types/runtime/rsc/index.d.ts +2 -0
- package/dist/types/runtime/rsc/payloadRouter.d.ts +24 -0
- package/dist/types/runtime/rsc/server.d.ts +14 -0
- package/dist/types/runtime/rsc/slotUsageSanitizer.d.ts +2 -0
- package/dist/types/runtime/rsc/symbols.d.ts +46 -0
- package/dist/types/runtime/types.d.ts +68 -0
- package/dist/types/runtime/utils.d.ts +36 -0
- package/dist/types/runtime.d.ts +1 -0
- package/dist/types-direct/cli/index.d.ts +20 -0
- package/dist/types-direct/cli/tanstackTypes.d.ts +11 -0
- package/dist/types-direct/cli.d.ts +2 -0
- package/dist/types-direct/runtime/DefaultNotFound.d.ts +2 -0
- package/dist/types-direct/runtime/basepathRewrite.d.ts +8 -0
- package/dist/types-direct/runtime/dataMutation.d.ts +29 -0
- package/dist/types-direct/runtime/hooks.d.ts +18 -0
- package/dist/types-direct/runtime/index.d.ts +9 -0
- package/dist/types-direct/runtime/lifecycle.d.ts +22 -0
- package/dist/types-direct/runtime/plugin.d.ts +17 -0
- package/dist/types-direct/runtime/plugin.node.d.ts +17 -0
- package/dist/types-direct/runtime/prefetchLink.d.ts +11 -0
- package/dist/types-direct/runtime/routeTree.d.ts +11 -0
- package/dist/types-direct/runtime/rsc/ClientSlot.d.ts +5 -0
- package/dist/types-direct/runtime/rsc/CompositeComponent.d.ts +3 -0
- package/dist/types-direct/runtime/rsc/ReplayableStream.d.ts +24 -0
- package/dist/types-direct/runtime/rsc/RscNodeRenderer.d.ts +5 -0
- package/dist/types-direct/runtime/rsc/SlotContext.d.ts +11 -0
- package/dist/types-direct/runtime/rsc/client.d.ts +11 -0
- package/dist/types-direct/runtime/rsc/createRscProxy.d.ts +7 -0
- package/dist/types-direct/runtime/rsc/index.d.ts +2 -0
- package/dist/types-direct/runtime/rsc/payloadRouter.d.ts +24 -0
- package/dist/types-direct/runtime/rsc/server.d.ts +14 -0
- package/dist/types-direct/runtime/rsc/slotUsageSanitizer.d.ts +2 -0
- package/dist/types-direct/runtime/rsc/symbols.d.ts +46 -0
- package/dist/types-direct/runtime/types.d.ts +68 -0
- package/dist/types-direct/runtime/utils.d.ts +36 -0
- package/dist/types-direct/runtime.d.ts +1 -0
- package/package.json +126 -0
- package/rslib.config.mts +4 -0
- package/rstest.config.mts +43 -0
- package/src/cli/index.ts +388 -0
- package/src/cli/tanstackTypes.ts +503 -0
- package/src/cli.ts +2 -0
- package/src/runtime/DefaultNotFound.tsx +15 -0
- package/src/runtime/basepathRewrite.ts +59 -0
- package/src/runtime/dataMutation.tsx +517 -0
- package/src/runtime/hooks.ts +34 -0
- package/src/runtime/index.tsx +30 -0
- package/src/runtime/lifecycle.ts +150 -0
- package/src/runtime/plugin.node.tsx +534 -0
- package/src/runtime/plugin.tsx +395 -0
- package/src/runtime/prefetchLink.tsx +87 -0
- package/src/runtime/routeTree.ts +942 -0
- package/src/runtime/rsc/ClientSlot.tsx +25 -0
- package/src/runtime/rsc/CompositeComponent.tsx +65 -0
- package/src/runtime/rsc/ReplayableStream.ts +155 -0
- package/src/runtime/rsc/RscNodeRenderer.tsx +45 -0
- package/src/runtime/rsc/SlotContext.tsx +31 -0
- package/src/runtime/rsc/client.tsx +90 -0
- package/src/runtime/rsc/createRscProxy.tsx +189 -0
- package/src/runtime/rsc/index.ts +10 -0
- package/src/runtime/rsc/payloadRouter.ts +318 -0
- package/src/runtime/rsc/server.tsx +303 -0
- package/src/runtime/rsc/slotUsageSanitizer.ts +76 -0
- package/src/runtime/rsc/symbols.ts +106 -0
- package/src/runtime/ssr-shim.d.ts +12 -0
- package/src/runtime/types.ts +83 -0
- package/src/runtime/utils.tsx +161 -0
- package/src/runtime.ts +1 -0
- package/tests/router/cli.test.ts +386 -0
- package/tests/router/dataMutation.test.tsx +396 -0
- package/tests/router/prefetchLink.test.tsx +43 -0
- package/tests/router/routeTree.test.ts +502 -0
- package/tests/router/rsc.test.tsx +256 -0
- package/tests/router/tanstackTypes.test.ts +62 -0
- package/tsconfig.json +12 -0
- package/tsconfig.tsgo.json +6 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
14
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: definition[key]
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
})();
|
|
20
|
+
(()=>{
|
|
21
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
22
|
+
})();
|
|
23
|
+
(()=>{
|
|
24
|
+
__webpack_require__.r = (exports1)=>{
|
|
25
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
+
value: 'Module'
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
+
value: true
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
})();
|
|
33
|
+
var __webpack_exports__ = {};
|
|
34
|
+
__webpack_require__.r(__webpack_exports__);
|
|
35
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
+
createRouteObjectsFromConfig: ()=>createRouteObjectsFromConfig,
|
|
37
|
+
getRouteObjects: ()=>getRouteObjects,
|
|
38
|
+
standardSlash: ()=>standardSlash,
|
|
39
|
+
urlJoin: ()=>urlJoin
|
|
40
|
+
});
|
|
41
|
+
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
42
|
+
const external_react_namespaceObject = require("react");
|
|
43
|
+
var external_react_default = /*#__PURE__*/ __webpack_require__.n(external_react_namespaceObject);
|
|
44
|
+
const external_DefaultNotFound_js_namespaceObject = require("./DefaultNotFound.js");
|
|
45
|
+
function getRouteObjects(routes, { globalApp, ssrMode, props }) {
|
|
46
|
+
const createLayoutElement = (Component)=>{
|
|
47
|
+
const GlobalLayout = globalApp;
|
|
48
|
+
if (!GlobalLayout) return Component;
|
|
49
|
+
const LayoutWrapper = (props)=>{
|
|
50
|
+
const LayoutComponent = GlobalLayout;
|
|
51
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(LayoutComponent, {
|
|
52
|
+
Component: Component,
|
|
53
|
+
...props
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
return LayoutWrapper;
|
|
57
|
+
};
|
|
58
|
+
const routeObjects = [];
|
|
59
|
+
for (const route of routes)if ('nested' === route.type) {
|
|
60
|
+
const nestedRouteObject = {
|
|
61
|
+
path: route.path,
|
|
62
|
+
id: route.id,
|
|
63
|
+
loader: route.loader,
|
|
64
|
+
action: route.action,
|
|
65
|
+
hasErrorBoundary: route.hasErrorBoundary,
|
|
66
|
+
shouldRevalidate: route.shouldRevalidate,
|
|
67
|
+
handle: {
|
|
68
|
+
...route.handle,
|
|
69
|
+
...'object' == typeof route.config ? route.config?.handle : {}
|
|
70
|
+
},
|
|
71
|
+
index: route.index,
|
|
72
|
+
hasLoader: Boolean(route.loader),
|
|
73
|
+
hasClientLoader: Boolean(route.clientData),
|
|
74
|
+
hasAction: Boolean(route.action),
|
|
75
|
+
...route.isClientComponent ? {
|
|
76
|
+
isClientComponent: true
|
|
77
|
+
} : {},
|
|
78
|
+
...route.inValidSSRRoute ? {
|
|
79
|
+
inValidSSRRoute: true
|
|
80
|
+
} : {},
|
|
81
|
+
lazyImport: route.lazyImport,
|
|
82
|
+
Component: route.component ? route.component : void 0,
|
|
83
|
+
errorElement: route.error ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(route.error, {}) : void 0,
|
|
84
|
+
children: route.children ? route.children.map((child)=>getRouteObjects([
|
|
85
|
+
child
|
|
86
|
+
], {
|
|
87
|
+
globalApp,
|
|
88
|
+
ssrMode,
|
|
89
|
+
props
|
|
90
|
+
})[0]) : void 0
|
|
91
|
+
};
|
|
92
|
+
routeObjects.push(nestedRouteObject);
|
|
93
|
+
} else if ('function' == typeof route.component || 'object' == typeof route.component) {
|
|
94
|
+
const LayoutComponent = createLayoutElement(route.component);
|
|
95
|
+
const routeObject = {
|
|
96
|
+
path: route.path,
|
|
97
|
+
element: /*#__PURE__*/ external_react_default().createElement(LayoutComponent)
|
|
98
|
+
};
|
|
99
|
+
routeObjects.push(routeObject);
|
|
100
|
+
}
|
|
101
|
+
routeObjects.push({
|
|
102
|
+
path: '*',
|
|
103
|
+
element: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DefaultNotFound_js_namespaceObject.DefaultNotFound, {})
|
|
104
|
+
});
|
|
105
|
+
return routeObjects;
|
|
106
|
+
}
|
|
107
|
+
function createRouteObjectsFromConfig({ routesConfig, props, ssrMode }) {
|
|
108
|
+
if (!routesConfig) return null;
|
|
109
|
+
const { routes, globalApp } = routesConfig;
|
|
110
|
+
if (!routes) return null;
|
|
111
|
+
return getRouteObjects(routes, {
|
|
112
|
+
globalApp,
|
|
113
|
+
ssrMode,
|
|
114
|
+
props
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
const urlJoin = (...parts)=>{
|
|
118
|
+
const separator = '/';
|
|
119
|
+
const replace = new RegExp(`${separator}{1,}`, 'g');
|
|
120
|
+
return standardSlash(parts.join(separator).replace(replace, separator));
|
|
121
|
+
};
|
|
122
|
+
function standardSlash(str) {
|
|
123
|
+
let addr = str;
|
|
124
|
+
if (!addr || 'string' != typeof addr) return addr;
|
|
125
|
+
if (addr.startsWith('.')) addr = addr.slice(1);
|
|
126
|
+
if (!addr.startsWith('/')) addr = `/${addr}`;
|
|
127
|
+
if (addr.endsWith('/') && '/' !== addr) addr = addr.slice(0, addr.length - 1);
|
|
128
|
+
return addr;
|
|
129
|
+
}
|
|
130
|
+
exports.createRouteObjectsFromConfig = __webpack_exports__.createRouteObjectsFromConfig;
|
|
131
|
+
exports.getRouteObjects = __webpack_exports__.getRouteObjects;
|
|
132
|
+
exports.standardSlash = __webpack_exports__.standardSlash;
|
|
133
|
+
exports.urlJoin = __webpack_exports__.urlJoin;
|
|
134
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
135
|
+
"createRouteObjectsFromConfig",
|
|
136
|
+
"getRouteObjects",
|
|
137
|
+
"standardSlash",
|
|
138
|
+
"urlJoin"
|
|
139
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
140
|
+
Object.defineProperty(exports, '__esModule', {
|
|
141
|
+
value: true
|
|
142
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_modules__ = {
|
|
3
|
+
"./runtime/index" (module) {
|
|
4
|
+
module.exports = require("./runtime/index.js");
|
|
5
|
+
}
|
|
6
|
+
};
|
|
7
|
+
var __webpack_module_cache__ = {};
|
|
8
|
+
function __webpack_require__(moduleId) {
|
|
9
|
+
var cachedModule = __webpack_module_cache__[moduleId];
|
|
10
|
+
if (void 0 !== cachedModule) return cachedModule.exports;
|
|
11
|
+
var module = __webpack_module_cache__[moduleId] = {
|
|
12
|
+
exports: {}
|
|
13
|
+
};
|
|
14
|
+
__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
15
|
+
return module.exports;
|
|
16
|
+
}
|
|
17
|
+
(()=>{
|
|
18
|
+
__webpack_require__.n = (module)=>{
|
|
19
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
20
|
+
__webpack_require__.d(getter, {
|
|
21
|
+
a: getter
|
|
22
|
+
});
|
|
23
|
+
return getter;
|
|
24
|
+
};
|
|
25
|
+
})();
|
|
26
|
+
(()=>{
|
|
27
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
28
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: definition[key]
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
})();
|
|
34
|
+
(()=>{
|
|
35
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
36
|
+
})();
|
|
37
|
+
(()=>{
|
|
38
|
+
__webpack_require__.r = (exports1)=>{
|
|
39
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
40
|
+
value: 'Module'
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
43
|
+
value: true
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
var __webpack_exports__ = {};
|
|
48
|
+
(()=>{
|
|
49
|
+
__webpack_require__.r(__webpack_exports__);
|
|
50
|
+
var _runtime_index__rspack_import_0 = __webpack_require__("./runtime/index");
|
|
51
|
+
var __rspack_reexport = {};
|
|
52
|
+
for(const __rspack_import_key in _runtime_index__rspack_import_0)if ("default" !== __rspack_import_key) __rspack_reexport[__rspack_import_key] = ()=>_runtime_index__rspack_import_0[__rspack_import_key];
|
|
53
|
+
__webpack_require__.d(__webpack_exports__, __rspack_reexport);
|
|
54
|
+
})();
|
|
55
|
+
for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
56
|
+
Object.defineProperty(exports, '__esModule', {
|
|
57
|
+
value: true
|
|
58
|
+
});
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import node_path from "node:path";
|
|
2
|
+
import { NESTED_ROUTE_SPEC_FILE, filterRoutesForServer, fs } from "@modern-js/utils";
|
|
3
|
+
import { generateTanstackRouterTypesSourceForEntry, isTanstackRouterFrameworkEnabled } from "./tanstackTypes.mjs";
|
|
4
|
+
import { __webpack_require__ } from "../rslib-runtime.mjs";
|
|
5
|
+
import * as __rspack_external__modern_js_runtime_cli_401ee077 from "@modern-js/runtime/cli";
|
|
6
|
+
__webpack_require__.add({
|
|
7
|
+
"@modern-js/runtime/cli" (module) {
|
|
8
|
+
module.exports = __rspack_external__modern_js_runtime_cli_401ee077;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const DEFAULT_ROUTES_DIR = 'routes';
|
|
12
|
+
const DEFAULT_GENERATED_DIR_NAME = 'modern-tanstack';
|
|
13
|
+
const ENTRYPOINTS_KEY = '@modern-js/plugin-tanstack';
|
|
14
|
+
let runtimeRouterCli;
|
|
15
|
+
function getRuntimeRouterCli() {
|
|
16
|
+
if (runtimeRouterCli) return runtimeRouterCli;
|
|
17
|
+
const cli = __webpack_require__("@modern-js/runtime/cli");
|
|
18
|
+
if (cli.handleGeneratorEntryCode && cli.getEntrypointRoutesDir) {
|
|
19
|
+
runtimeRouterCli = cli;
|
|
20
|
+
return runtimeRouterCli;
|
|
21
|
+
}
|
|
22
|
+
throw new Error('@modern-js/plugin-tanstack requires @modern-js/runtime/cli router helper exports.');
|
|
23
|
+
}
|
|
24
|
+
async function writeFileIfChanged(filePath, content) {
|
|
25
|
+
try {
|
|
26
|
+
const previous = await fs.pathExists(filePath) ? await fs.readFile(filePath, 'utf-8') : null;
|
|
27
|
+
if (previous === content) return;
|
|
28
|
+
} catch {}
|
|
29
|
+
await fs.outputFile(filePath, content, 'utf-8');
|
|
30
|
+
}
|
|
31
|
+
function createRegisterDtsContent(opts) {
|
|
32
|
+
const importStatements = opts.entries.map((entryName, index)=>`import type { router as router${index} } from './${entryName}/router.gen';`).join('\n');
|
|
33
|
+
const routerUnionType = opts.entries.map((_, index)=>`typeof router${index}`).join(' | ');
|
|
34
|
+
return `// This file is auto-generated by Modern.js. Do not edit manually.
|
|
35
|
+
|
|
36
|
+
${importStatements}
|
|
37
|
+
|
|
38
|
+
declare module '${opts.runtimeModule}' {
|
|
39
|
+
interface Register {
|
|
40
|
+
router: ${routerUnionType};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
async function writeTanstackRegisterFile(opts) {
|
|
46
|
+
const { entries, generatedDirName = DEFAULT_GENERATED_DIR_NAME, runtimeModule = '@modern-js/plugin-tanstack/runtime', srcDirectory } = opts;
|
|
47
|
+
if (0 === entries.length) return;
|
|
48
|
+
const registerDtsPath = node_path.join(srcDirectory, generatedDirName, 'register.gen.d.ts');
|
|
49
|
+
await writeFileIfChanged(registerDtsPath, createRegisterDtsContent({
|
|
50
|
+
entries,
|
|
51
|
+
runtimeModule
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
async function writeTanstackRouterTypesForEntries(opts) {
|
|
55
|
+
const { appContext, generatedDirName = DEFAULT_GENERATED_DIR_NAME, routesByEntry } = opts;
|
|
56
|
+
const entryNames = Object.keys(routesByEntry);
|
|
57
|
+
await Promise.all(entryNames.map(async (entryName)=>{
|
|
58
|
+
const { routerGenTs } = await generateTanstackRouterTypesSourceForEntry({
|
|
59
|
+
appContext,
|
|
60
|
+
entryName,
|
|
61
|
+
generatedDirName,
|
|
62
|
+
routes: routesByEntry[entryName]
|
|
63
|
+
});
|
|
64
|
+
await writeFileIfChanged(node_path.join(appContext.srcDirectory, generatedDirName, entryName, 'router.gen.ts'), routerGenTs);
|
|
65
|
+
}));
|
|
66
|
+
const mainEntryName = appContext.entrypoints?.find((entrypoint)=>entrypoint.isMainEntry)?.entryName;
|
|
67
|
+
const registerEntries = entryNames.sort((a, b)=>{
|
|
68
|
+
if (mainEntryName && a === mainEntryName) return -1;
|
|
69
|
+
if (mainEntryName && b === mainEntryName) return 1;
|
|
70
|
+
return a.localeCompare(b);
|
|
71
|
+
});
|
|
72
|
+
await writeTanstackRegisterFile({
|
|
73
|
+
entries: registerEntries,
|
|
74
|
+
generatedDirName,
|
|
75
|
+
srcDirectory: appContext.srcDirectory
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function tanstackRouterPlugin(options = {}) {
|
|
79
|
+
const routesDir = options.routesDir || DEFAULT_ROUTES_DIR;
|
|
80
|
+
const generatedDirName = options.generatedDirName || DEFAULT_GENERATED_DIR_NAME;
|
|
81
|
+
return {
|
|
82
|
+
name: '@modern-js/plugin-tanstack',
|
|
83
|
+
required: [
|
|
84
|
+
'@modern-js/runtime'
|
|
85
|
+
],
|
|
86
|
+
setup: (api)=>{
|
|
87
|
+
const nestedRoutesForServer = {};
|
|
88
|
+
const isTanstackEntrypoint = (entrypoint)=>{
|
|
89
|
+
const { getEntrypointRoutesDir } = getRuntimeRouterCli();
|
|
90
|
+
return getEntrypointRoutesDir(entrypoint) === routesDir;
|
|
91
|
+
};
|
|
92
|
+
api._internalRuntimePlugins(({ entrypoint, plugins })=>{
|
|
93
|
+
if (!isTanstackEntrypoint(entrypoint)) return {
|
|
94
|
+
entrypoint,
|
|
95
|
+
plugins
|
|
96
|
+
};
|
|
97
|
+
const { metaName, serverRoutes } = api.getAppContext();
|
|
98
|
+
const serverBase = serverRoutes.filter((route)=>route.entryName === entrypoint.entryName).map((route)=>route.urlPath).sort((a, b)=>a.length - b.length > 0 ? -1 : 1);
|
|
99
|
+
plugins.push({
|
|
100
|
+
name: 'tanstackRouter',
|
|
101
|
+
path: `@${metaName}/plugin-tanstack/runtime`,
|
|
102
|
+
config: {
|
|
103
|
+
serverBase
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return {
|
|
107
|
+
entrypoint,
|
|
108
|
+
plugins
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
api.checkEntryPoint(({ path: entryPath, entry })=>{
|
|
112
|
+
const { isRouteEntry } = getRuntimeRouterCli();
|
|
113
|
+
return {
|
|
114
|
+
path: entryPath,
|
|
115
|
+
entry: entry || isRouteEntry(entryPath, routesDir)
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
api.config(()=>({
|
|
119
|
+
source: {
|
|
120
|
+
include: [
|
|
121
|
+
/[\\/]node_modules[\\/]@tanstack[\\/]react-router[\\/]/,
|
|
122
|
+
node_path.resolve(__dirname, '../runtime').replace('cjs', 'esm')
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
}));
|
|
126
|
+
api.modifyEntrypoints(async ({ entrypoints })=>{
|
|
127
|
+
const { handleModifyEntrypoints } = getRuntimeRouterCli();
|
|
128
|
+
return {
|
|
129
|
+
entrypoints: await handleModifyEntrypoints(entrypoints, routesDir, {
|
|
130
|
+
routesOwner: ENTRYPOINTS_KEY
|
|
131
|
+
})
|
|
132
|
+
};
|
|
133
|
+
});
|
|
134
|
+
api.generateEntryCode(async ({ entrypoints })=>{
|
|
135
|
+
const tanstackEntrypoints = entrypoints.filter(isTanstackEntrypoint);
|
|
136
|
+
if (0 === tanstackEntrypoints.length) return;
|
|
137
|
+
const { handleGeneratorEntryCode } = getRuntimeRouterCli();
|
|
138
|
+
const routesByEntry = await handleGeneratorEntryCode(api, tanstackEntrypoints, {
|
|
139
|
+
entrypointsKey: ENTRYPOINTS_KEY,
|
|
140
|
+
generateCodeOptions: {
|
|
141
|
+
enableTanstackTypes: false
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
await writeTanstackRouterTypesForEntries({
|
|
145
|
+
appContext: api.getAppContext(),
|
|
146
|
+
generatedDirName,
|
|
147
|
+
routesByEntry
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
api.onFileChanged(async (event)=>{
|
|
151
|
+
const { handleFileChange } = getRuntimeRouterCli();
|
|
152
|
+
await handleFileChange(api, event, {
|
|
153
|
+
entrypointsKey: ENTRYPOINTS_KEY,
|
|
154
|
+
includeEntry: (entrypoint)=>{
|
|
155
|
+
const { getEntrypointRoutesDir } = getRuntimeRouterCli();
|
|
156
|
+
return getEntrypointRoutesDir(entrypoint) === routesDir;
|
|
157
|
+
},
|
|
158
|
+
regenerate: async ({ api, entrypoints })=>{
|
|
159
|
+
const { handleGeneratorEntryCode } = getRuntimeRouterCli();
|
|
160
|
+
const routesByEntry = await handleGeneratorEntryCode(api, entrypoints, {
|
|
161
|
+
entrypointsKey: ENTRYPOINTS_KEY,
|
|
162
|
+
generateCodeOptions: {
|
|
163
|
+
enableTanstackTypes: false
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
await writeTanstackRouterTypesForEntries({
|
|
167
|
+
appContext: api.getAppContext(),
|
|
168
|
+
generatedDirName,
|
|
169
|
+
routesByEntry
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
api.modifyFileSystemRoutes(async ({ entrypoint, routes })=>{
|
|
175
|
+
if (isTanstackEntrypoint(entrypoint)) nestedRoutesForServer[entrypoint.entryName] = filterRoutesForServer(routes);
|
|
176
|
+
return {
|
|
177
|
+
entrypoint,
|
|
178
|
+
routes
|
|
179
|
+
};
|
|
180
|
+
});
|
|
181
|
+
api.onBeforeGenerateRoutes(async ({ entrypoint, code })=>{
|
|
182
|
+
if (isTanstackEntrypoint(entrypoint)) {
|
|
183
|
+
const { distDirectory } = api.getAppContext();
|
|
184
|
+
const nestedRoutesSpecPath = node_path.resolve(distDirectory, NESTED_ROUTE_SPEC_FILE);
|
|
185
|
+
const existingNestedRoutes = await fs.pathExists(nestedRoutesSpecPath) ? await fs.readJSON(nestedRoutesSpecPath) : {};
|
|
186
|
+
await fs.outputJSON(nestedRoutesSpecPath, {
|
|
187
|
+
...existingNestedRoutes,
|
|
188
|
+
...nestedRoutesForServer
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
entrypoint,
|
|
193
|
+
code
|
|
194
|
+
};
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
const src_cli = tanstackRouterPlugin;
|
|
200
|
+
export default src_cli;
|
|
201
|
+
export { generateTanstackRouterTypesSourceForEntry, isTanstackRouterFrameworkEnabled, tanstackRouterPlugin, writeTanstackRegisterFile, writeTanstackRouterTypesForEntries };
|