@wallavi/vercel-build 0.1.1 → 0.1.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/index.d.ts +403 -12
- package/dist/index.js +381 -47
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -92,6 +92,19 @@ declare function ejecutarIgnorar(opciones: OpcionesIgnorar): number;
|
|
|
92
92
|
declare function comandoIgnorar(args: string[], entorno: Entorno): number;
|
|
93
93
|
declare const ignorar: typeof comandoIgnorar;
|
|
94
94
|
|
|
95
|
+
interface ArgumentosDesplegar {
|
|
96
|
+
carpeta: string;
|
|
97
|
+
antes?: string;
|
|
98
|
+
urlSalud?: string;
|
|
99
|
+
}
|
|
100
|
+
declare function leerArgumentosDesplegar(args: readonly string[]): {
|
|
101
|
+
ok: true;
|
|
102
|
+
valor: ArgumentosDesplegar;
|
|
103
|
+
} | {
|
|
104
|
+
ok: false;
|
|
105
|
+
motivo: string;
|
|
106
|
+
};
|
|
107
|
+
|
|
95
108
|
declare const API_VERCEL_URL = "https://api.vercel.com";
|
|
96
109
|
declare const LIMITE_PAGINA_VERCEL = 100;
|
|
97
110
|
declare const MAX_PAGINAS_VERCEL = 1000;
|
|
@@ -918,7 +931,8 @@ interface RespuestaHttp {
|
|
|
918
931
|
estado: number;
|
|
919
932
|
cuerpo: string;
|
|
920
933
|
}
|
|
921
|
-
type
|
|
934
|
+
type MetodoHttpVercel = "GET" | "POST";
|
|
935
|
+
type SolicitarVercel = (url: string, headers: Record<string, string>, metodo?: MetodoHttpVercel) => RespuestaHttp;
|
|
922
936
|
declare const solicitarVercel: SolicitarVercel;
|
|
923
937
|
declare function pedirJsonVercel(rutaQuery: string, token: string, solicitar?: SolicitarVercel, baseUrl?: string): {
|
|
924
938
|
estado: number;
|
|
@@ -955,22 +969,394 @@ declare function ejecutarMedir(opciones: OpcionesMedir): number;
|
|
|
955
969
|
declare function comandoMedir(args: string[], entorno: Entorno): number;
|
|
956
970
|
declare const medir: typeof comandoMedir;
|
|
957
971
|
|
|
958
|
-
declare const
|
|
959
|
-
declare const
|
|
960
|
-
|
|
961
|
-
declare const
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
972
|
+
declare const INTERVALO_POLL_DEPLOY_MS = 5000;
|
|
973
|
+
declare const TIMEOUT_POLL_DEPLOY_MS = 600000;
|
|
974
|
+
type Dormir = (ms: number) => void;
|
|
975
|
+
declare const dormirSincrono: Dormir;
|
|
976
|
+
declare const esquemaDeploymentPromocion: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
977
|
+
id: z.ZodOptional<z.ZodString>;
|
|
978
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
979
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
980
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
981
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
982
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
983
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
984
|
+
url: z.ZodOptional<z.ZodString>;
|
|
985
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
986
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
987
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
988
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
989
|
+
id: z.ZodOptional<z.ZodString>;
|
|
990
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
991
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
992
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
993
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
994
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
995
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
996
|
+
url: z.ZodOptional<z.ZodString>;
|
|
997
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
998
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
999
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1000
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1001
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1002
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1003
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1004
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1005
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1006
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1007
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1008
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1009
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1010
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1011
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1012
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
1013
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1014
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1015
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1016
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1017
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1018
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1019
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1020
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1021
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1022
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1023
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1024
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1025
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1026
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1027
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1028
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1029
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1030
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1031
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1032
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1033
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1034
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1035
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1036
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
1037
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1038
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1039
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1040
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1041
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1042
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1043
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1044
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1045
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1046
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1047
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1048
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1049
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1050
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1051
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1052
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1053
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1054
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1055
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1056
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1057
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1058
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1059
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1060
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
1061
|
+
declare const esquemaListaDeploymentsPromocion: z.ZodObject<{
|
|
1062
|
+
deployments: z.ZodArray<z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
1063
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1064
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1065
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1066
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1067
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1068
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1069
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1070
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1071
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1072
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1073
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1074
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
1075
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1076
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1077
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1078
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1079
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1080
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1081
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1082
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1083
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1084
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1085
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1086
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1087
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1088
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1089
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1090
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1091
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1092
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1093
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1094
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1095
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1096
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1097
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1098
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
1099
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1100
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1101
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1102
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1103
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1104
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1105
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1106
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1107
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1108
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1109
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1110
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1111
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1112
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1113
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1114
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1115
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1116
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1117
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1118
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1119
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1120
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1121
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1122
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
1123
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1124
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1125
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1126
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1127
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1128
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1129
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1130
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1131
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1132
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1133
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1134
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1135
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1136
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1137
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1138
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1139
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1140
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1141
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1142
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1143
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1144
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1145
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1146
|
+
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
1147
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
1148
|
+
deployments: z.ZodArray<z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
1149
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1150
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1151
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1152
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1153
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1154
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1155
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1156
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1157
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1158
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1159
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1160
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
1161
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1162
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1163
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1164
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1165
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1166
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1167
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1168
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1169
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1170
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1171
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1172
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1173
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1174
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1175
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1176
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1177
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1178
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1179
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1180
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1181
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1182
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1183
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1184
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
1185
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1186
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1187
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1188
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1189
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1190
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1191
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1192
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1193
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1194
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1195
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1196
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1197
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1198
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1199
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1200
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1201
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1202
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1203
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1204
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1205
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1206
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1207
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1208
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
1209
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1210
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1211
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1212
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1213
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1214
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1215
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1216
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1217
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1218
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1219
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1220
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1221
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1222
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1223
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1224
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1225
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1226
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1227
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1228
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1229
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1230
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1231
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1232
|
+
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
1233
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1234
|
+
deployments: z.ZodArray<z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
1235
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1236
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1237
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1238
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1239
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1240
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1241
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1242
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1243
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1244
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1245
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1246
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
1247
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1248
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1249
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1250
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1251
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1252
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1253
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1254
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1255
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1256
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1257
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1258
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1259
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1260
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1261
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1262
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1263
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1264
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1265
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1266
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1267
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1268
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1269
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1270
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
1271
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1272
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1273
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1274
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1275
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1276
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1277
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1278
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1279
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1280
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1281
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1282
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1283
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1284
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1285
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1286
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1287
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1288
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1289
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1290
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1291
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1292
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1293
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1294
|
+
}, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
|
|
1295
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1296
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1297
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1298
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1299
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1300
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1301
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1302
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1303
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1304
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1305
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1306
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
1307
|
+
id: z.ZodOptional<z.ZodString>;
|
|
1308
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
1309
|
+
projectId: z.ZodOptional<z.ZodString>;
|
|
1310
|
+
target: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
1311
|
+
state: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1312
|
+
readyState: z.ZodOptional<z.ZodEnum<["BUILDING", "ERROR", "INITIALIZING", "QUEUED", "READY", "CANCELED"]>>;
|
|
1313
|
+
readySubstate: z.ZodOptional<z.ZodString>;
|
|
1314
|
+
url: z.ZodOptional<z.ZodString>;
|
|
1315
|
+
alias: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>>;
|
|
1316
|
+
aliases: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
1317
|
+
meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1318
|
+
}, z.ZodTypeAny, "passthrough">>, "many">;
|
|
1319
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
1320
|
+
type DeploymentPromocion = z.infer<typeof esquemaDeploymentPromocion>;
|
|
1321
|
+
declare function limpiarIdOUrlDeploy(valor: string): string | null;
|
|
1322
|
+
declare function extraerIdOUrlDeploy(salida: string, error?: string): string | null;
|
|
1323
|
+
declare function extraerAliasProduccion(deployment: DeploymentPromocion): string | null;
|
|
1324
|
+
interface OpcionesPromover {
|
|
1325
|
+
teamId?: string;
|
|
1326
|
+
projectId?: string;
|
|
1327
|
+
token?: string;
|
|
1328
|
+
sha?: string;
|
|
1329
|
+
urlDeploy?: string | null;
|
|
1330
|
+
salidaDeploy?: string;
|
|
1331
|
+
errorDeploy?: string;
|
|
1332
|
+
cwd?: string;
|
|
1333
|
+
carpeta?: string;
|
|
1334
|
+
env?: NodeJS.ProcessEnv;
|
|
1335
|
+
ejecutar?: Ejecutar;
|
|
1336
|
+
solicitar?: SolicitarVercel;
|
|
1337
|
+
dormir?: Dormir;
|
|
1338
|
+
intervaloMs?: number;
|
|
1339
|
+
timeoutMs?: number;
|
|
1340
|
+
maxIntentos?: number;
|
|
1341
|
+
baseUrl?: string;
|
|
966
1342
|
}
|
|
967
|
-
|
|
1343
|
+
type ResultadoPromocion = {
|
|
968
1344
|
ok: true;
|
|
969
|
-
|
|
1345
|
+
codigo: 0;
|
|
1346
|
+
deploymentId: string;
|
|
1347
|
+
alias: string | null;
|
|
1348
|
+
url: string | null;
|
|
970
1349
|
} | {
|
|
971
1350
|
ok: false;
|
|
1351
|
+
codigo: 1;
|
|
972
1352
|
motivo: string;
|
|
973
1353
|
};
|
|
1354
|
+
declare function esperarYPromoverDeploy(opciones: OpcionesPromover): ResultadoPromocion;
|
|
1355
|
+
|
|
1356
|
+
declare const VARIABLES_VERCEL: readonly ["VERCEL_TOKEN", "VERCEL_ORG_ID", "VERCEL_PROJECT_ID"];
|
|
1357
|
+
declare const PASOS_VERCEL: readonly [readonly ["pull", "--yes", "--environment=production"], readonly ["build", "--prod"], readonly ["deploy", "--prebuilt", "--prod"]];
|
|
1358
|
+
declare const PASO_DEPLOY_REMOTO: readonly ["deploy", "--prod", "--yes", "--no-wait"];
|
|
1359
|
+
declare const ARCHIVO_ENV_PRODUCCION: string;
|
|
974
1360
|
declare function tieneVariablesSensibles(carpeta: string): boolean;
|
|
975
1361
|
declare function extraerUrlSalud(salida: string, error?: string): string | null;
|
|
976
1362
|
interface OpcionesDesplegar extends Entorno {
|
|
@@ -980,6 +1366,11 @@ interface OpcionesDesplegar extends Entorno {
|
|
|
980
1366
|
ejecutar?: Ejecutar;
|
|
981
1367
|
evaluar?: (opciones: OpcionesCambios) => Evaluacion;
|
|
982
1368
|
solicitar?: SolicitarVercel;
|
|
1369
|
+
dormir?: Dormir;
|
|
1370
|
+
intervaloPollMs?: number;
|
|
1371
|
+
timeoutPollMs?: number;
|
|
1372
|
+
maxIntentosPoll?: number;
|
|
1373
|
+
baseUrl?: string;
|
|
983
1374
|
}
|
|
984
1375
|
declare function ejecutarDesplegar(opciones: OpcionesDesplegar): number;
|
|
985
1376
|
declare function comandoDesplegar(args: string[], entorno: Entorno): number;
|
|
@@ -1291,4 +1682,4 @@ type Comando = (args: string[], entorno: Entorno) => number;
|
|
|
1291
1682
|
declare const COMANDOS: Record<string, Comando>;
|
|
1292
1683
|
declare function principal(argv: string[], entorno: Entorno): number;
|
|
1293
1684
|
|
|
1294
|
-
export { API_VERCEL_URL, ARCHIVO_CAPTURA_V6, ARCHIVO_CONFIG, ARCHIVO_DEPLOYMENTS_V6, ARCHIVO_ENV_PRODUCCION, type ArgumentosCapturar, type ArgumentosDesplegar, type ArgumentosMedir, COMANDOS, type CapturaV6, type Comando, type ConfigVercelBuild, type DeploymentVercel, type DiaMinutos, ESTADOS_DEPLOYMENT, type Ejecutar, type Entorno, type EquipoVercel, ErrorContratoVercel, ErrorRedVercel, type Evaluacion, LIMITE_PAGINA_VERCEL, MAX_PAGINAS_VERCEL, type OpcionesCambios, type OpcionesCapturar, type OpcionesDesplegar, type OpcionesIgnorar, type OpcionesMedir, type OpcionesProceso, PASOS_VERCEL, PASO_DEPLOY_REMOTO, PREFIJO_PREVIEW, type PaginaDeployments, type PaginaTeams, type PaginacionVercel, type PedidoCaptura, type ProyectoVercelBuild, RAMA_PRINCIPAL, REFERENCIA_DEPLOYMENTS_V6, type RespuestaHttp, type Resultado, type ResultadoDeployments, type ResultadoProceso, type SolicitarVercel, USO, VARIABLES_VERCEL, armarCapturaV6, calcularMinutosPorDia, capturar, comandoCapturar, comandoDesplegar, comandoIgnorar, comandoMedir, comandoTurbo, configVacia, consultarDeployments, desplegar, ejecutar, ejecutarCapturar, ejecutarDesplegar, ejecutarIgnorar, ejecutarMedir, esquemaArchivoDeployments, esquemaCapturaV6, esquemaConfig, esquemaDeployment, esquemaEquipo, esquemaEstadoDeployment, esquemaPaginaDeployments, esquemaPaginaTeams, esquemaPaginacion, esquemaPedidoCaptura, evaluarCambios, extraerUrlSalud, ignorar, leerArgumentosCapturar, leerArgumentosDesplegar, leerArgumentosMedir, leerConfig, leerFlagsCli, leerRespuestaDeployments, medir, normalizarCarpeta, paquetesDeTurbo, pedirJsonVercel, principal, proyectoDeCarpeta, ramaPermitida, rangoFechasUtc, redactarToken, resolverEquipo, solicitarVercel, tieneVariablesSensibles, ubicarEnRepo, validarConfig, validarFechaIso };
|
|
1685
|
+
export { API_VERCEL_URL, ARCHIVO_CAPTURA_V6, ARCHIVO_CONFIG, ARCHIVO_DEPLOYMENTS_V6, ARCHIVO_ENV_PRODUCCION, type ArgumentosCapturar, type ArgumentosDesplegar, type ArgumentosMedir, COMANDOS, type CapturaV6, type Comando, type ConfigVercelBuild, type DeploymentPromocion, type DeploymentVercel, type DiaMinutos, type Dormir, ESTADOS_DEPLOYMENT, type Ejecutar, type Entorno, type EquipoVercel, ErrorContratoVercel, ErrorRedVercel, type Evaluacion, INTERVALO_POLL_DEPLOY_MS, LIMITE_PAGINA_VERCEL, MAX_PAGINAS_VERCEL, type MetodoHttpVercel, type OpcionesCambios, type OpcionesCapturar, type OpcionesDesplegar, type OpcionesIgnorar, type OpcionesMedir, type OpcionesProceso, type OpcionesPromover, PASOS_VERCEL, PASO_DEPLOY_REMOTO, PREFIJO_PREVIEW, type PaginaDeployments, type PaginaTeams, type PaginacionVercel, type PedidoCaptura, type ProyectoVercelBuild, RAMA_PRINCIPAL, REFERENCIA_DEPLOYMENTS_V6, type RespuestaHttp, type Resultado, type ResultadoDeployments, type ResultadoProceso, type ResultadoPromocion, type SolicitarVercel, TIMEOUT_POLL_DEPLOY_MS, USO, VARIABLES_VERCEL, armarCapturaV6, calcularMinutosPorDia, capturar, comandoCapturar, comandoDesplegar, comandoIgnorar, comandoMedir, comandoTurbo, configVacia, consultarDeployments, desplegar, dormirSincrono, ejecutar, ejecutarCapturar, ejecutarDesplegar, ejecutarIgnorar, ejecutarMedir, esperarYPromoverDeploy, esquemaArchivoDeployments, esquemaCapturaV6, esquemaConfig, esquemaDeployment, esquemaDeploymentPromocion, esquemaEquipo, esquemaEstadoDeployment, esquemaListaDeploymentsPromocion, esquemaPaginaDeployments, esquemaPaginaTeams, esquemaPaginacion, esquemaPedidoCaptura, evaluarCambios, extraerAliasProduccion, extraerIdOUrlDeploy, extraerUrlSalud, ignorar, leerArgumentosCapturar, leerArgumentosDesplegar, leerArgumentosMedir, leerConfig, leerFlagsCli, leerRespuestaDeployments, limpiarIdOUrlDeploy, medir, normalizarCarpeta, paquetesDeTurbo, pedirJsonVercel, principal, proyectoDeCarpeta, ramaPermitida, rangoFechasUtc, redactarToken, resolverEquipo, solicitarVercel, tieneVariablesSensibles, ubicarEnRepo, validarConfig, validarFechaIso };
|
package/dist/index.js
CHANGED
|
@@ -91,13 +91,13 @@ var esquemaArchivoDeployments = zod.z.object({
|
|
|
91
91
|
paginas: zod.z.array(esquemaPaginaDeployments).min(1)
|
|
92
92
|
}).passthrough();
|
|
93
93
|
var SCRIPT_FETCH = [
|
|
94
|
-
"const [u] = process.argv.slice(1), h = require('node:fs').readFileSync(0, 'utf8');",
|
|
95
|
-
"fetch(u, { method:
|
|
94
|
+
"const [u, m = 'GET'] = process.argv.slice(1), h = require('node:fs').readFileSync(0, 'utf8');",
|
|
95
|
+
"fetch(u, { method: m, headers: JSON.parse(h) })",
|
|
96
96
|
" .then(async (r) => process.stdout.write(JSON.stringify({ estado: r.status, cuerpo: await r.text() })))",
|
|
97
97
|
" .catch((e) => { process.stderr.write(String(e?.message || e)); process.exit(1); });"
|
|
98
98
|
].join("\n");
|
|
99
|
-
var solicitarVercel = (url, headers) => {
|
|
100
|
-
const r = child_process.spawnSync(process.execPath, ["-e", SCRIPT_FETCH, url], {
|
|
99
|
+
var solicitarVercel = (url, headers, metodo = "GET") => {
|
|
100
|
+
const r = child_process.spawnSync(process.execPath, ["-e", SCRIPT_FETCH, url, metodo], {
|
|
101
101
|
input: JSON.stringify(headers),
|
|
102
102
|
shell: false,
|
|
103
103
|
encoding: "utf8",
|
|
@@ -113,26 +113,22 @@ var solicitarVercel = (url, headers) => {
|
|
|
113
113
|
function pedirJsonVercel(rutaQuery, token, solicitar = solicitarVercel, baseUrl = API_VERCEL_URL) {
|
|
114
114
|
let respuesta;
|
|
115
115
|
try {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
});
|
|
116
|
+
const headers = { Authorization: `Bearer ${token}` };
|
|
117
|
+
respuesta = solicitar(`${baseUrl}${rutaQuery}`, headers);
|
|
119
118
|
} catch (e) {
|
|
120
119
|
if (e instanceof ErrorRedVercel || e instanceof ErrorContratoVercel)
|
|
121
120
|
throw e;
|
|
122
121
|
throw new ErrorRedVercel(e.message);
|
|
123
122
|
}
|
|
124
123
|
if (respuesta.estado < 200 || respuesta.estado >= 300) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
respuesta.estado
|
|
128
|
-
);
|
|
124
|
+
const msg = `HTTP ${respuesta.estado} en GET ${rutaQuery}`;
|
|
125
|
+
throw new ErrorRedVercel(msg, respuesta.estado);
|
|
129
126
|
}
|
|
130
127
|
try {
|
|
131
128
|
return { estado: respuesta.estado, valor: JSON.parse(respuesta.cuerpo) };
|
|
132
129
|
} catch (e) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
);
|
|
130
|
+
const msg = `JSON inv\xE1lido en GET ${rutaQuery}: ${e.message}`;
|
|
131
|
+
throw new ErrorContratoVercel(msg);
|
|
136
132
|
}
|
|
137
133
|
}
|
|
138
134
|
function resolverEquipo(equipo, token, solicitar = solicitarVercel, baseUrl = API_VERCEL_URL) {
|
|
@@ -233,12 +229,8 @@ function calcularMinutosPorDia(paginas, desde, hasta) {
|
|
|
233
229
|
};
|
|
234
230
|
}
|
|
235
231
|
function leerArgumentosMedir(args) {
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
"--desde",
|
|
239
|
-
"--hasta",
|
|
240
|
-
"--respuesta"
|
|
241
|
-
]);
|
|
232
|
+
const flags = ["--equipo", "--desde", "--hasta", "--respuesta"];
|
|
233
|
+
const f = leerFlagsCli(args, flags);
|
|
242
234
|
if (!f.ok) return f;
|
|
243
235
|
const { equipo, desde, hasta, respuesta } = f.valores;
|
|
244
236
|
if (!equipo) return { ok: false, motivo: "falta --equipo <slug|team_id>" };
|
|
@@ -585,12 +577,12 @@ function ejecutar(comando, args, opciones) {
|
|
|
585
577
|
maxBuffer: 64 * 1024 * 1024,
|
|
586
578
|
stdio: opciones.heredar ? "inherit" : "pipe"
|
|
587
579
|
});
|
|
588
|
-
const
|
|
580
|
+
const fallo2 = r.error?.message ?? (r.signal ? `termin\xF3 por la se\xF1al ${r.signal}` : void 0);
|
|
589
581
|
return {
|
|
590
582
|
codigo: r.status,
|
|
591
583
|
salida: r.stdout ?? "",
|
|
592
584
|
error: r.stderr ?? "",
|
|
593
|
-
...
|
|
585
|
+
...fallo2 ? { fallo: fallo2 } : {}
|
|
594
586
|
};
|
|
595
587
|
}
|
|
596
588
|
var incierto = (motivo) => ({
|
|
@@ -711,27 +703,7 @@ function evaluarCambios(opciones) {
|
|
|
711
703
|
};
|
|
712
704
|
}
|
|
713
705
|
|
|
714
|
-
// src/comandos/desplegar.ts
|
|
715
|
-
var VARIABLES_VERCEL = [
|
|
716
|
-
"VERCEL_TOKEN",
|
|
717
|
-
"VERCEL_ORG_ID",
|
|
718
|
-
"VERCEL_PROJECT_ID"
|
|
719
|
-
];
|
|
720
|
-
var PASOS_VERCEL = [
|
|
721
|
-
["pull", "--yes", "--environment=production"],
|
|
722
|
-
["build", "--prod"],
|
|
723
|
-
["deploy", "--prebuilt", "--prod"]
|
|
724
|
-
];
|
|
725
|
-
var PASO_DEPLOY_REMOTO = ["deploy", "--prod", "--yes"];
|
|
726
|
-
var ARCHIVO_ENV_PRODUCCION = path3__namespace.join(
|
|
727
|
-
".vercel",
|
|
728
|
-
".env.production.local"
|
|
729
|
-
);
|
|
730
|
-
var MARCADOR_SENSITIVE = "[SENSITIVE]";
|
|
731
|
-
var REGEX_ANSI = new RegExp(
|
|
732
|
-
`${String.fromCharCode(27)}\\[[0-9;]*[a-zA-Z]`,
|
|
733
|
-
"g"
|
|
734
|
-
);
|
|
706
|
+
// src/comandos/desplegar-argumentos.ts
|
|
735
707
|
function leerArgumentosDesplegar(args) {
|
|
736
708
|
let carpeta;
|
|
737
709
|
let antes;
|
|
@@ -779,14 +751,300 @@ function leerArgumentosDesplegar(args) {
|
|
|
779
751
|
}
|
|
780
752
|
};
|
|
781
753
|
}
|
|
754
|
+
var INTERVALO_POLL_DEPLOY_MS = 5e3;
|
|
755
|
+
var TIMEOUT_POLL_DEPLOY_MS = 6e5;
|
|
756
|
+
var REGEX_ANSI = new RegExp(
|
|
757
|
+
`${String.fromCharCode(27)}\\[[0-9;]*[a-zA-Z]`,
|
|
758
|
+
"g"
|
|
759
|
+
);
|
|
760
|
+
var dormirSincrono = (ms) => {
|
|
761
|
+
if (ms > 0) Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
762
|
+
};
|
|
763
|
+
var esquemaDeploymentPromocion = zod.z.object({
|
|
764
|
+
id: zod.z.string().min(1).optional(),
|
|
765
|
+
uid: zod.z.string().min(1).optional(),
|
|
766
|
+
projectId: zod.z.string().min(1).optional(),
|
|
767
|
+
target: zod.z.string().nullable().optional(),
|
|
768
|
+
state: esquemaEstadoDeployment.optional(),
|
|
769
|
+
readyState: esquemaEstadoDeployment.optional(),
|
|
770
|
+
readySubstate: zod.z.string().min(1).optional(),
|
|
771
|
+
url: zod.z.string().min(1).optional(),
|
|
772
|
+
alias: zod.z.union([zod.z.array(zod.z.string()), zod.z.string()]).optional(),
|
|
773
|
+
aliases: zod.z.array(zod.z.string()).optional(),
|
|
774
|
+
meta: zod.z.record(zod.z.unknown()).optional()
|
|
775
|
+
}).passthrough().refine((d) => d.id !== void 0 || d.uid !== void 0, {
|
|
776
|
+
message: "el deployment debe incluir id o uid"
|
|
777
|
+
}).refine((d) => d.state !== void 0 || d.readyState !== void 0, {
|
|
778
|
+
message: "el deployment debe incluir state o readyState"
|
|
779
|
+
});
|
|
780
|
+
var esquemaListaDeploymentsPromocion = zod.z.object({ deployments: zod.z.array(esquemaDeploymentPromocion) }).passthrough();
|
|
781
|
+
function limpiarIdOUrlDeploy(valor) {
|
|
782
|
+
const sinAnsi = valor.replace(REGEX_ANSI, "").trim();
|
|
783
|
+
const limpio = sinAnsi.replace(/^https?:\/\//i, "").replace(/[/?#].*$/, "").replace(/[.,;]+$/, "").trim();
|
|
784
|
+
return limpio || null;
|
|
785
|
+
}
|
|
786
|
+
function extraerIdOUrlDeploy(salida, error = "") {
|
|
787
|
+
const stdout = salida.replace(REGEX_ANSI, "");
|
|
788
|
+
const texto = `${error}
|
|
789
|
+
${salida}`.replace(REGEX_ANSI, "");
|
|
790
|
+
const urlStdout = /^\s*(https?:\/\/[^\s\]"')>]+)/im.exec(stdout)?.[1];
|
|
791
|
+
const produccion = /\bProduction\s*:\s*(https?:\/\/[^\s\]"')>]+)/i.exec(
|
|
792
|
+
texto
|
|
793
|
+
)?.[1];
|
|
794
|
+
const alias = /\bAlias(?:ed)?\s*:\s*(https?:\/\/[^\s\]"')>]+)/i.exec(
|
|
795
|
+
texto
|
|
796
|
+
)?.[1];
|
|
797
|
+
const candidata = urlStdout ?? produccion ?? alias;
|
|
798
|
+
if (candidata) {
|
|
799
|
+
const limpio = limpiarIdOUrlDeploy(candidata);
|
|
800
|
+
if (limpio && limpio !== "vercel.com") return limpio;
|
|
801
|
+
}
|
|
802
|
+
return /\b(dpl_[a-zA-Z0-9]+)\b/.exec(texto)?.[1] ?? null;
|
|
803
|
+
}
|
|
804
|
+
function normalizarUrlHttps(dominioOUrl) {
|
|
805
|
+
const limpio = dominioOUrl.trim().replace(/[.,;]+$/, "").replace(/\/+$/, "");
|
|
806
|
+
return /^https?:\/\//i.test(limpio) ? limpio : `https://${limpio}`;
|
|
807
|
+
}
|
|
808
|
+
function esDominioVercelApp(dominioOUrl) {
|
|
809
|
+
const host = dominioOUrl.trim().replace(/^https?:\/\//i, "").split("/")[0]?.toLowerCase() ?? "";
|
|
810
|
+
return host === "vercel.app" || host.endsWith(".vercel.app");
|
|
811
|
+
}
|
|
812
|
+
function extraerAliasProduccion(deployment) {
|
|
813
|
+
const crudos = [];
|
|
814
|
+
if (Array.isArray(deployment.alias)) crudos.push(...deployment.alias);
|
|
815
|
+
else if (typeof deployment.alias === "string") crudos.push(deployment.alias);
|
|
816
|
+
if (Array.isArray(deployment.aliases)) crudos.push(...deployment.aliases);
|
|
817
|
+
const candidatos = crudos.map((c) => c.trim()).filter(Boolean);
|
|
818
|
+
if (candidatos.length === 0) {
|
|
819
|
+
return deployment.url && !esDominioVercelApp(deployment.url) ? normalizarUrlHttps(deployment.url) : null;
|
|
820
|
+
}
|
|
821
|
+
const dominioPropio = candidatos.find((c) => !esDominioVercelApp(c));
|
|
822
|
+
return normalizarUrlHttps(dominioPropio ?? candidatos[0]);
|
|
823
|
+
}
|
|
824
|
+
function obtenerShaCommit(opc, ej) {
|
|
825
|
+
const explicito = opc.sha?.trim() || opc.env?.VERCEL_GIT_COMMIT_SHA?.trim();
|
|
826
|
+
if (explicito) return explicito;
|
|
827
|
+
const dirs = [opc.carpeta, opc.cwd].filter((d) => Boolean(d));
|
|
828
|
+
for (const dir of dirs) {
|
|
829
|
+
const raiz = ubicarEnRepo(dir, ej)?.raiz ?? dir;
|
|
830
|
+
const r = ej("git", ["rev-parse", "HEAD"], {
|
|
831
|
+
cwd: raiz,
|
|
832
|
+
...opc.env ? { env: opc.env } : {}
|
|
833
|
+
});
|
|
834
|
+
if (r.codigo === 0 && r.salida.trim() !== "") return r.salida.trim();
|
|
835
|
+
}
|
|
836
|
+
return null;
|
|
837
|
+
}
|
|
838
|
+
var err = (motivo) => ({ ok: false, motivo });
|
|
839
|
+
var fallo = (motivo) => ({
|
|
840
|
+
ok: false,
|
|
841
|
+
codigo: 1,
|
|
842
|
+
motivo
|
|
843
|
+
});
|
|
844
|
+
function llamarApiVercel(rutaQuery, ctx, metodo = "GET") {
|
|
845
|
+
let respuesta;
|
|
846
|
+
try {
|
|
847
|
+
const auth = { Authorization: `Bearer ${ctx.token}` };
|
|
848
|
+
respuesta = ctx.solicitar(`${ctx.baseUrl}${rutaQuery}`, auth, metodo);
|
|
849
|
+
} catch (e) {
|
|
850
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
851
|
+
return err(`fallo de red en ${metodo} ${rutaQuery} (${msg})`);
|
|
852
|
+
}
|
|
853
|
+
if (respuesta.estado < 200 || respuesta.estado >= 300) {
|
|
854
|
+
return err(`HTTP ${respuesta.estado} en ${metodo} ${rutaQuery}`);
|
|
855
|
+
}
|
|
856
|
+
return { ok: true, cuerpo: respuesta.cuerpo };
|
|
857
|
+
}
|
|
858
|
+
function validarIdentidadDeployment(d, ctx) {
|
|
859
|
+
const deploymentId = d.id ?? d.uid;
|
|
860
|
+
if (d.projectId !== void 0 && d.projectId !== ctx.projectId) {
|
|
861
|
+
return err(
|
|
862
|
+
`el deploy ${deploymentId} pertenece al proyecto ${d.projectId} y no a ${ctx.projectId}`
|
|
863
|
+
);
|
|
864
|
+
}
|
|
865
|
+
if (d.target !== void 0 && d.target !== null && d.target !== "production") {
|
|
866
|
+
return err(
|
|
867
|
+
`el deploy ${deploymentId} no es de producci\xF3n (target=${d.target})`
|
|
868
|
+
);
|
|
869
|
+
}
|
|
870
|
+
const shaMeta = typeof d.meta?.githubCommitSha === "string" ? d.meta.githubCommitSha.trim() : typeof d.meta?.gitCommitSha === "string" ? d.meta.gitCommitSha.trim() : "";
|
|
871
|
+
if (!shaMeta || shaMeta !== ctx.sha) {
|
|
872
|
+
return err(
|
|
873
|
+
`el deploy ${deploymentId} corresponde al SHA ${shaMeta || "desconocido"} y no a ${ctx.sha}`
|
|
874
|
+
);
|
|
875
|
+
}
|
|
876
|
+
return { ok: true, deploymentId };
|
|
877
|
+
}
|
|
878
|
+
function consultarDeploymentV13(idOrUrl, ctx) {
|
|
879
|
+
const ruta = `/v13/deployments/${encodeURIComponent(idOrUrl)}?${ctx.qTeam}`;
|
|
880
|
+
const resp = llamarApiVercel(ruta, ctx, "GET");
|
|
881
|
+
if (!resp.ok) return resp;
|
|
882
|
+
let json;
|
|
883
|
+
try {
|
|
884
|
+
json = JSON.parse(resp.cuerpo);
|
|
885
|
+
} catch (e) {
|
|
886
|
+
return err(`JSON inv\xE1lido en GET ${ruta} (${e.message})`);
|
|
887
|
+
}
|
|
888
|
+
const r = esquemaDeploymentPromocion.safeParse(json);
|
|
889
|
+
if (!r.success) {
|
|
890
|
+
return err(`respuesta inv\xE1lida en GET ${ruta} (${r.error.message})`);
|
|
891
|
+
}
|
|
892
|
+
const val = validarIdentidadDeployment(r.data, ctx);
|
|
893
|
+
if (!val.ok) return val;
|
|
894
|
+
return { ok: true, valor: r.data, deploymentId: val.deploymentId };
|
|
895
|
+
}
|
|
896
|
+
function esperarYPromoverDeploy(opciones) {
|
|
897
|
+
const ej = opciones.ejecutar ?? ejecutar;
|
|
898
|
+
const solicitar = opciones.solicitar ?? solicitarVercel;
|
|
899
|
+
const dormir = opciones.dormir ?? dormirSincrono;
|
|
900
|
+
const intervaloMs = opciones.intervaloMs ?? INTERVALO_POLL_DEPLOY_MS;
|
|
901
|
+
const timeoutMs = opciones.timeoutMs ?? TIMEOUT_POLL_DEPLOY_MS;
|
|
902
|
+
const maxIntentos = opciones.maxIntentos;
|
|
903
|
+
const token = opciones.token?.trim() || opciones.env?.VERCEL_TOKEN?.trim() || "";
|
|
904
|
+
const teamId = opciones.teamId?.trim() || opciones.env?.VERCEL_ORG_ID?.trim() || "";
|
|
905
|
+
const projectId = opciones.projectId?.trim() || opciones.env?.VERCEL_PROJECT_ID?.trim() || "";
|
|
906
|
+
const baseUrl = (opciones.baseUrl ?? opciones.env?.VERCEL_API_URL)?.trim() || API_VERCEL_URL;
|
|
907
|
+
if (!token || !teamId || !projectId) {
|
|
908
|
+
return fallo("faltan credenciales de Vercel para promover el deploy");
|
|
909
|
+
}
|
|
910
|
+
const sha = obtenerShaCommit(opciones, ej);
|
|
911
|
+
if (!sha) {
|
|
912
|
+
return fallo(
|
|
913
|
+
"no se pudo determinar el SHA actual para verificar el deploy"
|
|
914
|
+
);
|
|
915
|
+
}
|
|
916
|
+
const ctx = {
|
|
917
|
+
qTeam: `teamId=${encodeURIComponent(teamId)}`,
|
|
918
|
+
projectId,
|
|
919
|
+
sha,
|
|
920
|
+
token,
|
|
921
|
+
solicitar,
|
|
922
|
+
baseUrl
|
|
923
|
+
};
|
|
924
|
+
let idOrUrl = opciones.urlDeploy !== void 0 && opciones.urlDeploy !== null ? limpiarIdOUrlDeploy(opciones.urlDeploy) : extraerIdOUrlDeploy(
|
|
925
|
+
opciones.salidaDeploy ?? "",
|
|
926
|
+
opciones.errorDeploy ?? ""
|
|
927
|
+
);
|
|
928
|
+
let transcurridoMs = 0;
|
|
929
|
+
let intentos = 0;
|
|
930
|
+
let deployListo = null;
|
|
931
|
+
let deploymentId = "";
|
|
932
|
+
while (deployListo === null) {
|
|
933
|
+
intentos++;
|
|
934
|
+
let actual;
|
|
935
|
+
if (idOrUrl) {
|
|
936
|
+
const c = consultarDeploymentV13(idOrUrl, ctx);
|
|
937
|
+
if (!c.ok) return fallo(c.motivo);
|
|
938
|
+
actual = c.valor;
|
|
939
|
+
deploymentId = c.deploymentId;
|
|
940
|
+
} else {
|
|
941
|
+
const q = `${ctx.qTeam}&projectId=${encodeURIComponent(projectId)}&target=production&sha=${encodeURIComponent(sha)}`;
|
|
942
|
+
const ruta = `/v6/deployments?${q}`;
|
|
943
|
+
const resp = llamarApiVercel(ruta, ctx, "GET");
|
|
944
|
+
if (!resp.ok) return fallo(resp.motivo);
|
|
945
|
+
let json;
|
|
946
|
+
try {
|
|
947
|
+
json = JSON.parse(resp.cuerpo);
|
|
948
|
+
} catch (e) {
|
|
949
|
+
return fallo(`JSON inv\xE1lido en GET ${ruta} (${e.message})`);
|
|
950
|
+
}
|
|
951
|
+
const lista = esquemaListaDeploymentsPromocion.safeParse(json);
|
|
952
|
+
if (!lista.success || lista.data.deployments.length === 0) {
|
|
953
|
+
return fallo(
|
|
954
|
+
`no se encontr\xF3 deployment de producci\xF3n para el SHA ${sha}`
|
|
955
|
+
);
|
|
956
|
+
}
|
|
957
|
+
actual = lista.data.deployments[0];
|
|
958
|
+
const val = validarIdentidadDeployment(actual, ctx);
|
|
959
|
+
if (!val.ok) return fallo(val.motivo);
|
|
960
|
+
deploymentId = val.deploymentId;
|
|
961
|
+
idOrUrl = deploymentId;
|
|
962
|
+
}
|
|
963
|
+
const estado = actual.readyState ?? actual.state;
|
|
964
|
+
if (estado === "ERROR" || estado === "CANCELED") {
|
|
965
|
+
return fallo(`el deploy ${deploymentId} termin\xF3 en estado ${estado}`);
|
|
966
|
+
}
|
|
967
|
+
if (estado === "READY") {
|
|
968
|
+
deployListo = actual;
|
|
969
|
+
break;
|
|
970
|
+
}
|
|
971
|
+
if (maxIntentos !== void 0 && intentos >= maxIntentos || transcurridoMs + intervaloMs > timeoutMs) {
|
|
972
|
+
return fallo(
|
|
973
|
+
`timeout esperando a que el deploy ${deploymentId} llegue a READY (estado: ${estado})`
|
|
974
|
+
);
|
|
975
|
+
}
|
|
976
|
+
dormir(intervaloMs);
|
|
977
|
+
transcurridoMs += intervaloMs;
|
|
978
|
+
}
|
|
979
|
+
let deployFinal = deployListo;
|
|
980
|
+
if (deployListo.readySubstate !== "PROMOTED") {
|
|
981
|
+
const rutaPromote = `/v10/projects/${encodeURIComponent(projectId)}/promote/${encodeURIComponent(deploymentId)}?${ctx.qTeam}`;
|
|
982
|
+
const respPromote = llamarApiVercel(rutaPromote, ctx, "POST");
|
|
983
|
+
if (!respPromote.ok) return fallo(respPromote.motivo);
|
|
984
|
+
for (; ; ) {
|
|
985
|
+
intentos++;
|
|
986
|
+
const c = consultarDeploymentV13(deploymentId, ctx);
|
|
987
|
+
if (!c.ok) return fallo(c.motivo);
|
|
988
|
+
const dConf = c.valor;
|
|
989
|
+
const estadoConf = dConf.readyState ?? dConf.state;
|
|
990
|
+
if (estadoConf === "ERROR" || estadoConf === "CANCELED") {
|
|
991
|
+
return fallo(
|
|
992
|
+
`el deploy ${deploymentId} termin\xF3 en estado ${estadoConf} durante la promoci\xF3n`
|
|
993
|
+
);
|
|
994
|
+
}
|
|
995
|
+
if (estadoConf === "READY" && dConf.readySubstate === "PROMOTED") {
|
|
996
|
+
deployFinal = dConf;
|
|
997
|
+
break;
|
|
998
|
+
}
|
|
999
|
+
if (maxIntentos !== void 0 && intentos >= maxIntentos || transcurridoMs + intervaloMs > timeoutMs) {
|
|
1000
|
+
return fallo(
|
|
1001
|
+
`timeout esperando que el deploy ${deploymentId} quede PROMOTED (subestado: ${dConf.readySubstate ?? "sin subestado"})`
|
|
1002
|
+
);
|
|
1003
|
+
}
|
|
1004
|
+
dormir(intervaloMs);
|
|
1005
|
+
transcurridoMs += intervaloMs;
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
const alias = extraerAliasProduccion(deployFinal) ?? extraerAliasProduccion(deployListo);
|
|
1009
|
+
const urlRaw = deployFinal.url ?? deployListo.url;
|
|
1010
|
+
const url = urlRaw ? normalizarUrlHttps(urlRaw) : null;
|
|
1011
|
+
return { ok: true, codigo: 0, deploymentId, alias, url };
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
// src/comandos/desplegar.ts
|
|
1015
|
+
var VARIABLES_VERCEL = [
|
|
1016
|
+
"VERCEL_TOKEN",
|
|
1017
|
+
"VERCEL_ORG_ID",
|
|
1018
|
+
"VERCEL_PROJECT_ID"
|
|
1019
|
+
];
|
|
1020
|
+
var PASOS_VERCEL = [
|
|
1021
|
+
["pull", "--yes", "--environment=production"],
|
|
1022
|
+
["build", "--prod"],
|
|
1023
|
+
["deploy", "--prebuilt", "--prod"]
|
|
1024
|
+
];
|
|
1025
|
+
var PASO_DEPLOY_REMOTO = [
|
|
1026
|
+
"deploy",
|
|
1027
|
+
"--prod",
|
|
1028
|
+
"--yes",
|
|
1029
|
+
"--no-wait"
|
|
1030
|
+
];
|
|
1031
|
+
var ARCHIVO_ENV_PRODUCCION = path3__namespace.join(
|
|
1032
|
+
".vercel",
|
|
1033
|
+
".env.production.local"
|
|
1034
|
+
);
|
|
1035
|
+
var MARCADOR_SENSITIVE = "[SENSITIVE]";
|
|
1036
|
+
var REGEX_ANSI2 = new RegExp(
|
|
1037
|
+
`${String.fromCharCode(27)}\\[[0-9;]*[a-zA-Z]`,
|
|
1038
|
+
"g"
|
|
1039
|
+
);
|
|
782
1040
|
function tieneVariablesSensibles(carpeta) {
|
|
783
1041
|
const archivo = path3__namespace.join(carpeta, ARCHIVO_ENV_PRODUCCION);
|
|
784
1042
|
return fs.existsSync(archivo) && fs.statSync(archivo).isFile() && fs.readFileSync(archivo, "utf8").includes(MARCADOR_SENSITIVE);
|
|
785
1043
|
}
|
|
786
1044
|
function extraerUrlSalud(salida, error = "") {
|
|
787
|
-
const stdout = salida.replace(
|
|
1045
|
+
const stdout = salida.replace(REGEX_ANSI2, "");
|
|
788
1046
|
const texto = `${error}
|
|
789
|
-
${salida}`.replace(
|
|
1047
|
+
${salida}`.replace(REGEX_ANSI2, "");
|
|
790
1048
|
const alias = /\bAlias(?:ed)?\s*:\s*(https?:\/\/[^\s\]"')>]+)/i.exec(
|
|
791
1049
|
texto
|
|
792
1050
|
)?.[1];
|
|
@@ -844,6 +1102,26 @@ function ejecutarDesplegar(opciones) {
|
|
|
844
1102
|
opciones.error(`wallavi-vercel desplegar: faltan ${faltan.join(", ")}`);
|
|
845
1103
|
return 2;
|
|
846
1104
|
}
|
|
1105
|
+
const head = ej("git", ["rev-parse", "HEAD"], { cwd: rutaCarpeta });
|
|
1106
|
+
const sha = head.salida.trim();
|
|
1107
|
+
if (head.codigo !== 0 || !/^[0-9a-f]{40}$/.test(sha)) {
|
|
1108
|
+
opciones.error("wallavi-vercel desplegar: no se pudo verificar HEAD");
|
|
1109
|
+
return 1;
|
|
1110
|
+
}
|
|
1111
|
+
for (const nombre of ["WORKFLOW_RUN_HEAD_SHA", "VERCEL_GIT_COMMIT_SHA"]) {
|
|
1112
|
+
const esperado = opciones.env[nombre]?.trim();
|
|
1113
|
+
if (esperado && esperado !== sha) {
|
|
1114
|
+
opciones.error(
|
|
1115
|
+
`wallavi-vercel desplegar: HEAD no coincide con el SHA de ${nombre}`
|
|
1116
|
+
);
|
|
1117
|
+
return 1;
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
const identidad = {
|
|
1121
|
+
sha,
|
|
1122
|
+
proyecto: opciones.env.VERCEL_PROJECT_ID.trim(),
|
|
1123
|
+
carpeta: opciones.carpeta
|
|
1124
|
+
};
|
|
847
1125
|
const evaluacion = evaluar({
|
|
848
1126
|
carpeta: rutaCarpeta,
|
|
849
1127
|
...opciones.antes !== void 0 ? { antes: opciones.antes } : {},
|
|
@@ -854,6 +1132,13 @@ function ejecutarDesplegar(opciones) {
|
|
|
854
1132
|
opciones.salida(
|
|
855
1133
|
`wallavi-vercel desplegar: sin cambios (${evaluacion.motivo})`
|
|
856
1134
|
);
|
|
1135
|
+
opciones.salida(
|
|
1136
|
+
JSON.stringify({
|
|
1137
|
+
resultado: "omitido",
|
|
1138
|
+
motivo: "sin-cambios",
|
|
1139
|
+
...identidad
|
|
1140
|
+
})
|
|
1141
|
+
);
|
|
857
1142
|
return 0;
|
|
858
1143
|
}
|
|
859
1144
|
const rPull = correrPasoVercel(ej, PASOS_VERCEL[0], rutaCarpeta, opciones);
|
|
@@ -874,7 +1159,7 @@ function ejecutarDesplegar(opciones) {
|
|
|
874
1159
|
fs.rmSync(path3__namespace.join(dir, ARCHIVO_ENV_PRODUCCION), { force: true });
|
|
875
1160
|
}
|
|
876
1161
|
opciones.salida(
|
|
877
|
-
"wallavi-vercel desplegar: .vercel/.env.production.local contiene [SENSITIVE]; se omite --prebuilt y se delega a vercel deploy --prod --yes"
|
|
1162
|
+
"wallavi-vercel desplegar: .vercel/.env.production.local contiene [SENSITIVE]; se omite --prebuilt y se delega a vercel deploy --prod --yes --no-wait"
|
|
878
1163
|
);
|
|
879
1164
|
}
|
|
880
1165
|
const pasosRestantes = haySensibles ? [PASO_DEPLOY_REMOTO] : PASOS_VERCEL.slice(1);
|
|
@@ -884,7 +1169,39 @@ function ejecutarDesplegar(opciones) {
|
|
|
884
1169
|
if (!r.ok) return r.codigo;
|
|
885
1170
|
ultimoDeploy = r.resultado;
|
|
886
1171
|
}
|
|
887
|
-
|
|
1172
|
+
let aliasPromovido = null;
|
|
1173
|
+
let urlDeployPromovido = null;
|
|
1174
|
+
let deploymentId;
|
|
1175
|
+
{
|
|
1176
|
+
const promocion = esperarYPromoverDeploy({
|
|
1177
|
+
sha,
|
|
1178
|
+
cwd: opciones.cwd,
|
|
1179
|
+
carpeta: rutaCarpeta,
|
|
1180
|
+
env: opciones.env,
|
|
1181
|
+
salidaDeploy: ultimoDeploy.salida,
|
|
1182
|
+
errorDeploy: ultimoDeploy.error,
|
|
1183
|
+
ejecutar: ej,
|
|
1184
|
+
solicitar,
|
|
1185
|
+
...opciones.dormir !== void 0 ? { dormir: opciones.dormir } : {},
|
|
1186
|
+
...opciones.intervaloPollMs !== void 0 ? { intervaloMs: opciones.intervaloPollMs } : {},
|
|
1187
|
+
...opciones.timeoutPollMs !== void 0 ? { timeoutMs: opciones.timeoutPollMs } : {},
|
|
1188
|
+
...opciones.maxIntentosPoll !== void 0 ? { maxIntentos: opciones.maxIntentosPoll } : {},
|
|
1189
|
+
...opciones.baseUrl !== void 0 ? { baseUrl: opciones.baseUrl } : {}
|
|
1190
|
+
});
|
|
1191
|
+
if (!promocion.ok) {
|
|
1192
|
+
opciones.error(
|
|
1193
|
+
redactarCredenciales(
|
|
1194
|
+
`wallavi-vercel desplegar: ${promocion.motivo}`,
|
|
1195
|
+
opciones.env
|
|
1196
|
+
)
|
|
1197
|
+
);
|
|
1198
|
+
return promocion.codigo;
|
|
1199
|
+
}
|
|
1200
|
+
aliasPromovido = promocion.alias;
|
|
1201
|
+
urlDeployPromovido = promocion.url;
|
|
1202
|
+
deploymentId = promocion.deploymentId;
|
|
1203
|
+
}
|
|
1204
|
+
const urlSalud = opciones.urlSalud?.trim() || opciones.env.VERCEL_HEALTHCHECK_URL?.trim() || aliasPromovido || extraerUrlSalud(ultimoDeploy.salida, ultimoDeploy.error) || urlDeployPromovido;
|
|
888
1205
|
if (!urlSalud) {
|
|
889
1206
|
opciones.error(
|
|
890
1207
|
redactarCredenciales(
|
|
@@ -918,6 +1235,14 @@ function ejecutarDesplegar(opciones) {
|
|
|
918
1235
|
opciones.salida(
|
|
919
1236
|
`wallavi-vercel desplegar: desplegado (${evaluacion.motivo})`
|
|
920
1237
|
);
|
|
1238
|
+
opciones.salida(
|
|
1239
|
+
JSON.stringify({
|
|
1240
|
+
resultado: "desplegado",
|
|
1241
|
+
...identidad,
|
|
1242
|
+
deploymentId,
|
|
1243
|
+
urlSalud
|
|
1244
|
+
})
|
|
1245
|
+
);
|
|
921
1246
|
return 0;
|
|
922
1247
|
}
|
|
923
1248
|
function comandoDesplegar(args, entorno) {
|
|
@@ -1053,6 +1378,7 @@ exports.COMANDOS = COMANDOS;
|
|
|
1053
1378
|
exports.ESTADOS_DEPLOYMENT = ESTADOS_DEPLOYMENT;
|
|
1054
1379
|
exports.ErrorContratoVercel = ErrorContratoVercel;
|
|
1055
1380
|
exports.ErrorRedVercel = ErrorRedVercel;
|
|
1381
|
+
exports.INTERVALO_POLL_DEPLOY_MS = INTERVALO_POLL_DEPLOY_MS;
|
|
1056
1382
|
exports.LIMITE_PAGINA_VERCEL = LIMITE_PAGINA_VERCEL;
|
|
1057
1383
|
exports.MAX_PAGINAS_VERCEL = MAX_PAGINAS_VERCEL;
|
|
1058
1384
|
exports.PASOS_VERCEL = PASOS_VERCEL;
|
|
@@ -1060,6 +1386,7 @@ exports.PASO_DEPLOY_REMOTO = PASO_DEPLOY_REMOTO;
|
|
|
1060
1386
|
exports.PREFIJO_PREVIEW = PREFIJO_PREVIEW;
|
|
1061
1387
|
exports.RAMA_PRINCIPAL = RAMA_PRINCIPAL;
|
|
1062
1388
|
exports.REFERENCIA_DEPLOYMENTS_V6 = REFERENCIA_DEPLOYMENTS_V6;
|
|
1389
|
+
exports.TIMEOUT_POLL_DEPLOY_MS = TIMEOUT_POLL_DEPLOY_MS;
|
|
1063
1390
|
exports.USO = USO;
|
|
1064
1391
|
exports.VARIABLES_VERCEL = VARIABLES_VERCEL;
|
|
1065
1392
|
exports.armarCapturaV6 = armarCapturaV6;
|
|
@@ -1073,22 +1400,28 @@ exports.comandoTurbo = comandoTurbo;
|
|
|
1073
1400
|
exports.configVacia = configVacia;
|
|
1074
1401
|
exports.consultarDeployments = consultarDeployments;
|
|
1075
1402
|
exports.desplegar = desplegar;
|
|
1403
|
+
exports.dormirSincrono = dormirSincrono;
|
|
1076
1404
|
exports.ejecutar = ejecutar;
|
|
1077
1405
|
exports.ejecutarCapturar = ejecutarCapturar;
|
|
1078
1406
|
exports.ejecutarDesplegar = ejecutarDesplegar;
|
|
1079
1407
|
exports.ejecutarIgnorar = ejecutarIgnorar;
|
|
1080
1408
|
exports.ejecutarMedir = ejecutarMedir;
|
|
1409
|
+
exports.esperarYPromoverDeploy = esperarYPromoverDeploy;
|
|
1081
1410
|
exports.esquemaArchivoDeployments = esquemaArchivoDeployments;
|
|
1082
1411
|
exports.esquemaCapturaV6 = esquemaCapturaV6;
|
|
1083
1412
|
exports.esquemaConfig = esquemaConfig;
|
|
1084
1413
|
exports.esquemaDeployment = esquemaDeployment;
|
|
1414
|
+
exports.esquemaDeploymentPromocion = esquemaDeploymentPromocion;
|
|
1085
1415
|
exports.esquemaEquipo = esquemaEquipo;
|
|
1086
1416
|
exports.esquemaEstadoDeployment = esquemaEstadoDeployment;
|
|
1417
|
+
exports.esquemaListaDeploymentsPromocion = esquemaListaDeploymentsPromocion;
|
|
1087
1418
|
exports.esquemaPaginaDeployments = esquemaPaginaDeployments;
|
|
1088
1419
|
exports.esquemaPaginaTeams = esquemaPaginaTeams;
|
|
1089
1420
|
exports.esquemaPaginacion = esquemaPaginacion;
|
|
1090
1421
|
exports.esquemaPedidoCaptura = esquemaPedidoCaptura;
|
|
1091
1422
|
exports.evaluarCambios = evaluarCambios;
|
|
1423
|
+
exports.extraerAliasProduccion = extraerAliasProduccion;
|
|
1424
|
+
exports.extraerIdOUrlDeploy = extraerIdOUrlDeploy;
|
|
1092
1425
|
exports.extraerUrlSalud = extraerUrlSalud;
|
|
1093
1426
|
exports.ignorar = ignorar;
|
|
1094
1427
|
exports.leerArgumentosCapturar = leerArgumentosCapturar;
|
|
@@ -1097,6 +1430,7 @@ exports.leerArgumentosMedir = leerArgumentosMedir;
|
|
|
1097
1430
|
exports.leerConfig = leerConfig;
|
|
1098
1431
|
exports.leerFlagsCli = leerFlagsCli;
|
|
1099
1432
|
exports.leerRespuestaDeployments = leerRespuestaDeployments;
|
|
1433
|
+
exports.limpiarIdOUrlDeploy = limpiarIdOUrlDeploy;
|
|
1100
1434
|
exports.medir = medir;
|
|
1101
1435
|
exports.normalizarCarpeta = normalizarCarpeta;
|
|
1102
1436
|
exports.paquetesDeTurbo = paquetesDeTurbo;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wallavi/vercel-build",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Detección de cambios y despliegue compartidos para los proyectos de Vercel del monorepo",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"tsup": "^8.3.5",
|
|
25
25
|
"tsx": "^4.19.2",
|
|
26
26
|
"typescript": "^5.7.3",
|
|
27
|
-
"@wallavi/
|
|
28
|
-
"@wallavi/
|
|
27
|
+
"@wallavi/typescript-config": "0.0.1",
|
|
28
|
+
"@wallavi/eslint-config": "0.0.1"
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
|
31
31
|
"build": "tsup",
|