@vypdev/copilot 3.5.1 → 3.5.2
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/build/cli/index.js +52 -12
- package/build/github_action/index.js +52 -12
- package/package.json +1 -1
package/build/cli/index.js
CHANGED
|
@@ -44015,7 +44015,7 @@ exports.ENGLISH_MERGE_QUEUE_MESSAGES = Object.freeze({
|
|
|
44015
44015
|
'mergeQueue.decision.queueNotExposed': 'The target does not expose a required merge queue.',
|
|
44016
44016
|
'mergeQueue.decision.autoMergeConfigured': 'Native auto-merge was explicitly configured.',
|
|
44017
44017
|
'mergeQueue.decision.autoMergeDisabled': 'Native auto-merge is disabled for this repository.',
|
|
44018
|
-
'mergeQueue.decision.immediatelyMergeable': 'GitHub reports the pull request ready;
|
|
44018
|
+
'mergeQueue.decision.immediatelyMergeable': 'GitHub reports the pull request ready; merge its verified head with branch protection enforced.',
|
|
44019
44019
|
'mergeQueue.decision.autoMergeAvailable': 'GitHub will merge after checks and reviews complete.',
|
|
44020
44020
|
'mergeQueue.decision.createOnlyRequired': 'Repository auto-merge is unavailable; maintainer merge is required.',
|
|
44021
44021
|
});
|
|
@@ -44040,7 +44040,7 @@ exports.SPANISH_MERGE_QUEUE_MESSAGES = Object.freeze({
|
|
|
44040
44040
|
'mergeQueue.decision.queueNotExposed': 'El destino no expone una merge queue obligatoria.',
|
|
44041
44041
|
'mergeQueue.decision.autoMergeConfigured': 'El auto-merge nativo se ha configurado explícitamente.',
|
|
44042
44042
|
'mergeQueue.decision.autoMergeDisabled': 'El auto-merge nativo está deshabilitado en este repositorio.',
|
|
44043
|
-
'mergeQueue.decision.immediatelyMergeable': 'GitHub indica que la pull request está lista;
|
|
44043
|
+
'mergeQueue.decision.immediatelyMergeable': 'GitHub indica que la pull request está lista; fusionar su head verificado respetando la protección de rama.',
|
|
44044
44044
|
'mergeQueue.decision.autoMergeAvailable': 'GitHub hará merge cuando terminen los checks y las revisiones.',
|
|
44045
44045
|
'mergeQueue.decision.createOnlyRequired': 'El auto-merge del repositorio no está disponible; se requiere el merge de una persona mantenedora.',
|
|
44046
44046
|
});
|
|
@@ -52014,7 +52014,7 @@ class DeploymentOrchestrationRuntime {
|
|
|
52014
52014
|
}
|
|
52015
52015
|
async applyAutoMerge(context, operation, pullRequest, capabilities) {
|
|
52016
52016
|
if (operation.prMode === "auto" && capabilities.immediatelyMergeable) {
|
|
52017
|
-
await this.dependencies.pullRequests.mergePullRequest(pullRequest.number);
|
|
52017
|
+
await this.dependencies.pullRequests.mergePullRequest(pullRequest.number, pullRequest.headSha);
|
|
52018
52018
|
return;
|
|
52019
52019
|
}
|
|
52020
52020
|
if (!pullRequest.autoMergeEnabled) {
|
|
@@ -79383,12 +79383,13 @@ class GithubManagedPullRequestRepository {
|
|
|
79383
79383
|
throw new Error("GitHub did not confirm that the pull request entered the merge queue.");
|
|
79384
79384
|
}
|
|
79385
79385
|
}
|
|
79386
|
-
async mergePullRequest(owner, repository, pullRequest, token) {
|
|
79386
|
+
async mergePullRequest(owner, repository, pullRequest, expectedHeadSha, token) {
|
|
79387
79387
|
const { data } = await this.clientProvider.getClient(token).rest.pulls.merge({
|
|
79388
79388
|
owner,
|
|
79389
79389
|
repo: repository,
|
|
79390
79390
|
pull_number: pullRequest,
|
|
79391
79391
|
merge_method: "merge",
|
|
79392
|
+
sha: expectedHeadSha,
|
|
79392
79393
|
});
|
|
79393
79394
|
if (!data.merged || !data.sha)
|
|
79394
79395
|
throw new Error(data.message ?? `Pull request #${pullRequest} was not merged.`);
|
|
@@ -79413,6 +79414,43 @@ function mapPullRequest(value, owner, repository) {
|
|
|
79413
79414
|
}
|
|
79414
79415
|
|
|
79415
79416
|
|
|
79417
|
+
/***/ }),
|
|
79418
|
+
|
|
79419
|
+
/***/ 33371:
|
|
79420
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
79421
|
+
|
|
79422
|
+
"use strict";
|
|
79423
|
+
|
|
79424
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
79425
|
+
exports.observePullRequestReadiness = observePullRequestReadiness;
|
|
79426
|
+
async function observePullRequestReadiness(client, owner, repository, pullRequest) {
|
|
79427
|
+
try {
|
|
79428
|
+
const response = await client.graphql(`query DeploymentPullRequestReadiness($owner: String!, $repository: String!, $pullRequest: Int!) {
|
|
79429
|
+
repository(owner: $owner, name: $repository) {
|
|
79430
|
+
pullRequest(number: $pullRequest) { headRefOid mergeable mergeStateStatus isDraft }
|
|
79431
|
+
}
|
|
79432
|
+
}`, { owner, repository, pullRequest });
|
|
79433
|
+
const state = response?.repository?.pullRequest;
|
|
79434
|
+
if (!state || typeof state.headRefOid !== "string" || !/^[a-f0-9]{40}$/i.test(state.headRefOid)
|
|
79435
|
+
|| typeof state.mergeable !== "string" || !["MERGEABLE", "CONFLICTING", "UNKNOWN"].includes(state.mergeable)
|
|
79436
|
+
|| typeof state.mergeStateStatus !== "string" || state.mergeStateStatus.length === 0
|
|
79437
|
+
|| typeof state.isDraft !== "boolean") {
|
|
79438
|
+
return { problem: { area: "workflow-contract", message: "GitHub returned incomplete pull-request merge readiness." } };
|
|
79439
|
+
}
|
|
79440
|
+
return {
|
|
79441
|
+
value: {
|
|
79442
|
+
headSha: state.headRefOid,
|
|
79443
|
+
immediatelyMergeable: !state.isDraft && state.mergeable === "MERGEABLE"
|
|
79444
|
+
&& ["CLEAN", "UNSTABLE"].includes(state.mergeStateStatus),
|
|
79445
|
+
},
|
|
79446
|
+
};
|
|
79447
|
+
}
|
|
79448
|
+
catch {
|
|
79449
|
+
return { problem: { area: "workflow-contract", message: "GitHub pull-request merge readiness could not be inspected." } };
|
|
79450
|
+
}
|
|
79451
|
+
}
|
|
79452
|
+
|
|
79453
|
+
|
|
79416
79454
|
/***/ }),
|
|
79417
79455
|
|
|
79418
79456
|
/***/ 55527:
|
|
@@ -79456,6 +79494,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
79456
79494
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
79457
79495
|
exports.GithubTargetMergeCapabilitiesInspector = void 0;
|
|
79458
79496
|
const yaml = __importStar(__nccwpck_require__(783));
|
|
79497
|
+
const github_pull_request_readiness_query_1 = __nccwpck_require__(33371);
|
|
79459
79498
|
class GithubTargetMergeCapabilitiesInspector {
|
|
79460
79499
|
constructor(clientProvider) {
|
|
79461
79500
|
this.clientProvider = clientProvider;
|
|
@@ -79468,8 +79507,8 @@ class GithubTargetMergeCapabilitiesInspector {
|
|
|
79468
79507
|
observeEffectiveRules(client, owner, repository, targetBranch),
|
|
79469
79508
|
observeBranchMergeQueue(client, owner, repository, targetBranch),
|
|
79470
79509
|
options.pullRequest === undefined
|
|
79471
|
-
? Promise.resolve(undefined)
|
|
79472
|
-
:
|
|
79510
|
+
? Promise.resolve({ value: undefined, problem: undefined })
|
|
79511
|
+
: (0, github_pull_request_readiness_query_1.observePullRequestReadiness)(client, owner, repository, options.pullRequest),
|
|
79473
79512
|
]);
|
|
79474
79513
|
const candidateProblem = options.candidateHeadSha !== undefined && !/^[a-f0-9]{40}$/i.test(options.candidateHeadSha)
|
|
79475
79514
|
? {
|
|
@@ -79479,25 +79518,26 @@ class GithubTargetMergeCapabilitiesInspector {
|
|
|
79479
79518
|
: undefined;
|
|
79480
79519
|
const candidateHeadChangedProblem = options.candidateHeadSha !== undefined
|
|
79481
79520
|
&& candidateProblem === undefined
|
|
79482
|
-
&& pullRequestState !== undefined
|
|
79483
|
-
&& pullRequestState.
|
|
79521
|
+
&& pullRequestState.value !== undefined
|
|
79522
|
+
&& pullRequestState.value.headSha !== options.candidateHeadSha
|
|
79484
79523
|
? {
|
|
79485
79524
|
area: "workflow-contract",
|
|
79486
79525
|
message: "The pull request head changed during readiness inspection, so the observed workflow contract is stale.",
|
|
79487
79526
|
}
|
|
79488
79527
|
: undefined;
|
|
79489
79528
|
const effective = normalizeEffectiveRules(classic.value, rulesets.value);
|
|
79490
|
-
const problems = [classic.problem, rulesets.problem, queue.problem,
|
|
79529
|
+
const problems = [classic.problem, rulesets.problem, queue.problem, pullRequestState.problem,
|
|
79530
|
+
candidateProblem, candidateHeadChangedProblem, ...effective.problems]
|
|
79491
79531
|
.filter((problem) => problem !== undefined);
|
|
79492
79532
|
const mergeQueueRequired = queue.value === true || effective.mergeQueueRequired;
|
|
79493
|
-
const candidateHeadSha = options.candidateHeadSha ?? pullRequestState?.
|
|
79533
|
+
const candidateHeadSha = options.candidateHeadSha ?? pullRequestState.value?.headSha;
|
|
79494
79534
|
const producerInspection = mergeQueueRequired
|
|
79495
79535
|
? await inspectMergeQueueProducers(client, owner, repository, repositoryData.id, targetBranch, candidateHeadSha, effective.requiredChecks, effective.requiredWorkflows)
|
|
79496
79536
|
: { producers: [], problems: [] };
|
|
79497
79537
|
return {
|
|
79498
79538
|
autoMergeAllowed: repositoryData.allow_auto_merge === true,
|
|
79499
79539
|
mergeQueueRequired,
|
|
79500
|
-
immediatelyMergeable:
|
|
79540
|
+
immediatelyMergeable: problems.length === 0 && pullRequestState.value?.immediatelyMergeable === true,
|
|
79501
79541
|
requiresStrictStatusChecks: effective.requiresStrictStatusChecks,
|
|
79502
79542
|
mergeQueueProducers: producerInspection.producers,
|
|
79503
79543
|
mergeQueueObservationProblems: [...problems, ...producerInspection.problems],
|
|
@@ -92399,7 +92439,7 @@ function bindManagedPullRequests(port, binding) {
|
|
|
92399
92439
|
enableAutoMerge: (pullRequestNodeId) => port.enableAutoMerge(binding.owner, binding.repository, pullRequestNodeId, binding.token),
|
|
92400
92440
|
isPullRequestQueued: (pullRequestNodeId) => port.isPullRequestQueued(binding.owner, binding.repository, pullRequestNodeId, binding.token),
|
|
92401
92441
|
enqueuePullRequest: (pullRequestNodeId, expectedHeadSha) => port.enqueuePullRequest(binding.owner, binding.repository, pullRequestNodeId, expectedHeadSha, binding.token),
|
|
92402
|
-
mergePullRequest: (pullRequest) => port.mergePullRequest(binding.owner, binding.repository, pullRequest, binding.token),
|
|
92442
|
+
mergePullRequest: (pullRequest, expectedHeadSha) => port.mergePullRequest(binding.owner, binding.repository, pullRequest, expectedHeadSha, binding.token),
|
|
92403
92443
|
});
|
|
92404
92444
|
}
|
|
92405
92445
|
function bindDeploymentTargetRules(port, binding) {
|
|
@@ -45553,7 +45553,7 @@ exports.ENGLISH_MERGE_QUEUE_MESSAGES = Object.freeze({
|
|
|
45553
45553
|
'mergeQueue.decision.queueNotExposed': 'The target does not expose a required merge queue.',
|
|
45554
45554
|
'mergeQueue.decision.autoMergeConfigured': 'Native auto-merge was explicitly configured.',
|
|
45555
45555
|
'mergeQueue.decision.autoMergeDisabled': 'Native auto-merge is disabled for this repository.',
|
|
45556
|
-
'mergeQueue.decision.immediatelyMergeable': 'GitHub reports the pull request ready;
|
|
45556
|
+
'mergeQueue.decision.immediatelyMergeable': 'GitHub reports the pull request ready; merge its verified head with branch protection enforced.',
|
|
45557
45557
|
'mergeQueue.decision.autoMergeAvailable': 'GitHub will merge after checks and reviews complete.',
|
|
45558
45558
|
'mergeQueue.decision.createOnlyRequired': 'Repository auto-merge is unavailable; maintainer merge is required.',
|
|
45559
45559
|
});
|
|
@@ -45578,7 +45578,7 @@ exports.SPANISH_MERGE_QUEUE_MESSAGES = Object.freeze({
|
|
|
45578
45578
|
'mergeQueue.decision.queueNotExposed': 'El destino no expone una merge queue obligatoria.',
|
|
45579
45579
|
'mergeQueue.decision.autoMergeConfigured': 'El auto-merge nativo se ha configurado explícitamente.',
|
|
45580
45580
|
'mergeQueue.decision.autoMergeDisabled': 'El auto-merge nativo está deshabilitado en este repositorio.',
|
|
45581
|
-
'mergeQueue.decision.immediatelyMergeable': 'GitHub indica que la pull request está lista;
|
|
45581
|
+
'mergeQueue.decision.immediatelyMergeable': 'GitHub indica que la pull request está lista; fusionar su head verificado respetando la protección de rama.',
|
|
45582
45582
|
'mergeQueue.decision.autoMergeAvailable': 'GitHub hará merge cuando terminen los checks y las revisiones.',
|
|
45583
45583
|
'mergeQueue.decision.createOnlyRequired': 'El auto-merge del repositorio no está disponible; se requiere el merge de una persona mantenedora.',
|
|
45584
45584
|
});
|
|
@@ -50328,7 +50328,7 @@ class DeploymentOrchestrationRuntime {
|
|
|
50328
50328
|
}
|
|
50329
50329
|
async applyAutoMerge(context, operation, pullRequest, capabilities) {
|
|
50330
50330
|
if (operation.prMode === "auto" && capabilities.immediatelyMergeable) {
|
|
50331
|
-
await this.dependencies.pullRequests.mergePullRequest(pullRequest.number);
|
|
50331
|
+
await this.dependencies.pullRequests.mergePullRequest(pullRequest.number, pullRequest.headSha);
|
|
50332
50332
|
return;
|
|
50333
50333
|
}
|
|
50334
50334
|
if (!pullRequest.autoMergeEnabled) {
|
|
@@ -71651,12 +71651,13 @@ class GithubManagedPullRequestRepository {
|
|
|
71651
71651
|
throw new Error("GitHub did not confirm that the pull request entered the merge queue.");
|
|
71652
71652
|
}
|
|
71653
71653
|
}
|
|
71654
|
-
async mergePullRequest(owner, repository, pullRequest, token) {
|
|
71654
|
+
async mergePullRequest(owner, repository, pullRequest, expectedHeadSha, token) {
|
|
71655
71655
|
const { data } = await this.clientProvider.getClient(token).rest.pulls.merge({
|
|
71656
71656
|
owner,
|
|
71657
71657
|
repo: repository,
|
|
71658
71658
|
pull_number: pullRequest,
|
|
71659
71659
|
merge_method: "merge",
|
|
71660
|
+
sha: expectedHeadSha,
|
|
71660
71661
|
});
|
|
71661
71662
|
if (!data.merged || !data.sha)
|
|
71662
71663
|
throw new Error(data.message ?? `Pull request #${pullRequest} was not merged.`);
|
|
@@ -71681,6 +71682,43 @@ function mapPullRequest(value, owner, repository) {
|
|
|
71681
71682
|
}
|
|
71682
71683
|
|
|
71683
71684
|
|
|
71685
|
+
/***/ }),
|
|
71686
|
+
|
|
71687
|
+
/***/ 33371:
|
|
71688
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
71689
|
+
|
|
71690
|
+
"use strict";
|
|
71691
|
+
|
|
71692
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
71693
|
+
exports.observePullRequestReadiness = observePullRequestReadiness;
|
|
71694
|
+
async function observePullRequestReadiness(client, owner, repository, pullRequest) {
|
|
71695
|
+
try {
|
|
71696
|
+
const response = await client.graphql(`query DeploymentPullRequestReadiness($owner: String!, $repository: String!, $pullRequest: Int!) {
|
|
71697
|
+
repository(owner: $owner, name: $repository) {
|
|
71698
|
+
pullRequest(number: $pullRequest) { headRefOid mergeable mergeStateStatus isDraft }
|
|
71699
|
+
}
|
|
71700
|
+
}`, { owner, repository, pullRequest });
|
|
71701
|
+
const state = response?.repository?.pullRequest;
|
|
71702
|
+
if (!state || typeof state.headRefOid !== "string" || !/^[a-f0-9]{40}$/i.test(state.headRefOid)
|
|
71703
|
+
|| typeof state.mergeable !== "string" || !["MERGEABLE", "CONFLICTING", "UNKNOWN"].includes(state.mergeable)
|
|
71704
|
+
|| typeof state.mergeStateStatus !== "string" || state.mergeStateStatus.length === 0
|
|
71705
|
+
|| typeof state.isDraft !== "boolean") {
|
|
71706
|
+
return { problem: { area: "workflow-contract", message: "GitHub returned incomplete pull-request merge readiness." } };
|
|
71707
|
+
}
|
|
71708
|
+
return {
|
|
71709
|
+
value: {
|
|
71710
|
+
headSha: state.headRefOid,
|
|
71711
|
+
immediatelyMergeable: !state.isDraft && state.mergeable === "MERGEABLE"
|
|
71712
|
+
&& ["CLEAN", "UNSTABLE"].includes(state.mergeStateStatus),
|
|
71713
|
+
},
|
|
71714
|
+
};
|
|
71715
|
+
}
|
|
71716
|
+
catch {
|
|
71717
|
+
return { problem: { area: "workflow-contract", message: "GitHub pull-request merge readiness could not be inspected." } };
|
|
71718
|
+
}
|
|
71719
|
+
}
|
|
71720
|
+
|
|
71721
|
+
|
|
71684
71722
|
/***/ }),
|
|
71685
71723
|
|
|
71686
71724
|
/***/ 55527:
|
|
@@ -71724,6 +71762,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
71724
71762
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
71725
71763
|
exports.GithubTargetMergeCapabilitiesInspector = void 0;
|
|
71726
71764
|
const yaml = __importStar(__nccwpck_require__(783));
|
|
71765
|
+
const github_pull_request_readiness_query_1 = __nccwpck_require__(33371);
|
|
71727
71766
|
class GithubTargetMergeCapabilitiesInspector {
|
|
71728
71767
|
constructor(clientProvider) {
|
|
71729
71768
|
this.clientProvider = clientProvider;
|
|
@@ -71736,8 +71775,8 @@ class GithubTargetMergeCapabilitiesInspector {
|
|
|
71736
71775
|
observeEffectiveRules(client, owner, repository, targetBranch),
|
|
71737
71776
|
observeBranchMergeQueue(client, owner, repository, targetBranch),
|
|
71738
71777
|
options.pullRequest === undefined
|
|
71739
|
-
? Promise.resolve(undefined)
|
|
71740
|
-
:
|
|
71778
|
+
? Promise.resolve({ value: undefined, problem: undefined })
|
|
71779
|
+
: (0, github_pull_request_readiness_query_1.observePullRequestReadiness)(client, owner, repository, options.pullRequest),
|
|
71741
71780
|
]);
|
|
71742
71781
|
const candidateProblem = options.candidateHeadSha !== undefined && !/^[a-f0-9]{40}$/i.test(options.candidateHeadSha)
|
|
71743
71782
|
? {
|
|
@@ -71747,25 +71786,26 @@ class GithubTargetMergeCapabilitiesInspector {
|
|
|
71747
71786
|
: undefined;
|
|
71748
71787
|
const candidateHeadChangedProblem = options.candidateHeadSha !== undefined
|
|
71749
71788
|
&& candidateProblem === undefined
|
|
71750
|
-
&& pullRequestState !== undefined
|
|
71751
|
-
&& pullRequestState.
|
|
71789
|
+
&& pullRequestState.value !== undefined
|
|
71790
|
+
&& pullRequestState.value.headSha !== options.candidateHeadSha
|
|
71752
71791
|
? {
|
|
71753
71792
|
area: "workflow-contract",
|
|
71754
71793
|
message: "The pull request head changed during readiness inspection, so the observed workflow contract is stale.",
|
|
71755
71794
|
}
|
|
71756
71795
|
: undefined;
|
|
71757
71796
|
const effective = normalizeEffectiveRules(classic.value, rulesets.value);
|
|
71758
|
-
const problems = [classic.problem, rulesets.problem, queue.problem,
|
|
71797
|
+
const problems = [classic.problem, rulesets.problem, queue.problem, pullRequestState.problem,
|
|
71798
|
+
candidateProblem, candidateHeadChangedProblem, ...effective.problems]
|
|
71759
71799
|
.filter((problem) => problem !== undefined);
|
|
71760
71800
|
const mergeQueueRequired = queue.value === true || effective.mergeQueueRequired;
|
|
71761
|
-
const candidateHeadSha = options.candidateHeadSha ?? pullRequestState?.
|
|
71801
|
+
const candidateHeadSha = options.candidateHeadSha ?? pullRequestState.value?.headSha;
|
|
71762
71802
|
const producerInspection = mergeQueueRequired
|
|
71763
71803
|
? await inspectMergeQueueProducers(client, owner, repository, repositoryData.id, targetBranch, candidateHeadSha, effective.requiredChecks, effective.requiredWorkflows)
|
|
71764
71804
|
: { producers: [], problems: [] };
|
|
71765
71805
|
return {
|
|
71766
71806
|
autoMergeAllowed: repositoryData.allow_auto_merge === true,
|
|
71767
71807
|
mergeQueueRequired,
|
|
71768
|
-
immediatelyMergeable:
|
|
71808
|
+
immediatelyMergeable: problems.length === 0 && pullRequestState.value?.immediatelyMergeable === true,
|
|
71769
71809
|
requiresStrictStatusChecks: effective.requiresStrictStatusChecks,
|
|
71770
71810
|
mergeQueueProducers: producerInspection.producers,
|
|
71771
71811
|
mergeQueueObservationProblems: [...problems, ...producerInspection.problems],
|
|
@@ -84833,7 +84873,7 @@ function bindManagedPullRequests(port, binding) {
|
|
|
84833
84873
|
enableAutoMerge: (pullRequestNodeId) => port.enableAutoMerge(binding.owner, binding.repository, pullRequestNodeId, binding.token),
|
|
84834
84874
|
isPullRequestQueued: (pullRequestNodeId) => port.isPullRequestQueued(binding.owner, binding.repository, pullRequestNodeId, binding.token),
|
|
84835
84875
|
enqueuePullRequest: (pullRequestNodeId, expectedHeadSha) => port.enqueuePullRequest(binding.owner, binding.repository, pullRequestNodeId, expectedHeadSha, binding.token),
|
|
84836
|
-
mergePullRequest: (pullRequest) => port.mergePullRequest(binding.owner, binding.repository, pullRequest, binding.token),
|
|
84876
|
+
mergePullRequest: (pullRequest, expectedHeadSha) => port.mergePullRequest(binding.owner, binding.repository, pullRequest, expectedHeadSha, binding.token),
|
|
84837
84877
|
});
|
|
84838
84878
|
}
|
|
84839
84879
|
function bindDeploymentTargetRules(port, binding) {
|