vercel 59.9.1 → 59.11.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-6YKY5LGR.js → add-CFRVNBKX.js} +2 -2
- package/dist/chunks/{add-QZ5FW7LT.js → add-E45DFT3J.js} +5 -5
- package/dist/chunks/{add-DGK2A56E.js → add-O3GSKZUF.js} +2 -2
- package/dist/chunks/{build-YFUXHSMU.js → build-2NTE7JWK.js} +2 -2
- package/dist/chunks/{chunk-52P3DIMH.js → chunk-3GGEPBAK.js} +1 -1
- package/dist/chunks/{chunk-I7ZVTKXM.js → chunk-3UKQ5L3J.js} +1 -1
- package/dist/chunks/{chunk-LDZFKXIR.js → chunk-4KVJ2M4J.js} +143 -5
- package/dist/chunks/{chunk-XN75ARAD.js → chunk-4Z4HV3CA.js} +1 -1
- package/dist/chunks/{chunk-T3MRP74K.js → chunk-5JU7QOUH.js} +1 -1
- package/dist/chunks/{chunk-DSBOE2OV.js → chunk-6C2JTP4X.js} +1 -1
- package/dist/chunks/{chunk-LD3Q3MUI.js → chunk-CD7QO7KM.js} +5 -6
- package/dist/chunks/{chunk-FME4CIZL.js → chunk-G42BDXTR.js} +2 -2
- package/dist/chunks/{chunk-3E62ATUY.js → chunk-GS2PZFXH.js} +1 -1
- package/dist/chunks/{chunk-PIFTX5CY.js → chunk-HLON6KMA.js} +2 -2
- package/dist/chunks/{chunk-IWNFDR3C.js → chunk-JCWJUILX.js} +107 -8
- package/dist/chunks/{chunk-QWOCOZMS.js → chunk-LKXKVRDU.js} +1 -1
- package/dist/chunks/{chunk-OHQJEOP7.js → chunk-TBFROLYC.js} +78 -13
- package/dist/chunks/{chunk-FEQJSISH.js → chunk-U6PIXADP.js} +1 -1
- package/dist/chunks/{chunk-H43VTKRO.js → chunk-UAPPUXE4.js} +4 -4
- package/dist/chunks/{chunk-ZCAFRSCD.js → chunk-UCSXLBZP.js} +1 -1
- package/dist/chunks/{chunk-HK2IYHVR.js → chunk-UXEZ4J3R.js} +32 -19
- package/dist/chunks/{chunk-62XYUSRS.js → chunk-XJ5UBNNI.js} +1 -1
- package/dist/chunks/{chunk-22GK226I.js → chunk-XS4YBHGW.js} +2 -2
- package/dist/chunks/{chunk-2TXLG52H.js → chunk-XV7KBXHP.js} +1 -1
- package/dist/chunks/{chunk-PGTGT7AU.js → chunk-YPK2XMZG.js} +2 -2
- package/dist/chunks/{chunk-7PMXNOZH.js → chunk-ZH2JS7S6.js} +1 -1
- package/dist/chunks/{clear-LHNLYPZB.js → clear-YUJE24VB.js} +2 -2
- package/dist/chunks/{compile-vercel-config-6KPIBWNU.js → compile-vercel-config-GFR7RASU.js} +1 -1
- package/dist/chunks/{config-CNP7P3VD.js → config-XXTDK74C.js} +4 -4
- package/dist/chunks/{config-UETLVP5G.js → config-Y7IOHFIF.js} +2 -2
- package/dist/chunks/config-validator.mjs +1 -1
- package/dist/chunks/{delete-MB7H2LWR.js → delete-7WTEHQCN.js} +2 -2
- package/dist/chunks/{delete-BYCZJBHH.js → delete-CLDQ7Y54.js} +2 -2
- package/dist/chunks/{disable-OCDW6U2Q.js → disable-2ATYGRFD.js} +2 -2
- package/dist/chunks/{discard-DWPG5UX5.js → discard-OVE3QLQN.js} +2 -2
- package/dist/chunks/{edit-NOZXPAV3.js → edit-5DPGZZZO.js} +3 -3
- package/dist/chunks/{edit-ATX4K4OL.js → edit-K3LYFSD5.js} +2 -2
- package/dist/chunks/{enable-BO5DALIP.js → enable-HGE4W5HS.js} +2 -2
- package/dist/chunks/{export-RS6X5DZW.js → export-7JV3B73T.js} +2 -2
- package/dist/chunks/{image-QCNVSQFC.js → image-OAZPRIVV.js} +3 -3
- package/dist/chunks/{import-builders-H4VASUQQ.js → import-builders-AAFVLI5J.js} +2 -2
- package/dist/chunks/{inspect-LZUSSUNE.js → inspect-27PTSMPS.js} +2 -2
- package/dist/chunks/{inspect-XXHIV73A.js → inspect-FHG6BBPK.js} +2 -2
- package/dist/chunks/{inspect-HHXFMDN2.js → inspect-IY7LHGUX.js} +2 -2
- package/dist/chunks/{inspect-BOLFZZBM.js → inspect-OS3EMH6V.js} +3 -3
- package/dist/chunks/{inspect-GPLZZEW2.js → inspect-URZIMJYC.js} +2 -2
- package/dist/chunks/{list-XDRILJOZ.js → list-6D7LW4DE.js} +3 -3
- package/dist/chunks/{list-THFMP23I.js → list-KRQD3OK4.js} +2 -2
- package/dist/chunks/{list-H7ED7LCU.js → list-QJWC733B.js} +1 -1
- package/dist/chunks/{login-6KR5DCYM.js → login-UD6MYSNY.js} +2 -2
- package/dist/chunks/{ls-5RGCKNYB.js → ls-GIWVQKCG.js} +3 -3
- package/dist/chunks/{ls-GRY6G2OR.js → ls-L5J3CS43.js} +2 -2
- package/dist/chunks/{ls-LXVF34KZ.js → ls-PCEHXUR6.js} +2 -2
- package/dist/chunks/{ls-PKN53PLB.js → ls-VIA7AUIV.js} +2 -2
- package/dist/chunks/{ls-5QFIXKF3.js → ls-XGBTCRRR.js} +2 -2
- package/dist/chunks/{ls-CBFHIORN.js → ls-ZPDAOUHY.js} +2 -2
- package/dist/chunks/{open-Q7GEQR5J.js → open-TII7T3VH.js} +2 -2
- package/dist/chunks/{permissions-6SA56V2A.js → permissions-JWRTNLAF.js} +4 -4
- package/dist/chunks/{publish-TYGP2WTZ.js → publish-QPNQWBA3.js} +2 -2
- package/dist/chunks/{push-5KTXEM2H.js → push-PKPE6E5Q.js} +2 -2
- package/dist/chunks/{query-DSYDUL7N.js → query-IOG4LPJZ.js} +1 -1
- package/dist/chunks/{reorder-BEQAMXC3.js → reorder-HZOC3DN4.js} +2 -2
- package/dist/chunks/{reply-GSQ5PVE4.js → reply-TDPC3HKD.js} +2 -2
- package/dist/chunks/{resolve-AG4SS62T.js → resolve-IF3CVXHB.js} +2 -2
- package/dist/chunks/{restore-LARYR55K.js → restore-M6B5E5OX.js} +2 -2
- package/dist/chunks/{rm-FPAFEN2E.js → rm-6PV64BEM.js} +2 -2
- package/dist/chunks/{rm-ZKG56ZEW.js → rm-KJZAMWB5.js} +2 -2
- package/dist/chunks/{rm-F5SIKHU2.js → rm-RMSGUZSC.js} +2 -2
- package/dist/chunks/{rm-GPHZ3GID.js → rm-VAGUMQMB.js} +3 -3
- package/dist/chunks/{rm-FG63ON57.js → rm-ZOBZUVKY.js} +2 -2
- package/dist/chunks/{rule-inspect-JS4BK6GZ.js → rule-inspect-BKT5BO6Y.js} +3 -3
- package/dist/chunks/{rules-SMIGLNUR.js → rules-PTSN2QS7.js} +6 -6
- package/dist/chunks/{schema-FRSEAOYM.js → schema-KEAV2ESA.js} +1 -1
- package/dist/chunks/{set-E46SNNNI.js → set-NACUZBNP.js} +2 -2
- package/dist/chunks/{tags-CMBXR3FL.js → tags-CF3VZ4P7.js} +2 -2
- package/dist/chunks/{update-M5WXFGQ4.js → update-AMHBMC5O.js} +5 -5
- package/dist/commands/build/index.js +508 -63
- package/dist/commands/deploy/index.js +7 -7
- package/dist/commands/dev/index.js +6 -6
- package/dist/commands/env/index.js +6 -6
- package/dist/commands/link/index.js +2 -2
- package/dist/commands/list/index.js +2 -2
- package/dist/commands-bulk.js +2677 -1849
- package/dist/index.js +22 -8
- package/dist/version.mjs +1 -1
- package/package.json +49 -49
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
emitVcrArgParseError,
|
|
18
18
|
resolveVcrScope,
|
|
19
19
|
validateVcrJsonOutput
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-5JU7QOUH.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-TBFROLYC.js";
|
|
31
31
|
import "./chunk-FXD67VN5.js";
|
|
32
32
|
import "./chunk-XNFHNTS2.js";
|
|
33
33
|
import {
|
|
@@ -8,21 +8,21 @@ import {
|
|
|
8
8
|
parseCustomAlertQueryBody,
|
|
9
9
|
resolveCustomAlertProjectName,
|
|
10
10
|
setMissingCustomAlertProjectScope
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-HLON6KMA.js";
|
|
12
12
|
import {
|
|
13
13
|
emitRulesArgParseError,
|
|
14
14
|
handleRulesApiError,
|
|
15
15
|
parseRulesFlagsAndScope,
|
|
16
16
|
rulesCollectionPath
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-U6PIXADP.js";
|
|
18
18
|
import {
|
|
19
19
|
isCustomAlertRule
|
|
20
20
|
} from "./chunk-26XDDLXM.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-UCSXLBZP.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-3GGEPBAK.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-TBFROLYC.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-5JU7QOUH.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-TBFROLYC.js";
|
|
26
26
|
import "./chunk-FXD67VN5.js";
|
|
27
27
|
import "./chunk-XNFHNTS2.js";
|
|
28
28
|
import {
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
runEngine,
|
|
24
24
|
splitPassthrough,
|
|
25
25
|
validateVcrChoice
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-5JU7QOUH.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-TBFROLYC.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
|
{
|
|
@@ -4986,6 +5038,18 @@ var firewallCommand = {
|
|
|
4986
5038
|
]
|
|
4987
5039
|
};
|
|
4988
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
|
+
|
|
4989
5053
|
// src/util/flags/comparators.ts
|
|
4990
5054
|
var FLAG_CONDITION_COMPARATORS = [
|
|
4991
5055
|
"eq",
|
|
@@ -5039,11 +5103,18 @@ var FLAG_CONDITION_COMPARATOR_LABELS = {
|
|
|
5039
5103
|
lt: "is less than",
|
|
5040
5104
|
lte: "is less than or equal to"
|
|
5041
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
|
+
};
|
|
5042
5112
|
var LEGACY_FLAG_CONDITION_COMPARATOR_LABELS = {
|
|
5043
5113
|
notContains: FLAG_CONDITION_COMPARATOR_LABELS["!contains"]
|
|
5044
5114
|
};
|
|
5045
5115
|
function formatFlagConditionComparator(comparator, options) {
|
|
5046
|
-
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;
|
|
5047
5118
|
if (options?.ignoreCase) {
|
|
5048
5119
|
return `${label} (case-insensitive)`;
|
|
5049
5120
|
}
|
|
@@ -5066,7 +5137,7 @@ function isFlagEvaluationsGranularity(value) {
|
|
|
5066
5137
|
}
|
|
5067
5138
|
|
|
5068
5139
|
// src/commands/flags/command.ts
|
|
5069
|
-
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}`;
|
|
5070
5141
|
var listSubcommand11 = {
|
|
5071
5142
|
name: "list",
|
|
5072
5143
|
aliases: ["ls"],
|
|
@@ -5582,6 +5653,58 @@ var setSubcommand2 = {
|
|
|
5582
5653
|
}
|
|
5583
5654
|
]
|
|
5584
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
|
+
};
|
|
5585
5708
|
var splitSubcommand = {
|
|
5586
5709
|
name: "split",
|
|
5587
5710
|
aliases: [],
|
|
@@ -5904,6 +6027,10 @@ var rulesAddSubcommand3 = {
|
|
|
5904
6027
|
name: "Add a segment rule",
|
|
5905
6028
|
value: `${packageName} flags rules add my-feature -e production --condition segment:eq:seg_beta123 --variant on`
|
|
5906
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
|
+
},
|
|
5907
6034
|
{
|
|
5908
6035
|
name: "Add a split rule at the top",
|
|
5909
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`
|
|
@@ -6344,8 +6471,8 @@ var segmentsCreateSubcommand = {
|
|
|
6344
6471
|
value: `${packageName} flags segments create beta-users --label "Beta users" --add include:user.id=user_123 --add include:user.id=user_456`
|
|
6345
6472
|
},
|
|
6346
6473
|
{
|
|
6347
|
-
name: "Create a segment
|
|
6348
|
-
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`
|
|
6349
6476
|
},
|
|
6350
6477
|
{
|
|
6351
6478
|
name: "Create a segment from full JSON data",
|
|
@@ -6433,6 +6560,10 @@ var segmentsUpdateSubcommand = {
|
|
|
6433
6560
|
{
|
|
6434
6561
|
name: "Add and remove rules",
|
|
6435
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`
|
|
6436
6567
|
}
|
|
6437
6568
|
]
|
|
6438
6569
|
};
|
|
@@ -6655,6 +6786,7 @@ var flagsCommand = {
|
|
|
6655
6786
|
openSubcommand2,
|
|
6656
6787
|
updateSubcommand3,
|
|
6657
6788
|
setSubcommand2,
|
|
6789
|
+
useTargetingSubcommand,
|
|
6658
6790
|
splitSubcommand,
|
|
6659
6791
|
rolloutSubcommand,
|
|
6660
6792
|
removeSubcommand8,
|
|
@@ -12389,6 +12521,8 @@ export {
|
|
|
12389
12521
|
openSubcommand,
|
|
12390
12522
|
attachSubcommand,
|
|
12391
12523
|
detachSubcommand,
|
|
12524
|
+
contactsAddSubcommand,
|
|
12525
|
+
contactsSubcommand,
|
|
12392
12526
|
connexCommand,
|
|
12393
12527
|
contractCommand,
|
|
12394
12528
|
addSubcommand3 as addSubcommand2,
|
|
@@ -12453,6 +12587,9 @@ export {
|
|
|
12453
12587
|
systemMitigationsResumeSubcommand,
|
|
12454
12588
|
systemMitigationsSubcommand,
|
|
12455
12589
|
firewallCommand,
|
|
12590
|
+
isTimestampAttributeType,
|
|
12591
|
+
isBucketingAttribute,
|
|
12592
|
+
getFlagAttributeType,
|
|
12456
12593
|
FLAG_CONDITION_LIST_COMPARATORS,
|
|
12457
12594
|
FLAG_CONDITION_RHS_OPTIONAL_COMPARATORS,
|
|
12458
12595
|
formatFlagConditionComparatorList,
|
|
@@ -12469,6 +12606,7 @@ export {
|
|
|
12469
12606
|
openSubcommand2,
|
|
12470
12607
|
updateSubcommand3,
|
|
12471
12608
|
setSubcommand2,
|
|
12609
|
+
useTargetingSubcommand,
|
|
12472
12610
|
splitSubcommand,
|
|
12473
12611
|
rolloutSubcommand,
|
|
12474
12612
|
rulesListSubcommand3,
|
|
@@ -7,14 +7,14 @@ const __dirname = __dirname_(__filename);
|
|
|
7
7
|
import {
|
|
8
8
|
getUpdateCommandInfo,
|
|
9
9
|
isGlobal
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-UXEZ4J3R.js";
|
|
11
11
|
import {
|
|
12
12
|
progress,
|
|
13
13
|
require_ci_info
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-XS4YBHGW.js";
|
|
15
15
|
import {
|
|
16
16
|
writeToConfigFile
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-3GGEPBAK.js";
|
|
18
18
|
import {
|
|
19
19
|
getGlobalPathConfig
|
|
20
20
|
} from "./chunk-AINIBIP4.js";
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
import {
|
|
25
25
|
apiCommand,
|
|
26
26
|
listSubcommand4 as listSubcommand
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-4KVJ2M4J.js";
|
|
28
28
|
import {
|
|
29
29
|
require_semver
|
|
30
30
|
} from "./chunk-IB5L4LKZ.js";
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
require_mkdirp,
|
|
37
37
|
require_pump,
|
|
38
38
|
require_tar_stream
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-TBFROLYC.js";
|
|
40
40
|
import {
|
|
41
41
|
TelemetryClient,
|
|
42
42
|
getInstallRoot,
|
|
@@ -3475,7 +3475,6 @@ export {
|
|
|
3475
3475
|
installAndLinkPrBinary,
|
|
3476
3476
|
listInstalledVersions,
|
|
3477
3477
|
getLinkedVersion,
|
|
3478
|
-
isLinkedToPrBuild,
|
|
3479
3478
|
setPinnedVersion,
|
|
3480
3479
|
getPinnedVersion,
|
|
3481
3480
|
getPrBuildSha,
|
|
@@ -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-XS4YBHGW.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-TBFROLYC.js";
|
|
18
18
|
import {
|
|
19
19
|
printError
|
|
20
20
|
} from "./chunk-AYLY3ZVL.js";
|
|
@@ -6,10 +6,10 @@ const __filename = __fileURLToPath(import.meta.url);
|
|
|
6
6
|
const __dirname = __dirname_(__filename);
|
|
7
7
|
import {
|
|
8
8
|
isJSONObject
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3GGEPBAK.js";
|
|
10
10
|
import {
|
|
11
11
|
getProjectByNameOrId
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TBFROLYC.js";
|
|
13
13
|
import {
|
|
14
14
|
AGENT_REASON,
|
|
15
15
|
outputAgentError
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
require_dist2 as require_dist3,
|
|
10
10
|
require_dist4,
|
|
11
11
|
require_lib
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TBFROLYC.js";
|
|
13
13
|
import {
|
|
14
14
|
output_manager_default,
|
|
15
15
|
require_dist
|
|
@@ -8058,13 +8058,22 @@ var require_merge = __commonJS({
|
|
|
8058
8058
|
merge: () => merge
|
|
8059
8059
|
});
|
|
8060
8060
|
module.exports = __toCommonJS(merge_exports);
|
|
8061
|
-
var
|
|
8061
|
+
var import_node_path = __require("path");
|
|
8062
|
+
var import_promises = __require("fs/promises");
|
|
8062
8063
|
var import_error_utils = require_dist();
|
|
8063
8064
|
var import_fs_extra = require_lib();
|
|
8064
|
-
|
|
8065
|
+
var mergeQueue = Promise.resolve();
|
|
8066
|
+
function merge(source, destination, ignoreFilter, sourceRoot) {
|
|
8067
|
+
const run = () => mergeImpl(source, destination, ignoreFilter, sourceRoot);
|
|
8068
|
+
const result = mergeQueue.then(run, run);
|
|
8069
|
+
mergeQueue = result.catch(() => {
|
|
8070
|
+
});
|
|
8071
|
+
return result;
|
|
8072
|
+
}
|
|
8073
|
+
async function mergeImpl(source, destination, ignoreFilter, sourceRoot) {
|
|
8065
8074
|
const root = sourceRoot || source;
|
|
8066
8075
|
if (ignoreFilter) {
|
|
8067
|
-
const relPath = (0,
|
|
8076
|
+
const relPath = (0, import_node_path.relative)(root, source);
|
|
8068
8077
|
if (relPath && !ignoreFilter(relPath)) {
|
|
8069
8078
|
await (0, import_fs_extra.remove)(source);
|
|
8070
8079
|
return;
|
|
@@ -8075,7 +8084,7 @@ var require_merge = __commonJS({
|
|
|
8075
8084
|
);
|
|
8076
8085
|
if ((0, import_error_utils.isErrnoException)(destStat)) {
|
|
8077
8086
|
if (destStat.code === "ENOENT") {
|
|
8078
|
-
await (
|
|
8087
|
+
await publishNew(source, destination, ignoreFilter, root);
|
|
8079
8088
|
return;
|
|
8080
8089
|
}
|
|
8081
8090
|
throw destStat;
|
|
@@ -8090,15 +8099,105 @@ var require_merge = __commonJS({
|
|
|
8090
8099
|
} else {
|
|
8091
8100
|
await Promise.all(
|
|
8092
8101
|
contents.map(
|
|
8093
|
-
(name) =>
|
|
8102
|
+
(name) => mergeImpl(
|
|
8103
|
+
(0, import_node_path.join)(source, name),
|
|
8104
|
+
(0, import_node_path.join)(destination, name),
|
|
8105
|
+
ignoreFilter,
|
|
8106
|
+
root
|
|
8107
|
+
)
|
|
8094
8108
|
)
|
|
8095
8109
|
);
|
|
8096
8110
|
await (0, import_fs_extra.rmdir)(source);
|
|
8097
8111
|
return;
|
|
8098
8112
|
}
|
|
8099
8113
|
}
|
|
8100
|
-
await (
|
|
8101
|
-
|
|
8114
|
+
await overwrite(source, destination, ignoreFilter, root);
|
|
8115
|
+
}
|
|
8116
|
+
async function publishNew(source, destination, ignoreFilter, root) {
|
|
8117
|
+
let renameError;
|
|
8118
|
+
try {
|
|
8119
|
+
try {
|
|
8120
|
+
await (0, import_promises.rename)(source, destination);
|
|
8121
|
+
return;
|
|
8122
|
+
} catch (err) {
|
|
8123
|
+
if ((0, import_error_utils.isErrnoException)(err) && err.code === "ENOENT") {
|
|
8124
|
+
await (0, import_fs_extra.mkdirp)((0, import_node_path.dirname)(destination));
|
|
8125
|
+
await (0, import_promises.rename)(source, destination);
|
|
8126
|
+
return;
|
|
8127
|
+
}
|
|
8128
|
+
throw err;
|
|
8129
|
+
}
|
|
8130
|
+
} catch (err) {
|
|
8131
|
+
renameError = err;
|
|
8132
|
+
}
|
|
8133
|
+
if ((0, import_error_utils.isErrnoException)(renameError) && renameError.code === "EXDEV") {
|
|
8134
|
+
const tmp = tmpName(destination);
|
|
8135
|
+
try {
|
|
8136
|
+
await (0, import_fs_extra.move)(source, tmp);
|
|
8137
|
+
} catch (err) {
|
|
8138
|
+
await (0, import_fs_extra.remove)(tmp).catch(() => void 0);
|
|
8139
|
+
throw err;
|
|
8140
|
+
}
|
|
8141
|
+
try {
|
|
8142
|
+
await (0, import_promises.rename)(tmp, destination);
|
|
8143
|
+
} catch {
|
|
8144
|
+
const relPrefix = (0, import_node_path.relative)(root, source);
|
|
8145
|
+
try {
|
|
8146
|
+
await mergeImpl(
|
|
8147
|
+
tmp,
|
|
8148
|
+
destination,
|
|
8149
|
+
ignoreFilter && ((path) => ignoreFilter((0, import_node_path.join)(relPrefix, path))),
|
|
8150
|
+
tmp
|
|
8151
|
+
);
|
|
8152
|
+
} catch (err) {
|
|
8153
|
+
await (0, import_fs_extra.remove)(tmp).catch(() => void 0);
|
|
8154
|
+
throw err;
|
|
8155
|
+
}
|
|
8156
|
+
}
|
|
8157
|
+
return;
|
|
8158
|
+
}
|
|
8159
|
+
const destinationAppeared = await (0, import_fs_extra.stat)(destination).then(
|
|
8160
|
+
() => true,
|
|
8161
|
+
() => false
|
|
8162
|
+
);
|
|
8163
|
+
if (!destinationAppeared) {
|
|
8164
|
+
throw renameError;
|
|
8165
|
+
}
|
|
8166
|
+
await mergeImpl(source, destination, ignoreFilter, root);
|
|
8167
|
+
}
|
|
8168
|
+
async function overwrite(source, destination, ignoreFilter, root) {
|
|
8169
|
+
const tmp = tmpName(destination);
|
|
8170
|
+
try {
|
|
8171
|
+
await (0, import_fs_extra.move)(source, tmp);
|
|
8172
|
+
} catch (err) {
|
|
8173
|
+
await (0, import_fs_extra.remove)(tmp).catch(() => void 0);
|
|
8174
|
+
throw err;
|
|
8175
|
+
}
|
|
8176
|
+
try {
|
|
8177
|
+
await (0, import_promises.rename)(tmp, destination);
|
|
8178
|
+
return;
|
|
8179
|
+
} catch {
|
|
8180
|
+
}
|
|
8181
|
+
try {
|
|
8182
|
+
await (0, import_fs_extra.remove)(destination);
|
|
8183
|
+
await (0, import_promises.rename)(tmp, destination);
|
|
8184
|
+
} catch {
|
|
8185
|
+
const relPrefix = (0, import_node_path.relative)(root, source);
|
|
8186
|
+
try {
|
|
8187
|
+
await mergeImpl(
|
|
8188
|
+
tmp,
|
|
8189
|
+
destination,
|
|
8190
|
+
ignoreFilter && ((path) => ignoreFilter((0, import_node_path.join)(relPrefix, path))),
|
|
8191
|
+
tmp
|
|
8192
|
+
);
|
|
8193
|
+
} catch (err) {
|
|
8194
|
+
await (0, import_fs_extra.remove)(tmp).catch(() => void 0);
|
|
8195
|
+
throw err;
|
|
8196
|
+
}
|
|
8197
|
+
}
|
|
8198
|
+
}
|
|
8199
|
+
function tmpName(destination) {
|
|
8200
|
+
return `${destination}.tmp-${process.pid}-${Math.random().toString(36).slice(2)}`;
|
|
8102
8201
|
}
|
|
8103
8202
|
}
|
|
8104
8203
|
});
|