@run402/sdk 4.109.1 → 4.110.1
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/namespaces/deploy.d.ts.map +1 -1
- package/dist/namespaces/deploy.js +50 -26
- package/dist/namespaces/deploy.js.map +1 -1
- package/dist/namespaces/deploy.types.d.ts +30 -0
- package/dist/namespaces/deploy.types.d.ts.map +1 -1
- package/dist/namespaces/deploy.types.js.map +1 -1
- package/dist/namespaces/site-removal-summary.d.ts +13 -3
- package/dist/namespaces/site-removal-summary.d.ts.map +1 -1
- package/dist/namespaces/site-removal-summary.js +8 -3
- package/dist/namespaces/site-removal-summary.js.map +1 -1
- package/dist/node/deploy-manifest.d.ts +12 -0
- package/dist/node/deploy-manifest.d.ts.map +1 -1
- package/dist/node/deploy-manifest.js +16 -3
- package/dist/node/deploy-manifest.js.map +1 -1
- package/dist/type-contract.d.ts.map +1 -1
- package/dist/type-contract.js +7 -0
- package/dist/type-contract.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/namespaces/deploy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/namespaces/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1103,22 +1103,26 @@ function siteToCoreSpec(site) {
|
|
|
1103
1103
|
...(site.public_paths ? { public_paths: site.public_paths } : {}),
|
|
1104
1104
|
};
|
|
1105
1105
|
}
|
|
1106
|
-
// tenant-site-embedding and site.
|
|
1107
|
-
// gateway-owned and core validates site keys against
|
|
1106
|
+
// tenant-site-embedding, site.sign_in_path, and site.noindex never reach
|
|
1107
|
+
// core: all three are gateway-owned and core validates site keys against
|
|
1108
|
+
// its own list.
|
|
1108
1109
|
return site.public_paths ? { public_paths: site.public_paths } : {};
|
|
1109
1110
|
}
|
|
1110
1111
|
function siteToWire(site) {
|
|
1111
1112
|
// tenant-site-embedding: `null` is a meaningful value on the wire (clear), so
|
|
1112
1113
|
// it is carried whenever the key is present, unlike public_paths.
|
|
1113
|
-
// site.sign_in_path follows the same rule (`null` clears back to the hosted page)
|
|
1114
|
+
// site.sign_in_path follows the same rule (`null` clears back to the hosted page),
|
|
1115
|
+
// and so does site.noindex (`false` or `null` clears back to indexable).
|
|
1114
1116
|
const embedding = "embedding" in site && site.embedding !== undefined ? { embedding: site.embedding } : {};
|
|
1115
1117
|
const signInPath = "sign_in_path" in site && site.sign_in_path !== undefined ? { sign_in_path: site.sign_in_path } : {};
|
|
1118
|
+
const noindex = "noindex" in site && site.noindex !== undefined ? { noindex: site.noindex } : {};
|
|
1116
1119
|
if ("replace" in site && site.replace) {
|
|
1117
1120
|
return {
|
|
1118
1121
|
replace: fileSetToWire(site.replace),
|
|
1119
1122
|
...(site.public_paths ? { public_paths: site.public_paths } : {}),
|
|
1120
1123
|
...embedding,
|
|
1121
1124
|
...signInPath,
|
|
1125
|
+
...noindex,
|
|
1122
1126
|
};
|
|
1123
1127
|
}
|
|
1124
1128
|
if ("patch" in site && site.patch) {
|
|
@@ -1130,12 +1134,14 @@ function siteToWire(site) {
|
|
|
1130
1134
|
...(site.public_paths ? { public_paths: site.public_paths } : {}),
|
|
1131
1135
|
...embedding,
|
|
1132
1136
|
...signInPath,
|
|
1137
|
+
...noindex,
|
|
1133
1138
|
};
|
|
1134
1139
|
}
|
|
1135
1140
|
return {
|
|
1136
1141
|
...(site.public_paths ? { public_paths: site.public_paths } : {}),
|
|
1137
1142
|
...embedding,
|
|
1138
1143
|
...signInPath,
|
|
1144
|
+
...noindex,
|
|
1139
1145
|
};
|
|
1140
1146
|
}
|
|
1141
1147
|
function i18nToWire(i18n) {
|
|
@@ -1654,7 +1660,7 @@ async function commitInternal(client, planId, idempotencyKey, project, requiredP
|
|
|
1654
1660
|
: {}),
|
|
1655
1661
|
context: "committing deploy",
|
|
1656
1662
|
});
|
|
1657
|
-
return await
|
|
1663
|
+
return await sendCommitWithRetry(send, tries);
|
|
1658
1664
|
}
|
|
1659
1665
|
catch (err) {
|
|
1660
1666
|
const translated = translateDeployError(err, "commit", planId, operationId ?? null);
|
|
@@ -1667,38 +1673,34 @@ async function commitInternal(client, planId, idempotencyKey, project, requiredP
|
|
|
1667
1673
|
}
|
|
1668
1674
|
}
|
|
1669
1675
|
/**
|
|
1670
|
-
* Send a deploy commit,
|
|
1671
|
-
* loses the response.
|
|
1672
|
-
*
|
|
1673
|
-
*
|
|
1674
|
-
*
|
|
1675
|
-
*
|
|
1676
|
-
*
|
|
1677
|
-
* `tries.attempts` counts the commits sent, for the error's retry metadata.
|
|
1676
|
+
* Send a deploy commit, re-sending when a 502/503/504 or a dropped connection
|
|
1677
|
+
* loses the response. Re-sending is safe because a plan commits once: the
|
|
1678
|
+
* gateway answers a commit of a plan whose operation is already running with
|
|
1679
|
+
* `status: "running"` (the caller follows the operation) and a finished one
|
|
1680
|
+
* with its stored result, and Run402 Core answers `commit_in_progress` while
|
|
1681
|
+
* the first commit runs, which is re-sent the same way. `tries.attempts`
|
|
1682
|
+
* counts the commits sent, for the error's retry metadata.
|
|
1678
1683
|
*/
|
|
1679
|
-
async function
|
|
1684
|
+
async function sendCommitWithRetry(send, tries) {
|
|
1680
1685
|
for (let attempt = 1;; attempt++) {
|
|
1681
1686
|
tries.attempts = attempt;
|
|
1682
1687
|
try {
|
|
1683
1688
|
return await send();
|
|
1684
1689
|
}
|
|
1685
1690
|
catch (err) {
|
|
1686
|
-
if (!
|
|
1691
|
+
if (!isRetryableCommitFailure(err) || attempt >= DEPLOY_COMMIT_MAX_ATTEMPTS)
|
|
1687
1692
|
throw err;
|
|
1688
1693
|
await sleep(DEPLOY_COMMIT_RETRY_BASE_DELAY_MS * 2 ** (attempt - 1));
|
|
1689
|
-
let snapshot;
|
|
1690
|
-
try {
|
|
1691
|
-
snapshot = await client.request(`/apply/v1/operations/${encodeURIComponent(operationId)}`, { headers: await apikeyHeaders(client, projectId), context: "fetching deploy operation" });
|
|
1692
|
-
}
|
|
1693
|
-
catch {
|
|
1694
|
-
throw err;
|
|
1695
|
-
}
|
|
1696
|
-
if (snapshot.status !== "planning" && snapshot.status !== "uploading") {
|
|
1697
|
-
return { operation_id: operationId, status: "running" };
|
|
1698
|
-
}
|
|
1699
1694
|
}
|
|
1700
1695
|
}
|
|
1701
1696
|
}
|
|
1697
|
+
function isRetryableCommitFailure(err) {
|
|
1698
|
+
if (isTransientGatewayFailure(err))
|
|
1699
|
+
return true;
|
|
1700
|
+
// Run402 Core: another commit of this plan is still running.
|
|
1701
|
+
return isRun402Error(err) && err.status === 409 &&
|
|
1702
|
+
err.body?.error === "commit_in_progress";
|
|
1703
|
+
}
|
|
1702
1704
|
async function uploadMissing(client, projectId, presence, byteReaders, emit) {
|
|
1703
1705
|
// Surface CAS dedup hits so agents can distinguish "N files were already
|
|
1704
1706
|
// present" from "nothing happened". The gateway reports both present and
|
|
@@ -2371,7 +2373,7 @@ const FUNCTION_SPEC_FIELDS = new Set([
|
|
|
2371
2373
|
const FUNCTION_CONFIG_FIELDS = new Set(["timeoutSeconds", "memoryMb"]);
|
|
2372
2374
|
const FUNCTION_TRIGGER_FIELDS = new Set(["id", "type", "cron", "timezone", "misfire_policy", "overlap_policy", "mailbox", "events", "run"]);
|
|
2373
2375
|
const FUNCTION_TRIGGER_RUN_FIELDS = new Set(["event_type", "payload", "retry", "expires_after_seconds"]);
|
|
2374
|
-
const SITE_SPEC_FIELDS = new Set(["replace", "patch", "public_paths", "embedding", "sign_in_path"]);
|
|
2376
|
+
const SITE_SPEC_FIELDS = new Set(["replace", "patch", "public_paths", "embedding", "sign_in_path", "noindex"]);
|
|
2375
2377
|
const SITE_PATCH_FIELDS = new Set(["put", "delete"]);
|
|
2376
2378
|
const SITE_PUBLIC_PATHS_FIELDS = new Set(["mode", "replace"]);
|
|
2377
2379
|
const PUBLIC_STATIC_PATH_FIELDS = new Set(["asset", "cache_class"]);
|
|
@@ -2710,6 +2712,17 @@ function validateSiteSpec(site) {
|
|
|
2710
2712
|
if (obj.sign_in_path !== undefined) {
|
|
2711
2713
|
validateSiteSignInPath(obj.sign_in_path, "site.sign_in_path");
|
|
2712
2714
|
}
|
|
2715
|
+
if (obj.noindex !== undefined) {
|
|
2716
|
+
validateSiteNoindex(obj.noindex, "site.noindex");
|
|
2717
|
+
}
|
|
2718
|
+
}
|
|
2719
|
+
/** site.noindex. `true` = every response of the host carries
|
|
2720
|
+
* `X-Robots-Tag: noindex, nofollow, nosnippet`; `false` or `null` clears back
|
|
2721
|
+
* to indexable; omitted carries forward. */
|
|
2722
|
+
function validateSiteNoindex(value, resource) {
|
|
2723
|
+
if (value === null || typeof value === "boolean")
|
|
2724
|
+
return;
|
|
2725
|
+
throw invalidSpec(`ReleaseSpec.${resource} must be true, false, or null; send true to add X-Robots-Tag: noindex, nofollow, nosnippet to every response of the host, false or null to make it indexable again, or omit ${resource} to carry the previous value forward`, resource);
|
|
2713
2726
|
}
|
|
2714
2727
|
/** site.sign_in_path. Structural check only (the gateway is authoritative on
|
|
2715
2728
|
* the reserved prefixes and the full rule set): a same-origin absolute path
|
|
@@ -3089,6 +3102,10 @@ function hasSiteContent(site) {
|
|
|
3089
3102
|
if (site && typeof site === "object" && "sign_in_path" in site && site.sign_in_path !== undefined) {
|
|
3090
3103
|
return true;
|
|
3091
3104
|
}
|
|
3105
|
+
// site.noindex: same rule, true/false/null is content.
|
|
3106
|
+
if (site && typeof site === "object" && "noindex" in site && site.noindex !== undefined) {
|
|
3107
|
+
return true;
|
|
3108
|
+
}
|
|
3092
3109
|
if (!isRecord(site))
|
|
3093
3110
|
return false;
|
|
3094
3111
|
if (hasRecordEntries(site.replace))
|
|
@@ -3545,6 +3562,10 @@ async function normalizeReleaseSpec(client, spec, opts = {}) {
|
|
|
3545
3562
|
const signInPath = "sign_in_path" in spec.site && spec.site.sign_in_path !== undefined
|
|
3546
3563
|
? { sign_in_path: spec.site.sign_in_path }
|
|
3547
3564
|
: {};
|
|
3565
|
+
// site.noindex: present (boolean or null) travels as-is.
|
|
3566
|
+
const noindex = "noindex" in spec.site && spec.site.noindex !== undefined
|
|
3567
|
+
? { noindex: spec.site.noindex }
|
|
3568
|
+
: {};
|
|
3548
3569
|
if ("replace" in spec.site && spec.site.replace) {
|
|
3549
3570
|
const map = await normalizeFileSet(spec.site.replace, rememberRelease);
|
|
3550
3571
|
// Re-check post-expansion so `dir("dist")` (a LocalDirRef whose keys are
|
|
@@ -3555,6 +3576,7 @@ async function normalizeReleaseSpec(client, spec, opts = {}) {
|
|
|
3555
3576
|
...(publicPaths ? { public_paths: publicPaths } : {}),
|
|
3556
3577
|
...embedding,
|
|
3557
3578
|
...signInPath,
|
|
3579
|
+
...noindex,
|
|
3558
3580
|
};
|
|
3559
3581
|
}
|
|
3560
3582
|
else if ("patch" in spec.site && spec.site.patch) {
|
|
@@ -3570,13 +3592,15 @@ async function normalizeReleaseSpec(client, spec, opts = {}) {
|
|
|
3570
3592
|
...(publicPaths ? { public_paths: publicPaths } : {}),
|
|
3571
3593
|
...embedding,
|
|
3572
3594
|
...signInPath,
|
|
3595
|
+
...noindex,
|
|
3573
3596
|
};
|
|
3574
3597
|
}
|
|
3575
|
-
else if (publicPaths || "embedding" in embedding || "sign_in_path" in signInPath) {
|
|
3598
|
+
else if (publicPaths || "embedding" in embedding || "sign_in_path" in signInPath || "noindex" in noindex) {
|
|
3576
3599
|
normalized.site = {
|
|
3577
3600
|
...(publicPaths ? { public_paths: publicPaths } : {}),
|
|
3578
3601
|
...embedding,
|
|
3579
3602
|
...signInPath,
|
|
3603
|
+
...noindex,
|
|
3580
3604
|
};
|
|
3581
3605
|
}
|
|
3582
3606
|
}
|