@daaler/jutils 0.3.7 → 0.4.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.
Files changed (148) hide show
  1. package/dist/async-tricks/interrupt.d.ts +8 -0
  2. package/dist/async-tricks/interrupt.js +14 -0
  3. package/dist/async-tricks/interrupt.js.map +1 -0
  4. package/dist/async-tricks/wait.js.map +1 -0
  5. package/dist/browser.d.ts +2 -23
  6. package/dist/browser.js +2 -23
  7. package/dist/browser.js.map +1 -1
  8. package/dist/{id-based-cache.d.ts → cache/id-based-cache.d.ts} +5 -4
  9. package/dist/{id-based-cache.js → cache/id-based-cache.js} +11 -8
  10. package/dist/cache/id-based-cache.js.map +1 -0
  11. package/dist/{id-based-lru-cache.d.ts → cache/id-based-lru-cache.d.ts} +6 -5
  12. package/dist/{id-based-lru-cache.js → cache/id-based-lru-cache.js} +17 -10
  13. package/dist/cache/id-based-lru-cache.js.map +1 -0
  14. package/dist/{weak-value-cache.d.ts → cache/weak-value-cache.d.ts} +5 -4
  15. package/dist/{weak-value-cache.js → cache/weak-value-cache.js} +12 -9
  16. package/dist/cache/weak-value-cache.js.map +1 -0
  17. package/dist/data/recursive-merge.js.map +1 -0
  18. package/dist/debug/jdebug.js.map +1 -0
  19. package/dist/{not-implemented.d.ts → error/not-implemented.d.ts} +1 -1
  20. package/dist/error/not-implemented.js +8 -0
  21. package/dist/error/not-implemented.js.map +1 -0
  22. package/dist/exception/exception.js.map +1 -0
  23. package/dist/exception/exceptions.js.map +1 -0
  24. package/dist/exception/match-exceptions.js.map +1 -0
  25. package/dist/index.d.ts +22 -23
  26. package/dist/index.js +22 -23
  27. package/dist/index.js.map +1 -1
  28. package/dist/jdom/jdom-browser.d.ts +5 -0
  29. package/dist/jdom/jdom-browser.js +6 -0
  30. package/dist/jdom/jdom-browser.js.map +1 -0
  31. package/dist/jdom/jdom-node.d.ts +5 -0
  32. package/dist/jdom/jdom-node.js +7 -0
  33. package/dist/jdom/jdom-node.js.map +1 -0
  34. package/dist/jschema/any.d.ts +2 -0
  35. package/dist/jschema/any.js +3 -0
  36. package/dist/jschema/any.js.map +1 -0
  37. package/dist/jschema/integer.d.ts +7 -0
  38. package/dist/jschema/integer.js +8 -0
  39. package/dist/jschema/integer.js.map +1 -0
  40. package/dist/jschema/jschema-types.d.ts +52 -0
  41. package/dist/jschema/jschema-types.js +2 -0
  42. package/dist/jschema/jschema-types.js.map +1 -0
  43. package/dist/jschema/jschema.d.ts +7 -0
  44. package/dist/jschema/jschema.js +103 -0
  45. package/dist/jschema/jschema.js.map +1 -0
  46. package/dist/jschema/jtype.d.ts +2 -0
  47. package/dist/jschema/jtype.js +3 -0
  48. package/dist/jschema/jtype.js.map +1 -0
  49. package/dist/jschema/old-jschema.d.ts +10 -0
  50. package/dist/{jschema.js → jschema/old-jschema.js} +6 -8
  51. package/dist/jschema/old-jschema.js.map +1 -0
  52. package/dist/jschema/tmpx.d.ts +1 -0
  53. package/dist/jschema/tmpx.js +76 -0
  54. package/dist/jschema/tmpx.js.map +1 -0
  55. package/dist/jschema/tuple.d.ts +5 -0
  56. package/dist/jschema/tuple.js +6 -0
  57. package/dist/jschema/tuple.js.map +1 -0
  58. package/dist/jschema/uuid.d.ts +5 -0
  59. package/dist/{uuid.js → jschema/uuid.js} +3 -2
  60. package/dist/jschema/uuid.js.map +1 -0
  61. package/dist/node.d.ts +3 -0
  62. package/dist/node.js +4 -0
  63. package/dist/node.js.map +1 -0
  64. package/dist/notifications/notifications.d.ts +16 -0
  65. package/dist/{notifications.js → notifications/notifications.js} +18 -8
  66. package/dist/notifications/notifications.js.map +1 -0
  67. package/dist/op/noop.js.map +1 -0
  68. package/dist/{randomInteger.js → random/random-integer-node.js} +1 -1
  69. package/dist/random/random-integer-node.js.map +1 -0
  70. package/dist/react/calculate-layout-style.d.ts +2 -0
  71. package/dist/react/calculate-layout-style.js +10 -0
  72. package/dist/react/calculate-layout-style.js.map +1 -0
  73. package/dist/react/types.d.ts +6 -0
  74. package/dist/react/types.js +2 -0
  75. package/dist/react/types.js.map +1 -0
  76. package/dist/react/useLayoutStyle.d.ts +8 -0
  77. package/dist/react/useLayoutStyle.js +25 -0
  78. package/dist/react/useLayoutStyle.js.map +1 -0
  79. package/dist/react/useToggle.d.ts +1 -0
  80. package/dist/react/useToggle.js +16 -0
  81. package/dist/react/useToggle.js.map +1 -0
  82. package/dist/react/useWindowLayoutStyle.d.ts +6 -0
  83. package/dist/react/useWindowLayoutStyle.js +22 -0
  84. package/dist/react/useWindowLayoutStyle.js.map +1 -0
  85. package/dist/react.d.ts +4 -0
  86. package/dist/react.js +5 -0
  87. package/dist/react.js.map +1 -0
  88. package/dist/time/max-date.js.map +1 -0
  89. package/dist/time/timedifference.js.map +1 -0
  90. package/dist/time/timefromnow.js.map +1 -0
  91. package/dist/time/timefromx.js.map +1 -0
  92. package/dist/time/zero-date.js.map +1 -0
  93. package/package.json +16 -7
  94. package/dist/exception.js.map +0 -1
  95. package/dist/exceptions.js.map +0 -1
  96. package/dist/id-based-cache.js.map +0 -1
  97. package/dist/id-based-lru-cache.js.map +0 -1
  98. package/dist/integer.d.ts +0 -5
  99. package/dist/integer.js +0 -8
  100. package/dist/integer.js.map +0 -1
  101. package/dist/interrupt.d.ts +0 -2
  102. package/dist/interrupt.js +0 -8
  103. package/dist/interrupt.js.map +0 -1
  104. package/dist/jdebug.js.map +0 -1
  105. package/dist/jschema.d.ts +0 -6
  106. package/dist/jschema.js.map +0 -1
  107. package/dist/match-exceptions.js.map +0 -1
  108. package/dist/max-date.js.map +0 -1
  109. package/dist/noop.js.map +0 -1
  110. package/dist/not-implemented.js +0 -8
  111. package/dist/not-implemented.js.map +0 -1
  112. package/dist/notifications.d.ts +0 -16
  113. package/dist/notifications.js.map +0 -1
  114. package/dist/randomInteger.js.map +0 -1
  115. package/dist/recursive-merge.js.map +0 -1
  116. package/dist/timedifference.js.map +0 -1
  117. package/dist/timefromnow.js.map +0 -1
  118. package/dist/timefromx.js.map +0 -1
  119. package/dist/uuid.d.ts +0 -5
  120. package/dist/uuid.js.map +0 -1
  121. package/dist/wait.js.map +0 -1
  122. package/dist/weak-value-cache.js.map +0 -1
  123. package/dist/zero-date.js.map +0 -1
  124. /package/dist/{wait.d.ts → async-tricks/wait.d.ts} +0 -0
  125. /package/dist/{wait.js → async-tricks/wait.js} +0 -0
  126. /package/dist/{recursive-merge.d.ts → data/recursive-merge.d.ts} +0 -0
  127. /package/dist/{recursive-merge.js → data/recursive-merge.js} +0 -0
  128. /package/dist/{jdebug.d.ts → debug/jdebug.d.ts} +0 -0
  129. /package/dist/{jdebug.js → debug/jdebug.js} +0 -0
  130. /package/dist/{exception.d.ts → exception/exception.d.ts} +0 -0
  131. /package/dist/{exception.js → exception/exception.js} +0 -0
  132. /package/dist/{exceptions.d.ts → exception/exceptions.d.ts} +0 -0
  133. /package/dist/{exceptions.js → exception/exceptions.js} +0 -0
  134. /package/dist/{match-exceptions.d.ts → exception/match-exceptions.d.ts} +0 -0
  135. /package/dist/{match-exceptions.js → exception/match-exceptions.js} +0 -0
  136. /package/dist/{noop.d.ts → op/noop.d.ts} +0 -0
  137. /package/dist/{noop.js → op/noop.js} +0 -0
  138. /package/dist/{randomInteger.d.ts → random/random-integer-node.d.ts} +0 -0
  139. /package/dist/{max-date.d.ts → time/max-date.d.ts} +0 -0
  140. /package/dist/{max-date.js → time/max-date.js} +0 -0
  141. /package/dist/{timedifference.d.ts → time/timedifference.d.ts} +0 -0
  142. /package/dist/{timedifference.js → time/timedifference.js} +0 -0
  143. /package/dist/{timefromnow.d.ts → time/timefromnow.d.ts} +0 -0
  144. /package/dist/{timefromnow.js → time/timefromnow.js} +0 -0
  145. /package/dist/{timefromx.d.ts → time/timefromx.d.ts} +0 -0
  146. /package/dist/{timefromx.js → time/timefromx.js} +0 -0
  147. /package/dist/{zero-date.d.ts → time/zero-date.d.ts} +0 -0
  148. /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,2 @@
