summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/@tufjs/models/dist/snapshot.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/@tufjs/models/dist/snapshot.js')
-rw-r--r--deps/npm/node_modules/@tufjs/models/dist/snapshot.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/deps/npm/node_modules/@tufjs/models/dist/snapshot.js b/deps/npm/node_modules/@tufjs/models/dist/snapshot.js
new file mode 100644
index 0000000000..e90ea8e729
--- /dev/null
+++ b/deps/npm/node_modules/@tufjs/models/dist/snapshot.js
@@ -0,0 +1,71 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Snapshot = void 0;
+const util_1 = __importDefault(require("util"));
+const base_1 = require("./base");
+const file_1 = require("./file");
+const utils_1 = require("./utils");
+/**
+ * A container for the signed part of snapshot metadata.
+ *
+ * Snapshot contains information about all target Metadata files.
+ * A top-level role that specifies the latest versions of all targets metadata files,
+ * and hence the latest versions of all targets (including any dependencies between them) on the repository.
+ */
+class Snapshot extends base_1.Signed {
+ constructor(opts) {
+ super(opts);
+ this.type = base_1.MetadataKind.Snapshot;
+ this.meta = opts.meta || { 'targets.json': new file_1.MetaFile({ version: 1 }) };
+ }
+ equals(other) {
+ if (!(other instanceof Snapshot)) {
+ return false;
+ }
+ return super.equals(other) && util_1.default.isDeepStrictEqual(this.meta, other.meta);
+ }
+ toJSON() {
+ return {
+ _type: this.type,
+ meta: metaToJSON(this.meta),
+ spec_version: this.specVersion,
+ version: this.version,
+ expires: this.expires,
+ ...this.unrecognizedFields,
+ };
+ }
+ static fromJSON(data) {
+ const { unrecognizedFields, ...commonFields } = base_1.Signed.commonFieldsFromJSON(data);
+ const { meta, ...rest } = unrecognizedFields;
+ return new Snapshot({
+ ...commonFields,
+ meta: metaFromJSON(meta),
+ unrecognizedFields: rest,
+ });
+ }
+}
+exports.Snapshot = Snapshot;
+function metaToJSON(meta) {
+ return Object.entries(meta).reduce((acc, [path, metadata]) => ({
+ ...acc,
+ [path]: metadata.toJSON(),
+ }), {});
+}
+function metaFromJSON(data) {
+ let meta;
+ if (utils_1.guard.isDefined(data)) {
+ if (!utils_1.guard.isObjectRecord(data)) {
+ throw new TypeError('meta field is malformed');
+ }
+ else {
+ meta = Object.entries(data).reduce((acc, [path, metadata]) => ({
+ ...acc,
+ [path]: file_1.MetaFile.fromJSON(metadata),
+ }), {});
+ }
+ }
+ return meta;
+}