vercel 59.7.0 → 59.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{add-7O4TM33A.js → add-IJZ2Q46B.js} +5 -5
- package/dist/chunks/{add-UVMFKSSY.js → add-KYLIIWQV.js} +2 -2
- package/dist/chunks/{add-UT6ZPA4F.js → add-SGSXZWCH.js} +2 -2
- package/dist/chunks/{build-SKKT3DIB.js → build-PKOCHFHL.js} +2 -2
- package/dist/chunks/{chunk-7HE63HCR.js → chunk-4KVJ2M4J.js} +148 -6
- package/dist/chunks/{chunk-2EH6SZRG.js → chunk-53J6IECW.js} +32 -19
- package/dist/chunks/{chunk-7IDPPWDN.js → chunk-5BZWQDNJ.js} +1 -1
- package/dist/chunks/{chunk-7KSICC3A.js → chunk-5JNGHAUT.js} +1 -1
- package/dist/chunks/{chunk-3PA7LXYM.js → chunk-7TYA36S5.js} +1 -1
- package/dist/chunks/{chunk-67IIZBBY.js → chunk-AXNMBJKD.js} +1 -1
- package/dist/chunks/{chunk-CBHLLOGZ.js → chunk-FNYNYZAZ.js} +3 -3
- package/dist/chunks/{chunk-63OX2DER.js → chunk-GRINZMFI.js} +1 -1
- package/dist/chunks/{chunk-2YRAWYGE.js → chunk-I526H4AS.js} +17 -0
- package/dist/chunks/{chunk-YJUO3EKH.js → chunk-KJBZ5ZST.js} +0 -1
- package/dist/chunks/{chunk-2T3IZZTJ.js → chunk-KTCVGTRQ.js} +1 -1
- package/dist/chunks/{chunk-WVPMR7XV.js → chunk-LCDVMLKI.js} +4 -4
- package/dist/chunks/{chunk-GK3RE3AC.js → chunk-MHO3EJAF.js} +2 -2
- package/dist/chunks/{chunk-MHCGKUI7.js → chunk-O6VHU65V.js} +19 -3
- package/dist/chunks/{chunk-IFNCPWH5.js → chunk-OBPBFJFP.js} +6 -7
- package/dist/chunks/{chunk-SSBYESJ5.js → chunk-QQ77K4QW.js} +1 -1
- package/dist/chunks/{chunk-NJCM5JJN.js → chunk-SRVP2UST.js} +1 -1
- package/dist/chunks/{chunk-XSYZDMUP.js → chunk-UTWU4DZF.js} +1 -1
- package/dist/chunks/{chunk-AFKB6VMO.js → chunk-VV5XULGR.js} +111 -8
- package/dist/chunks/{chunk-CMRZ4KI4.js → chunk-WC3XNI4B.js} +2 -2
- package/dist/chunks/{chunk-KD2N44NG.js → chunk-X6TBTUZZ.js} +1 -1
- package/dist/chunks/{chunk-DG6IMLCF.js → chunk-YLNIMGMQ.js} +3 -3
- package/dist/chunks/{chunk-MUMITVZP.js → chunk-Z2RKD7LL.js} +1 -1
- package/dist/chunks/{chunk-BQG777JE.js → chunk-Z44PATWW.js} +314 -195
- package/dist/chunks/{clear-X7M4WGBC.js → clear-J6TY2J3M.js} +2 -2
- package/dist/chunks/{compile-vercel-config-FBOZBWJC.js → compile-vercel-config-WVGNTJXO.js} +1 -1
- package/dist/chunks/{config-KGW667XC.js → config-3JDOCLH7.js} +5 -5
- package/dist/chunks/{config-RYPSCAR7.js → config-5T7XV4JE.js} +2 -2
- package/dist/chunks/config-validator.mjs +1 -1
- package/dist/chunks/{delete-VK6FTDBI.js → delete-EPPNTNEW.js} +2 -2
- package/dist/chunks/{delete-OXYXXPHR.js → delete-XQOAWEZV.js} +2 -2
- package/dist/chunks/{disable-XRJTKNX4.js → disable-U5YAPWPA.js} +2 -2
- package/dist/chunks/{discard-NAPSPR6Y.js → discard-OCUCCXKO.js} +2 -2
- package/dist/chunks/{edit-WLG4GLU3.js → edit-CD7EXAO3.js} +2 -2
- package/dist/chunks/{edit-34GDLPQG.js → edit-PNRGHNGQ.js} +3 -3
- package/dist/chunks/{enable-IDKKVXKB.js → enable-25RH2LVW.js} +2 -2
- package/dist/chunks/{export-MPMU3FYY.js → export-YSGEUXJW.js} +2 -2
- package/dist/chunks/{image-RZ2A4FWP.js → image-4ZKCR4HL.js} +3 -3
- package/dist/chunks/{import-builders-GZPE5N44.js → import-builders-FQ2LOIWC.js} +2 -2
- package/dist/chunks/{inspect-X2Y5FDKR.js → inspect-3K2EDYL6.js} +3 -3
- package/dist/chunks/{inspect-56S2DKPO.js → inspect-F5DJM5DL.js} +2 -2
- package/dist/chunks/{inspect-OOV2ORKD.js → inspect-K2NJD2AI.js} +2 -2
- package/dist/chunks/{inspect-KGEMHV2T.js → inspect-WRBFJUSY.js} +2 -2
- package/dist/chunks/{inspect-EVDBNPP4.js → inspect-ZC4GRGTE.js} +2 -2
- package/dist/chunks/{list-TWSOAQRB.js → list-B7C56Z7B.js} +1 -1
- package/dist/chunks/{list-H357CF7M.js → list-PUFYWIOF.js} +3 -3
- package/dist/chunks/{list-FWLSZYMO.js → list-Z6VHQQBW.js} +2 -2
- package/dist/chunks/{login-54OPNB5E.js → login-ZYUF7JZQ.js} +2 -2
- package/dist/chunks/{ls-WGIRTAVM.js → ls-2OUQUKPT.js} +2 -2
- package/dist/chunks/{ls-WFMTVJOO.js → ls-ALX26ARH.js} +2 -2
- package/dist/chunks/{ls-ZMR5RMU4.js → ls-FNOL7XTY.js} +2 -2
- package/dist/chunks/{ls-VDFNIR5H.js → ls-PRY6OV4B.js} +3 -3
- package/dist/chunks/{ls-DU3S2GBJ.js → ls-SQRTT5RH.js} +2 -2
- package/dist/chunks/{ls-6JHFSJBJ.js → ls-TBBLZ766.js} +2 -2
- package/dist/chunks/{open-RCSCNKHF.js → open-673AJXYY.js} +2 -2
- package/dist/chunks/{permissions-XNN37R4N.js → permissions-B6SFNLN4.js} +4 -4
- package/dist/chunks/{publish-PLXEACYY.js → publish-TPJHZ2PJ.js} +2 -2
- package/dist/chunks/{push-EFYSB52Q.js → push-3WD5IPXP.js} +2 -2
- package/dist/chunks/{query-EKTXDOL7.js → query-ZXOJQZ7G.js} +1 -1
- package/dist/chunks/{reorder-OSA7D2RG.js → reorder-SUFOQGPC.js} +2 -2
- package/dist/chunks/{reply-6M2IYKLK.js → reply-YOVUA6ZF.js} +2 -2
- package/dist/chunks/{resolve-MCX5STKN.js → resolve-OQ7P74JY.js} +2 -2
- package/dist/chunks/{restore-52OEP3NL.js → restore-BD5XJOE7.js} +2 -2
- package/dist/chunks/{rm-2VAJFK25.js → rm-4KAI42EX.js} +2 -2
- package/dist/chunks/{rm-IYEDZOMN.js → rm-4UIILZLP.js} +2 -2
- package/dist/chunks/{rm-QW35WHSK.js → rm-5TY3QJUZ.js} +2 -2
- package/dist/chunks/{rm-TXV4GB4L.js → rm-EKVIZG2N.js} +3 -3
- package/dist/chunks/{rm-4BJN2LJX.js → rm-XAMQUW3J.js} +3 -3
- package/dist/chunks/{rule-inspect-WOBAN3Y2.js → rule-inspect-XZZE54SW.js} +3 -3
- package/dist/chunks/{rules-CUJRAZYO.js → rules-SF5FBWFF.js} +6 -6
- package/dist/chunks/{schema-VCGEJAOG.js → schema-3HRYA6AT.js} +1 -1
- package/dist/chunks/{set-2QSXMDVF.js → set-T4IYLXET.js} +3 -3
- package/dist/chunks/{tags-NHX2VQ7E.js → tags-EZKT46VN.js} +2 -2
- package/dist/chunks/{update-EOHXTT4N.js → update-OE7Y2J5I.js} +5 -5
- package/dist/commands/build/index.js +509 -66
- package/dist/commands/deploy/index.js +8 -8
- package/dist/commands/dev/index.js +20 -9
- package/dist/commands/env/index.js +4 -4
- package/dist/commands/link/index.js +3 -3
- package/dist/commands/list/index.js +3 -3
- package/dist/commands-bulk.js +2690 -1850
- package/dist/help.js +1 -1
- package/dist/index.js +9 -9
- package/dist/version.mjs +1 -1
- package/package.json +49 -49
|
@@ -8,21 +8,21 @@ import {
|
|
|
8
8
|
parseCustomAlertQueryBody,
|
|
9
9
|
resolveCustomAlertProjectName,
|
|
10
10
|
setMissingCustomAlertProjectScope
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-WC3XNI4B.js";
|
|
12
12
|
import {
|
|
13
13
|
emitRulesArgParseError,
|
|
14
14
|
handleRulesApiError,
|
|
15
15
|
parseRulesFlagsAndScope,
|
|
16
16
|
rulesCollectionPath
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-GRINZMFI.js";
|
|
18
18
|
import {
|
|
19
19
|
isCustomAlertRule
|
|
20
20
|
} from "./chunk-26XDDLXM.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-X6TBTUZZ.js";
|
|
22
22
|
import "./chunk-A3NYPUKZ.js";
|
|
23
23
|
import "./chunk-3T7WSWZH.js";
|
|
24
24
|
import "./chunk-FGDKMNEN.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-QQ77K4QW.js";
|
|
26
26
|
import "./chunk-AINIBIP4.js";
|
|
27
27
|
import "./chunk-XRWOTCDO.js";
|
|
28
28
|
import {
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
import {
|
|
32
32
|
rulesAddSubcommand
|
|
33
33
|
} from "./chunk-XM3LOQIX.js";
|
|
34
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-Z44PATWW.js";
|
|
35
35
|
import "./chunk-FXD67VN5.js";
|
|
36
36
|
import "./chunk-XNFHNTS2.js";
|
|
37
37
|
import {
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
handleVcrApiError,
|
|
10
10
|
resolveVcrScope,
|
|
11
11
|
validateVcrJsonOutput
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-UTWU4DZF.js";
|
|
13
13
|
import "./chunk-WNAKOXGK.js";
|
|
14
14
|
import {
|
|
15
15
|
outputError
|
|
@@ -22,7 +22,7 @@ import "./chunk-EZKW5YJ2.js";
|
|
|
22
22
|
import "./chunk-NFU4XJIR.js";
|
|
23
23
|
import "./chunk-3HZLXCVL.js";
|
|
24
24
|
import "./chunk-5XECIWME.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-Z44PATWW.js";
|
|
26
26
|
import "./chunk-FXD67VN5.js";
|
|
27
27
|
import "./chunk-XNFHNTS2.js";
|
|
28
28
|
import {
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
emitVcrArgParseError,
|
|
18
18
|
resolveVcrScope,
|
|
19
19
|
validateVcrJsonOutput
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-UTWU4DZF.js";
|
|
21
21
|
import "./chunk-WNAKOXGK.js";
|
|
22
22
|
import {
|
|
23
23
|
outputError
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
permissionsAddSubcommand
|
|
28
28
|
} from "./chunk-EZKW5YJ2.js";
|
|
29
29
|
import "./chunk-5XECIWME.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-Z44PATWW.js";
|
|
31
31
|
import "./chunk-FXD67VN5.js";
|
|
32
32
|
import "./chunk-XNFHNTS2.js";
|
|
33
33
|
import {
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
runEngine,
|
|
24
24
|
splitPassthrough,
|
|
25
25
|
validateVcrChoice
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-UTWU4DZF.js";
|
|
27
27
|
import "./chunk-WNAKOXGK.js";
|
|
28
28
|
import {
|
|
29
29
|
outputError
|
|
@@ -36,7 +36,7 @@ import "./chunk-EZKW5YJ2.js";
|
|
|
36
36
|
import "./chunk-NFU4XJIR.js";
|
|
37
37
|
import "./chunk-3HZLXCVL.js";
|
|
38
38
|
import "./chunk-5XECIWME.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-Z44PATWW.js";
|
|
40
40
|
import "./chunk-FXD67VN5.js";
|
|
41
41
|
import "./chunk-XNFHNTS2.js";
|
|
42
42
|
import {
|
|
@@ -3102,6 +3102,57 @@ var detachSubcommand = {
|
|
|
3102
3102
|
}
|
|
3103
3103
|
]
|
|
3104
3104
|
};
|
|
3105
|
+
var contactsAddSubcommand = {
|
|
3106
|
+
name: "add",
|
|
3107
|
+
aliases: [],
|
|
3108
|
+
description: "Add a phone contact that a connector may message",
|
|
3109
|
+
arguments: [
|
|
3110
|
+
{
|
|
3111
|
+
name: "connector",
|
|
3112
|
+
required: true
|
|
3113
|
+
}
|
|
3114
|
+
],
|
|
3115
|
+
options: [
|
|
3116
|
+
{
|
|
3117
|
+
name: "phone-number",
|
|
3118
|
+
shorthand: null,
|
|
3119
|
+
type: String,
|
|
3120
|
+
argument: "PHONE",
|
|
3121
|
+
deprecated: false,
|
|
3122
|
+
description: "Contact phone number in E.164 format (e.g. +12025551234)"
|
|
3123
|
+
},
|
|
3124
|
+
formatOption,
|
|
3125
|
+
jsonOption
|
|
3126
|
+
],
|
|
3127
|
+
examples: [
|
|
3128
|
+
{
|
|
3129
|
+
name: "Add a contact by connector ID",
|
|
3130
|
+
value: `${packageName} connect contacts add scl_abc123 --phone-number +12025551234`
|
|
3131
|
+
},
|
|
3132
|
+
{
|
|
3133
|
+
name: "Add a contact by connector UID",
|
|
3134
|
+
value: `${packageName} connect contacts add linq/support --phone-number +12025551234`
|
|
3135
|
+
},
|
|
3136
|
+
{
|
|
3137
|
+
name: "Output the verification result as JSON",
|
|
3138
|
+
value: `${packageName} connect contacts add scl_abc123 --phone-number +12025551234 --json`
|
|
3139
|
+
}
|
|
3140
|
+
]
|
|
3141
|
+
};
|
|
3142
|
+
var contactsSubcommand = {
|
|
3143
|
+
name: "contacts",
|
|
3144
|
+
aliases: [],
|
|
3145
|
+
description: "Manage phone contacts for connectors",
|
|
3146
|
+
arguments: [],
|
|
3147
|
+
options: [],
|
|
3148
|
+
subcommands: [contactsAddSubcommand],
|
|
3149
|
+
examples: [
|
|
3150
|
+
{
|
|
3151
|
+
name: "Add a contact",
|
|
3152
|
+
value: `${packageName} connect contacts add scl_abc123 --phone-number +12025551234`
|
|
3153
|
+
}
|
|
3154
|
+
]
|
|
3155
|
+
};
|
|
3105
3156
|
var connexCommand = {
|
|
3106
3157
|
name: "connect",
|
|
3107
3158
|
aliases: [],
|
|
@@ -3117,7 +3168,8 @@ var connexCommand = {
|
|
|
3117
3168
|
detachSubcommand,
|
|
3118
3169
|
removeSubcommand4,
|
|
3119
3170
|
revokeTokensSubcommand,
|
|
3120
|
-
openSubcommand
|
|
3171
|
+
openSubcommand,
|
|
3172
|
+
contactsSubcommand
|
|
3121
3173
|
],
|
|
3122
3174
|
examples: [
|
|
3123
3175
|
{
|
|
@@ -3140,7 +3192,11 @@ var connexCommand = {
|
|
|
3140
3192
|
name: "Open a connector in the dashboard",
|
|
3141
3193
|
value: `${packageName} connect open scl_abc123`
|
|
3142
3194
|
}
|
|
3143
|
-
]
|
|
3195
|
+
],
|
|
3196
|
+
documentation: {
|
|
3197
|
+
label: "Vercel Connect guide",
|
|
3198
|
+
url: "https://vercel.com/kb/guide/vercel-connect"
|
|
3199
|
+
}
|
|
3144
3200
|
};
|
|
3145
3201
|
|
|
3146
3202
|
// src/commands/contract/command.ts
|
|
@@ -4982,6 +5038,18 @@ var firewallCommand = {
|
|
|
4982
5038
|
]
|
|
4983
5039
|
};
|
|
4984
5040
|
|
|
5041
|
+
// src/util/flags/attribute-types.ts
|
|
5042
|
+
var TIMESTAMP_IDENTIFY_HELP = "Pass Timestamp values as epoch milliseconds in identify() / evaluation context";
|
|
5043
|
+
function isTimestampAttributeType(type) {
|
|
5044
|
+
return type === "timestamp";
|
|
5045
|
+
}
|
|
5046
|
+
function isBucketingAttribute(attribute) {
|
|
5047
|
+
return !isTimestampAttributeType(attribute.type);
|
|
5048
|
+
}
|
|
5049
|
+
function getFlagAttributeType(settings, kind, attribute) {
|
|
5050
|
+
return settings?.entities.find((entity) => entity.kind === kind)?.attributes.find((candidate) => candidate.key === attribute)?.type;
|
|
5051
|
+
}
|
|
5052
|
+
|
|
4985
5053
|
// src/util/flags/comparators.ts
|
|
4986
5054
|
var FLAG_CONDITION_COMPARATORS = [
|
|
4987
5055
|
"eq",
|
|
@@ -5035,11 +5103,18 @@ var FLAG_CONDITION_COMPARATOR_LABELS = {
|
|
|
5035
5103
|
lt: "is less than",
|
|
5036
5104
|
lte: "is less than or equal to"
|
|
5037
5105
|
};
|
|
5106
|
+
var TIMESTAMP_FLAG_CONDITION_COMPARATOR_LABELS = {
|
|
5107
|
+
gt: "is after",
|
|
5108
|
+
gte: "is on or after",
|
|
5109
|
+
lt: "is before",
|
|
5110
|
+
lte: "is on or before"
|
|
5111
|
+
};
|
|
5038
5112
|
var LEGACY_FLAG_CONDITION_COMPARATOR_LABELS = {
|
|
5039
5113
|
notContains: FLAG_CONDITION_COMPARATOR_LABELS["!contains"]
|
|
5040
5114
|
};
|
|
5041
5115
|
function formatFlagConditionComparator(comparator, options) {
|
|
5042
|
-
const
|
|
5116
|
+
const timestampLabel = options?.attributeType === "timestamp" ? TIMESTAMP_FLAG_CONDITION_COMPARATOR_LABELS[comparator] : void 0;
|
|
5117
|
+
const label = timestampLabel ?? FLAG_CONDITION_COMPARATOR_LABELS[comparator] ?? LEGACY_FLAG_CONDITION_COMPARATOR_LABELS[comparator] ?? comparator;
|
|
5043
5118
|
if (options?.ignoreCase) {
|
|
5044
5119
|
return `${label} (case-insensitive)`;
|
|
5045
5120
|
}
|
|
@@ -5062,7 +5137,7 @@ function isFlagEvaluationsGranularity(value) {
|
|
|
5062
5137
|
}
|
|
5063
5138
|
|
|
5064
5139
|
// src/commands/flags/command.ts
|
|
5065
|
-
var segmentRuleOperatorDescription = `Valid operators: ${formatFlagConditionComparatorList()}`;
|
|
5140
|
+
var segmentRuleOperatorDescription = `Valid operators: ${formatFlagConditionComparatorList()}. Timestamp attributes also accept after, before, on-or-after, and on-or-before with an ISO 8601 date and time (for example 2026-04-16T09:00:00Z) or epoch milliseconds. after and before are exclusive; use on-or-after or on-or-before for inclusive boundaries. Date/times without a timezone use this machine's timezone. ${TIMESTAMP_IDENTIFY_HELP}`;
|
|
5066
5141
|
var listSubcommand11 = {
|
|
5067
5142
|
name: "list",
|
|
5068
5143
|
aliases: ["ls"],
|
|
@@ -5578,6 +5653,58 @@ var setSubcommand2 = {
|
|
|
5578
5653
|
}
|
|
5579
5654
|
]
|
|
5580
5655
|
};
|
|
5656
|
+
var useTargetingSubcommand = {
|
|
5657
|
+
name: "use-targeting",
|
|
5658
|
+
aliases: [],
|
|
5659
|
+
description: "Enable targeting for a feature flag environment; keeps the current fallthrough unless --default-variant is set",
|
|
5660
|
+
arguments: [
|
|
5661
|
+
{
|
|
5662
|
+
name: "flag",
|
|
5663
|
+
required: true
|
|
5664
|
+
}
|
|
5665
|
+
],
|
|
5666
|
+
options: [
|
|
5667
|
+
projectOption,
|
|
5668
|
+
{
|
|
5669
|
+
name: "environment",
|
|
5670
|
+
shorthand: "e",
|
|
5671
|
+
type: String,
|
|
5672
|
+
deprecated: false,
|
|
5673
|
+
description: "The environment to enable targeting in (production, preview, or development)",
|
|
5674
|
+
argument: "ENV"
|
|
5675
|
+
},
|
|
5676
|
+
{
|
|
5677
|
+
name: "default-variant",
|
|
5678
|
+
shorthand: null,
|
|
5679
|
+
type: String,
|
|
5680
|
+
deprecated: false,
|
|
5681
|
+
description: "Replace the fallthrough with this variant when no targeting rules match",
|
|
5682
|
+
argument: "VARIANT"
|
|
5683
|
+
},
|
|
5684
|
+
{
|
|
5685
|
+
name: "message",
|
|
5686
|
+
shorthand: null,
|
|
5687
|
+
type: String,
|
|
5688
|
+
deprecated: false,
|
|
5689
|
+
description: "Optional revision message for the update",
|
|
5690
|
+
argument: "TEXT"
|
|
5691
|
+
}
|
|
5692
|
+
],
|
|
5693
|
+
examples: [
|
|
5694
|
+
{
|
|
5695
|
+
name: "Enable targeting and keep the current fallthrough",
|
|
5696
|
+
value: `${packageName} flags use-targeting my-feature --environment production`
|
|
5697
|
+
},
|
|
5698
|
+
{
|
|
5699
|
+
name: "Enable targeting with a static default Off",
|
|
5700
|
+
value: `${packageName} flags use-targeting my-feature --environment production --default-variant false`
|
|
5701
|
+
},
|
|
5702
|
+
{
|
|
5703
|
+
name: "Enable targeting with a string default",
|
|
5704
|
+
value: `${packageName} flags use-targeting welcome-message -e production --default-variant control`
|
|
5705
|
+
}
|
|
5706
|
+
]
|
|
5707
|
+
};
|
|
5581
5708
|
var splitSubcommand = {
|
|
5582
5709
|
name: "split",
|
|
5583
5710
|
aliases: [],
|
|
@@ -5900,6 +6027,10 @@ var rulesAddSubcommand3 = {
|
|
|
5900
6027
|
name: "Add a segment rule",
|
|
5901
6028
|
value: `${packageName} flags rules add my-feature -e production --condition segment:eq:seg_beta123 --variant on`
|
|
5902
6029
|
},
|
|
6030
|
+
{
|
|
6031
|
+
name: "Add a rule with a timestamp condition",
|
|
6032
|
+
value: `${packageName} flags rules add my-feature -e production --condition user.signupAt:after:2026-04-16T09:00:00Z --variant on`
|
|
6033
|
+
},
|
|
5903
6034
|
{
|
|
5904
6035
|
name: "Add a split rule at the top",
|
|
5905
6036
|
value: `${packageName} flags rules add my-feature -e production --condition user.plan:eq:pro --by user.userId --weight off=90 --weight on=10 --position 1`
|
|
@@ -6340,8 +6471,8 @@ var segmentsCreateSubcommand = {
|
|
|
6340
6471
|
value: `${packageName} flags segments create beta-users --label "Beta users" --add include:user.id=user_123 --add include:user.id=user_456`
|
|
6341
6472
|
},
|
|
6342
6473
|
{
|
|
6343
|
-
name: "Create a segment
|
|
6344
|
-
value: `${packageName} flags segments create
|
|
6474
|
+
name: "Create a segment using a timestamp condition",
|
|
6475
|
+
value: `${packageName} flags segments create early-adopters --add rule:user.signupAt:before:2026-04-16T09:00:00Z`
|
|
6345
6476
|
},
|
|
6346
6477
|
{
|
|
6347
6478
|
name: "Create a segment from full JSON data",
|
|
@@ -6429,6 +6560,10 @@ var segmentsUpdateSubcommand = {
|
|
|
6429
6560
|
{
|
|
6430
6561
|
name: "Add and remove rules",
|
|
6431
6562
|
value: `${packageName} flags segments update enterprise-users --add rule:user.email:ends-with:@company.com --remove rule:user.plan:eq:pro`
|
|
6563
|
+
},
|
|
6564
|
+
{
|
|
6565
|
+
name: "Add a timestamp condition",
|
|
6566
|
+
value: `${packageName} flags segments update early-adopters --add rule:user.signupAt:before:2026-04-16T09:00:00Z`
|
|
6432
6567
|
}
|
|
6433
6568
|
]
|
|
6434
6569
|
};
|
|
@@ -6651,6 +6786,7 @@ var flagsCommand = {
|
|
|
6651
6786
|
openSubcommand2,
|
|
6652
6787
|
updateSubcommand3,
|
|
6653
6788
|
setSubcommand2,
|
|
6789
|
+
useTargetingSubcommand,
|
|
6654
6790
|
splitSubcommand,
|
|
6655
6791
|
rolloutSubcommand,
|
|
6656
6792
|
removeSubcommand8,
|
|
@@ -12385,6 +12521,8 @@ export {
|
|
|
12385
12521
|
openSubcommand,
|
|
12386
12522
|
attachSubcommand,
|
|
12387
12523
|
detachSubcommand,
|
|
12524
|
+
contactsAddSubcommand,
|
|
12525
|
+
contactsSubcommand,
|
|
12388
12526
|
connexCommand,
|
|
12389
12527
|
contractCommand,
|
|
12390
12528
|
addSubcommand3 as addSubcommand2,
|
|
@@ -12449,6 +12587,9 @@ export {
|
|
|
12449
12587
|
systemMitigationsResumeSubcommand,
|
|
12450
12588
|
systemMitigationsSubcommand,
|
|
12451
12589
|
firewallCommand,
|
|
12590
|
+
isTimestampAttributeType,
|
|
12591
|
+
isBucketingAttribute,
|
|
12592
|
+
getFlagAttributeType,
|
|
12452
12593
|
FLAG_CONDITION_LIST_COMPARATORS,
|
|
12453
12594
|
FLAG_CONDITION_RHS_OPTIONAL_COMPARATORS,
|
|
12454
12595
|
formatFlagConditionComparatorList,
|
|
@@ -12465,6 +12606,7 @@ export {
|
|
|
12465
12606
|
openSubcommand2,
|
|
12466
12607
|
updateSubcommand3,
|
|
12467
12608
|
setSubcommand2,
|
|
12609
|
+
useTargetingSubcommand,
|
|
12468
12610
|
splitSubcommand,
|
|
12469
12611
|
rolloutSubcommand,
|
|
12470
12612
|
rulesListSubcommand3,
|
|
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
|
|
|
6
6
|
const __dirname = __dirname_(__filename);
|
|
7
7
|
import {
|
|
8
8
|
require_lib
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-Z44PATWW.js";
|
|
10
10
|
import {
|
|
11
11
|
isNativeBinaryInstall
|
|
12
12
|
} from "./chunk-XNFHNTS2.js";
|
|
@@ -139,15 +139,21 @@ async function isGlobalByPrefix(installPath) {
|
|
|
139
139
|
return true;
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
+
function asPackageManager(cliType) {
|
|
143
|
+
if (cliType === "npm" || cliType === "pnpm" || cliType === "yarn" || cliType === "bun" || cliType === "vlt") {
|
|
144
|
+
return cliType;
|
|
145
|
+
}
|
|
146
|
+
return "npm";
|
|
147
|
+
}
|
|
142
148
|
async function resolveInstall() {
|
|
143
149
|
const pkg = isNativeBinaryInstall() ? nativePackageName : packageName;
|
|
144
150
|
const installPath = await (0, import_fs_extra.realpath)(resolve(__dirname));
|
|
145
151
|
if (await isPnpmHomeInstall(installPath)) {
|
|
146
|
-
return {
|
|
152
|
+
return { packageManager: "pnpm", global: true, assumed: false };
|
|
147
153
|
}
|
|
148
154
|
const globalCliType = await detectGlobalCliType(installPath, pkg);
|
|
149
155
|
if (globalCliType) {
|
|
150
|
-
return {
|
|
156
|
+
return { packageManager: globalCliType, global: true, assumed: false };
|
|
151
157
|
}
|
|
152
158
|
let lockfileCliType;
|
|
153
159
|
try {
|
|
@@ -161,11 +167,13 @@ async function resolveInstall() {
|
|
|
161
167
|
} catch (_) {
|
|
162
168
|
}
|
|
163
169
|
if (!lockfileCliType) {
|
|
164
|
-
return {
|
|
170
|
+
return { packageManager: "npm", global: true, assumed: true };
|
|
165
171
|
}
|
|
172
|
+
const packageManager = asPackageManager(lockfileCliType);
|
|
166
173
|
return {
|
|
167
|
-
|
|
168
|
-
global: isGlobalByPath(installPath) || await isGlobalByPrefix(installPath)
|
|
174
|
+
packageManager,
|
|
175
|
+
global: isGlobalByPath(installPath) || await isGlobalByPrefix(installPath),
|
|
176
|
+
assumed: packageManager !== lockfileCliType
|
|
169
177
|
};
|
|
170
178
|
}
|
|
171
179
|
async function isGlobal() {
|
|
@@ -180,30 +188,35 @@ async function getUpdateCommandInfo() {
|
|
|
180
188
|
const pkgAndVersion = `${nativeInstall ? nativePackageName : packageName}@latest`;
|
|
181
189
|
if (nativeInstall) {
|
|
182
190
|
const segments = process.execPath.split(sep);
|
|
183
|
-
let
|
|
191
|
+
let packageManager2 = "npm";
|
|
184
192
|
if (segments.includes("pnpm") || segments.includes(".pnpm")) {
|
|
185
|
-
|
|
193
|
+
packageManager2 = "pnpm";
|
|
186
194
|
} else if (segments.includes("yarn") || segments.includes(".yarn")) {
|
|
187
|
-
|
|
195
|
+
packageManager2 = "yarn";
|
|
188
196
|
}
|
|
189
|
-
const install2 =
|
|
190
|
-
const force =
|
|
191
|
-
const allowBuild2 = pnpmAllowBuildFlag(
|
|
197
|
+
const install2 = packageManager2 === "yarn" ? "global add" : "i -g";
|
|
198
|
+
const force = packageManager2 === "npm" ? " --force" : "";
|
|
199
|
+
const allowBuild2 = pnpmAllowBuildFlag(packageManager2, nativePackageName);
|
|
192
200
|
return {
|
|
193
|
-
command: `${
|
|
194
|
-
global: true
|
|
201
|
+
command: `${packageManager2} ${install2} ${pkgAndVersion}${force}${allowBuild2}`,
|
|
202
|
+
global: true,
|
|
203
|
+
packageManager: packageManager2,
|
|
204
|
+
// Native path detection only positively identifies pnpm/yarn.
|
|
205
|
+
assumed: packageManager2 === "npm"
|
|
195
206
|
};
|
|
196
207
|
}
|
|
197
|
-
const {
|
|
198
|
-
const yarn =
|
|
208
|
+
const { packageManager, global, assumed } = await resolveInstall();
|
|
209
|
+
const yarn = packageManager === "yarn";
|
|
199
210
|
let install = yarn ? "add" : "i";
|
|
200
211
|
if (global) {
|
|
201
212
|
install = yarn ? "global add" : "i -g";
|
|
202
213
|
}
|
|
203
|
-
const allowBuild = global ? pnpmAllowBuildFlag(
|
|
214
|
+
const allowBuild = global ? pnpmAllowBuildFlag(packageManager, "esbuild") : "";
|
|
204
215
|
return {
|
|
205
|
-
command: `${
|
|
206
|
-
global
|
|
216
|
+
command: `${packageManager} ${install} ${pkgAndVersion}${allowBuild}`,
|
|
217
|
+
global,
|
|
218
|
+
packageManager,
|
|
219
|
+
assumed
|
|
207
220
|
};
|
|
208
221
|
}
|
|
209
222
|
function pnpmAllowBuildFlag(cliType, pkg) {
|
|
@@ -6,7 +6,7 @@ const __filename = __fileURLToPath(import.meta.url);
|
|
|
6
6
|
const __dirname = __dirname_(__filename);
|
|
7
7
|
import {
|
|
8
8
|
writeProjectSettings
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-7TYA36S5.js";
|
|
10
10
|
import {
|
|
11
11
|
autoInstallVercelPlugin
|
|
12
12
|
} from "./chunk-7AEEQOD4.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
} from "./chunk-FWKSJYDV.js";
|
|
19
19
|
import {
|
|
20
20
|
help
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-I526H4AS.js";
|
|
22
22
|
import {
|
|
23
23
|
VERCEL_DIR,
|
|
24
24
|
VERCEL_DIR_PROJECT,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
envPullCommandLogic,
|
|
27
27
|
humanizePath,
|
|
28
28
|
parseTarget
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-Z44PATWW.js";
|
|
30
30
|
import {
|
|
31
31
|
TelemetryClient
|
|
32
32
|
} from "./chunk-XNFHNTS2.js";
|
|
@@ -221,6 +221,21 @@ function buildCommandExampleLines(command) {
|
|
|
221
221
|
}
|
|
222
222
|
return outputArrayToString(outputArray);
|
|
223
223
|
}
|
|
224
|
+
function buildCommandDocumentationLines(command, options) {
|
|
225
|
+
if (options.omitDocumentation) {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
const documentation = command.documentation ?? options.parent?.documentation;
|
|
229
|
+
if (!documentation) {
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
return outputArrayToString([
|
|
233
|
+
`${INDENT}${import_chalk.default.dim(`${documentation.label}:`)}`,
|
|
234
|
+
"",
|
|
235
|
+
lineToString([INDENT, INDENT, import_chalk.default.cyan(documentation.url)]),
|
|
236
|
+
""
|
|
237
|
+
]);
|
|
238
|
+
}
|
|
224
239
|
function buildDescriptionLine(command, options) {
|
|
225
240
|
const wrappingText = wordWrap(command.description, options.columns);
|
|
226
241
|
return `${wrappingText}${NEWLINE}`;
|
|
@@ -237,6 +252,7 @@ function buildHelpOutput(command, options) {
|
|
|
237
252
|
buildCommandOptionLines(command.options, options, "Options"),
|
|
238
253
|
buildCommandOptionLines(filteredGlobalOptions, options, "Global Options"),
|
|
239
254
|
buildCommandExampleLines(command),
|
|
255
|
+
buildCommandDocumentationLines(command, options),
|
|
240
256
|
""
|
|
241
257
|
];
|
|
242
258
|
return outputArrayToString(outputArray);
|
|
@@ -249,5 +265,6 @@ function help(command, options) {
|
|
|
249
265
|
}
|
|
250
266
|
|
|
251
267
|
export {
|
|
268
|
+
buildCommandDocumentationLines,
|
|
252
269
|
help
|
|
253
270
|
};
|
|
@@ -79,7 +79,6 @@ var help = () => `
|
|
|
79
79
|
metrics <metric> Queries observability metrics for your project or team
|
|
80
80
|
mcp Set up MCP agents and configuration
|
|
81
81
|
microfrontends Manages your microfrontends
|
|
82
|
-
oauth-apps [cmd] Register Vercel Apps (OAuth) and manage team installations
|
|
83
82
|
projects Manages your Projects
|
|
84
83
|
redirects [cmd] Manages redirects for your current Project
|
|
85
84
|
rm | remove [id] Removes a deployment
|
|
@@ -9,19 +9,19 @@ import {
|
|
|
9
9
|
} from "./chunk-PRWJUY5U.js";
|
|
10
10
|
import {
|
|
11
11
|
progress
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-YLNIMGMQ.js";
|
|
13
13
|
import {
|
|
14
14
|
isJSONObject,
|
|
15
15
|
printIndications,
|
|
16
16
|
require_dist as require_dist2,
|
|
17
17
|
sleep
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-QQ77K4QW.js";
|
|
19
19
|
import {
|
|
20
20
|
suggestNextCommands
|
|
21
21
|
} from "./chunk-7ST552E3.js";
|
|
22
22
|
import {
|
|
23
23
|
CommandTimeout
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-4KVJ2M4J.js";
|
|
25
25
|
import {
|
|
26
26
|
stamp_default
|
|
27
27
|
} from "./chunk-64IF634X.js";
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
require_dist as require_dist3,
|
|
36
36
|
require_pluralize,
|
|
37
37
|
ua_default
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-Z44PATWW.js";
|
|
39
39
|
import {
|
|
40
40
|
withGlobalFlags
|
|
41
41
|
} from "./chunk-NGGLYKNU.js";
|
|
@@ -7,14 +7,14 @@ const __dirname = __dirname_(__filename);
|
|
|
7
7
|
import {
|
|
8
8
|
login,
|
|
9
9
|
require_ci_info
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-YLNIMGMQ.js";
|
|
11
11
|
import {
|
|
12
12
|
getGlobalPathConfig
|
|
13
13
|
} from "./chunk-AINIBIP4.js";
|
|
14
14
|
import {
|
|
15
15
|
humanizePath,
|
|
16
16
|
param
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-Z44PATWW.js";
|
|
18
18
|
import {
|
|
19
19
|
printError
|
|
20
20
|
} from "./chunk-AYLY3ZVL.js";
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
require_lib,
|
|
19
19
|
require_minimatch,
|
|
20
20
|
require_pluralize
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-Z44PATWW.js";
|
|
22
22
|
import {
|
|
23
23
|
isNativeBinaryInstall
|
|
24
24
|
} from "./chunk-XNFHNTS2.js";
|
|
@@ -1348,15 +1348,31 @@ var require_install_builders = __commonJS({
|
|
|
1348
1348
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1349
1349
|
var install_builders_exports = {};
|
|
1350
1350
|
__export2(install_builders_exports, {
|
|
1351
|
-
createInstallBuilders: () => createInstallBuilders2
|
|
1351
|
+
createInstallBuilders: () => createInstallBuilders2,
|
|
1352
|
+
getBuildUtilsSpec: () => getBuildUtilsSpec
|
|
1352
1353
|
});
|
|
1353
1354
|
module.exports = __toCommonJS(install_builders_exports);
|
|
1354
1355
|
var import_url = __require("url");
|
|
1355
1356
|
var import_pluralize = __toESM2(require_pluralize());
|
|
1356
1357
|
var import_path = __require("path");
|
|
1358
|
+
var import_npm_package_arg = __toESM2(require_npa());
|
|
1357
1359
|
var import_semver = require_semver();
|
|
1358
1360
|
var import_fs_extra = require_lib();
|
|
1359
1361
|
var import_error_utils = require_dist();
|
|
1362
|
+
function getBuildUtilsSpec(buildUtilsVersion) {
|
|
1363
|
+
if (!buildUtilsVersion)
|
|
1364
|
+
return "@vercel/build-utils";
|
|
1365
|
+
if ((0, import_semver.validRange)(buildUtilsVersion)) {
|
|
1366
|
+
return `@vercel/build-utils@${buildUtilsVersion}`;
|
|
1367
|
+
}
|
|
1368
|
+
try {
|
|
1369
|
+
if ((0, import_npm_package_arg.default)(buildUtilsVersion).type === "remote") {
|
|
1370
|
+
return `@vercel/build-utils@${buildUtilsVersion}`;
|
|
1371
|
+
}
|
|
1372
|
+
} catch {
|
|
1373
|
+
}
|
|
1374
|
+
return "@vercel/build-utils";
|
|
1375
|
+
}
|
|
1360
1376
|
function getErrorMessage(err, execaMessage) {
|
|
1361
1377
|
if (!err || !("stderr" in err)) {
|
|
1362
1378
|
return execaMessage;
|
|
@@ -1387,7 +1403,7 @@ var require_install_builders = __commonJS({
|
|
|
1387
1403
|
buildersToAdd
|
|
1388
1404
|
).join(", ")}`
|
|
1389
1405
|
);
|
|
1390
|
-
const buildUtilsSpec =
|
|
1406
|
+
const buildUtilsSpec = getBuildUtilsSpec(buildUtilsVersion);
|
|
1391
1407
|
const installArgs = ["install", buildUtilsSpec, ...buildersToAdd];
|
|
1392
1408
|
try {
|
|
1393
1409
|
const { stderr } = await run("npm", installArgs, {
|