| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- '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
- let RestoreProjectOrigin = 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)
- if (raw.kind === RestoreProjectOrigin.KIND)
- return RestoreProjectOrigin.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')
- RestoreProjectOrigin = require('./restore_project_origin')
|