@daaler/jutils 0.3.7 → 0.4.1
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/dist/async-tricks/interrupt.d.ts +8 -0
- package/dist/async-tricks/interrupt.js +14 -0
- package/dist/async-tricks/interrupt.js.map +1 -0
- package/dist/async-tricks/wait.js.map +1 -0
- package/dist/browser.d.ts +2 -23
- package/dist/browser.js +2 -23
- package/dist/browser.js.map +1 -1
- package/dist/{id-based-cache.d.ts → cache/id-based-cache.d.ts} +5 -4
- package/dist/{id-based-cache.js → cache/id-based-cache.js} +12 -9
- package/dist/cache/id-based-cache.js.map +1 -0
- package/dist/{id-based-lru-cache.d.ts → cache/id-based-lru-cache.d.ts} +6 -5
- package/dist/{id-based-lru-cache.js → cache/id-based-lru-cache.js} +18 -11
- package/dist/cache/id-based-lru-cache.js.map +1 -0
- package/dist/{weak-value-cache.d.ts → cache/weak-value-cache.d.ts} +5 -4
- package/dist/{weak-value-cache.js → cache/weak-value-cache.js} +13 -10
- package/dist/cache/weak-value-cache.js.map +1 -0
- package/dist/data/recursive-merge.d.ts +2 -0
- package/dist/{recursive-merge.js → data/recursive-merge.js} +3 -2
- package/dist/data/recursive-merge.js.map +1 -0
- package/dist/debug/jdebug.js.map +1 -0
- package/dist/{not-implemented.d.ts → error/not-implemented.d.ts} +1 -1
- package/dist/error/not-implemented.js +8 -0
- package/dist/error/not-implemented.js.map +1 -0
- package/dist/exception/exception.js.map +1 -0
- package/dist/exception/exceptions.js.map +1 -0
- package/dist/exception/match-exceptions.js.map +1 -0
- package/dist/index.d.ts +22 -23
- package/dist/index.js +22 -23
- package/dist/index.js.map +1 -1
- package/dist/jdom/jdom-browser.d.ts +5 -0
- package/dist/jdom/jdom-browser.js +6 -0
- package/dist/jdom/jdom-browser.js.map +1 -0
- package/dist/jdom/jdom-node.d.ts +5 -0
- package/dist/jdom/jdom-node.js +7 -0
- package/dist/jdom/jdom-node.js.map +1 -0
- package/dist/jschema/any.d.ts +2 -0
- package/dist/jschema/any.js +3 -0
- package/dist/jschema/any.js.map +1 -0
- package/dist/jschema/integer.d.ts +7 -0
- package/dist/jschema/integer.js +8 -0
- package/dist/jschema/integer.js.map +1 -0
- package/dist/jschema/jschema-types.d.ts +52 -0
- package/dist/jschema/jschema-types.js +2 -0
- package/dist/jschema/jschema-types.js.map +1 -0
- package/dist/jschema/jschema.d.ts +7 -0
- package/dist/jschema/jschema.js +103 -0
- package/dist/jschema/jschema.js.map +1 -0
- package/dist/jschema/jtype.d.ts +2 -0
- package/dist/jschema/jtype.js +3 -0
- package/dist/jschema/jtype.js.map +1 -0
- package/dist/jschema/old-jschema.d.ts +10 -0
- package/dist/{jschema.js → jschema/old-jschema.js} +6 -8
- package/dist/jschema/old-jschema.js.map +1 -0
- package/dist/jschema/tmpx.d.ts +1 -0
- package/dist/jschema/tmpx.js +76 -0
- package/dist/jschema/tmpx.js.map +1 -0
- package/dist/jschema/tuple.d.ts +5 -0
- package/dist/jschema/tuple.js +6 -0
- package/dist/jschema/tuple.js.map +1 -0
- package/dist/jschema/uuid.d.ts +5 -0
- package/dist/{uuid.js → jschema/uuid.js} +3 -2
- package/dist/jschema/uuid.js.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.js +4 -0
- package/dist/node.js.map +1 -0
- package/dist/notifications/notifications.d.ts +16 -0
- package/dist/{notifications.js → notifications/notifications.js} +18 -8
- package/dist/notifications/notifications.js.map +1 -0
- package/dist/op/noop.js.map +1 -0
- package/dist/{randomInteger.js → random/random-integer-node.js} +1 -1
- package/dist/random/random-integer-node.js.map +1 -0
- package/dist/react/calculate-layout-style.d.ts +2 -0
- package/dist/react/calculate-layout-style.js +10 -0
- package/dist/react/calculate-layout-style.js.map +1 -0
- package/dist/react/types.d.ts +6 -0
- package/dist/react/types.js +2 -0
- package/dist/react/types.js.map +1 -0
- package/dist/react/useLayoutStyle.d.ts +8 -0
- package/dist/react/useLayoutStyle.js +25 -0
- package/dist/react/useLayoutStyle.js.map +1 -0
- package/dist/react/useToggle.d.ts +1 -0
- package/dist/react/useToggle.js +16 -0
- package/dist/react/useToggle.js.map +1 -0
- package/dist/react/useWindowLayoutStyle.d.ts +6 -0
- package/dist/react/useWindowLayoutStyle.js +22 -0
- package/dist/react/useWindowLayoutStyle.js.map +1 -0
- package/dist/react.d.ts +4 -0
- package/dist/react.js +5 -0
- package/dist/react.js.map +1 -0
- package/dist/time/max-date.js.map +1 -0
- package/dist/time/timedifference.js.map +1 -0
- package/dist/time/timefromnow.js.map +1 -0
- package/dist/time/timefromx.js.map +1 -0
- package/dist/time/zero-date.js.map +1 -0
- package/package.json +16 -7
- package/dist/exception.js.map +0 -1
- package/dist/exceptions.js.map +0 -1
- package/dist/id-based-cache.js.map +0 -1
- package/dist/id-based-lru-cache.js.map +0 -1
- package/dist/integer.d.ts +0 -5
- package/dist/integer.js +0 -8
- package/dist/integer.js.map +0 -1
- package/dist/interrupt.d.ts +0 -2
- package/dist/interrupt.js +0 -8
- package/dist/interrupt.js.map +0 -1
- package/dist/jdebug.js.map +0 -1
- package/dist/jschema.d.ts +0 -6
- package/dist/jschema.js.map +0 -1
- package/dist/match-exceptions.js.map +0 -1
- package/dist/max-date.js.map +0 -1
- package/dist/noop.js.map +0 -1
- package/dist/not-implemented.js +0 -8
- package/dist/not-implemented.js.map +0 -1
- package/dist/notifications.d.ts +0 -16
- package/dist/notifications.js.map +0 -1
- package/dist/randomInteger.js.map +0 -1
- package/dist/recursive-merge.d.ts +0 -2
- package/dist/recursive-merge.js.map +0 -1
- package/dist/timedifference.js.map +0 -1
- package/dist/timefromnow.js.map +0 -1
- package/dist/timefromx.js.map +0 -1
- package/dist/uuid.d.ts +0 -5
- package/dist/uuid.js.map +0 -1
- package/dist/wait.js.map +0 -1
- package/dist/weak-value-cache.js.map +0 -1
- package/dist/zero-date.js.map +0 -1
- /package/dist/{wait.d.ts → async-tricks/wait.d.ts} +0 -0
- /package/dist/{wait.js → async-tricks/wait.js} +0 -0
- /package/dist/{jdebug.d.ts → debug/jdebug.d.ts} +0 -0
- /package/dist/{jdebug.js → debug/jdebug.js} +0 -0
- /package/dist/{exception.d.ts → exception/exception.d.ts} +0 -0
- /package/dist/{exception.js → exception/exception.js} +0 -0
- /package/dist/{exceptions.d.ts → exception/exceptions.d.ts} +0 -0
- /package/dist/{exceptions.js → exception/exceptions.js} +0 -0
- /package/dist/{match-exceptions.d.ts → exception/match-exceptions.d.ts} +0 -0
- /package/dist/{match-exceptions.js → exception/match-exceptions.js} +0 -0
- /package/dist/{noop.d.ts → op/noop.d.ts} +0 -0
- /package/dist/{noop.js → op/noop.js} +0 -0
- /package/dist/{randomInteger.d.ts → random/random-integer-node.d.ts} +0 -0
- /package/dist/{max-date.d.ts → time/max-date.d.ts} +0 -0
- /package/dist/{max-date.js → time/max-date.js} +0 -0
- /package/dist/{timedifference.d.ts → time/timedifference.d.ts} +0 -0
- /package/dist/{timedifference.js → time/timedifference.js} +0 -0
- /package/dist/{timefromnow.d.ts → time/timefromnow.d.ts} +0 -0
- /package/dist/{timefromnow.js → time/timefromnow.js} +0 -0
- /package/dist/{timefromx.d.ts → time/timefromx.d.ts} +0 -0
- /package/dist/{timefromx.js → time/timefromx.js} +0 -0
- /package/dist/{zero-date.d.ts → time/zero-date.d.ts} +0 -0
- /package/dist/{zero-date.js → time/zero-date.js} +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import any from "./any.js";
|
|
2
|
+
import Integer from "./integer.js";
|
|
3
|
+
import Tuple from "./tuple.js";
|
|
4
|
+
export default class JSchema {
|
|
5
|
+
_schema;
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
get schema() { return this._schema; }
|
|
8
|
+
constructor(schema) {
|
|
9
|
+
this._schema = this.normalizeSchema(schema);
|
|
10
|
+
}
|
|
11
|
+
normalizeSchema(schema) {
|
|
12
|
+
const _schema = normalizeSchema(schema);
|
|
13
|
+
return _schema;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
;
|
|
17
|
+
const normalizeSchema = (schema) => {
|
|
18
|
+
// @ts-ignore
|
|
19
|
+
if (schema instanceof JSchema)
|
|
20
|
+
return schema.schema;
|
|
21
|
+
if (schema.constructor === Object)
|
|
22
|
+
return processDefinition(schema);
|
|
23
|
+
if (schema.constructor === Array)
|
|
24
|
+
return processAlternatives(schema);
|
|
25
|
+
if (defaultSchemas.has(schema))
|
|
26
|
+
return defaultSchemas.get(schema);
|
|
27
|
+
throw new Error("Invalid schema definition");
|
|
28
|
+
};
|
|
29
|
+
const processDefinition = (definition) => {
|
|
30
|
+
if (definition.type === Object)
|
|
31
|
+
return processObjectDefinition(definition);
|
|
32
|
+
if (definition.type === Array)
|
|
33
|
+
return processArrayDefinition(definition);
|
|
34
|
+
if (definition.type === Tuple)
|
|
35
|
+
return processTupleDefinition(definition);
|
|
36
|
+
return definition;
|
|
37
|
+
};
|
|
38
|
+
const processObjectDefinition = (definition) => {
|
|
39
|
+
const { keys, ...rest } = definition.extend ?
|
|
40
|
+
processObjectDefinitionExtend(definition) :
|
|
41
|
+
definition;
|
|
42
|
+
const newKeys = {};
|
|
43
|
+
for (const [key, schema] of Object.entries(keys)) {
|
|
44
|
+
newKeys[key] = normalizeSchema(schema);
|
|
45
|
+
}
|
|
46
|
+
const newDefinition = { keys: newKeys, ...rest };
|
|
47
|
+
return newDefinition;
|
|
48
|
+
};
|
|
49
|
+
const processObjectDefinitionExtend = ({ extend, keys, allowUnknown, ...rest }) => {
|
|
50
|
+
const newDefinition = {
|
|
51
|
+
type: Object,
|
|
52
|
+
keys: {},
|
|
53
|
+
allowUnknown: !keys,
|
|
54
|
+
};
|
|
55
|
+
const extendees = Array.isArray(extend) ? extend : [extend];
|
|
56
|
+
for (const { schema: { type, keys, allowUnknown, ...rest } } of extendees) {
|
|
57
|
+
if (type !== Object)
|
|
58
|
+
throw new Error("Not an object");
|
|
59
|
+
if (allowUnknown)
|
|
60
|
+
newDefinition.allowUnknown = true;
|
|
61
|
+
Object.assign(newDefinition, rest);
|
|
62
|
+
Object.assign(newDefinition.keys, keys);
|
|
63
|
+
}
|
|
64
|
+
if (allowUnknown)
|
|
65
|
+
newDefinition.allowUnknown = true;
|
|
66
|
+
Object.assign(newDefinition, rest);
|
|
67
|
+
Object.assign(newDefinition.keys, keys);
|
|
68
|
+
return newDefinition;
|
|
69
|
+
};
|
|
70
|
+
const processArrayDefinition = ({ items, ...rest }) => {
|
|
71
|
+
const newDefinition = {
|
|
72
|
+
items: normalizeSchema(items),
|
|
73
|
+
...rest
|
|
74
|
+
};
|
|
75
|
+
return newDefinition;
|
|
76
|
+
};
|
|
77
|
+
const processTupleDefinition = ({ values: _values, ...rest }) => {
|
|
78
|
+
const values = [];
|
|
79
|
+
for (const _value of _values) {
|
|
80
|
+
const value = normalizeSchema(_value);
|
|
81
|
+
values.push(value);
|
|
82
|
+
}
|
|
83
|
+
const newDefinition = {
|
|
84
|
+
values,
|
|
85
|
+
...rest
|
|
86
|
+
};
|
|
87
|
+
return newDefinition;
|
|
88
|
+
};
|
|
89
|
+
const processAlternatives = (alternatives) => {
|
|
90
|
+
throw new Error("Not yet implemented");
|
|
91
|
+
};
|
|
92
|
+
const normalizedAny = { type: any };
|
|
93
|
+
const defaultSchemas = new Map();
|
|
94
|
+
defaultSchemas.set(Object, { type: Object, keys: {}, optionalKeys: {}, allowUnknown: normalizedAny }); // check if this works!!??
|
|
95
|
+
defaultSchemas.set(Array, { type: Array, items: any }); // check if this works!!??
|
|
96
|
+
defaultSchemas.set(Tuple, { type: Tuple, values: [] });
|
|
97
|
+
defaultSchemas.set(String, { type: String });
|
|
98
|
+
defaultSchemas.set(Number, { type: Number });
|
|
99
|
+
defaultSchemas.set(Integer, { type: Integer });
|
|
100
|
+
defaultSchemas.set(Boolean, { type: Boolean });
|
|
101
|
+
defaultSchemas.set(any, normalizedAny);
|
|
102
|
+
defaultSchemas.set(null, { type: null });
|
|
103
|
+
//# sourceMappingURL=jschema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jschema.js","sourceRoot":"","sources":["../../src/jschema/jschema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jtype.js","sourceRoot":"","sources":["../../src/jschema/jtype.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAgB,KAAK;CAAG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Integer from "./integer.js";
|
|
2
|
-
import
|
|
2
|
+
import Any from "./any.js";
|
|
3
3
|
class JSchema {
|
|
4
4
|
schema;
|
|
5
5
|
constructor(schema) {
|
|
@@ -27,9 +27,8 @@ const processDefinition = (definition) => {
|
|
|
27
27
|
};
|
|
28
28
|
const processObjectDefinition = (definition) => {
|
|
29
29
|
const { keys, ...rest } = definition.extend ?
|
|
30
|
-
processObjectDefinitionExtend(definition)
|
|
31
|
-
|
|
32
|
-
definition;
|
|
30
|
+
processObjectDefinitionExtend(definition) :
|
|
31
|
+
definition;
|
|
33
32
|
const newKeys = {};
|
|
34
33
|
for (const [key, schema] of Object.entries(keys)) {
|
|
35
34
|
newKeys[key] = processSchema(schema);
|
|
@@ -60,7 +59,7 @@ const processObjectDefinitionExtend = ({ extend, keys, allowUnknown, ...rest })
|
|
|
60
59
|
};
|
|
61
60
|
const processArrayDefinition = ({ values, items, ...rest }) => {
|
|
62
61
|
const newDefinition = {
|
|
63
|
-
items: values ? processSchema(values) : processSchema(items),
|
|
62
|
+
items: values ? processSchema(values) : processSchema(items),
|
|
64
63
|
...rest
|
|
65
64
|
};
|
|
66
65
|
return newDefinition;
|
|
@@ -70,11 +69,10 @@ const processAlternatives = (alternatives) => {
|
|
|
70
69
|
};
|
|
71
70
|
const defaultSchemas = new Map();
|
|
72
71
|
defaultSchemas.set(Object, { type: Object, allowUnknown: true, keys: {} }); // check if this works!!??
|
|
72
|
+
defaultSchemas.set(Array, { type: Array, items: Any }); // check if this works!!??
|
|
73
73
|
defaultSchemas.set(String, { type: String });
|
|
74
74
|
defaultSchemas.set(Number, { type: Number });
|
|
75
75
|
defaultSchemas.set(Integer, { type: Integer });
|
|
76
76
|
defaultSchemas.set(Boolean, { type: Boolean });
|
|
77
|
-
defaultSchemas.set(UUID, { type: UUID });
|
|
78
|
-
defaultSchemas.set(Date, { type: Date });
|
|
79
77
|
export default JSchema;
|
|
80
|
-
//# sourceMappingURL=jschema.js.map
|
|
78
|
+
//# sourceMappingURL=old-jschema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"old-jschema.js","sourceRoot":"","sources":["../../src/jschema/old-jschema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import Integer from "./integer.js";
|
|
2
|
+
import Tuple from "./tuple.js";
|
|
3
|
+
import any from "./any.js";
|
|
4
|
+
import JSchema from "./jschema.js";
|
|
5
|
+
const courseSchema = new JSchema({
|
|
6
|
+
type: Object,
|
|
7
|
+
keys: {
|
|
8
|
+
_id: { type: String },
|
|
9
|
+
tag: { type: String },
|
|
10
|
+
title: { type: String },
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
const hashSchema = new JSchema({
|
|
14
|
+
type: String,
|
|
15
|
+
});
|
|
16
|
+
const anySchema = new JSchema(any);
|
|
17
|
+
//---
|
|
18
|
+
const nullSchema = new JSchema(null);
|
|
19
|
+
//---
|
|
20
|
+
const tupleSchema = new JSchema({ type: Tuple, values: [String, Number] });
|
|
21
|
+
//---
|
|
22
|
+
const courseXSchema = new JSchema({
|
|
23
|
+
type: Object,
|
|
24
|
+
keys: {
|
|
25
|
+
_id: { type: String },
|
|
26
|
+
tag: String,
|
|
27
|
+
numb: { type: Number },
|
|
28
|
+
numb2: Number,
|
|
29
|
+
integ: { type: Integer },
|
|
30
|
+
integ2: Integer,
|
|
31
|
+
bool: { type: Boolean },
|
|
32
|
+
boolz: Boolean,
|
|
33
|
+
meta: {
|
|
34
|
+
type: Object,
|
|
35
|
+
keys: {
|
|
36
|
+
createdAt: { type: String },
|
|
37
|
+
updatedAt: { type: String },
|
|
38
|
+
},
|
|
39
|
+
optionalKeys: {
|
|
40
|
+
heppadaa: { type: Number },
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
arr: { type: Array, items: { type: String } },
|
|
44
|
+
something: any,
|
|
45
|
+
nothing: null,
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const courseXSchema2 = new JSchema({
|
|
49
|
+
type: Object,
|
|
50
|
+
keys: {
|
|
51
|
+
meta: {
|
|
52
|
+
type: Object,
|
|
53
|
+
keys: {
|
|
54
|
+
createdAt: { type: String },
|
|
55
|
+
updatedAt: { type: String },
|
|
56
|
+
},
|
|
57
|
+
optionalKeys: {
|
|
58
|
+
heppadaa: { type: Number },
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
metaMust: {
|
|
62
|
+
type: Object,
|
|
63
|
+
keys: {
|
|
64
|
+
createdAt: { type: String },
|
|
65
|
+
updatedAt: { type: String },
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
metaOpt: {
|
|
69
|
+
type: Object,
|
|
70
|
+
optionalKeys: {
|
|
71
|
+
heppadaa: { type: Number },
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=tmpx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tmpx.js","sourceRoot":"","sources":["../../src/jschema/tmpx.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,OAAO,MAAM,cAAc,CAAC;AAInC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC;IAChC,IAAI,EAAG,MAAM;IACb,IAAI,EAAG;QACN,GAAG,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;QACrB,GAAG,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;QACrB,KAAK,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;KACvB;CACD,CAAC,CAAC;AAIH,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC;IAC9B,IAAI,EAAG,MAAM;CACb,CAAC,CAAC;AAIH,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;AAInC,KAAK;AAEL,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;AAIrC,KAAK;AAEL,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAC,KAAK,EAAC,MAAM,EAAC,CAAE,MAAM,EAAC,MAAM,CAAE,EAAE,CAAC,CAAC;AAIzE,KAAK;AAEL,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC;IACjC,IAAI,EAAG,MAAM;IACb,IAAI,EAAG;QACN,GAAG,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;QACrB,GAAG,EAAG,MAAM;QACZ,IAAI,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;QACtB,KAAK,EAAG,MAAM;QACd,KAAK,EAAG,EAAE,IAAI,EAAC,OAAO,EAAE;QACxB,MAAM,EAAG,OAAO;QAChB,IAAI,EAAG,EAAE,IAAI,EAAC,OAAO,EAAE;QACvB,KAAK,EAAG,OAAO;QACf,IAAI,EAAG;YACN,IAAI,EAAG,MAAM;YACb,IAAI,EAAG;gBACN,SAAS,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;gBAC3B,SAAS,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;aAC3B;YACD,YAAY,EAAG;gBACd,QAAQ,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;aAC1B;SACD;QACD,GAAG,EAAG,EAAE,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,EAAE,IAAI,EAAC,MAAM,EAAE,EAAE;QAC1C,SAAS,EAAG,GAAG;QACf,OAAO,EAAG,IAAI;KACd;CACD,CAAC,CAAC;AAIH,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC;IAClC,IAAI,EAAG,MAAM;IACb,IAAI,EAAG;QACN,IAAI,EAAG;YACN,IAAI,EAAG,MAAM;YACb,IAAI,EAAG;gBACN,SAAS,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;gBAC3B,SAAS,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;aAC3B;YACD,YAAY,EAAG;gBACd,QAAQ,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;aAC1B;SACD;QACD,QAAQ,EAAG;YACV,IAAI,EAAG,MAAM;YACb,IAAI,EAAG;gBACN,SAAS,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;gBAC3B,SAAS,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;aAC3B;SACD;QACD,OAAO,EAAG;YACT,IAAI,EAAG,MAAM;YACb,YAAY,EAAG;gBACd,QAAQ,EAAG,EAAE,IAAI,EAAC,MAAM,EAAE;aAC1B;SACD;KACD;CACD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../src/jschema/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAI/B,MAAM,CAAC,OAAO,OAAgB,KAAM,SAAQ,KAAK;IAChD,MAAM,CAAU,KAAK,GAAG,OAAO,CAAC;;AAChC,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// pseudo class for JSchema
|
|
2
2
|
class UUID {
|
|
3
|
-
static isUUID
|
|
3
|
+
static isUUID(subject) {
|
|
4
4
|
return typeof subject === "string" && uuidPattern.test(subject);
|
|
5
|
-
}
|
|
5
|
+
}
|
|
6
|
+
;
|
|
6
7
|
static validate = UUID.isUUID;
|
|
7
8
|
}
|
|
8
9
|
const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/jschema/uuid.ts"],"names":[],"mappings":"AACA,2BAA2B;AAC3B,MAAM,IAAI;IACT,MAAM,CAAC,MAAM,CAAC,OAAW;QACxB,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAAA,CAAC;IAEF,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;;AAG/B,MAAM,WAAW,GAAG,4EAA4E,CAAA;AAIhG,eAAe,IAAI,CAAC"}
|
package/dist/node.d.ts
ADDED
package/dist/node.js
ADDED
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAC,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A ridiculously simple interface for handling notifications
|
|
3
|
+
*/
|
|
4
|
+
type notificationCallback = (message: string) => void;
|
|
5
|
+
declare class Notifications {
|
|
6
|
+
_onNotificationCallbacks: Set<notificationCallback>;
|
|
7
|
+
_onWarningCallbacks: Set<notificationCallback>;
|
|
8
|
+
constructor();
|
|
9
|
+
onNotification(callback: notificationCallback): void;
|
|
10
|
+
offNotification(callback: notificationCallback): void;
|
|
11
|
+
onWarning(callback: notificationCallback): void;
|
|
12
|
+
offWarning(callback: notificationCallback): void;
|
|
13
|
+
showNotification(message: string): void;
|
|
14
|
+
showWarning(message: string): void;
|
|
15
|
+
}
|
|
16
|
+
export default Notifications;
|
|
@@ -9,18 +9,28 @@ class Notifications {
|
|
|
9
9
|
this._onWarningCallbacks = new Set();
|
|
10
10
|
}
|
|
11
11
|
;
|
|
12
|
-
onNotification
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
onNotification(callback) {
|
|
13
|
+
this._onNotificationCallbacks.add(callback);
|
|
14
|
+
}
|
|
15
|
+
offNotification(callback) {
|
|
16
|
+
this._onNotificationCallbacks.delete(callback);
|
|
17
|
+
}
|
|
18
|
+
onWarning(callback) {
|
|
19
|
+
this._onWarningCallbacks.add(callback);
|
|
20
|
+
}
|
|
21
|
+
offWarning(callback) {
|
|
22
|
+
this._onWarningCallbacks.delete(callback);
|
|
23
|
+
}
|
|
24
|
+
showNotification(message) {
|
|
17
25
|
console.log(message);
|
|
18
26
|
this._onNotificationCallbacks.forEach((callback) => callback(message));
|
|
19
|
-
}
|
|
20
|
-
|
|
27
|
+
}
|
|
28
|
+
;
|
|
29
|
+
showWarning(message) {
|
|
21
30
|
console.warn(message);
|
|
22
31
|
this._onWarningCallbacks.forEach((callback) => callback(message));
|
|
23
|
-
}
|
|
32
|
+
}
|
|
33
|
+
;
|
|
24
34
|
}
|
|
25
35
|
;
|
|
26
36
|
export default Notifications;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/notifications/notifications.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,aAAa;IAClB,wBAAwB,CAA0B;IAClD,mBAAmB,CAA0B;IAE7C;QACC,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;IACtC,CAAC;IAAA,CAAC;IAEF,cAAc,CAAC,QAA6B;QAC3C,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,eAAe,CAAC,QAA6B;QAC5C,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,SAAS,CAAC,QAA6B;QACtC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,QAA6B;QACvC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB,CAAC,OAAc;QAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAAA,CAAC;IAEF,WAAW,CAAC,OAAc;QACzB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;IAAA,CAAC;CACF;AAAA,CAAC;AAIF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.js","sourceRoot":"","sources":["../../src/op/noop.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;AAEtB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAO,EAAE,EAAE,GAAE,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,CAAC,CAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AAI1B,OAAO,EAAE,IAAI,EAAC,KAAK,EAAC,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random-integer-node.js","sourceRoot":"","sources":["../../src/random/random-integer-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,MAAM,aAAa,GAAG,KAAK,EAAC,GAAU,EAAC,GAAU,EAAkB,EAAE;IACpE,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAC,MAAM,EAAE,EAAE;QAC3C,SAAS,CAAC,GAAG,EAAC,GAAG,EAAC,CAAC,KAAS,EAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAIF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default function calculateStyle(width, height, options) {
|
|
2
|
+
const { widthThreshold = 840, heightThreshold = 600, aspectRatioThreshold = 1.5, } = options;
|
|
3
|
+
const layoutStyle = height < heightThreshold ?
|
|
4
|
+
width < widthThreshold ? (width / height < aspectRatioThreshold ? "narrow" : "short") : "short"
|
|
5
|
+
:
|
|
6
|
+
width < widthThreshold ? "narrow" : "large";
|
|
7
|
+
const navbarPosition = layoutStyle === "short" ? "left" : "top";
|
|
8
|
+
return [layoutStyle, navbarPosition];
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=calculate-layout-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate-layout-style.js","sourceRoot":"","sources":["../../src/react/calculate-layout-style.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAY,EAAC,MAAa,EAAC,OAAe;IAChF,MAAM,EACL,cAAc,GAAG,GAAG,EACpB,eAAe,GAAG,GAAG,EACrB,oBAAoB,GAAG,GAAG,GAC1B,GAAG,OAAO,CAAC;IAEZ,MAAM,WAAW,GAAG,MAAM,GAAG,eAAe,CAAC,CAAC;QAC7C,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;QAC/F,CAAC;YACD,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7C,MAAM,cAAc,GAAG,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAEhE,OAAO,CAAE,WAAW,EAAC,cAAc,CAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/react/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
import type { Options, LayoutStyle } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Measure an element in the browser ui
|
|
5
|
+
* @param element Element to measure
|
|
6
|
+
* @return layout style ("large", "narrow", or "short"), navbar position ("top" or "left")
|
|
7
|
+
*/
|
|
8
|
+
export default function useLayoutStyle(element: RefObject<HTMLElement>, options?: Options): LayoutStyle;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useState, useLayoutEffect } from "react";
|
|
2
|
+
import calculateStyle from "./calculate-layout-style.js";
|
|
3
|
+
/**
|
|
4
|
+
* Measure an element in the browser ui
|
|
5
|
+
* @param element Element to measure
|
|
6
|
+
* @return layout style ("large", "narrow", or "short"), navbar position ("top" or "left")
|
|
7
|
+
*/
|
|
8
|
+
export default function useLayoutStyle(element, options = {}) {
|
|
9
|
+
const [layoutStyle, setLayoutStyle] = useState(["narrow", "top"]);
|
|
10
|
+
const handleResize = () => {
|
|
11
|
+
if (!element.current)
|
|
12
|
+
return;
|
|
13
|
+
const { clientWidth, clientHeight } = element.current;
|
|
14
|
+
const style = calculateStyle(clientWidth, clientHeight, options);
|
|
15
|
+
setLayoutStyle(style);
|
|
16
|
+
};
|
|
17
|
+
useLayoutEffect(() => {
|
|
18
|
+
handleResize();
|
|
19
|
+
window.addEventListener("resize", handleResize);
|
|
20
|
+
return () => { window.removeEventListener("resize", handleResize); };
|
|
21
|
+
}, [element]);
|
|
22
|
+
return layoutStyle;
|
|
23
|
+
}
|
|
24
|
+
;
|
|
25
|
+
//# sourceMappingURL=useLayoutStyle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLayoutStyle.js","sourceRoot":"","sources":["../../src/react/useLayoutStyle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAC,eAAe,EAAY,MAAM,OAAO,CAAC;AAE3D,OAAO,cAAc,MAAM,6BAA6B,CAAC;AAIzD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAA8B,EAAC,UAAgB,EAAE;IACvF,MAAM,CAAE,WAAW,EAAC,cAAc,CAAE,GAAG,QAAQ,CAAc,CAAE,QAAQ,EAAC,KAAK,CAAE,CAAC,CAAC;IAEjF,MAAM,YAAY,GAAG,GAAG,EAAE;QACzB,IAAG,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QAC5B,MAAM,EAAE,WAAW,EAAC,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACrD,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,EAAC,YAAY,EAAC,OAAO,CAAC,CAAC;QAC/D,cAAc,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,eAAe,CAAC,GAAG,EAAE;QACpB,YAAY,EAAE,CAAC;QACf,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC/C,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA,CAAC,CAAC,CAAA;IACpE,CAAC,EAAC,CAAE,OAAO,CAAE,CAAC,CAAA;IAEd,OAAO,WAAW,CAAC;AACpB,CAAC;AAAA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function useToggle(initialState?: boolean): [boolean, () => void, () => void, () => void];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useState } from "react";
|
|
2
|
+
export default function useToggle(initialState = false) {
|
|
3
|
+
const [state, setState] = useState(initialState);
|
|
4
|
+
const toggle = () => {
|
|
5
|
+
setState(!state);
|
|
6
|
+
};
|
|
7
|
+
const setTrue = () => {
|
|
8
|
+
setState(true);
|
|
9
|
+
};
|
|
10
|
+
const setFalse = () => {
|
|
11
|
+
setState(false);
|
|
12
|
+
};
|
|
13
|
+
return [state, toggle, setTrue, setFalse];
|
|
14
|
+
}
|
|
15
|
+
;
|
|
16
|
+
//# sourceMappingURL=useToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useToggle.js","sourceRoot":"","sources":["../../src/react/useToggle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAIjC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,eAAqB,KAAK;IAC3D,MAAM,CAAE,KAAK,EAAC,QAAQ,CAAE,GAAG,QAAQ,CAAU,YAAY,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,GAAG,EAAE;QACnB,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACpB,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,EAAE;QACrB,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,CAAE,KAAK,EAAC,MAAM,EAAC,OAAO,EAAC,QAAQ,CAAE,CAAC;AAC1C,CAAC;AAAA,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Options, LayoutStyle } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Measure browser window inner size
|
|
4
|
+
* @return layout style ("large", "narrow", or "short"), navbar position ("top" or "left")
|
|
5
|
+
*/
|
|
6
|
+
export default function useWindowLayoutStyle(options?: Options): LayoutStyle;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useState, useLayoutEffect } from "react";
|
|
2
|
+
import calculateStyle from "./calculate-layout-style.js";
|
|
3
|
+
/**
|
|
4
|
+
* Measure browser window inner size
|
|
5
|
+
* @return layout style ("large", "narrow", or "short"), navbar position ("top" or "left")
|
|
6
|
+
*/
|
|
7
|
+
export default function useWindowLayoutStyle(options = {}) {
|
|
8
|
+
const [layoutStyle, setLayoutStyle] = useState(["narrow", "top"]);
|
|
9
|
+
const handleResize = () => {
|
|
10
|
+
const { innerWidth, innerHeight } = window;
|
|
11
|
+
const style = calculateStyle(innerWidth, innerHeight, options);
|
|
12
|
+
setLayoutStyle(style);
|
|
13
|
+
};
|
|
14
|
+
useLayoutEffect(() => {
|
|
15
|
+
handleResize();
|
|
16
|
+
window.addEventListener("resize", handleResize);
|
|
17
|
+
return () => { window.removeEventListener("resize", handleResize); };
|
|
18
|
+
}, []);
|
|
19
|
+
return layoutStyle;
|
|
20
|
+
}
|
|
21
|
+
;
|
|
22
|
+
//# sourceMappingURL=useWindowLayoutStyle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWindowLayoutStyle.js","sourceRoot":"","sources":["../../src/react/useWindowLayoutStyle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAC,eAAe,EAAE,MAAM,OAAO,CAAC;AAEjD,OAAO,cAAc,MAAM,6BAA6B,CAAC;AAIzD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,UAAgB,EAAE;IAC9D,MAAM,CAAE,WAAW,EAAC,cAAc,CAAE,GAAG,QAAQ,CAAc,CAAE,QAAQ,EAAC,KAAK,CAAE,CAAC,CAAC;IAEjF,MAAM,YAAY,GAAG,GAAG,EAAE;QACzB,MAAM,EAAE,UAAU,EAAC,WAAW,EAAE,GAAG,MAAM,CAAC;QAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,EAAC,WAAW,EAAC,OAAO,CAAC,CAAC;QAC7D,cAAc,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,eAAe,CAAC,GAAG,EAAE;QACpB,YAAY,EAAE,CAAC;QACf,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC/C,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA,CAAC,CAAC,CAAA;IACpE,CAAC,EAAC,EAAE,CAAC,CAAA;IAEL,OAAO,WAAW,CAAC;AACpB,CAAC;AAAA,CAAC"}
|
package/dist/react.d.ts
ADDED
package/dist/react.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "./browser.js";
|
|
2
|
+
export { default as useToggle } from "./react/useToggle.js";
|
|
3
|
+
export { default as useLayoutStyle } from "./react/useLayoutStyle.js";
|
|
4
|
+
export { default as useWindowLayoutStyle } from "./react/useWindowLayoutStyle.js";
|
|
5
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"max-date.js","sourceRoot":"","sources":["../../src/time/max-date.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAE3C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timedifference.js","sourceRoot":"","sources":["../../src/time/timedifference.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,CAAC,KAAU,EAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAEpF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timefromnow.js","sourceRoot":"","sources":["../../src/time/timefromnow.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE/D,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timefromx.js","sourceRoot":"","sources":["../../src/time/timefromx.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAE7D,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zero-date.js","sourceRoot":"","sources":["../../src/time/zero-date.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,eAAe,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@daaler/jutils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Utility functions for js",
|
|
5
|
-
"author": "jarno.parviainen@gmail.com",
|
|
5
|
+
"author": "Jarno Parviainen - jarno.parviainen@gmail.com",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
|
-
"
|
|
11
|
-
|
|
10
|
+
"exports": {
|
|
11
|
+
".": "./dist/index.js",
|
|
12
|
+
"./node": "./dist/node.js",
|
|
13
|
+
"./browser": "./dist/browser.js",
|
|
14
|
+
"./react": "./dist/react.js"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
12
19
|
"scripts": {
|
|
13
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
14
20
|
"build": "tsc",
|
|
15
|
-
"
|
|
21
|
+
"clean": "rm -r dist",
|
|
22
|
+
"test:run": "node --expose-gc --test",
|
|
23
|
+
"test": "npm run build && npm run test:run",
|
|
24
|
+
"publish-to-npm": "npm run clean && npm run build && npm publish --access public"
|
|
16
25
|
},
|
|
17
26
|
"devDependencies": {
|
|
18
|
-
"@types/node": "^
|
|
27
|
+
"@types/node": "^24.1.0"
|
|
19
28
|
}
|
|
20
29
|
}
|
package/dist/exception.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exception.js","sourceRoot":"","sources":["../src/exception.ts"],"names":[],"mappings":"AAGA,MAAM,SAAS;IACd,MAAM,CAAC,MAAM,GAAG,sCAAsC,CAAC;IACvD,KAAK,GAAG,WAAW,CAAC;IACpB,IAAI,CAAQ;IACZ,OAAO,CAAQ;IACf,OAAO,CAAkB;IACzB,UAAU,CAAS;IAEnB,YAAY,OAAY,EAAE,EAAC,UAAyB,EAAE;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAAA,CAAC;IAEF,aAAa;IACb,IAAI,MAAM,KAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAA,CAAA,CAAC;IAE7C,IAAI,OAAO;QACV,MAAM,OAAO,GAAG;YACf,aAAa;YACb,MAAM,EAAG,IAAI,CAAC,WAAW,CAAC,MAAM;YAChC,KAAK,EAAG,IAAI,CAAC,KAAK;YAClB,IAAI,EAAG,IAAI,CAAC,IAAI;YAChB,OAAO,EAAG,IAAI,CAAC,OAAO;YACtB,OAAO,EAAG,IAAI,CAAC,OAAO;SACtB,CAAC;QACF,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;;AACD,CAAC;AAIF,eAAe,SAAS,CAAC"}
|
package/dist/exceptions.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AASvC,MAAM,UAAU,GAAsC;IACrD,CAAC,SAAS,CAAC,MAAM,CAAC,EAAG,SAAS;CAC9B,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,UAAyB,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,IAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,IAAG,UAAU,CAAC,MAAM,CAAC,KAAK,UAAU;YAAE,OAAO;QAC7C,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACtF,CAAC;IACD,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,MAAa,EAAE,EAAE;IACtC,IAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACpF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,MAAa,EAAE,EAAE;IAC7C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC;AAIF,OAAO,EAAE,iBAAiB,EAAC,YAAY,EAAC,mBAAmB,EAAE,CAAC"}
|