UNPKG

3.85 kBJavaScriptView Raw
1"use strict";
2/**
3 * CORMO types
4 * @module types
5 * @namespace cormo
6 */
7Object.defineProperty(exports, "__esModule", { value: true });
8exports._toCORMOType = exports.Text = exports.RecordID = exports.Object = exports.Date = exports.GeoPoint = exports.Integer = exports.Boolean = exports.Number = exports.String = void 0;
9const CormoTypesString = function (length) {
10 if (!(this instanceof CormoTypesString)) {
11 return new CormoTypesString(length);
12 }
13 this.length = length;
14 this.toString = () => this.length ? `string(${this.length})` : 'string';
15};
16exports.String = CormoTypesString;
17const CormoTypesNumber = function () {
18 if (!(this instanceof CormoTypesNumber)) {
19 return new CormoTypesNumber();
20 }
21 this.toString = () => 'number';
22};
23exports.Number = CormoTypesNumber;
24const CormoTypesBoolean = function () {
25 if (!(this instanceof CormoTypesBoolean)) {
26 return new CormoTypesBoolean();
27 }
28 this.toString = () => 'boolean';
29};
30exports.Boolean = CormoTypesBoolean;
31const CormoTypesInteger = function () {
32 if (!(this instanceof CormoTypesInteger)) {
33 return new CormoTypesInteger();
34 }
35 this.toString = () => 'integer';
36};
37exports.Integer = CormoTypesInteger;
38const CormoTypesGeoPoint = function () {
39 if (!(this instanceof CormoTypesGeoPoint)) {
40 return new CormoTypesGeoPoint();
41 }
42 this.toString = () => 'geopoint';
43};
44exports.GeoPoint = CormoTypesGeoPoint;
45const CormoTypesDate = function () {
46 if (!(this instanceof CormoTypesDate)) {
47 return new CormoTypesDate();
48 }
49 this.toString = () => 'date';
50};
51exports.Date = CormoTypesDate;
52const CormoTypesObject = function () {
53 if (!(this instanceof CormoTypesObject)) {
54 return new CormoTypesObject();
55 }
56 this.toString = () => 'object';
57};
58exports.Object = CormoTypesObject;
59const CormoTypesRecordID = function () {
60 if (!(this instanceof CormoTypesRecordID)) {
61 return new CormoTypesRecordID();
62 }
63 this.toString = () => 'recordid';
64};
65exports.RecordID = CormoTypesRecordID;
66const CormoTypesText = function () {
67 if (!(this instanceof CormoTypesText)) {
68 return new CormoTypesText();
69 }
70 this.toString = () => 'text';
71};
72exports.Text = CormoTypesText;
73/**
74 * Converts JavaScript built-in class to CORMO type
75 * @private
76 */
77function _toCORMOType(type) {
78 if (typeof type === 'string') {
79 const type_string = type.toLowerCase();
80 if (/^string\((\d+)\)$/.test(type_string)) {
81 return new CormoTypesString(Number(RegExp.$1));
82 }
83 switch (type_string) {
84 case 'string':
85 return new CormoTypesString();
86 case 'number':
87 return new CormoTypesNumber();
88 case 'boolean':
89 return new CormoTypesBoolean();
90 case 'integer':
91 return new CormoTypesInteger();
92 case 'geopoint':
93 return new CormoTypesGeoPoint();
94 case 'date':
95 return new CormoTypesDate();
96 case 'object':
97 return new CormoTypesObject();
98 case 'recordid':
99 return new CormoTypesRecordID();
100 case 'text':
101 return new CormoTypesText();
102 }
103 throw new Error(`unknown type: ${type}`);
104 }
105 else if (type === String) {
106 return new CormoTypesString();
107 }
108 else if (type === Number) {
109 return new CormoTypesNumber();
110 }
111 else if (type === Boolean) {
112 return new CormoTypesBoolean();
113 }
114 else if (type === Date) {
115 return new CormoTypesDate();
116 }
117 else if (type === Object) {
118 return new CormoTypesObject();
119 }
120 if (typeof type === 'function') {
121 return new type();
122 }
123 return type;
124}
125exports._toCORMOType = _toCORMOType;