@leancodepl/utils 7.3.5 → 7.3.7

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/index.cjs.js CHANGED
@@ -9,6 +9,13 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
9
9
 
10
10
  var invariant__default = /*#__PURE__*/_interopDefaultLegacy(invariant);
11
11
 
12
+ function addPrefix(object, prefix) {
13
+ return Object.fromEntries(Object.entries(object).map(([key, value])=>[
14
+ `${prefix}${key}`,
15
+ value
16
+ ]));
17
+ }
18
+
12
19
  function transformFirst(value, transformFn) {
13
20
  if (value.length === 0) {
14
21
  return "";
@@ -82,6 +89,21 @@ function ensureNotEmpty(value, message) {
82
89
  return value;
83
90
  }
84
91
 
92
+ function downloadFile(dataOrUrl, options = {}) {
93
+ if (typeof dataOrUrl === "string") {
94
+ const { name } = options;
95
+ const a = document.createElement("a");
96
+ a.href = dataOrUrl;
97
+ a.target = "_blank";
98
+ if (name) a.download = name;
99
+ a.click();
100
+ } else {
101
+ const url = URL.createObjectURL(dataOrUrl);
102
+ downloadFile(url, options);
103
+ URL.revokeObjectURL(url);
104
+ }
105
+ }
106
+
85
107
  function useRunInTask() {
86
108
  const [runningTasks, setRunningTasks] = react.useState(0);
87
109
  const runInTask = react.useCallback(async (task)=>{
@@ -149,10 +171,12 @@ function useDialog(onAfterClose) {
149
171
  };
150
172
  }
151
173
 
174
+ exports.addPrefix = addPrefix;
152
175
  exports.assertDefined = assertDefined;
153
176
  exports.assertNotEmpty = assertNotEmpty;
154
177
  exports.assertNotNull = assertNotNull;
155
178
  exports.capitalizeDeep = capitalizeDeep;
179
+ exports.downloadFile = downloadFile;
156
180
  exports.ensureDefined = ensureDefined;
157
181
  exports.ensureNotEmpty = ensureNotEmpty;
158
182
  exports.ensureNotNull = ensureNotNull;
package/index.esm.js CHANGED
@@ -1,6 +1,13 @@
1
1
  import invariant from 'tiny-invariant';
2
2
  import { useState, useCallback, useMemo } from 'react';
3
3
 
4
+ function addPrefix(object, prefix) {
5
+ return Object.fromEntries(Object.entries(object).map(([key, value])=>[
6
+ `${prefix}${key}`,
7
+ value
8
+ ]));
9
+ }
10
+
4
11
  function transformFirst(value, transformFn) {
5
12
  if (value.length === 0) {
6
13
  return "";
@@ -74,6 +81,21 @@ function ensureNotEmpty(value, message) {
74
81
  return value;
75
82
  }
76
83
 
84
+ function downloadFile(dataOrUrl, options = {}) {
85
+ if (typeof dataOrUrl === "string") {
86
+ const { name } = options;
87
+ const a = document.createElement("a");
88
+ a.href = dataOrUrl;
89
+ a.target = "_blank";
90
+ if (name) a.download = name;
91
+ a.click();
92
+ } else {
93
+ const url = URL.createObjectURL(dataOrUrl);
94
+ downloadFile(url, options);
95
+ URL.revokeObjectURL(url);
96
+ }
97
+ }
98
+
77
99
  function useRunInTask() {
78
100
  const [runningTasks, setRunningTasks] = useState(0);
79
101
  const runInTask = useCallback(async (task)=>{
@@ -141,4 +163,4 @@ function useDialog(onAfterClose) {
141
163
  };
142
164
  }
143
165
 
144
- export { assertDefined, assertNotEmpty, assertNotNull, capitalizeDeep, ensureDefined, ensureNotEmpty, ensureNotNull, toLowerFirst, toUpperFirst, uncapitalizeDeep, useBoundRunInTask, useDialog, useKeyByRoute, useRunInTask, useSetUnset };
166
+ export { addPrefix, assertDefined, assertNotEmpty, assertNotNull, capitalizeDeep, downloadFile, ensureDefined, ensureNotEmpty, ensureNotNull, toLowerFirst, toUpperFirst, uncapitalizeDeep, useBoundRunInTask, useDialog, useKeyByRoute, useRunInTask, useSetUnset };
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@leancodepl/utils",
3
- "version": "7.3.5",
3
+ "version": "7.3.7",
4
4
  "license": "Apache-2.0",
5
5
  "dependencies": {
6
- "@leancodepl/api-date": "7.3.5",
6
+ "@leancodepl/api-date": "7.3.7",
7
7
  "tiny-invariant": ">=1.3.1"
8
8
  },
9
9
  "peerDependencies": {
package/src/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./lib/types";
2
+ export * from "./lib/addPrefix";
2
3
  export * from "./lib/transformFirst";
3
4
  export * from "./lib/transformDeep";
4
5
  export * from "./lib/assertDefined";
@@ -7,6 +8,7 @@ export * from "./lib/assertNotEmpty";
7
8
  export * from "./lib/ensureDefined";
8
9
  export * from "./lib/ensureNotNull";
9
10
  export * from "./lib/ensureNotEmpty";
11
+ export * from "./lib/downloadFile";
10
12
  export * from "./lib/hooks/useRunInTask";
11
13
  export * from "./lib/hooks/useBoundRunInTask";
12
14
  export * from "./lib/hooks/useKeyByRoute";
@@ -0,0 +1,5 @@
1
+ type PrefixWith<T, TPrefix extends string> = {
2
+ [K in keyof T as K extends string ? `${TPrefix}${K}` : never]: T[K];
3
+ };
4
+ export declare function addPrefix<T extends object, TPrefix extends string>(object: T, prefix: TPrefix): PrefixWith<T, TPrefix>;
5
+ export {};