* ※ This function can be used to check if the provided value has
* private tag features.
*
+ * ※ `Tag::system` is an overridable, publicly‐accessible means of
+ * accessing the system.
+ *
* ※ This function is not exposed.
*/
static getSystem($) {
return this.#kind;
}
+ /**
+ * Returns the `TagSystem` for this `Tag`.
+ *
+ * ※ Internally, `Tag.getSystem` is preferred.
+ */
+ get system() {
+ return this.#system;
+ }
+
/**
* Persist this `Tag` to storage and return an ActivityStreams
* serialization of a Tag Activity representing any changes, or
function Tag() {
throw new TypeError("Tags must belong to a System.");
};
- const { prototype: methods } = this;
- delete methods.constructor;
+ const { prototype: staticFeatures } = this;
+ delete staticFeatures.constructor;
Object.defineProperty(superclass, "prototype", {
configurable: false,
enumerable: false,
});
Object.defineProperties(
superclass,
- Object.getOwnPropertyDescriptors(methods),
+ Object.getOwnPropertyDescriptors(staticFeatures),
);
}
* of the `TagSystem` associated with this constructor.
*
* ※ If the I·R·I is not recognized, this function returns
- * `null`.
+ * `undefined`.
*/
fromIRI(iri) {
const system = this.#system;
try {
// Attempt to resolve the identifier.
const instance = storage.get(identifier);
- return Tag.getSystem(instance) == system ? instance : null;
+ return Tag.getSystem(instance) == system
+ ? instance
+ : undefined;
} catch {
// Do not throw for bad identifiers.
- return null;
+ return undefined;
}
}
}
* ☡ This function throws if the identifier is invalid.
*
* ※ If the identifier is valid but not recognized, this
- * function returns `null`.
+ * function returns `undefined`.
*/
fromIdentifier(identifier) {
const system = this.#system;
const storage = this.#storage;
const instance = storage.get(identifier);
- return Tag.getSystem(instance) == system ? instance : null;
+ return Tag.getSystem(instance) == system
+ ? instance
+ : undefined;
}
/**
* match the tagging entity of this constructor’s `TagSystem`.
*
* ※ If the specific component of the Tag U·R·I is not
- * recognized, this function returns `null`.
+ * recognized, this function returns `undefined`.
*/
fromTagURI(tagURI) {
const system = this.#system;
try {
// Attempt to resolve the identifier.
const instance = storage.get(identifier);
- return Tag.getSystem(instance) == system ? instance : null;
+ return Tag.getSystem(instance) == system
+ ? instance
+ : undefined;
} catch {
// Do not throw for bad identifiers.
- return null;
+ return undefined;
}
}
}
}
}
+ /** Returns the `TagSystem` for this `Tag` constructor. */
+ get system() {
+ return this.#system;
+ }
+
/**
* Returns a new `Tag` constructed from the provided data and
* with the provided identifier.