@based/schema 4.1.1 → 5.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/lang.d.ts +152 -0
- package/dist/lang.js +149 -0
- package/dist/mermaid.d.ts +3 -0
- package/dist/mermaid.js +24 -0
- package/dist/parse/assert.d.ts +1 -1
- package/dist/parse/assert.js +2 -2
- package/dist/parse/errors.d.ts +2 -0
- package/dist/parse/errors.js +2 -0
- package/dist/parse/index.d.ts +5 -4
- package/dist/parse/index.js +43 -41
- package/dist/parse/props.js +159 -75
- package/dist/parse/utils.d.ts +2 -2
- package/dist/parse/utils.js +11 -2
- package/dist/types.d.ts +66 -23
- package/dist/types.js +93 -0
- package/package.json +4 -3
- package/dist/parsePayload/index.d.ts +0 -3
- package/dist/parsePayload/index.js +0 -2
- package/dist/parseSchema/assert.d.ts +0 -6
- package/dist/parseSchema/assert.js +0 -27
- package/dist/parseSchema/errors.d.ts +0 -19
- package/dist/parseSchema/errors.js +0 -19
- package/dist/parseSchema/index.d.ts +0 -20
- package/dist/parseSchema/index.js +0 -132
- package/dist/parseSchema/props.d.ts +0 -7
- package/dist/parseSchema/props.js +0 -256
- package/dist/parseSchema/utils.d.ts +0 -3
- package/dist/parseSchema/utils.js +0 -29
- package/dist/src/compat/index.d.ts +0 -6
- package/dist/src/compat/index.js +0 -217
- package/dist/src/compat/oldSchemaType.d.ts +0 -93
- package/dist/src/compat/oldSchemaType.js +0 -2
- package/dist/src/display/index.d.ts +0 -2
- package/dist/src/display/index.js +0 -16
- package/dist/src/display/number.d.ts +0 -4
- package/dist/src/display/number.js +0 -97
- package/dist/src/display/string.d.ts +0 -5
- package/dist/src/display/string.js +0 -26
- package/dist/src/display/timestamp.d.ts +0 -5
- package/dist/src/display/timestamp.js +0 -134
- package/dist/src/error.d.ts +0 -21
- package/dist/src/error.js +0 -23
- package/dist/src/index.d.ts +0 -6
- package/dist/src/index.js +0 -7
- package/dist/src/languages.d.ts +0 -188
- package/dist/src/languages.js +0 -188
- package/dist/src/set/fields/array.d.ts +0 -2
- package/dist/src/set/fields/array.js +0 -119
- package/dist/src/set/fields/index.d.ts +0 -3
- package/dist/src/set/fields/index.js +0 -85
- package/dist/src/set/fields/number.d.ts +0 -4
- package/dist/src/set/fields/number.js +0 -123
- package/dist/src/set/fields/object.d.ts +0 -3
- package/dist/src/set/fields/object.js +0 -28
- package/dist/src/set/fields/references.d.ts +0 -3
- package/dist/src/set/fields/references.js +0 -136
- package/dist/src/set/fields/set.d.ts +0 -2
- package/dist/src/set/fields/set.js +0 -59
- package/dist/src/set/fields/string.d.ts +0 -3
- package/dist/src/set/fields/string.js +0 -289
- package/dist/src/set/index.d.ts +0 -3
- package/dist/src/set/index.js +0 -205
- package/dist/src/set/isValidId.d.ts +0 -2
- package/dist/src/set/isValidId.js +0 -17
- package/dist/src/types.d.ts +0 -205
- package/dist/src/types.js +0 -113
- package/dist/src/updateSchema.d.ts +0 -2
- package/dist/src/updateSchema.js +0 -12
- package/dist/src/validateSchema/basedSchemaTypeValidator.d.ts +0 -3
- package/dist/src/validateSchema/basedSchemaTypeValidator.js +0 -45
- package/dist/src/validateSchema/fieldValidators.d.ts +0 -27
- package/dist/src/validateSchema/fieldValidators.js +0 -360
- package/dist/src/validateSchema/index.d.ts +0 -17
- package/dist/src/validateSchema/index.js +0 -109
- package/dist/src/validateSchema/utils.d.ts +0 -25
- package/dist/src/validateSchema/utils.js +0 -61
- package/dist/src/walker/args.d.ts +0 -36
- package/dist/src/walker/args.js +0 -158
- package/dist/src/walker/index.d.ts +0 -6
- package/dist/src/walker/index.js +0 -31
- package/dist/src/walker/parse.d.ts +0 -3
- package/dist/src/walker/parse.js +0 -182
- package/dist/src/walker/types.d.ts +0 -45
- package/dist/src/walker/types.js +0 -7
- package/dist/test/array.d.ts +0 -1
- package/dist/test/array.js +0 -342
- package/dist/test/compat.d.ts +0 -1
- package/dist/test/compat.js +0 -97
- package/dist/test/data/newSchemas.d.ts +0 -2
- package/dist/test/data/newSchemas.js +0 -489
- package/dist/test/data/oldSchemas.d.ts +0 -2
- package/dist/test/data/oldSchemas.js +0 -5058
- package/dist/test/display.d.ts +0 -1
- package/dist/test/display.js +0 -103
- package/dist/test/json.d.ts +0 -1
- package/dist/test/json.js +0 -40
- package/dist/test/number.d.ts +0 -1
- package/dist/test/number.js +0 -374
- package/dist/test/reference.d.ts +0 -1
- package/dist/test/reference.js +0 -188
- package/dist/test/rest.d.ts +0 -1
- package/dist/test/rest.js +0 -168
- package/dist/test/set.d.ts +0 -1
- package/dist/test/set.js +0 -95
- package/dist/test/string.d.ts +0 -1
- package/dist/test/string.js +0 -120
- package/dist/test/text.d.ts +0 -1
- package/dist/test/text.js +0 -324
- package/dist/test/utils/index.d.ts +0 -11
- package/dist/test/utils/index.js +0 -17
- package/dist/test/validateSchema/basic.d.ts +0 -1
- package/dist/test/validateSchema/basic.js +0 -94
- package/dist/test/validateSchema/fields.d.ts +0 -1
- package/dist/test/validateSchema/fields.js +0 -436
- package/dist/test/validateSchema/languages.d.ts +0 -1
- package/dist/test/validateSchema/languages.js +0 -124
- package/dist/test/validateSchema/realWorld.d.ts +0 -1
- package/dist/test/validateSchema/realWorld.js +0 -13
- package/dist/test/walker.d.ts +0 -1
- package/dist/test/walker.js +0 -289
package/dist/src/compat/index.js
DELETED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
const oldToNewType = {
|
|
2
|
-
id: { type: 'string', format: 'basedId' },
|
|
3
|
-
int: { type: 'integer' },
|
|
4
|
-
url: { type: 'string', format: 'URL' },
|
|
5
|
-
email: { type: 'string', format: 'email' },
|
|
6
|
-
float: { type: 'number' },
|
|
7
|
-
phone: { type: 'string', format: 'mobilePhone' },
|
|
8
|
-
digest: { type: 'string', format: 'strongPassword' },
|
|
9
|
-
};
|
|
10
|
-
const newToOldType = {
|
|
11
|
-
mobilePhone: { type: 'phone' },
|
|
12
|
-
basedId: { type: 'id' },
|
|
13
|
-
integer: { type: 'int' },
|
|
14
|
-
URL: { type: 'url' },
|
|
15
|
-
email: { type: 'email' },
|
|
16
|
-
strongPassword: { type: 'digest' },
|
|
17
|
-
};
|
|
18
|
-
const convertNewToOldMeta = (props) => {
|
|
19
|
-
let meta;
|
|
20
|
-
for (const i in props) {
|
|
21
|
-
if (i[0] !== '$') {
|
|
22
|
-
const v = props[i];
|
|
23
|
-
meta ??= {};
|
|
24
|
-
if (i === 'allowedType') {
|
|
25
|
-
meta.refTypes = v;
|
|
26
|
-
}
|
|
27
|
-
else if (i === 'display' && v === 'bytes') {
|
|
28
|
-
meta.format = v;
|
|
29
|
-
}
|
|
30
|
-
else if (i === 'title') {
|
|
31
|
-
meta.name = v;
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
meta[i] = v;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return meta;
|
|
39
|
-
};
|
|
40
|
-
const convertOldToNewMeta = (props) => {
|
|
41
|
-
const meta = {};
|
|
42
|
-
for (const i in props) {
|
|
43
|
-
const v = props[i];
|
|
44
|
-
if (i === 'refTypes') {
|
|
45
|
-
meta.allowedType = v; // TODO
|
|
46
|
-
}
|
|
47
|
-
else if (i === 'format' && v === 'bytes') {
|
|
48
|
-
meta.display = 'bytes';
|
|
49
|
-
}
|
|
50
|
-
else if (i === 'name') {
|
|
51
|
-
meta.title = v;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
meta[i] = v;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return meta;
|
|
58
|
-
};
|
|
59
|
-
const convertNewFieldToOldField = (newField) => {
|
|
60
|
-
// @ts-ignore
|
|
61
|
-
const { type, bidirectional, properties, values, items, ...props } = newField;
|
|
62
|
-
const meta = convertNewToOldMeta(props);
|
|
63
|
-
// @ts-ignore
|
|
64
|
-
const overwrite = newToOldType[type] || newToOldType[props.format];
|
|
65
|
-
const oldField = overwrite
|
|
66
|
-
? { ...overwrite }
|
|
67
|
-
: {
|
|
68
|
-
type,
|
|
69
|
-
};
|
|
70
|
-
if (meta) {
|
|
71
|
-
oldField.meta = meta;
|
|
72
|
-
}
|
|
73
|
-
if (bidirectional) {
|
|
74
|
-
// @ts-ignore
|
|
75
|
-
oldField.bidirectional = bidirectional;
|
|
76
|
-
}
|
|
77
|
-
if (properties) {
|
|
78
|
-
// @ts-ignore
|
|
79
|
-
oldField.properties = {};
|
|
80
|
-
for (const key in properties) {
|
|
81
|
-
// @ts-ignore
|
|
82
|
-
oldField.properties[key] = convertNewFieldToOldField(properties[key]);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (values) {
|
|
86
|
-
// @ts-ignore
|
|
87
|
-
oldField.values = convertNewFieldToOldField(values);
|
|
88
|
-
}
|
|
89
|
-
if (items) {
|
|
90
|
-
// @ts-ignore
|
|
91
|
-
oldField.items = convertNewFieldToOldField(items);
|
|
92
|
-
}
|
|
93
|
-
return oldField;
|
|
94
|
-
};
|
|
95
|
-
const convertNewTypeToOldType = (newType) => {
|
|
96
|
-
const { prefix, fields, ...props } = newType;
|
|
97
|
-
const oldType = {};
|
|
98
|
-
const meta = convertNewToOldMeta(props);
|
|
99
|
-
if (prefix) {
|
|
100
|
-
oldType.prefix = prefix;
|
|
101
|
-
}
|
|
102
|
-
if (meta) {
|
|
103
|
-
oldType.meta = meta;
|
|
104
|
-
}
|
|
105
|
-
if (fields) {
|
|
106
|
-
oldType.fields = {};
|
|
107
|
-
for (const key in fields) {
|
|
108
|
-
// @ts-ignore
|
|
109
|
-
oldType.fields[key] = convertNewFieldToOldField(fields[key]);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
return oldType;
|
|
113
|
-
};
|
|
114
|
-
export const convertNewToOld = (newSchema) => {
|
|
115
|
-
const { root, types, language, translations, prefixToTypeMapping } = newSchema;
|
|
116
|
-
const oldSchema = {};
|
|
117
|
-
if (prefixToTypeMapping) {
|
|
118
|
-
oldSchema.prefixToTypeMapping = prefixToTypeMapping;
|
|
119
|
-
}
|
|
120
|
-
if (language) {
|
|
121
|
-
oldSchema.languages = [language];
|
|
122
|
-
}
|
|
123
|
-
if (translations) {
|
|
124
|
-
oldSchema.languages ??= [];
|
|
125
|
-
oldSchema.languages.push(...translations);
|
|
126
|
-
}
|
|
127
|
-
if (root) {
|
|
128
|
-
oldSchema.rootType = convertNewTypeToOldType(root);
|
|
129
|
-
}
|
|
130
|
-
if (types) {
|
|
131
|
-
oldSchema.types = {};
|
|
132
|
-
for (const key in types) {
|
|
133
|
-
oldSchema.types[key] = convertNewTypeToOldType(types[key]);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return oldSchema;
|
|
137
|
-
};
|
|
138
|
-
const convertOldFieldToNewField = (oldField) => {
|
|
139
|
-
// @ts-ignore
|
|
140
|
-
const { type, bidirectional, properties, values, items, meta = {} } = oldField;
|
|
141
|
-
const overwrite = oldToNewType[type] || oldToNewType[meta.format];
|
|
142
|
-
const newField = overwrite
|
|
143
|
-
? {
|
|
144
|
-
...overwrite,
|
|
145
|
-
...convertOldToNewMeta(meta),
|
|
146
|
-
}
|
|
147
|
-
: {
|
|
148
|
-
type,
|
|
149
|
-
...convertOldToNewMeta(meta),
|
|
150
|
-
};
|
|
151
|
-
if (bidirectional) {
|
|
152
|
-
// @ts-ignore
|
|
153
|
-
newField.bidirectional = bidirectional;
|
|
154
|
-
}
|
|
155
|
-
if (properties) {
|
|
156
|
-
// @ts-ignore
|
|
157
|
-
newField.properties = {};
|
|
158
|
-
for (const key in properties) {
|
|
159
|
-
// @ts-ignore
|
|
160
|
-
newField.properties[key] = convertOldFieldToNewField(properties[key]);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
if (values) {
|
|
164
|
-
// @ts-ignore
|
|
165
|
-
newField.values = convertOldFieldToNewField(values);
|
|
166
|
-
}
|
|
167
|
-
if (items) {
|
|
168
|
-
// @ts-ignore
|
|
169
|
-
newField.items = convertOldFieldToNewField(items);
|
|
170
|
-
}
|
|
171
|
-
return newField;
|
|
172
|
-
};
|
|
173
|
-
const convertOldTypeToNewType = (oldType) => {
|
|
174
|
-
const { prefix, fields, meta } = oldType;
|
|
175
|
-
const newType = {
|
|
176
|
-
fields: {},
|
|
177
|
-
};
|
|
178
|
-
if (prefix) {
|
|
179
|
-
newType.prefix = prefix;
|
|
180
|
-
}
|
|
181
|
-
if (meta) {
|
|
182
|
-
Object.assign(newType, convertOldToNewMeta(meta));
|
|
183
|
-
}
|
|
184
|
-
if (fields) {
|
|
185
|
-
for (const key in fields) {
|
|
186
|
-
newType.fields[key] = convertOldFieldToNewField(fields[key]);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return newType;
|
|
190
|
-
};
|
|
191
|
-
export const convertOldToNew = (oldSchema) => {
|
|
192
|
-
const { rootType, types, languages, prefixToTypeMapping } = oldSchema;
|
|
193
|
-
const newSchema = {};
|
|
194
|
-
if (prefixToTypeMapping) {
|
|
195
|
-
newSchema.prefixToTypeMapping = prefixToTypeMapping;
|
|
196
|
-
}
|
|
197
|
-
if (languages?.length) {
|
|
198
|
-
// @ts-ignore
|
|
199
|
-
newSchema.language = languages[0];
|
|
200
|
-
const translations = languages.slice(1);
|
|
201
|
-
if (translations.length) {
|
|
202
|
-
// @ts-ignore
|
|
203
|
-
newSchema.translations = translations;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
if (rootType) {
|
|
207
|
-
newSchema.root = convertOldTypeToNewType(rootType);
|
|
208
|
-
}
|
|
209
|
-
if (types) {
|
|
210
|
-
newSchema.types = {};
|
|
211
|
-
for (const key in types) {
|
|
212
|
-
newSchema.types[key] = convertOldTypeToNewType(types[key]);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
return newSchema;
|
|
216
|
-
};
|
|
217
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
type FieldType = 'float' | 'boolean' | 'number' | 'int' | 'string' | 'text' | 'id' | 'digest' | 'url' | 'email' | 'phone' | 'geo' | 'type' | 'timestamp';
|
|
2
|
-
export type FieldSchemaObject = {
|
|
3
|
-
type: 'object';
|
|
4
|
-
properties: {
|
|
5
|
-
[key: string]: FieldSchema;
|
|
6
|
-
};
|
|
7
|
-
meta?: any;
|
|
8
|
-
timeseries?: boolean;
|
|
9
|
-
};
|
|
10
|
-
type FieldSchemaJson = {
|
|
11
|
-
type: 'json';
|
|
12
|
-
properties?: {
|
|
13
|
-
[key: string]: FieldSchema;
|
|
14
|
-
};
|
|
15
|
-
meta?: any;
|
|
16
|
-
timeseries?: boolean;
|
|
17
|
-
};
|
|
18
|
-
type FieldSchemaRecord = {
|
|
19
|
-
type: 'record';
|
|
20
|
-
values: FieldSchema;
|
|
21
|
-
meta?: any;
|
|
22
|
-
timeseries?: boolean;
|
|
23
|
-
};
|
|
24
|
-
type FieldSchemaReferences = {
|
|
25
|
-
type: 'reference' | 'references';
|
|
26
|
-
bidirectional?: {
|
|
27
|
-
fromField: string;
|
|
28
|
-
};
|
|
29
|
-
meta?: any;
|
|
30
|
-
timeseries?: boolean;
|
|
31
|
-
};
|
|
32
|
-
type FieldSchemaOther = {
|
|
33
|
-
type: FieldType;
|
|
34
|
-
meta?: any;
|
|
35
|
-
timeseries?: boolean;
|
|
36
|
-
};
|
|
37
|
-
export type FieldSchemaArrayLike = {
|
|
38
|
-
type: 'set' | 'array';
|
|
39
|
-
items: FieldSchema;
|
|
40
|
-
meta?: any;
|
|
41
|
-
timeseries?: boolean;
|
|
42
|
-
};
|
|
43
|
-
export type FieldSchema = FieldSchemaObject | FieldSchemaRecord | FieldSchemaArrayLike | FieldSchemaJson | FieldSchemaReferences | FieldSchemaOther;
|
|
44
|
-
type FieldInputSchemaArrayLike = {
|
|
45
|
-
type: 'set' | 'array';
|
|
46
|
-
items: FieldInputSchema;
|
|
47
|
-
meta?: any;
|
|
48
|
-
timeseries?: boolean;
|
|
49
|
-
};
|
|
50
|
-
type FieldInputSchemaRecord = {
|
|
51
|
-
type: 'record';
|
|
52
|
-
values: FieldInputSchema;
|
|
53
|
-
meta?: any;
|
|
54
|
-
timeseries?: boolean;
|
|
55
|
-
};
|
|
56
|
-
export type FieldInputSchemaObject = {
|
|
57
|
-
type: 'object';
|
|
58
|
-
properties: {
|
|
59
|
-
[key: string]: FieldInputSchema;
|
|
60
|
-
};
|
|
61
|
-
meta?: any;
|
|
62
|
-
timeseries?: boolean;
|
|
63
|
-
};
|
|
64
|
-
type FieldInputSchema = FieldSchema | FieldInputSchemaArrayLike | FieldInputSchemaRecord | FieldInputSchemaObject | DeleteField;
|
|
65
|
-
type DeleteField = {
|
|
66
|
-
$delete: boolean;
|
|
67
|
-
};
|
|
68
|
-
type Fields = Record<string, FieldSchema>;
|
|
69
|
-
type HierarchySchema = false | {
|
|
70
|
-
[key: string]: false | {
|
|
71
|
-
excludeAncestryWith: string[];
|
|
72
|
-
} | {
|
|
73
|
-
includeAncestryWith: string[];
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
export type TypeSchema = {
|
|
77
|
-
prefix?: string;
|
|
78
|
-
hierarchy?: HierarchySchema;
|
|
79
|
-
fields?: Fields;
|
|
80
|
-
meta?: any;
|
|
81
|
-
};
|
|
82
|
-
type Types = {
|
|
83
|
-
[key: string]: TypeSchema;
|
|
84
|
-
};
|
|
85
|
-
export type BasedOldSchema = {
|
|
86
|
-
sha?: string;
|
|
87
|
-
languages?: string[];
|
|
88
|
-
types: Types;
|
|
89
|
-
rootType?: Pick<TypeSchema, 'fields' | 'prefix' | 'meta'>;
|
|
90
|
-
idSeedCounter?: number;
|
|
91
|
-
prefixToTypeMapping?: Record<string, string>;
|
|
92
|
-
};
|
|
93
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import timestampDisplay from './timestamp.js';
|
|
2
|
-
import numberDisplay from './number.js';
|
|
3
|
-
import stringDisplay from './string.js';
|
|
4
|
-
export const display = (value, field) => {
|
|
5
|
-
if (field.type === 'timestamp' && typeof value === 'number') {
|
|
6
|
-
return timestampDisplay(value, field.display);
|
|
7
|
-
}
|
|
8
|
-
if (field.type === 'number' && typeof value === 'number') {
|
|
9
|
-
return numberDisplay(value, field.display);
|
|
10
|
-
}
|
|
11
|
-
if (field.type === 'string' && typeof value === 'string') {
|
|
12
|
-
return stringDisplay(value, field.display);
|
|
13
|
-
}
|
|
14
|
-
return value;
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare const basedSchemaNumberFormats: readonly [any, "short", "human", "ratio", "bytes", "euro", "dollar", "pound"];
|
|
2
|
-
export type NumberFormat = (typeof basedSchemaNumberFormats)[number] | `round-${number}`;
|
|
3
|
-
declare const parseNumber: (nr: number | string, format?: NumberFormat) => string | number;
|
|
4
|
-
export default parseNumber;
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
export const basedSchemaNumberFormats = [
|
|
2
|
-
,
|
|
3
|
-
'short',
|
|
4
|
-
'human',
|
|
5
|
-
'ratio',
|
|
6
|
-
'bytes',
|
|
7
|
-
'euro',
|
|
8
|
-
'dollar',
|
|
9
|
-
'pound',
|
|
10
|
-
];
|
|
11
|
-
const parseNumber = (nr, format) => {
|
|
12
|
-
if (!format) {
|
|
13
|
-
return nr;
|
|
14
|
-
}
|
|
15
|
-
if (typeof nr === 'number') {
|
|
16
|
-
if (format === 'euro' || format === 'dollar' || format === 'pound') {
|
|
17
|
-
const p = String(parseNumber(nr, 'short'));
|
|
18
|
-
const fraction = format === 'euro' ? ',' : '.';
|
|
19
|
-
const [s, f] = p.split('.');
|
|
20
|
-
return `${format === 'euro'
|
|
21
|
-
? '€'
|
|
22
|
-
: format === 'pound'
|
|
23
|
-
? '£'
|
|
24
|
-
: format === 'dollar'
|
|
25
|
-
? '$'
|
|
26
|
-
: ''}${s}${f ? `${fraction}${f}` : ''}`;
|
|
27
|
-
}
|
|
28
|
-
else if (format.startsWith('round-')) {
|
|
29
|
-
const [, fixed] = format.split('round-');
|
|
30
|
-
const n = Number(fixed);
|
|
31
|
-
if (!n) {
|
|
32
|
-
return `${nr.toFixed()}`;
|
|
33
|
-
}
|
|
34
|
-
return `${nr.toFixed(n)}`;
|
|
35
|
-
}
|
|
36
|
-
else if (format === 'bytes') {
|
|
37
|
-
const kb = nr / 1024;
|
|
38
|
-
const mb = kb / 1024;
|
|
39
|
-
const gb = mb / 1024;
|
|
40
|
-
if (gb >= 1) {
|
|
41
|
-
return `${gb.toFixed(2)} gb`;
|
|
42
|
-
}
|
|
43
|
-
else if (mb >= 1) {
|
|
44
|
-
return `${mb.toFixed(2)} mb`;
|
|
45
|
-
}
|
|
46
|
-
else if (kb >= 1) {
|
|
47
|
-
return `${kb.toFixed(2)} kb`;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return `${nr} ${nr === 1 ? 'byte' : 'bytes'}`;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
else if (format === 'ratio') {
|
|
54
|
-
return `${Math.round(nr * 10000) / 100}%`;
|
|
55
|
-
}
|
|
56
|
-
else if (format === 'short') {
|
|
57
|
-
if (nr >= 10e9) {
|
|
58
|
-
nr = nr / 1e9;
|
|
59
|
-
nr = nr.toFixed(1);
|
|
60
|
-
if (nr[nr.length - 1] === '0') {
|
|
61
|
-
nr = nr.slice(0, -2);
|
|
62
|
-
}
|
|
63
|
-
return nr + 'b';
|
|
64
|
-
}
|
|
65
|
-
else if (nr >= 10e6) {
|
|
66
|
-
nr = nr / 1e6;
|
|
67
|
-
nr = nr.toFixed(1);
|
|
68
|
-
if (nr[nr.length - 1] === '0') {
|
|
69
|
-
nr = nr.slice(0, -2);
|
|
70
|
-
}
|
|
71
|
-
return nr + 'm';
|
|
72
|
-
}
|
|
73
|
-
else if (nr >= 10e3) {
|
|
74
|
-
nr = nr / 1e3;
|
|
75
|
-
nr = nr.toFixed(1);
|
|
76
|
-
if (nr[nr.length - 1] === '0') {
|
|
77
|
-
nr = nr.slice(0, -2);
|
|
78
|
-
}
|
|
79
|
-
return nr + 'k';
|
|
80
|
-
}
|
|
81
|
-
nr = nr.toFixed(2);
|
|
82
|
-
if (nr[nr.length - 1] === '0') {
|
|
83
|
-
nr = nr.slice(0, -3);
|
|
84
|
-
}
|
|
85
|
-
return String(nr);
|
|
86
|
-
}
|
|
87
|
-
else if (format === 'human') {
|
|
88
|
-
return nr.toFixed(2);
|
|
89
|
-
}
|
|
90
|
-
return String(nr);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return nr;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
export default parseNumber;
|
|
97
|
-
//# sourceMappingURL=number.js.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare const basedSchemaDisplayFormats: readonly ["lowercase", "uppercase", "capitalize"];
|
|
2
|
-
export type basedSchemaDisplayFormat = (typeof basedSchemaDisplayFormats)[number];
|
|
3
|
-
export type StringFormat = basedSchemaDisplayFormat;
|
|
4
|
-
declare const parseString: (value?: string, format?: StringFormat) => string;
|
|
5
|
-
export default parseString;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export const basedSchemaDisplayFormats = [
|
|
2
|
-
'lowercase',
|
|
3
|
-
'uppercase',
|
|
4
|
-
'capitalize',
|
|
5
|
-
];
|
|
6
|
-
const parseString = (value, format) => {
|
|
7
|
-
if (!format) {
|
|
8
|
-
return value;
|
|
9
|
-
}
|
|
10
|
-
if (!value) {
|
|
11
|
-
return value;
|
|
12
|
-
}
|
|
13
|
-
if (format === 'lowercase') {
|
|
14
|
-
return value.toLowerCase();
|
|
15
|
-
}
|
|
16
|
-
if (format === 'uppercase') {
|
|
17
|
-
return value.toUpperCase();
|
|
18
|
-
}
|
|
19
|
-
if (format === 'capitalize') {
|
|
20
|
-
const a = value[0];
|
|
21
|
-
return a.toUpperCase() + (value ? value.slice(1) : '');
|
|
22
|
-
}
|
|
23
|
-
return value;
|
|
24
|
-
};
|
|
25
|
-
export default parseString;
|
|
26
|
-
//# sourceMappingURL=string.js.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare const basedSchemaDateFormats: readonly [any, "date", "date-time", "date-time-text", "human", "time", "time-precise"];
|
|
2
|
-
export type BasedSchemaDateFormat = (typeof basedSchemaDateFormats)[number];
|
|
3
|
-
export type DateFormat = BasedSchemaDateFormat;
|
|
4
|
-
declare const _default: (nr: number | string, format?: DateFormat) => string | number;
|
|
5
|
-
export default _default;
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
export const basedSchemaDateFormats = [
|
|
2
|
-
,
|
|
3
|
-
'date',
|
|
4
|
-
'date-time',
|
|
5
|
-
'date-time-text',
|
|
6
|
-
'human',
|
|
7
|
-
'time',
|
|
8
|
-
'time-precise',
|
|
9
|
-
];
|
|
10
|
-
const addZero = (d) => {
|
|
11
|
-
const s = d + '';
|
|
12
|
-
if (s.length === 1) {
|
|
13
|
-
return '0' + s;
|
|
14
|
-
}
|
|
15
|
-
return s;
|
|
16
|
-
};
|
|
17
|
-
export default (nr, format) => {
|
|
18
|
-
if (!format) {
|
|
19
|
-
return nr;
|
|
20
|
-
}
|
|
21
|
-
if (typeof nr === 'number') {
|
|
22
|
-
const thenDate = new Date(nr);
|
|
23
|
-
if (format === 'date') {
|
|
24
|
-
return (thenDate.getDate() +
|
|
25
|
-
'/' +
|
|
26
|
-
(thenDate.getMonth() + 1) +
|
|
27
|
-
'/' +
|
|
28
|
-
thenDate.getFullYear());
|
|
29
|
-
}
|
|
30
|
-
else if (format === 'time') {
|
|
31
|
-
return thenDate.getHours() + ':' + addZero(thenDate.getMinutes());
|
|
32
|
-
}
|
|
33
|
-
else if (format === 'time-precise') {
|
|
34
|
-
return (thenDate.getHours() +
|
|
35
|
-
':' +
|
|
36
|
-
addZero(thenDate.getMinutes()) +
|
|
37
|
-
':' +
|
|
38
|
-
addZero(thenDate.getSeconds()));
|
|
39
|
-
}
|
|
40
|
-
else if (format === 'date-time-text') {
|
|
41
|
-
return `${thenDate.toLocaleDateString('default', {
|
|
42
|
-
day: 'numeric',
|
|
43
|
-
month: 'long',
|
|
44
|
-
year: 'numeric',
|
|
45
|
-
})}, ${thenDate.toLocaleTimeString()}`;
|
|
46
|
-
}
|
|
47
|
-
else if (format === 'date-time') {
|
|
48
|
-
return (thenDate.getHours() +
|
|
49
|
-
':' +
|
|
50
|
-
addZero(thenDate.getMinutes()) +
|
|
51
|
-
' ' +
|
|
52
|
-
thenDate.getDate() +
|
|
53
|
-
'/' +
|
|
54
|
-
(thenDate.getMonth() + 1) +
|
|
55
|
-
'/' +
|
|
56
|
-
thenDate.getFullYear());
|
|
57
|
-
}
|
|
58
|
-
else if (format === 'human') {
|
|
59
|
-
const nowDate = new Date();
|
|
60
|
-
if (nowDate.getTime() > thenDate.getTime()) {
|
|
61
|
-
var secondsSince = Math.floor((nowDate.getTime() - thenDate.getTime()) / 1000);
|
|
62
|
-
var interval = secondsSince / 31536000; // seconds in a year
|
|
63
|
-
if (interval > 1) {
|
|
64
|
-
const x = Math.floor(interval);
|
|
65
|
-
return `${x} ${x > 1 ? 'years' : 'year'} ago`;
|
|
66
|
-
}
|
|
67
|
-
interval = secondsSince / 2592000; // seconds in a month
|
|
68
|
-
if (interval > 1) {
|
|
69
|
-
const x = Math.floor(interval);
|
|
70
|
-
return `${x} ${x > 1 ? 'months' : 'month'} ago`;
|
|
71
|
-
}
|
|
72
|
-
interval = secondsSince / 86400; // seconds in a day
|
|
73
|
-
if (interval > 1) {
|
|
74
|
-
const x = Math.floor(interval);
|
|
75
|
-
return `${x} ${x > 1 ? 'days' : 'day'} ago`;
|
|
76
|
-
}
|
|
77
|
-
interval = secondsSince / 3600; // seconds in an hour
|
|
78
|
-
if (interval > 1) {
|
|
79
|
-
const x = Math.floor(interval);
|
|
80
|
-
return `${x} ${x > 1 ? 'hours' : 'hour'} ago`;
|
|
81
|
-
}
|
|
82
|
-
interval = secondsSince / 60; // seconds in a minute :)
|
|
83
|
-
if (interval > 1) {
|
|
84
|
-
const x = Math.floor(interval);
|
|
85
|
-
return `${x} ${x > 1 ? 'minutes' : 'minute'} ago`;
|
|
86
|
-
}
|
|
87
|
-
if (secondsSince > 10) {
|
|
88
|
-
const x = Math.floor(secondsSince);
|
|
89
|
-
return `${x} ${x > 1 ? 'seconds' : 'second'} ago`;
|
|
90
|
-
}
|
|
91
|
-
return 'Now';
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
// in the future
|
|
95
|
-
var secondsSince = Math.floor((thenDate.getTime() - nowDate.getTime()) / 1000);
|
|
96
|
-
var interval = secondsSince / 31536000; // seconds in a year
|
|
97
|
-
if (interval > 1) {
|
|
98
|
-
const x = Math.floor(interval);
|
|
99
|
-
return `${x} ${x > 1 ? 'years' : 'year'} from now`;
|
|
100
|
-
}
|
|
101
|
-
interval = secondsSince / 2592000; // seconds in a month
|
|
102
|
-
if (interval > 1) {
|
|
103
|
-
const x = Math.floor(interval);
|
|
104
|
-
return `${x} ${x > 1 ? 'months' : 'month'} from now`;
|
|
105
|
-
}
|
|
106
|
-
interval = secondsSince / 86400; // seconds in a day
|
|
107
|
-
if (interval > 1) {
|
|
108
|
-
const x = Math.floor(interval);
|
|
109
|
-
return `${x} ${x > 1 ? 'days' : 'day'} from now`;
|
|
110
|
-
}
|
|
111
|
-
interval = secondsSince / 3600; // seconds in an hour
|
|
112
|
-
if (interval > 1) {
|
|
113
|
-
const x = Math.floor(interval);
|
|
114
|
-
return `${x} ${x > 1 ? 'hours' : 'hour'} from now`;
|
|
115
|
-
}
|
|
116
|
-
interval = secondsSince / 60; // seconds in a minute :)
|
|
117
|
-
if (interval > 1) {
|
|
118
|
-
const x = Math.floor(interval);
|
|
119
|
-
return `${x} ${x > 1 ? 'minutes' : 'minute'} from now`;
|
|
120
|
-
}
|
|
121
|
-
if (secondsSince > 10) {
|
|
122
|
-
const x = Math.floor(secondsSince);
|
|
123
|
-
return `${x} ${x > 1 ? 'seconds' : 'second'} from now`;
|
|
124
|
-
}
|
|
125
|
-
return 'Now';
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return String(nr);
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
return nr;
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
//# sourceMappingURL=timestamp.js.map
|
package/dist/src/error.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export declare enum ParseError {
|
|
2
|
-
'incorrectFieldType' = 0,
|
|
3
|
-
'incorrectNodeType' = 1,
|
|
4
|
-
'exceedsMaximum' = 2,
|
|
5
|
-
'subceedsMinimum' = 3,
|
|
6
|
-
'fieldDoesNotExist' = 4,
|
|
7
|
-
'incorrectFormat' = 5,
|
|
8
|
-
'referenceIsIncorrectType' = 6,
|
|
9
|
-
'valueAndDefault' = 7,
|
|
10
|
-
'defaultNotSupported' = 8,
|
|
11
|
-
'multipleOperationsNotAllowed' = 9,
|
|
12
|
-
'requiredFieldNotDefined' = 10,
|
|
13
|
-
'languageNotSupported' = 11,
|
|
14
|
-
'invalidJSON' = 12,
|
|
15
|
-
'noLanguageFound' = 13,
|
|
16
|
-
'cannotDeleteNodeFromModify' = 14,
|
|
17
|
-
'nestedModifyObjectNotAllowed' = 15,
|
|
18
|
-
'infinityNotSupported' = 16,
|
|
19
|
-
'invalidSchemaFormat' = 17,
|
|
20
|
-
'invalidProperty' = 18
|
|
21
|
-
}
|
package/dist/src/error.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export var ParseError;
|
|
2
|
-
(function (ParseError) {
|
|
3
|
-
ParseError[ParseError["incorrectFieldType"] = 0] = "incorrectFieldType";
|
|
4
|
-
ParseError[ParseError["incorrectNodeType"] = 1] = "incorrectNodeType";
|
|
5
|
-
ParseError[ParseError["exceedsMaximum"] = 2] = "exceedsMaximum";
|
|
6
|
-
ParseError[ParseError["subceedsMinimum"] = 3] = "subceedsMinimum";
|
|
7
|
-
ParseError[ParseError["fieldDoesNotExist"] = 4] = "fieldDoesNotExist";
|
|
8
|
-
ParseError[ParseError["incorrectFormat"] = 5] = "incorrectFormat";
|
|
9
|
-
ParseError[ParseError["referenceIsIncorrectType"] = 6] = "referenceIsIncorrectType";
|
|
10
|
-
ParseError[ParseError["valueAndDefault"] = 7] = "valueAndDefault";
|
|
11
|
-
ParseError[ParseError["defaultNotSupported"] = 8] = "defaultNotSupported";
|
|
12
|
-
ParseError[ParseError["multipleOperationsNotAllowed"] = 9] = "multipleOperationsNotAllowed";
|
|
13
|
-
ParseError[ParseError["requiredFieldNotDefined"] = 10] = "requiredFieldNotDefined";
|
|
14
|
-
ParseError[ParseError["languageNotSupported"] = 11] = "languageNotSupported";
|
|
15
|
-
ParseError[ParseError["invalidJSON"] = 12] = "invalidJSON";
|
|
16
|
-
ParseError[ParseError["noLanguageFound"] = 13] = "noLanguageFound";
|
|
17
|
-
ParseError[ParseError["cannotDeleteNodeFromModify"] = 14] = "cannotDeleteNodeFromModify";
|
|
18
|
-
ParseError[ParseError["nestedModifyObjectNotAllowed"] = 15] = "nestedModifyObjectNotAllowed";
|
|
19
|
-
ParseError[ParseError["infinityNotSupported"] = 16] = "infinityNotSupported";
|
|
20
|
-
ParseError[ParseError["invalidSchemaFormat"] = 17] = "invalidSchemaFormat";
|
|
21
|
-
ParseError[ParseError["invalidProperty"] = 18] = "invalidProperty";
|
|
22
|
-
})(ParseError || (ParseError = {}));
|
|
23
|
-
//# sourceMappingURL=error.js.map
|
package/dist/src/index.d.ts
DELETED
package/dist/src/index.js
DELETED