1
+ export default abstract class JType {
2
+ }
@@ -0,0 +1,3 @@
1
+ export default class JType {
2
+ }
3
+ //# sourceMappingURL=jtype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jtype.js","sourceRoot":"","sources":["../../src/jschema/jtype.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAgB,KAAK;CAAG"}
@@ -0,0 +1,10 @@
1
+ type SchemaDefinition = {
2
+ type: any;
3
+ [key: string]: any;
4
+ };
5
+ declare class JSchema {
6
+ schema: any;
7
+ [key: string]: any;
8
+ constructor(schema: SchemaDefinition);
9
+ }
10
+ export default JSchema;
@@ -1,5 +1,5 @@
1
1
  import Integer from "./integer.js";
2
- import UUID from "./uuid.js";
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), // compatibility - in the future use only "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,5 @@
1
+ import JType from "./jtype.js";
2
+ export default abstract class Tuple extends JType {
3
+ static readonly _kind = "Tuple";
4
+ }
5
+ export type TupleConstructor = typeof Tuple;
@@ -0,0 +1,6 @@
1
+ import JType from "./jtype.js";
2
+ export default class Tuple extends JType {
3
+ static _kind = "Tuple";
4
+ }
5
+ ;
6
+ //# sourceMappingURL=tuple.js.map
@@ -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"}
@@ -0,0 +1,5 @@
1
+ declare class UUID {
2
+ static isUUID(subject: any): boolean;
3
+ static validate: typeof UUID.isUUID;
4
+ }
5
+ export default UUID;
@@ -1,8 +1,9 @@
1
1
  // pseudo class for JSchema
