@tanstack/cta-ui 0.10.0-alpha.21 → 0.10.0-alpha.23
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/lib/index.ts +14 -2
- package/lib-dist/index.d.ts +4 -2
- package/lib-dist/index.js +9 -2
- package/package.json +3 -3
- package/src/engine-handling/generate-initial-payload.ts +7 -1
- package/src/engine-handling/server-environment.ts +14 -1
- package/src/store/project.ts +28 -4
- package/src/types.d.ts +2 -0
package/lib/index.ts
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
import { dirname, resolve } from 'node:path'
|
|
2
2
|
import { fileURLToPath } from 'node:url'
|
|
3
3
|
|
|
4
|
-
import type { SerializedOptions } from '@tanstack/cta-engine'
|
|
4
|
+
import type { Mode, SerializedOptions } from '@tanstack/cta-engine'
|
|
5
5
|
|
|
6
6
|
export function launchUI({
|
|
7
7
|
mode,
|
|
8
8
|
addOns,
|
|
9
9
|
options,
|
|
10
|
+
forcedMode,
|
|
11
|
+
forcedAddOns,
|
|
10
12
|
}: {
|
|
11
13
|
mode: 'add' | 'setup'
|
|
12
14
|
addOns?: Array<string>
|
|
13
15
|
options?: SerializedOptions
|
|
16
|
+
forcedMode?: Mode
|
|
17
|
+
forcedAddOns?: Array<string>
|
|
14
18
|
}) {
|
|
15
19
|
const projectPath = process.cwd()
|
|
16
20
|
|
|
17
|
-
process.env.
|
|
21
|
+
delete process.env.NODE_ENV
|
|
22
|
+
|
|
18
23
|
process.env.CTA_ADD_ONS = addOns?.join(',') || ''
|
|
24
|
+
process.env.CTA_PROJECT_PATH = projectPath
|
|
19
25
|
process.env.CTA_OPTIONS = options ? JSON.stringify(options) : ''
|
|
20
26
|
process.env.CTA_MODE = mode
|
|
27
|
+
if (forcedMode) {
|
|
28
|
+
process.env.CTA_FORCED_ROUTER_MODE = forcedMode
|
|
29
|
+
}
|
|
30
|
+
if (forcedAddOns) {
|
|
31
|
+
process.env.CTA_FORCED_ADD_ONS = forcedAddOns.join(',')
|
|
32
|
+
}
|
|
21
33
|
|
|
22
34
|
const developerPath = resolve(dirname(fileURLToPath(import.meta.url)), '..')
|
|
23
35
|
const configPath = resolve(developerPath, './app.config.js')
|
package/lib-dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { SerializedOptions } from '@tanstack/cta-engine';
|
|
2
|
-
export declare function launchUI({ mode, addOns, options, }: {
|
|
1
|
+
import type { Mode, SerializedOptions } from '@tanstack/cta-engine';
|
|
2
|
+
export declare function launchUI({ mode, addOns, options, forcedMode, forcedAddOns, }: {
|
|
3
3
|
mode: 'add' | 'setup';
|
|
4
4
|
addOns?: Array<string>;
|
|
5
5
|
options?: SerializedOptions;
|
|
6
|
+
forcedMode?: Mode;
|
|
7
|
+
forcedAddOns?: Array<string>;
|
|
6
8
|
}): void;
|
package/lib-dist/index.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { dirname, resolve } from 'node:path';
|
|
2
2
|
import { fileURLToPath } from 'node:url';
|
|
3
|
-
export function launchUI({ mode, addOns, options, }) {
|
|
3
|
+
export function launchUI({ mode, addOns, options, forcedMode, forcedAddOns, }) {
|
|
4
4
|
const projectPath = process.cwd();
|
|
5
|
-
process.env.
|
|
5
|
+
delete process.env.NODE_ENV;
|
|
6
6
|
process.env.CTA_ADD_ONS = addOns?.join(',') || '';
|
|
7
|
+
process.env.CTA_PROJECT_PATH = projectPath;
|
|
7
8
|
process.env.CTA_OPTIONS = options ? JSON.stringify(options) : '';
|
|
8
9
|
process.env.CTA_MODE = mode;
|
|
10
|
+
if (forcedMode) {
|
|
11
|
+
process.env.CTA_FORCED_ROUTER_MODE = forcedMode;
|
|
12
|
+
}
|
|
13
|
+
if (forcedAddOns) {
|
|
14
|
+
process.env.CTA_FORCED_ADD_ONS = forcedAddOns.join(',');
|
|
15
|
+
}
|
|
9
16
|
const developerPath = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
10
17
|
const configPath = resolve(developerPath, './app.config.js');
|
|
11
18
|
process.chdir(developerPath);
|
package/package.json
CHANGED
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"vite-tsconfig-paths": "^5.1.4",
|
|
49
49
|
"zustand": "^5.0.3",
|
|
50
50
|
"@tanstack/cta-engine": "0.10.0-alpha.21",
|
|
51
|
-
"@tanstack/cta-framework-
|
|
52
|
-
"@tanstack/cta-framework-
|
|
51
|
+
"@tanstack/cta-framework-react-cra": "0.10.0-alpha.21",
|
|
52
|
+
"@tanstack/cta-framework-solid": "0.10.0-alpha.21"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@testing-library/dom": "^10.4.0",
|
|
@@ -65,6 +65,6 @@
|
|
|
65
65
|
"vitest": "^3.0.5",
|
|
66
66
|
"web-vitals": "^4.2.4"
|
|
67
67
|
},
|
|
68
|
-
"version": "0.10.0-alpha.
|
|
68
|
+
"version": "0.10.0-alpha.23",
|
|
69
69
|
"scripts": {}
|
|
70
70
|
}
|
|
@@ -13,6 +13,8 @@ import { createAppWrapper } from './create-app-wrapper.js'
|
|
|
13
13
|
import { registerFrameworks } from './framework-registration.js'
|
|
14
14
|
import {
|
|
15
15
|
getApplicationMode,
|
|
16
|
+
getForcedAddOns,
|
|
17
|
+
getForcedRouterMode,
|
|
16
18
|
getProjectOptions,
|
|
17
19
|
getProjectPath,
|
|
18
20
|
} from './server-environment.js'
|
|
@@ -30,6 +32,8 @@ export async function generateInitialPayload() {
|
|
|
30
32
|
? await cleanUpFiles(await recursivelyGatherFiles(projectPath, false))
|
|
31
33
|
: {}
|
|
32
34
|
|
|
35
|
+
const forcedRouterMode = getForcedRouterMode()
|
|
36
|
+
|
|
33
37
|
function getSerializedOptions() {
|
|
34
38
|
if (applicationMode === 'setup') {
|
|
35
39
|
const projectOptions = getProjectOptions()
|
|
@@ -37,7 +41,7 @@ export async function generateInitialPayload() {
|
|
|
37
41
|
...projectOptions,
|
|
38
42
|
framework: projectOptions.framework || 'react-cra',
|
|
39
43
|
projectName: projectOptions.projectName || basename(projectPath),
|
|
40
|
-
mode: projectOptions.mode
|
|
44
|
+
mode: forcedRouterMode || projectOptions.mode,
|
|
41
45
|
typescript: projectOptions.typescript || true,
|
|
42
46
|
tailwind: projectOptions.tailwind || true,
|
|
43
47
|
git: projectOptions.git || true,
|
|
@@ -89,5 +93,7 @@ export async function generateInitialPayload() {
|
|
|
89
93
|
},
|
|
90
94
|
options: serializedOptions,
|
|
91
95
|
output,
|
|
96
|
+
forcedRouterMode,
|
|
97
|
+
forcedAddOns: getForcedAddOns(),
|
|
92
98
|
}
|
|
93
99
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SerializedOptions } from '@tanstack/cta-engine'
|
|
1
|
+
import type { Mode, SerializedOptions } from '@tanstack/cta-engine'
|
|
2
2
|
|
|
3
3
|
export function getProjectPath(): string {
|
|
4
4
|
return process.env.CTA_PROJECT_PATH!
|
|
@@ -11,3 +11,16 @@ export function getApplicationMode(): 'add' | 'setup' {
|
|
|
11
11
|
export function getProjectOptions(): SerializedOptions {
|
|
12
12
|
return JSON.parse(process.env.CTA_OPTIONS!)
|
|
13
13
|
}
|
|
14
|
+
|
|
15
|
+
export function getForcedRouterMode(): Mode | undefined {
|
|
16
|
+
if (!process.env.CTA_FORCED_ROUTER_MODE) {
|
|
17
|
+
return undefined
|
|
18
|
+
}
|
|
19
|
+
return process.env.CTA_FORCED_ROUTER_MODE as Mode
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export function getForcedAddOns(): Array<string> | undefined {
|
|
23
|
+
return (process.env.CTA_FORCED_ADD_ONS?.split(',') || []).filter(
|
|
24
|
+
(addOn: string) => addOn !== '',
|
|
25
|
+
)
|
|
26
|
+
}
|
package/src/store/project.ts
CHANGED
|
@@ -36,9 +36,14 @@ const useInitialData = () =>
|
|
|
36
36
|
'file-router': [],
|
|
37
37
|
},
|
|
38
38
|
applicationMode: 'none',
|
|
39
|
+
forcedRouterMode: undefined,
|
|
40
|
+
forcedAddOns: [],
|
|
39
41
|
},
|
|
40
42
|
})
|
|
41
43
|
|
|
44
|
+
const useForcedRouterMode = () => useInitialData().data.forcedRouterMode
|
|
45
|
+
const useForcedAddOns = () => useInitialData().data.forcedAddOns
|
|
46
|
+
|
|
42
47
|
export const useProjectLocalFiles = () => useInitialData().data.localFiles
|
|
43
48
|
export const useOriginalOutput = () => useInitialData().data.output
|
|
44
49
|
export const useOriginalSelectedAddOns = () =>
|
|
@@ -98,6 +103,7 @@ export function useAddOns() {
|
|
|
98
103
|
const originalSelectedAddOns = useOriginalSelectedAddOns()
|
|
99
104
|
const codeRouterAddOns = useCodeRouterAddOns()
|
|
100
105
|
const fileRouterAddOns = useFileRouterAddOns()
|
|
106
|
+
const forcedAddOns = useForcedAddOns()
|
|
101
107
|
const { userSelectedAddOns, customAddOns } = useMutableAddOns()
|
|
102
108
|
const projectStarter = useProjectStarter().projectStarter
|
|
103
109
|
|
|
@@ -118,6 +124,9 @@ export function useAddOns() {
|
|
|
118
124
|
for (const addOn of originalSelectedAddOns) {
|
|
119
125
|
originalAddOns.add(addOn)
|
|
120
126
|
}
|
|
127
|
+
for (const addOn of forcedAddOns) {
|
|
128
|
+
originalAddOns.add(addOn)
|
|
129
|
+
}
|
|
121
130
|
return getAddOnStatus(
|
|
122
131
|
availableAddOns,
|
|
123
132
|
userSelectedAddOns,
|
|
@@ -128,11 +137,18 @@ export function useAddOns() {
|
|
|
128
137
|
userSelectedAddOns,
|
|
129
138
|
originalSelectedAddOns,
|
|
130
139
|
projectStarter?.dependsOn,
|
|
140
|
+
forcedAddOns,
|
|
131
141
|
])
|
|
132
142
|
|
|
133
143
|
const chosenAddOns = useMemo(() => {
|
|
134
|
-
|
|
135
|
-
|
|
144
|
+
const addOns = new Set(
|
|
145
|
+
Object.keys(addOnState).filter((addOn) => addOnState[addOn].selected),
|
|
146
|
+
)
|
|
147
|
+
for (const addOn of forcedAddOns) {
|
|
148
|
+
addOns.add(addOn)
|
|
149
|
+
}
|
|
150
|
+
return Array.from(addOns)
|
|
151
|
+
}, [addOnState, forcedAddOns])
|
|
136
152
|
|
|
137
153
|
const toggleAddOn = useCallback(
|
|
138
154
|
(addOnId: string) => {
|
|
@@ -166,7 +182,11 @@ export function useAddOns() {
|
|
|
166
182
|
const useHasProjectStarter = () =>
|
|
167
183
|
useProjectStarter((state) => state.projectStarter === undefined)
|
|
168
184
|
|
|
169
|
-
export const useModeEditable = () =>
|
|
185
|
+
export const useModeEditable = () => {
|
|
186
|
+
const forcedRouterMode = useForcedRouterMode()
|
|
187
|
+
const hasProjectStarter = useHasProjectStarter()
|
|
188
|
+
return !forcedRouterMode && hasProjectStarter
|
|
189
|
+
}
|
|
170
190
|
|
|
171
191
|
export const useTypeScriptEditable = () => {
|
|
172
192
|
const hasProjectStarter = useHasProjectStarter()
|
|
@@ -183,7 +203,11 @@ export const useTailwindEditable = () => {
|
|
|
183
203
|
export const useProjectName = () =>
|
|
184
204
|
useProjectOptions((state) => state.projectName)
|
|
185
205
|
|
|
186
|
-
export const useRouterMode = () =>
|
|
206
|
+
export const useRouterMode = () => {
|
|
207
|
+
const forcedRouterMode = useForcedRouterMode()
|
|
208
|
+
const userMode = useProjectOptions((state) => state.mode)
|
|
209
|
+
return forcedRouterMode || userMode
|
|
210
|
+
}
|
|
187
211
|
|
|
188
212
|
export function useFilters() {
|
|
189
213
|
const includedFiles = useApplicationSettings((state) => state.includeFiles)
|