Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
base.js97 linesDownload Raw Back to dist
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3    return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6exports.Signed = exports.MetadataKind = void 0;
7exports.isMetadataKind = isMetadataKind;
8const util_1 = __importDefault(require("util"));
9const error_1 = require("./error");
10const utils_1 = require("./utils");
11const SPECIFICATION_VERSION = ['1', '0', '31'];
12var MetadataKind;
13(function (MetadataKind) {
14    MetadataKind["Root"] = "root";
15    MetadataKind["Timestamp"] = "timestamp";
16    MetadataKind["Snapshot"] = "snapshot";
17    MetadataKind["Targets"] = "targets";
18})(MetadataKind || (exports.MetadataKind = MetadataKind = {}));
19function isMetadataKind(value) {
20    return (typeof value === 'string' &&
21        Object.values(MetadataKind).includes(value));
22}
23/***
24 * A base class for the signed part of TUF metadata.
25 *
26 * Objects with base class Signed are usually included in a ``Metadata`` object
27 * on the signed attribute. This class provides attributes and methods that
28 * are common for all TUF metadata types (roles).
29 */
30class Signed {
31    specVersion;
32    expires;
33    version;
34    unrecognizedFields;
35    constructor(options) {
36        this.specVersion = options.specVersion || SPECIFICATION_VERSION.join('.');
37        const specList = this.specVersion.split('.');
38        if (!(specList.length === 2 || specList.length === 3) ||
39            !specList.every((item) => isNumeric(item))) {
40            throw new error_1.ValueError('Failed to parse specVersion');
41        }
42        // major version must match
43        if (specList[0] != SPECIFICATION_VERSION[0]) {
44            throw new error_1.ValueError('Unsupported specVersion');
45        }
46        this.expires = options.expires;
47        this.version = options.version;
48        this.unrecognizedFields = options.unrecognizedFields || {};
49    }
50    equals(other) {
51        if (!(other instanceof Signed)) {
52            return false;
53        }
54        return (this.specVersion === other.specVersion &&
55            this.expires === other.expires &&
56            this.version === other.version &&
57            util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields));
58    }
59    isExpired(referenceTime) {
60        if (!referenceTime) {
61            referenceTime = new Date();
62        }
63        return referenceTime >= new Date(this.expires);
64    }
65    static commonFieldsFromJSON(data) {
66        const { spec_version, expires, version, ...rest } = data;
67        if (!utils_1.guard.isDefined(spec_version)) {
68            throw new error_1.ValueError('spec_version is not defined');
69        }
70        else if (typeof spec_version !== 'string') {
71            throw new TypeError('spec_version must be a string');
72        }
73        if (!utils_1.guard.isDefined(expires)) {
74            throw new error_1.ValueError('expires is not defined');
75        }
76        else if (!(typeof expires === 'string')) {
77            throw new TypeError('expires must be a string');
78        }
79        if (!utils_1.guard.isDefined(version)) {
80            throw new error_1.ValueError('version is not defined');
81        }
82        else if (!(typeof version === 'number')) {
83            throw new TypeError('version must be a number');
84        }
85        return {
86            specVersion: spec_version,
87            expires,
88            version,
89            unrecognizedFields: rest,
90        };
91    }
92}
93exports.Signed = Signed;
94function isNumeric(str) {
95    return !isNaN(Number(str));
96}
97 
codekingpro/portable-devtools · Team Ai