2
2
  class UUID {
3
- static isUUID = (subject) => {
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
@@ -0,0 +1,3 @@
1
+ export * from "./index.js";
2
+ export { jwindow, jdocument, domParser, xmlSerializer } from "./jdom/jdom-node.js";
3
+ export { default as randomInteger } from "./random/random-integer-node.js";
package/dist/node.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./index.js";
2
+ export { jwindow, jdocument, domParser, xmlSerializer } from "./jdom/jdom-node.js";
3
+ export { default as randomInteger } from "./random/random-integer-node.js";
4
+ //# sourceMappingURL=node.js.map
@@ -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 = (callback) => this._onNotificationCallbacks.add(callback);
13
- offNotification = (callback) => this._onNotificationCallbacks.delete(callback);
14
- onWarning = (callback) => this._onWarningCallbacks.add(callback);
15
- offWarning = (callback) => this._onWarningCallbacks.delete(callback);
16
- showNotification = (message) => {
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
- showWarning = (message) => {
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"}
@@ -5,4 +5,4 @@ const randomInteger = async (min, max) => {
5
5
  });
6
6
  };
7
7
  export default randomInteger;
8
- //# sourceMappingURL=randomInteger.js.map
8
+ //# sourceMappingURL=random-integer-node.js.map
@@ -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,2 @@
1
+ import type { Options, LayoutStyle } from "./types.js";
2
+ export default function calculateStyle(width: number, height: number, options: Options): LayoutStyle;
@@ -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,6 @@
1
+ export type LayoutStyle = ["large" | "narrow" | "short", "top" | "left"];
2
+ export type Options = {
3
+ widthThreshold?: number;
4
+ heightThreshold?: number;
5
+ aspectRatioThreshold?: number;
6
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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"}
@@ -0,0 +1,4 @@
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";
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.7",
3
+ "version": "0.4.0",
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
- "browser": "dist/browser.js",
11
- "files": [ "dist" ],
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
- "publish": "npm run build && npm publish --access public"
21
+ "clean": "rm -r dist",
22
+ "test:run": "node --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": "^20.7.0"
27
+ "@types/node": "^24.1.0"
19
28
  }
20
29
  }
@@ -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"}
@@ -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"}