@tanstack/cli 0.0.1 → 0.0.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.
- package/dist/bin.cjs +293 -2
- package/dist/bin.mjs +293 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +17 -17
- package/dist/index.d.mts +17 -17
- package/dist/index.mjs +1 -1
- package/dist/{template-BYKvtZrT.cjs → template-B-i2qO8E.cjs} +83 -34
- package/dist/{template-2SxOxCJc.mjs → template-BgEATWaG.mjs} +83 -34
- package/package.json +1 -1
- package/src/api/fetch.test.ts +3 -3
- package/src/api/fetch.ts +65 -37
- package/src/cache/index.ts +89 -0
- package/src/commands/create.ts +1 -1
- package/src/commands/mcp.test.ts +3 -3
- package/src/commands/mcp.ts +5 -1
- package/src/engine/compile-with-addons.test.ts +7 -7
- package/src/engine/compile.test.ts +1 -1
- package/src/engine/compile.ts +6 -6
- package/src/engine/custom-addons/shared.ts +1 -1
- package/src/engine/template.test.ts +1 -1
- package/src/engine/template.ts +1 -1
- package/src/engine/types.ts +6 -4
- package/src/mcp/api.ts +42 -0
- package/src/mcp/tools.ts +323 -0
- package/src/mcp/types.ts +46 -0
- package/src/templates/base.ts +3 -0
package/dist/index.d.cts
CHANGED
|
@@ -217,7 +217,7 @@ declare const IntegrationInfoSchema: z.ZodObject<{
|
|
|
217
217
|
requiresTailwind: z.ZodOptional<z.ZodBoolean>;
|
|
218
218
|
demoRequiresTailwind: z.ZodOptional<z.ZodBoolean>;
|
|
219
219
|
dependsOn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
220
|
-
|
|
220
|
+
exclusive: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
221
221
|
partnerId: z.ZodOptional<z.ZodString>;
|
|
222
222
|
options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
223
223
|
type: z.ZodLiteral<"select">;
|
|
@@ -392,7 +392,7 @@ declare const IntegrationInfoSchema: z.ZodObject<{
|
|
|
392
392
|
requiresTailwind?: boolean | undefined;
|
|
393
393
|
demoRequiresTailwind?: boolean | undefined;
|
|
394
394
|
dependsOn?: string[] | undefined;
|
|
395
|
-
|
|
395
|
+
exclusive?: string[] | undefined;
|
|
396
396
|
partnerId?: string | undefined;
|
|
397
397
|
hooks?: {
|
|
398
398
|
type?: "header-user" | "provider" | "root-provider" | "layout" | "vite-plugin" | "devtools" | "entry-client" | undefined;
|
|
@@ -463,7 +463,7 @@ declare const IntegrationInfoSchema: z.ZodObject<{
|
|
|
463
463
|
requiresTailwind?: boolean | undefined;
|
|
464
464
|
demoRequiresTailwind?: boolean | undefined;
|
|
465
465
|
dependsOn?: string[] | undefined;
|
|
466
|
-
|
|
466
|
+
exclusive?: string[] | undefined;
|
|
467
467
|
partnerId?: string | undefined;
|
|
468
468
|
hooks?: {
|
|
469
469
|
type?: "header-user" | "provider" | "root-provider" | "layout" | "vite-plugin" | "devtools" | "entry-client" | undefined;
|
|
@@ -511,7 +511,7 @@ declare const IntegrationCompiledSchema: z.ZodObject<{
|
|
|
511
511
|
requiresTailwind: z.ZodOptional<z.ZodBoolean>;
|
|
512
512
|
demoRequiresTailwind: z.ZodOptional<z.ZodBoolean>;
|
|
513
513
|
dependsOn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
514
|
-
|
|
514
|
+
exclusive: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
515
515
|
partnerId: z.ZodOptional<z.ZodString>;
|
|
516
516
|
options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
517
517
|
type: z.ZodLiteral<"select">;
|
|
@@ -691,7 +691,7 @@ declare const IntegrationCompiledSchema: z.ZodObject<{
|
|
|
691
691
|
requiresTailwind?: boolean | undefined;
|
|
692
692
|
demoRequiresTailwind?: boolean | undefined;
|
|
693
693
|
dependsOn?: string[] | undefined;
|
|
694
|
-
|
|
694
|
+
exclusive?: string[] | undefined;
|
|
695
695
|
partnerId?: string | undefined;
|
|
696
696
|
hooks?: {
|
|
697
697
|
type?: "header-user" | "provider" | "root-provider" | "layout" | "vite-plugin" | "devtools" | "entry-client" | undefined;
|
|
@@ -764,7 +764,7 @@ declare const IntegrationCompiledSchema: z.ZodObject<{
|
|
|
764
764
|
requiresTailwind?: boolean | undefined;
|
|
765
765
|
demoRequiresTailwind?: boolean | undefined;
|
|
766
766
|
dependsOn?: string[] | undefined;
|
|
767
|
-
|
|
767
|
+
exclusive?: string[] | undefined;
|
|
768
768
|
partnerId?: string | undefined;
|
|
769
769
|
hooks?: {
|
|
770
770
|
type?: "header-user" | "provider" | "root-provider" | "layout" | "vite-plugin" | "devtools" | "entry-client" | undefined;
|
|
@@ -875,7 +875,7 @@ declare const ManifestIntegrationSchema: z.ZodObject<{
|
|
|
875
875
|
category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "tooling", "monitoring", "api", "i18n", "cms", "other"]>>;
|
|
876
876
|
modes: z.ZodArray<z.ZodEnum<["file-router", "code-router"]>, "many">;
|
|
877
877
|
dependsOn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
878
|
-
|
|
878
|
+
exclusive: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
879
879
|
partnerId: z.ZodOptional<z.ZodString>;
|
|
880
880
|
hasOptions: z.ZodOptional<z.ZodBoolean>;
|
|
881
881
|
link: z.ZodOptional<z.ZodString>;
|
|
@@ -893,7 +893,7 @@ declare const ManifestIntegrationSchema: z.ZodObject<{
|
|
|
893
893
|
requiresTailwind?: boolean | undefined;
|
|
894
894
|
demoRequiresTailwind?: boolean | undefined;
|
|
895
895
|
dependsOn?: string[] | undefined;
|
|
896
|
-
|
|
896
|
+
exclusive?: string[] | undefined;
|
|
897
897
|
partnerId?: string | undefined;
|
|
898
898
|
hasOptions?: boolean | undefined;
|
|
899
899
|
color?: string | undefined;
|
|
@@ -908,7 +908,7 @@ declare const ManifestIntegrationSchema: z.ZodObject<{
|
|
|
908
908
|
requiresTailwind?: boolean | undefined;
|
|
909
909
|
demoRequiresTailwind?: boolean | undefined;
|
|
910
910
|
dependsOn?: string[] | undefined;
|
|
911
|
-
|
|
911
|
+
exclusive?: string[] | undefined;
|
|
912
912
|
partnerId?: string | undefined;
|
|
913
913
|
hasOptions?: boolean | undefined;
|
|
914
914
|
color?: string | undefined;
|
|
@@ -925,7 +925,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
925
925
|
category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "tooling", "monitoring", "api", "i18n", "cms", "other"]>>;
|
|
926
926
|
modes: z.ZodArray<z.ZodEnum<["file-router", "code-router"]>, "many">;
|
|
927
927
|
dependsOn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
928
|
-
|
|
928
|
+
exclusive: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
929
929
|
partnerId: z.ZodOptional<z.ZodString>;
|
|
930
930
|
hasOptions: z.ZodOptional<z.ZodBoolean>;
|
|
931
931
|
link: z.ZodOptional<z.ZodString>;
|
|
@@ -943,7 +943,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
943
943
|
requiresTailwind?: boolean | undefined;
|
|
944
944
|
demoRequiresTailwind?: boolean | undefined;
|
|
945
945
|
dependsOn?: string[] | undefined;
|
|
946
|
-
|
|
946
|
+
exclusive?: string[] | undefined;
|
|
947
947
|
partnerId?: string | undefined;
|
|
948
948
|
hasOptions?: boolean | undefined;
|
|
949
949
|
color?: string | undefined;
|
|
@@ -958,7 +958,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
958
958
|
requiresTailwind?: boolean | undefined;
|
|
959
959
|
demoRequiresTailwind?: boolean | undefined;
|
|
960
960
|
dependsOn?: string[] | undefined;
|
|
961
|
-
|
|
961
|
+
exclusive?: string[] | undefined;
|
|
962
962
|
partnerId?: string | undefined;
|
|
963
963
|
hasOptions?: boolean | undefined;
|
|
964
964
|
color?: string | undefined;
|
|
@@ -998,7 +998,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
998
998
|
requiresTailwind?: boolean | undefined;
|
|
999
999
|
demoRequiresTailwind?: boolean | undefined;
|
|
1000
1000
|
dependsOn?: string[] | undefined;
|
|
1001
|
-
|
|
1001
|
+
exclusive?: string[] | undefined;
|
|
1002
1002
|
partnerId?: string | undefined;
|
|
1003
1003
|
hasOptions?: boolean | undefined;
|
|
1004
1004
|
color?: string | undefined;
|
|
@@ -1025,7 +1025,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
1025
1025
|
requiresTailwind?: boolean | undefined;
|
|
1026
1026
|
demoRequiresTailwind?: boolean | undefined;
|
|
1027
1027
|
dependsOn?: string[] | undefined;
|
|
1028
|
-
|
|
1028
|
+
exclusive?: string[] | undefined;
|
|
1029
1029
|
partnerId?: string | undefined;
|
|
1030
1030
|
hasOptions?: boolean | undefined;
|
|
1031
1031
|
color?: string | undefined;
|
|
@@ -1149,15 +1149,15 @@ declare function loadTemplate(url: string): Promise<CustomTemplateCompiled>;
|
|
|
1149
1149
|
//#endregion
|
|
1150
1150
|
//#region src/api/fetch.d.ts
|
|
1151
1151
|
/**
|
|
1152
|
-
* Fetch the integration manifest from GitHub or local path
|
|
1152
|
+
* Fetch the integration manifest from GitHub or local path (with caching for remote)
|
|
1153
1153
|
*/
|
|
1154
1154
|
declare function fetchManifest(baseUrl?: string): Promise<Manifest>;
|
|
1155
1155
|
/**
|
|
1156
|
-
* Fetch integration info.json from GitHub or local path
|
|
1156
|
+
* Fetch integration info.json from GitHub or local path (with caching for remote)
|
|
1157
1157
|
*/
|
|
1158
1158
|
declare function fetchIntegrationInfo(integrationId: string, baseUrl?: string): Promise<IntegrationInfo>;
|
|
1159
1159
|
/**
|
|
1160
|
-
* Fetch all files for an integration from GitHub or local path
|
|
1160
|
+
* Fetch all files for an integration from GitHub or local path (with caching for remote)
|
|
1161
1161
|
*/
|
|
1162
1162
|
declare function fetchIntegrationFiles(integrationId: string, baseUrl?: string): Promise<Record<string, string>>;
|
|
1163
1163
|
/**
|
package/dist/index.d.mts
CHANGED
|
@@ -217,7 +217,7 @@ declare const IntegrationInfoSchema: z.ZodObject<{
|
|
|
217
217
|
requiresTailwind: z.ZodOptional<z.ZodBoolean>;
|
|
218
218
|
demoRequiresTailwind: z.ZodOptional<z.ZodBoolean>;
|
|
219
219
|
dependsOn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
220
|
-
|
|
220
|
+
exclusive: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
221
221
|
partnerId: z.ZodOptional<z.ZodString>;
|
|
222
222
|
options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
223
223
|
type: z.ZodLiteral<"select">;
|
|
@@ -392,7 +392,7 @@ declare const IntegrationInfoSchema: z.ZodObject<{
|
|
|
392
392
|
requiresTailwind?: boolean | undefined;
|
|
393
393
|
demoRequiresTailwind?: boolean | undefined;
|
|
394
394
|
dependsOn?: string[] | undefined;
|
|
395
|
-
|
|
395
|
+
exclusive?: string[] | undefined;
|
|
396
396
|
partnerId?: string | undefined;
|
|
397
397
|
hooks?: {
|
|
398
398
|
type?: "header-user" | "provider" | "root-provider" | "layout" | "vite-plugin" | "devtools" | "entry-client" | undefined;
|
|
@@ -463,7 +463,7 @@ declare const IntegrationInfoSchema: z.ZodObject<{
|
|
|
463
463
|
requiresTailwind?: boolean | undefined;
|
|
464
464
|
demoRequiresTailwind?: boolean | undefined;
|
|
465
465
|
dependsOn?: string[] | undefined;
|
|
466
|
-
|
|
466
|
+
exclusive?: string[] | undefined;
|
|
467
467
|
partnerId?: string | undefined;
|
|
468
468
|
hooks?: {
|
|
469
469
|
type?: "header-user" | "provider" | "root-provider" | "layout" | "vite-plugin" | "devtools" | "entry-client" | undefined;
|
|
@@ -511,7 +511,7 @@ declare const IntegrationCompiledSchema: z.ZodObject<{
|
|
|
511
511
|
requiresTailwind: z.ZodOptional<z.ZodBoolean>;
|
|
512
512
|
demoRequiresTailwind: z.ZodOptional<z.ZodBoolean>;
|
|
513
513
|
dependsOn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
514
|
-
|
|
514
|
+
exclusive: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
515
515
|
partnerId: z.ZodOptional<z.ZodString>;
|
|
516
516
|
options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
|
|
517
517
|
type: z.ZodLiteral<"select">;
|
|
@@ -691,7 +691,7 @@ declare const IntegrationCompiledSchema: z.ZodObject<{
|
|
|
691
691
|
requiresTailwind?: boolean | undefined;
|
|
692
692
|
demoRequiresTailwind?: boolean | undefined;
|
|
693
693
|
dependsOn?: string[] | undefined;
|
|
694
|
-
|
|
694
|
+
exclusive?: string[] | undefined;
|
|
695
695
|
partnerId?: string | undefined;
|
|
696
696
|
hooks?: {
|
|
697
697
|
type?: "header-user" | "provider" | "root-provider" | "layout" | "vite-plugin" | "devtools" | "entry-client" | undefined;
|
|
@@ -764,7 +764,7 @@ declare const IntegrationCompiledSchema: z.ZodObject<{
|
|
|
764
764
|
requiresTailwind?: boolean | undefined;
|
|
765
765
|
demoRequiresTailwind?: boolean | undefined;
|
|
766
766
|
dependsOn?: string[] | undefined;
|
|
767
|
-
|
|
767
|
+
exclusive?: string[] | undefined;
|
|
768
768
|
partnerId?: string | undefined;
|
|
769
769
|
hooks?: {
|
|
770
770
|
type?: "header-user" | "provider" | "root-provider" | "layout" | "vite-plugin" | "devtools" | "entry-client" | undefined;
|
|
@@ -875,7 +875,7 @@ declare const ManifestIntegrationSchema: z.ZodObject<{
|
|
|
875
875
|
category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "tooling", "monitoring", "api", "i18n", "cms", "other"]>>;
|
|
876
876
|
modes: z.ZodArray<z.ZodEnum<["file-router", "code-router"]>, "many">;
|
|
877
877
|
dependsOn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
878
|
-
|
|
878
|
+
exclusive: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
879
879
|
partnerId: z.ZodOptional<z.ZodString>;
|
|
880
880
|
hasOptions: z.ZodOptional<z.ZodBoolean>;
|
|
881
881
|
link: z.ZodOptional<z.ZodString>;
|
|
@@ -893,7 +893,7 @@ declare const ManifestIntegrationSchema: z.ZodObject<{
|
|
|
893
893
|
requiresTailwind?: boolean | undefined;
|
|
894
894
|
demoRequiresTailwind?: boolean | undefined;
|
|
895
895
|
dependsOn?: string[] | undefined;
|
|
896
|
-
|
|
896
|
+
exclusive?: string[] | undefined;
|
|
897
897
|
partnerId?: string | undefined;
|
|
898
898
|
hasOptions?: boolean | undefined;
|
|
899
899
|
color?: string | undefined;
|
|
@@ -908,7 +908,7 @@ declare const ManifestIntegrationSchema: z.ZodObject<{
|
|
|
908
908
|
requiresTailwind?: boolean | undefined;
|
|
909
909
|
demoRequiresTailwind?: boolean | undefined;
|
|
910
910
|
dependsOn?: string[] | undefined;
|
|
911
|
-
|
|
911
|
+
exclusive?: string[] | undefined;
|
|
912
912
|
partnerId?: string | undefined;
|
|
913
913
|
hasOptions?: boolean | undefined;
|
|
914
914
|
color?: string | undefined;
|
|
@@ -925,7 +925,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
925
925
|
category: z.ZodOptional<z.ZodEnum<["tanstack", "database", "orm", "auth", "deploy", "tooling", "monitoring", "api", "i18n", "cms", "other"]>>;
|
|
926
926
|
modes: z.ZodArray<z.ZodEnum<["file-router", "code-router"]>, "many">;
|
|
927
927
|
dependsOn: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
928
|
-
|
|
928
|
+
exclusive: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
929
929
|
partnerId: z.ZodOptional<z.ZodString>;
|
|
930
930
|
hasOptions: z.ZodOptional<z.ZodBoolean>;
|
|
931
931
|
link: z.ZodOptional<z.ZodString>;
|
|
@@ -943,7 +943,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
943
943
|
requiresTailwind?: boolean | undefined;
|
|
944
944
|
demoRequiresTailwind?: boolean | undefined;
|
|
945
945
|
dependsOn?: string[] | undefined;
|
|
946
|
-
|
|
946
|
+
exclusive?: string[] | undefined;
|
|
947
947
|
partnerId?: string | undefined;
|
|
948
948
|
hasOptions?: boolean | undefined;
|
|
949
949
|
color?: string | undefined;
|
|
@@ -958,7 +958,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
958
958
|
requiresTailwind?: boolean | undefined;
|
|
959
959
|
demoRequiresTailwind?: boolean | undefined;
|
|
960
960
|
dependsOn?: string[] | undefined;
|
|
961
|
-
|
|
961
|
+
exclusive?: string[] | undefined;
|
|
962
962
|
partnerId?: string | undefined;
|
|
963
963
|
hasOptions?: boolean | undefined;
|
|
964
964
|
color?: string | undefined;
|
|
@@ -998,7 +998,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
998
998
|
requiresTailwind?: boolean | undefined;
|
|
999
999
|
demoRequiresTailwind?: boolean | undefined;
|
|
1000
1000
|
dependsOn?: string[] | undefined;
|
|
1001
|
-
|
|
1001
|
+
exclusive?: string[] | undefined;
|
|
1002
1002
|
partnerId?: string | undefined;
|
|
1003
1003
|
hasOptions?: boolean | undefined;
|
|
1004
1004
|
color?: string | undefined;
|
|
@@ -1025,7 +1025,7 @@ declare const ManifestSchema: z.ZodObject<{
|
|
|
1025
1025
|
requiresTailwind?: boolean | undefined;
|
|
1026
1026
|
demoRequiresTailwind?: boolean | undefined;
|
|
1027
1027
|
dependsOn?: string[] | undefined;
|
|
1028
|
-
|
|
1028
|
+
exclusive?: string[] | undefined;
|
|
1029
1029
|
partnerId?: string | undefined;
|
|
1030
1030
|
hasOptions?: boolean | undefined;
|
|
1031
1031
|
color?: string | undefined;
|
|
@@ -1149,15 +1149,15 @@ declare function loadTemplate(url: string): Promise<CustomTemplateCompiled>;
|
|
|
1149
1149
|
//#endregion
|
|
1150
1150
|
//#region src/api/fetch.d.ts
|
|
1151
1151
|
/**
|
|
1152
|
-
* Fetch the integration manifest from GitHub or local path
|
|
1152
|
+
* Fetch the integration manifest from GitHub or local path (with caching for remote)
|
|
1153
1153
|
*/
|
|
1154
1154
|
declare function fetchManifest(baseUrl?: string): Promise<Manifest>;
|
|
1155
1155
|
/**
|
|
1156
|
-
* Fetch integration info.json from GitHub or local path
|
|
1156
|
+
* Fetch integration info.json from GitHub or local path (with caching for remote)
|
|
1157
1157
|
*/
|
|
1158
1158
|
declare function fetchIntegrationInfo(integrationId: string, baseUrl?: string): Promise<IntegrationInfo>;
|
|
1159
1159
|
/**
|
|
1160
|
-
* Fetch all files for an integration from GitHub or local path
|
|
1160
|
+
* Fetch all files for an integration from GitHub or local path (with caching for remote)
|
|
1161
1161
|
*/
|
|
1162
1162
|
declare function fetchIntegrationFiles(integrationId: string, baseUrl?: string): Promise<Record<string, string>>;
|
|
1163
1163
|
/**
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { A as writeConfigFile, C as IntegrationTypeSchema, D as RouterModeSchema, E as RouteSchema, M as compileWithAttribution, N as processTemplateFile, O as CONFIG_FILE, P as relativePath, S as IntegrationPhaseSchema, T as ManifestSchema, _ as HookSchema, a as initIntegration, b as IntegrationOptionSchema, c as fetchIntegrationFiles, d as fetchManifest, f as CategorySchema, g as EnvVarSchema, h as CustomTemplateInfoSchema, i as compileIntegration, j as compile, k as readConfigFile, l as fetchIntegrationInfo, m as CustomTemplateCompiledSchema, n as initTemplate, o as loadRemoteIntegration, p as CommandSchema, r as loadTemplate, s as fetchIntegration, t as compileTemplate, u as fetchIntegrations, v as IntegrationCompiledSchema, w as ManifestIntegrationSchema, x as IntegrationOptionsSchema, y as IntegrationInfoSchema } from "./template-
|
|
1
|
+
import { A as writeConfigFile, C as IntegrationTypeSchema, D as RouterModeSchema, E as RouteSchema, M as compileWithAttribution, N as processTemplateFile, O as CONFIG_FILE, P as relativePath, S as IntegrationPhaseSchema, T as ManifestSchema, _ as HookSchema, a as initIntegration, b as IntegrationOptionSchema, c as fetchIntegrationFiles, d as fetchManifest, f as CategorySchema, g as EnvVarSchema, h as CustomTemplateInfoSchema, i as compileIntegration, j as compile, k as readConfigFile, l as fetchIntegrationInfo, m as CustomTemplateCompiledSchema, n as initTemplate, o as loadRemoteIntegration, p as CommandSchema, r as loadTemplate, s as fetchIntegration, t as compileTemplate, u as fetchIntegrations, v as IntegrationCompiledSchema, w as ManifestIntegrationSchema, x as IntegrationOptionsSchema, y as IntegrationInfoSchema } from "./template-BgEATWaG.mjs";
|
|
2
2
|
|
|
3
3
|
export { CONFIG_FILE, CategorySchema, CommandSchema, CustomTemplateCompiledSchema, CustomTemplateInfoSchema, EnvVarSchema, HookSchema, IntegrationCompiledSchema, IntegrationInfoSchema, IntegrationOptionSchema, IntegrationOptionsSchema, IntegrationPhaseSchema, IntegrationTypeSchema, ManifestIntegrationSchema, ManifestSchema, RouteSchema, RouterModeSchema, compile, compileIntegration, compileTemplate, compileWithAttribution, fetchIntegration, fetchIntegrationFiles, fetchIntegrationInfo, fetchIntegrations, fetchManifest, initIntegration, initTemplate, loadRemoteIntegration, loadTemplate, processTemplateFile, readConfigFile, relativePath, writeConfigFile };
|
|
@@ -34,6 +34,7 @@ let ignore = require("ignore");
|
|
|
34
34
|
ignore = __toESM(ignore);
|
|
35
35
|
let parse_gitignore = require("parse-gitignore");
|
|
36
36
|
parse_gitignore = __toESM(parse_gitignore);
|
|
37
|
+
let node_os = require("node:os");
|
|
37
38
|
|
|
38
39
|
//#region src/engine/template.ts
|
|
39
40
|
/**
|
|
@@ -1383,6 +1384,7 @@ ${packageManager}${packageManager === "npm" ? " run" : ""} dev
|
|
|
1383
1384
|
- [TanStack Start Documentation](https://tanstack.com/start)
|
|
1384
1385
|
- [TanStack Router Documentation](https://tanstack.com/router)
|
|
1385
1386
|
`;
|
|
1387
|
+
files[".nvmrc"] = "23";
|
|
1386
1388
|
return files;
|
|
1387
1389
|
}
|
|
1388
1390
|
/**
|
|
@@ -1490,8 +1492,8 @@ function buildPackageJson(options, packages) {
|
|
|
1490
1492
|
"@tanstack/react-router": "^1.132.0",
|
|
1491
1493
|
"@tanstack/react-router-devtools": "^1.132.0",
|
|
1492
1494
|
"@tanstack/react-start": "^1.132.0",
|
|
1493
|
-
react: "^19.
|
|
1494
|
-
"react-dom": "^19.
|
|
1495
|
+
react: "^19.2.0",
|
|
1496
|
+
"react-dom": "^19.2.0",
|
|
1495
1497
|
"vite-tsconfig-paths": "^5.1.4",
|
|
1496
1498
|
...hasHeader ? { "lucide-react": "^0.468.0" } : {},
|
|
1497
1499
|
...packages.dependencies
|
|
@@ -1500,8 +1502,8 @@ function buildPackageJson(options, packages) {
|
|
|
1500
1502
|
"@vitejs/plugin-react": "^4.4.1",
|
|
1501
1503
|
vite: "^7.0.0",
|
|
1502
1504
|
...options.typescript ? {
|
|
1503
|
-
"@types/react": "^19.
|
|
1504
|
-
"@types/react-dom": "^19.
|
|
1505
|
+
"@types/react": "^19.2.0",
|
|
1506
|
+
"@types/react-dom": "^19.2.0",
|
|
1505
1507
|
typescript: "^5.7.0"
|
|
1506
1508
|
} : {},
|
|
1507
1509
|
...options.tailwind ? {
|
|
@@ -1925,7 +1927,7 @@ const IntegrationInfoSchema = zod.z.object({
|
|
|
1925
1927
|
requiresTailwind: zod.z.boolean().optional(),
|
|
1926
1928
|
demoRequiresTailwind: zod.z.boolean().optional(),
|
|
1927
1929
|
dependsOn: zod.z.array(zod.z.string()).optional(),
|
|
1928
|
-
|
|
1930
|
+
exclusive: zod.z.array(zod.z.string()).optional(),
|
|
1929
1931
|
partnerId: zod.z.string().optional(),
|
|
1930
1932
|
options: IntegrationOptionsSchema.optional(),
|
|
1931
1933
|
hooks: zod.z.array(HookSchema).optional(),
|
|
@@ -1972,7 +1974,7 @@ const ManifestIntegrationSchema = zod.z.object({
|
|
|
1972
1974
|
category: CategorySchema.optional(),
|
|
1973
1975
|
modes: zod.z.array(RouterModeSchema),
|
|
1974
1976
|
dependsOn: zod.z.array(zod.z.string()).optional(),
|
|
1975
|
-
|
|
1977
|
+
exclusive: zod.z.array(zod.z.string()).optional(),
|
|
1976
1978
|
partnerId: zod.z.string().optional(),
|
|
1977
1979
|
hasOptions: zod.z.boolean().optional(),
|
|
1978
1980
|
link: zod.z.string().optional(),
|
|
@@ -1995,9 +1997,50 @@ const ManifestSchema = zod.z.object({
|
|
|
1995
1997
|
customTemplates: zod.z.array(ManifestCustomTemplateSchema).optional()
|
|
1996
1998
|
});
|
|
1997
1999
|
|
|
2000
|
+
//#endregion
|
|
2001
|
+
//#region src/cache/index.ts
|
|
2002
|
+
const CACHE_DIR = (0, node_path.join)((0, node_os.homedir)(), ".tanstack", "cache");
|
|
2003
|
+
const DEFAULT_TTL_MS = 1440 * 60 * 1e3;
|
|
2004
|
+
function ensureCacheDir() {
|
|
2005
|
+
if (!(0, node_fs.existsSync)(CACHE_DIR)) (0, node_fs.mkdirSync)(CACHE_DIR, { recursive: true });
|
|
2006
|
+
}
|
|
2007
|
+
function getCachePath(key) {
|
|
2008
|
+
return (0, node_path.join)(CACHE_DIR, `${key.replace(/[^a-zA-Z0-9-_]/g, "_")}.json`);
|
|
2009
|
+
}
|
|
2010
|
+
function getCached(key) {
|
|
2011
|
+
const cachePath = getCachePath(key);
|
|
2012
|
+
if (!(0, node_fs.existsSync)(cachePath)) return null;
|
|
2013
|
+
try {
|
|
2014
|
+
const raw = (0, node_fs.readFileSync)(cachePath, "utf-8");
|
|
2015
|
+
const entry = JSON.parse(raw);
|
|
2016
|
+
if (Date.now() - entry.timestamp > entry.ttl) return null;
|
|
2017
|
+
return entry.data;
|
|
2018
|
+
} catch {
|
|
2019
|
+
return null;
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
function setCache(key, data, ttlMs = DEFAULT_TTL_MS) {
|
|
2023
|
+
ensureCacheDir();
|
|
2024
|
+
const cachePath = getCachePath(key);
|
|
2025
|
+
const entry = {
|
|
2026
|
+
data,
|
|
2027
|
+
timestamp: Date.now(),
|
|
2028
|
+
ttl: ttlMs
|
|
2029
|
+
};
|
|
2030
|
+
(0, node_fs.writeFileSync)(cachePath, JSON.stringify(entry, null, 2), "utf-8");
|
|
2031
|
+
}
|
|
2032
|
+
async function fetchWithCache(key, fetcher, ttlMs = DEFAULT_TTL_MS) {
|
|
2033
|
+
const cached = getCached(key);
|
|
2034
|
+
if (cached !== null) return cached;
|
|
2035
|
+
const data = await fetcher();
|
|
2036
|
+
setCache(key, data, ttlMs);
|
|
2037
|
+
return data;
|
|
2038
|
+
}
|
|
2039
|
+
|
|
1998
2040
|
//#endregion
|
|
1999
2041
|
//#region src/api/fetch.ts
|
|
2000
2042
|
const GITHUB_RAW_BASE = "https://raw.githubusercontent.com/TanStack/cli/main/integrations";
|
|
2043
|
+
const CACHE_TTL_MS = 3600 * 1e3;
|
|
2001
2044
|
/**
|
|
2002
2045
|
* Check if a path is a local directory
|
|
2003
2046
|
*/
|
|
@@ -2005,36 +2048,40 @@ function isLocalPath(path) {
|
|
|
2005
2048
|
return path.startsWith("/") || path.startsWith("./") || path.startsWith("..");
|
|
2006
2049
|
}
|
|
2007
2050
|
/**
|
|
2008
|
-
* Fetch the integration manifest from GitHub or local path
|
|
2051
|
+
* Fetch the integration manifest from GitHub or local path (with caching for remote)
|
|
2009
2052
|
*/
|
|
2010
2053
|
async function fetchManifest(baseUrl = GITHUB_RAW_BASE) {
|
|
2011
2054
|
if (isLocalPath(baseUrl)) {
|
|
2012
2055
|
const manifestPath = (0, node_path.join)(baseUrl, "manifest.json");
|
|
2013
2056
|
if (!(0, node_fs.existsSync)(manifestPath)) throw new Error(`Manifest not found at ${manifestPath}`);
|
|
2014
|
-
const data
|
|
2015
|
-
return ManifestSchema.parse(data
|
|
2057
|
+
const data = JSON.parse((0, node_fs.readFileSync)(manifestPath, "utf-8"));
|
|
2058
|
+
return ManifestSchema.parse(data);
|
|
2016
2059
|
}
|
|
2017
|
-
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
|
|
2060
|
+
return fetchWithCache(`manifest_${baseUrl.replace(/[^a-zA-Z0-9]/g, "_")}`, async () => {
|
|
2061
|
+
const url = `${baseUrl}/manifest.json`;
|
|
2062
|
+
const response = await fetch(url);
|
|
2063
|
+
if (!response.ok) throw new Error(`Failed to fetch manifest: ${response.statusText}`);
|
|
2064
|
+
const data = await response.json();
|
|
2065
|
+
return ManifestSchema.parse(data);
|
|
2066
|
+
}, CACHE_TTL_MS);
|
|
2022
2067
|
}
|
|
2023
2068
|
/**
|
|
2024
|
-
* Fetch integration info.json from GitHub or local path
|
|
2069
|
+
* Fetch integration info.json from GitHub or local path (with caching for remote)
|
|
2025
2070
|
*/
|
|
2026
2071
|
async function fetchIntegrationInfo(integrationId, baseUrl = GITHUB_RAW_BASE) {
|
|
2027
2072
|
if (isLocalPath(baseUrl)) {
|
|
2028
2073
|
const infoPath = (0, node_path.join)(baseUrl, integrationId, "info.json");
|
|
2029
2074
|
if (!(0, node_fs.existsSync)(infoPath)) throw new Error(`Integration info not found at ${infoPath}`);
|
|
2030
|
-
const data
|
|
2031
|
-
return IntegrationInfoSchema.parse(data
|
|
2075
|
+
const data = JSON.parse((0, node_fs.readFileSync)(infoPath, "utf-8"));
|
|
2076
|
+
return IntegrationInfoSchema.parse(data);
|
|
2032
2077
|
}
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2078
|
+
return fetchWithCache(`integration_info_${integrationId}_${baseUrl.replace(/[^a-zA-Z0-9]/g, "_")}`, async () => {
|
|
2079
|
+
const url = `${baseUrl}/${integrationId}/info.json`;
|
|
2080
|
+
const response = await fetch(url);
|
|
2081
|
+
if (!response.ok) throw new Error(`Failed to fetch integration ${integrationId}: ${response.statusText}`);
|
|
2082
|
+
const data = await response.json();
|
|
2083
|
+
return IntegrationInfoSchema.parse(data);
|
|
2084
|
+
}, CACHE_TTL_MS);
|
|
2038
2085
|
}
|
|
2039
2086
|
/**
|
|
2040
2087
|
* Recursively read all files from a directory
|
|
@@ -2051,21 +2098,23 @@ function readDirRecursive(dir, basePath = "") {
|
|
|
2051
2098
|
return files;
|
|
2052
2099
|
}
|
|
2053
2100
|
/**
|
|
2054
|
-
* Fetch all files for an integration from GitHub or local path
|
|
2101
|
+
* Fetch all files for an integration from GitHub or local path (with caching for remote)
|
|
2055
2102
|
*/
|
|
2056
2103
|
async function fetchIntegrationFiles(integrationId, baseUrl = GITHUB_RAW_BASE) {
|
|
2057
2104
|
if (isLocalPath(baseUrl)) return readDirRecursive((0, node_path.join)(baseUrl, integrationId, "assets"));
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2061
|
-
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2105
|
+
return fetchWithCache(`integration_files_${integrationId}_${baseUrl.replace(/[^a-zA-Z0-9]/g, "_")}`, async () => {
|
|
2106
|
+
const filesUrl = `${baseUrl}/${integrationId}/files.json`;
|
|
2107
|
+
const response = await fetch(filesUrl);
|
|
2108
|
+
if (!response.ok) return {};
|
|
2109
|
+
const fileList = await response.json();
|
|
2110
|
+
const files = {};
|
|
2111
|
+
await Promise.all(fileList.map(async (filePath) => {
|
|
2112
|
+
const fileUrl = `${baseUrl}/${integrationId}/assets/${filePath}`;
|
|
2113
|
+
const fileResponse = await fetch(fileUrl);
|
|
2114
|
+
if (fileResponse.ok) files[filePath] = await fileResponse.text();
|
|
2115
|
+
}));
|
|
2116
|
+
return files;
|
|
2117
|
+
}, CACHE_TTL_MS);
|
|
2069
2118
|
}
|
|
2070
2119
|
/**
|
|
2071
2120
|
* Fetch integration package.json if it exists
|