| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 'use strict'
- const assert = require('check-types').assert
- // Dependencies are loaded at the bottom of the file to mitigate circular
- // dependency
- let RestoreOrigin = null
- let RestoreFileOrigin = null
- /**
- * An Origin records where a {@link Change} came from. The Origin class handles
- * simple tag origins, like "it came from rich text mode", or "it came from
- * uploading files". Its subclasses record more detailed data for Changes such
- * as restoring a version.
- */
- class Origin {
- /**
- * @param {string} kind
- */
- constructor(kind) {
- assert.string(kind, 'Origin: bad kind')
- this.kind = kind
- }
- /**
- * Create an Origin from its raw form.
- *
- * @param {Object} [raw]
- * @return {Origin | null}
- */
- static fromRaw(raw) {
- if (!raw) return null
- if (raw.kind === RestoreOrigin.KIND) return RestoreOrigin.fromRaw(raw)
- if (raw.kind === RestoreFileOrigin.KIND)
- return RestoreFileOrigin.fromRaw(raw)
- return new Origin(raw.kind)
- }
- /**
- * Convert the Origin to raw form for storage or transmission.
- *
- * @return {Object}
- */
- toRaw() {
- return { kind: this.kind }
- }
- /**
- * @return {string}
- */
- getKind() {
- return this.kind
- }
- }
- module.exports = Origin
- RestoreOrigin = require('./restore_origin')
- RestoreFileOrigin = require('./restore_file_origin')
|