« get me outta code hell

inputThingClass.js « wiki-data « composite « data « src - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/composite/wiki-data/inputThingClass.js
blob: d70480e62025474355abae7587cea8ee3025a9d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Please note that this input, used in a variety of #composite/wiki-data
// utilities, is basically always a kludge. Any usage of it depends on
// referencing Thing class values defined outside of the #composite folder.

import {input} from '#composite';
import {isType} from '#validators';

// TODO: Kludge.
import Thing from '../../things/thing.js';

export default function inputThingClass() {
  return input.staticValue({
    validate(thingClass) {
      isType(thingClass, 'function');

      if (!Object.hasOwn(thingClass, Thing.referenceType)) {
        throw new TypeError(`Expected a Thing constructor, missing Thing.referenceType`);
      }

      return true;
    },
  });
}