UNPKG

@kit-data-manager/pid-component

Version:

The PID-Component is a web component that can be used to evaluate and display FAIR Digital Objects, PIDs, ORCiDs, and possibly other identifiers in a user-friendly way. It is easily extensible to support other identifier types.

60 lines (59 loc) 1.75 kB
/*! * * Copyright 2024-2026 Karlsruhe Institute of Technology. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ export class DOI { constructor(doi) { this._doi = doi .replace(/^https?:\/\/doi\.org\//i, '') .replace(/^https?:\/\/dx\.doi\.org\//i, '') .replace(/^doi:/i, '') .replace(/\/+$/, '') .replace(/\.+$/, '') .trim(); } get doi() { return this._doi; } static isDOI(text) { const cleaned = text .replace(/^https?:\/\/doi\.org\//i, '') .replace(/^https?:\/\/dx\.doi\.org\//i, '') .replace(/^doi:/i, ''); return /^10\.\d{4,9}\/[-._;()/:A-Za-z0-9]+$/.test(cleaned); } static getDOIFromString(doi) { if (!DOI.isDOI(doi)) throw new Error('Invalid DOI format'); return new DOI(doi); } static fromJSON(serialized) { const data = JSON.parse(serialized); return new DOI(data.doi); } toURL() { return `https://doi.org/${this._doi}`; } toString() { return this._doi; } toObject() { return { doi: this._doi, }; } } //# sourceMappingURL=DOI.js.map