@tinycloud/share-sdk 1.2.0-beta.3 → 1.2.0-beta.5
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/addressed-publish-BnSBJ-MX.d.ts +242 -0
- package/dist/addressed-publish-DtcLNG2m.d.cts +242 -0
- package/dist/artifact.cjs +88 -13
- package/dist/artifact.cjs.map +1 -1
- package/dist/artifact.d.cts +28 -8
- package/dist/artifact.d.ts +28 -8
- package/dist/artifact.js +84 -14
- package/dist/artifact.js.map +1 -1
- package/dist/history-CUWDK0lE.d.cts +180 -0
- package/dist/history-CyT6x8h4.d.ts +180 -0
- package/dist/index.cjs +128 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +93 -154
- package/dist/index.d.ts +93 -154
- package/dist/index.js +123 -4
- package/dist/index.js.map +1 -1
- package/dist/owner-policy-BqzRlkb6.d.cts +297 -0
- package/dist/owner-policy-BqzRlkb6.d.ts +297 -0
- package/dist/share-index.cjs +8714 -0
- package/dist/share-index.cjs.map +1 -0
- package/dist/share-index.d.cts +1063 -0
- package/dist/share-index.d.ts +1063 -0
- package/dist/share-index.js +8642 -0
- package/dist/share-index.js.map +1 -0
- package/dist/share-root.cjs +23 -1
- package/dist/share-root.cjs.map +1 -1
- package/dist/share-root.d.cts +2 -1
- package/dist/share-root.d.ts +2 -1
- package/dist/share-root.js +23 -1
- package/dist/share-root.js.map +1 -1
- package/package.json +8 -2
- package/dist/addressed-publish-CsUS7-SI.d.cts +0 -535
- package/dist/addressed-publish-CsUS7-SI.d.ts +0 -535
package/dist/artifact.d.cts
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
|
+
import { ArtifactPin } from '@tinycloud/share-envelope';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The few artifact helpers the browser bundles need (the pin verifier reads a version path). Kept
|
|
5
|
+
* apart from `artifact.ts`, which is CLI and agent tooling and must stay out of those bundles.
|
|
6
|
+
*/
|
|
1
7
|
declare const ARTIFACT_ROOT = "artifacts";
|
|
8
|
+
/** The artifact and version a stored KV path belongs to, if it is under a version directory. */
|
|
9
|
+
declare function parseArtifactVersionPath(path: string): {
|
|
10
|
+
readonly artifactId: string;
|
|
11
|
+
readonly version: number;
|
|
12
|
+
readonly file: string;
|
|
13
|
+
} | undefined;
|
|
14
|
+
|
|
15
|
+
declare function sha256Hex(bytes: Uint8Array): string;
|
|
2
16
|
declare const ARTIFACT_MANIFEST_NAME = "manifest.json";
|
|
3
17
|
declare const ARTIFACT_MANIFEST_VERSION: 1;
|
|
4
18
|
/** A lost create race bumps `n`; this bounds how many times one publish retries. */
|
|
@@ -66,19 +80,12 @@ interface ArtifactVersionSummary {
|
|
|
66
80
|
readonly manifest?: ArtifactManifest;
|
|
67
81
|
readonly manifestSha256?: string;
|
|
68
82
|
}
|
|
69
|
-
declare function sha256Hex(bytes: Uint8Array): string;
|
|
70
83
|
declare function newArtifactId(random?: (length: number) => Uint8Array): string;
|
|
71
84
|
declare function assertArtifactId(value: string): string;
|
|
72
85
|
declare function artifactVersionsPrefix(artifactId: string): string;
|
|
73
86
|
/** Delegation resource for one version: a prefix, NO trailing slash. */
|
|
74
87
|
declare function artifactVersionResource(artifactId: string, version: number): string;
|
|
75
88
|
declare function artifactVersionFilePath(artifactId: string, version: number, filename: string): string;
|
|
76
|
-
/** The artifact and version a stored KV path belongs to, if it is under a version directory. */
|
|
77
|
-
declare function parseArtifactVersionPath(path: string): {
|
|
78
|
-
readonly artifactId: string;
|
|
79
|
-
readonly version: number;
|
|
80
|
-
readonly file: string;
|
|
81
|
-
} | undefined;
|
|
82
89
|
declare function manifestBytes(manifest: ArtifactManifest): Uint8Array;
|
|
83
90
|
/**
|
|
84
91
|
* Strict manifest parser. Unknown fields, duplicate paths and malformed
|
|
@@ -100,5 +107,18 @@ declare function listArtifactVersions(store: ArtifactStore, artifactId: string):
|
|
|
100
107
|
* is never reused, and a manifest lists the only files it vouches for.
|
|
101
108
|
*/
|
|
102
109
|
declare function publishArtifactVersion(store: ArtifactStore, input: ArtifactVersionInput): Promise<ArtifactVersionResult>;
|
|
110
|
+
/** The pin an owner signs for one stored file of a freshly published version. */
|
|
111
|
+
declare function buildArtifactPin(version: ArtifactVersionResult, filename: string): ArtifactPin;
|
|
112
|
+
/**
|
|
113
|
+
* For a holder of `manifest.json` (the owner, or a tool auditing a version): the bytes must hash to the pinned
|
|
114
|
+
* digest, parse strictly, and list the pinned file with the same digest and size.
|
|
115
|
+
*/
|
|
116
|
+
declare function verifyArtifactManifestBytes(pin: ArtifactPin, manifestBytes: Uint8Array): ArtifactManifest;
|
|
117
|
+
/**
|
|
118
|
+
* The bytes fetched from the owner's KV (ciphertext, for an addressed share) must be the bytes the owner pinned.
|
|
119
|
+
* Audit and tooling check. The recipient does not call it: `assertArtifactBinding` ties the pin's digest to
|
|
120
|
+
* `contentSource.initialCiphertextDigestHex`, and `decryptV3Content` already refuses bytes that do not hash to that.
|
|
121
|
+
*/
|
|
122
|
+
declare function verifyArtifactFileBytes(pin: ArtifactPin, storedBytes: Uint8Array): void;
|
|
103
123
|
|
|
104
|
-
export { ARTIFACT_MANIFEST_NAME, ARTIFACT_MANIFEST_VERSION, ARTIFACT_MAX_PUBLISH_ATTEMPTS, ARTIFACT_ROOT, ArtifactError, type ArtifactErrorCode, type ArtifactManifest, type ArtifactManifestFile, type ArtifactStore, type ArtifactVersionInput, type ArtifactVersionResult, type ArtifactVersionSummary, artifactVersionFilePath, artifactVersionResource, artifactVersionsPrefix, assertArtifactId, listArtifactVersions, manifestBytes, newArtifactId, parseArtifactManifest, parseArtifactVersionPath, publishArtifactVersion, sha256Hex };
|
|
124
|
+
export { ARTIFACT_MANIFEST_NAME, ARTIFACT_MANIFEST_VERSION, ARTIFACT_MAX_PUBLISH_ATTEMPTS, ARTIFACT_ROOT, ArtifactError, type ArtifactErrorCode, type ArtifactManifest, type ArtifactManifestFile, type ArtifactStore, type ArtifactVersionInput, type ArtifactVersionResult, type ArtifactVersionSummary, artifactVersionFilePath, artifactVersionResource, artifactVersionsPrefix, assertArtifactId, buildArtifactPin, listArtifactVersions, manifestBytes, newArtifactId, parseArtifactManifest, parseArtifactVersionPath, publishArtifactVersion, sha256Hex, verifyArtifactFileBytes, verifyArtifactManifestBytes };
|
package/dist/artifact.d.ts
CHANGED
|
@@ -1,4 +1,18 @@
|
|
|
1
|
+
import { ArtifactPin } from '@tinycloud/share-envelope';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The few artifact helpers the browser bundles need (the pin verifier reads a version path). Kept
|
|
5
|
+
* apart from `artifact.ts`, which is CLI and agent tooling and must stay out of those bundles.
|
|
6
|
+
*/
|
|
1
7
|
declare const ARTIFACT_ROOT = "artifacts";
|
|
8
|
+
/** The artifact and version a stored KV path belongs to, if it is under a version directory. */
|
|
9
|
+
declare function parseArtifactVersionPath(path: string): {
|
|
10
|
+
readonly artifactId: string;
|
|
11
|
+
readonly version: number;
|
|
12
|
+
readonly file: string;
|
|
13
|
+
} | undefined;
|
|
14
|
+
|
|
15
|
+
declare function sha256Hex(bytes: Uint8Array): string;
|
|
2
16
|
declare const ARTIFACT_MANIFEST_NAME = "manifest.json";
|
|
3
17
|
declare const ARTIFACT_MANIFEST_VERSION: 1;
|
|
4
18
|
/** A lost create race bumps `n`; this bounds how many times one publish retries. */
|
|
@@ -66,19 +80,12 @@ interface ArtifactVersionSummary {
|
|
|
66
80
|
readonly manifest?: ArtifactManifest;
|
|
67
81
|
readonly manifestSha256?: string;
|
|
68
82
|
}
|
|
69
|
-
declare function sha256Hex(bytes: Uint8Array): string;
|
|
70
83
|
declare function newArtifactId(random?: (length: number) => Uint8Array): string;
|
|
71
84
|
declare function assertArtifactId(value: string): string;
|
|
72
85
|
declare function artifactVersionsPrefix(artifactId: string): string;
|
|
73
86
|
/** Delegation resource for one version: a prefix, NO trailing slash. */
|
|
74
87
|
declare function artifactVersionResource(artifactId: string, version: number): string;
|
|
75
88
|
declare function artifactVersionFilePath(artifactId: string, version: number, filename: string): string;
|
|
76
|
-
/** The artifact and version a stored KV path belongs to, if it is under a version directory. */
|
|
77
|
-
declare function parseArtifactVersionPath(path: string): {
|
|
78
|
-
readonly artifactId: string;
|
|
79
|
-
readonly version: number;
|
|
80
|
-
readonly file: string;
|
|
81
|
-
} | undefined;
|
|
82
89
|
declare function manifestBytes(manifest: ArtifactManifest): Uint8Array;
|
|
83
90
|
/**
|
|
84
91
|
* Strict manifest parser. Unknown fields, duplicate paths and malformed
|
|
@@ -100,5 +107,18 @@ declare function listArtifactVersions(store: ArtifactStore, artifactId: string):
|
|
|
100
107
|
* is never reused, and a manifest lists the only files it vouches for.
|
|
101
108
|
*/
|
|
102
109
|
declare function publishArtifactVersion(store: ArtifactStore, input: ArtifactVersionInput): Promise<ArtifactVersionResult>;
|
|
110
|
+
/** The pin an owner signs for one stored file of a freshly published version. */
|
|
111
|
+
declare function buildArtifactPin(version: ArtifactVersionResult, filename: string): ArtifactPin;
|
|
112
|
+
/**
|
|
113
|
+
* For a holder of `manifest.json` (the owner, or a tool auditing a version): the bytes must hash to the pinned
|
|
114
|
+
* digest, parse strictly, and list the pinned file with the same digest and size.
|
|
115
|
+
*/
|
|
116
|
+
declare function verifyArtifactManifestBytes(pin: ArtifactPin, manifestBytes: Uint8Array): ArtifactManifest;
|
|
117
|
+
/**
|
|
118
|
+
* The bytes fetched from the owner's KV (ciphertext, for an addressed share) must be the bytes the owner pinned.
|
|
119
|
+
* Audit and tooling check. The recipient does not call it: `assertArtifactBinding` ties the pin's digest to
|
|
120
|
+
* `contentSource.initialCiphertextDigestHex`, and `decryptV3Content` already refuses bytes that do not hash to that.
|
|
121
|
+
*/
|
|
122
|
+
declare function verifyArtifactFileBytes(pin: ArtifactPin, storedBytes: Uint8Array): void;
|
|
103
123
|
|
|
104
|
-
export { ARTIFACT_MANIFEST_NAME, ARTIFACT_MANIFEST_VERSION, ARTIFACT_MAX_PUBLISH_ATTEMPTS, ARTIFACT_ROOT, ArtifactError, type ArtifactErrorCode, type ArtifactManifest, type ArtifactManifestFile, type ArtifactStore, type ArtifactVersionInput, type ArtifactVersionResult, type ArtifactVersionSummary, artifactVersionFilePath, artifactVersionResource, artifactVersionsPrefix, assertArtifactId, listArtifactVersions, manifestBytes, newArtifactId, parseArtifactManifest, parseArtifactVersionPath, publishArtifactVersion, sha256Hex };
|
|
124
|
+
export { ARTIFACT_MANIFEST_NAME, ARTIFACT_MANIFEST_VERSION, ARTIFACT_MAX_PUBLISH_ATTEMPTS, ARTIFACT_ROOT, ArtifactError, type ArtifactErrorCode, type ArtifactManifest, type ArtifactManifestFile, type ArtifactStore, type ArtifactVersionInput, type ArtifactVersionResult, type ArtifactVersionSummary, artifactVersionFilePath, artifactVersionResource, artifactVersionsPrefix, assertArtifactId, buildArtifactPin, listArtifactVersions, manifestBytes, newArtifactId, parseArtifactManifest, parseArtifactVersionPath, publishArtifactVersion, sha256Hex, verifyArtifactFileBytes, verifyArtifactManifestBytes };
|
package/dist/artifact.js
CHANGED
|
@@ -4,9 +4,6 @@ var __export = (target, all) => {
|
|
|
4
4
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
5
|
};
|
|
6
6
|
|
|
7
|
-
// src/artifact.ts
|
|
8
|
-
import { sha256 as sha2563 } from "@noble/hashes/sha256";
|
|
9
|
-
|
|
10
7
|
// ../share-envelope/dist/index.js
|
|
11
8
|
import { sha256 } from "@noble/hashes/sha2";
|
|
12
9
|
import { ed25519 } from "@noble/curves/ed25519";
|
|
@@ -5289,6 +5286,20 @@ var v3TargetSchema = external_exports.object({
|
|
|
5289
5286
|
nodeAudience: external_exports.string().min(1),
|
|
5290
5287
|
spaceId: external_exports.string().refine(isCanonicalPathSegment, { message: "expected a canonical space id" })
|
|
5291
5288
|
}).strict();
|
|
5289
|
+
var ARTIFACT_ID_PATTERN = /^[a-z0-9][a-z0-9_-]{2,62}$/;
|
|
5290
|
+
var artifactPinSchema = external_exports.object({
|
|
5291
|
+
v: external_exports.literal(1),
|
|
5292
|
+
artifactId: external_exports.string().regex(ARTIFACT_ID_PATTERN),
|
|
5293
|
+
version: external_exports.number().int().min(1).max(Number.MAX_SAFE_INTEGER),
|
|
5294
|
+
/** SHA-256 (lowercase hex) of the exact `manifest.json` bytes. The manifest itself stays an owner-side record. */
|
|
5295
|
+
manifestSha256: external_exports.string().regex(/^[0-9a-f]{64}$/),
|
|
5296
|
+
/** An addressed share reads one exact file, so exactly one entry: the stored bytes (ciphertext) it will fetch. */
|
|
5297
|
+
files: external_exports.array(external_exports.object({
|
|
5298
|
+
path: external_exports.string().min(1).max(255),
|
|
5299
|
+
sha256: external_exports.string().regex(/^[0-9a-f]{64}$/),
|
|
5300
|
+
bytes: external_exports.number().int().nonnegative()
|
|
5301
|
+
}).strict()).length(1)
|
|
5302
|
+
}).strict();
|
|
5292
5303
|
var unsignedShareEnvelopeV3BaseSchema = external_exports.object({
|
|
5293
5304
|
version: external_exports.literal(3),
|
|
5294
5305
|
shareId: external_exports.string().min(1),
|
|
@@ -5308,7 +5319,13 @@ var unsignedShareEnvelopeV3BaseSchema = external_exports.object({
|
|
|
5308
5319
|
expiry: external_exports.string().datetime({ offset: true }),
|
|
5309
5320
|
display: displaySchema,
|
|
5310
5321
|
encrypted: external_exports.literal(true),
|
|
5311
|
-
metadata: contentMetadataSchema
|
|
5322
|
+
metadata: contentMetadataSchema,
|
|
5323
|
+
/**
|
|
5324
|
+
* TC-1428: an owner-signed statement that this share reads one write-once artifact version. Additive: absent on
|
|
5325
|
+
* every other share, and covered by the envelope signature because the signature spans the whole unsigned object.
|
|
5326
|
+
* The shape is checked here; its binding to the content source is `verifyArtifactShare` in share-sdk.
|
|
5327
|
+
*/
|
|
5328
|
+
artifactPin: artifactPinSchema.optional()
|
|
5312
5329
|
}).strict();
|
|
5313
5330
|
function validateV3Invariants(value, ctx) {
|
|
5314
5331
|
const actions = [...value.actions];
|
|
@@ -5407,6 +5424,17 @@ function canonicalize(value) {
|
|
|
5407
5424
|
}
|
|
5408
5425
|
var MAX_INLINE_BYTES = 256 * 1024;
|
|
5409
5426
|
|
|
5427
|
+
// src/artifact.ts
|
|
5428
|
+
import { sha256 as sha2563 } from "@noble/hashes/sha256";
|
|
5429
|
+
|
|
5430
|
+
// src/artifact-core.ts
|
|
5431
|
+
var ARTIFACT_ROOT = "artifacts";
|
|
5432
|
+
function parseArtifactVersionPath(path) {
|
|
5433
|
+
const match = /^artifacts\/([a-z0-9][a-z0-9_-]{2,62})\/versions\/([1-9][0-9]{0,14})\/([^/]+)$/.exec(path);
|
|
5434
|
+
if (match === null) return void 0;
|
|
5435
|
+
return { artifactId: match[1], version: Number(match[2]), file: match[3] };
|
|
5436
|
+
}
|
|
5437
|
+
|
|
5410
5438
|
// src/filename-policy.ts
|
|
5411
5439
|
var UNSAFE_FILENAME_CODE_POINT = /[\p{Cc}\p{Cf}\p{Cs}\u2028\u2029]/u;
|
|
5412
5440
|
function hasUnsafeFilenameCodePoint(value) {
|
|
@@ -5420,8 +5448,21 @@ function canonicalShareFilename(value) {
|
|
|
5420
5448
|
return canonical;
|
|
5421
5449
|
}
|
|
5422
5450
|
|
|
5451
|
+
// src/artifact-pin.ts
|
|
5452
|
+
var ArtifactPinError = class extends Error {
|
|
5453
|
+
code;
|
|
5454
|
+
/** The code is the message: stable, short, and what callers and tests match on. */
|
|
5455
|
+
constructor(code2) {
|
|
5456
|
+
super(code2);
|
|
5457
|
+
this.name = "ArtifactPinError";
|
|
5458
|
+
this.code = code2;
|
|
5459
|
+
}
|
|
5460
|
+
};
|
|
5461
|
+
|
|
5423
5462
|
// src/artifact.ts
|
|
5424
|
-
|
|
5463
|
+
function sha256Hex(bytes) {
|
|
5464
|
+
return Array.from(sha2563(bytes), (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
5465
|
+
}
|
|
5425
5466
|
var ARTIFACT_MANIFEST_NAME = "manifest.json";
|
|
5426
5467
|
var ARTIFACT_MANIFEST_VERSION = 1;
|
|
5427
5468
|
var ARTIFACT_MAX_PUBLISH_ATTEMPTS = 16;
|
|
@@ -5435,9 +5476,6 @@ var ArtifactError = class extends Error {
|
|
|
5435
5476
|
this.code = code2;
|
|
5436
5477
|
}
|
|
5437
5478
|
};
|
|
5438
|
-
function sha256Hex(bytes) {
|
|
5439
|
-
return Array.from(sha2563(bytes), (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
5440
|
-
}
|
|
5441
5479
|
function newArtifactId(random = (length2) => crypto.getRandomValues(new Uint8Array(length2))) {
|
|
5442
5480
|
return `art_${Array.from(random(8), (byte) => byte.toString(16).padStart(2, "0")).join("")}`;
|
|
5443
5481
|
}
|
|
@@ -5460,11 +5498,6 @@ function artifactVersionResource(artifactId, version) {
|
|
|
5460
5498
|
function artifactVersionFilePath(artifactId, version, filename) {
|
|
5461
5499
|
return `${artifactVersionResource(artifactId, version)}/${filename}`;
|
|
5462
5500
|
}
|
|
5463
|
-
function parseArtifactVersionPath(path) {
|
|
5464
|
-
const match = /^artifacts\/([a-z0-9][a-z0-9_-]{2,62})\/versions\/([1-9][0-9]{0,14})\/([^/]+)$/.exec(path);
|
|
5465
|
-
if (match === null) return void 0;
|
|
5466
|
-
return { artifactId: match[1], version: Number(match[2]), file: match[3] };
|
|
5467
|
-
}
|
|
5468
5501
|
function manifestBytes(manifest) {
|
|
5469
5502
|
return new TextEncoder().encode(canonicalize(manifest));
|
|
5470
5503
|
}
|
|
@@ -5610,6 +5643,40 @@ async function publishArtifactVersion(store, input) {
|
|
|
5610
5643
|
}
|
|
5611
5644
|
throw new ArtifactError("conflict", "could not claim an artifact version number after repeated races; retry");
|
|
5612
5645
|
}
|
|
5646
|
+
function buildArtifactPin(version, filename) {
|
|
5647
|
+
const entry = version.manifest.files.find((candidate) => candidate.path === filename);
|
|
5648
|
+
if (entry === void 0) throw new ArtifactError("invalid-argument", "artifact manifest does not list that file");
|
|
5649
|
+
return {
|
|
5650
|
+
v: 1,
|
|
5651
|
+
artifactId: version.artifactId,
|
|
5652
|
+
version: version.version,
|
|
5653
|
+
manifestSha256: version.manifestSha256,
|
|
5654
|
+
files: [{ path: entry.path, sha256: entry.sha256, bytes: entry.bytes }]
|
|
5655
|
+
};
|
|
5656
|
+
}
|
|
5657
|
+
function verifyArtifactManifestBytes(pin, manifestBytes2) {
|
|
5658
|
+
if (sha256Hex(manifestBytes2) !== pin.manifestSha256) {
|
|
5659
|
+
throw new ArtifactPinError("manifest-mismatch");
|
|
5660
|
+
}
|
|
5661
|
+
let manifest;
|
|
5662
|
+
try {
|
|
5663
|
+
manifest = parseArtifactManifest(manifestBytes2);
|
|
5664
|
+
} catch {
|
|
5665
|
+
throw new ArtifactPinError("manifest-mismatch");
|
|
5666
|
+
}
|
|
5667
|
+
const file = pin.files[0];
|
|
5668
|
+
const listed = manifest.files.find((candidate) => candidate.path === file.path);
|
|
5669
|
+
if (listed === void 0 || listed.sha256 !== file.sha256 || listed.bytes !== file.bytes) {
|
|
5670
|
+
throw new ArtifactPinError("manifest-mismatch");
|
|
5671
|
+
}
|
|
5672
|
+
return manifest;
|
|
5673
|
+
}
|
|
5674
|
+
function verifyArtifactFileBytes(pin, storedBytes) {
|
|
5675
|
+
const file = pin.files[0];
|
|
5676
|
+
if (storedBytes.byteLength !== file.bytes || sha256Hex(storedBytes) !== file.sha256) {
|
|
5677
|
+
throw new ArtifactPinError("file-digest-mismatch");
|
|
5678
|
+
}
|
|
5679
|
+
}
|
|
5613
5680
|
export {
|
|
5614
5681
|
ARTIFACT_MANIFEST_NAME,
|
|
5615
5682
|
ARTIFACT_MANIFEST_VERSION,
|
|
@@ -5620,12 +5687,15 @@ export {
|
|
|
5620
5687
|
artifactVersionResource,
|
|
5621
5688
|
artifactVersionsPrefix,
|
|
5622
5689
|
assertArtifactId,
|
|
5690
|
+
buildArtifactPin,
|
|
5623
5691
|
listArtifactVersions,
|
|
5624
5692
|
manifestBytes,
|
|
5625
5693
|
newArtifactId,
|
|
5626
5694
|
parseArtifactManifest,
|
|
5627
5695
|
parseArtifactVersionPath,
|
|
5628
5696
|
publishArtifactVersion,
|
|
5629
|
-
sha256Hex
|
|
5697
|
+
sha256Hex,
|
|
5698
|
+
verifyArtifactFileBytes,
|
|
5699
|
+
verifyArtifactManifestBytes
|
|
5630
5700
|
};
|
|
5631
5701
|
//# sourceMappingURL=artifact.js.map
|