ag-common 0.0.30 → 0.0.34

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.
@@ -0,0 +1 @@
1
+ export declare const setAwsRegion: (region: string) => void;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setAwsRegion = void 0;
4
+ const dynamo_1 = require("./dynamo");
5
+ const s3_1 = require("./s3");
6
+ const setAwsRegion = (region) => {
7
+ (0, dynamo_1.setDynamo)(region);
8
+ (0, s3_1.setS3)(region);
9
+ };
10
+ exports.setAwsRegion = setAwsRegion;
@@ -16,6 +16,7 @@ exports.wipeTable = exports.getDynamoTtl = exports.queryDynamo = exports.getItem
16
16
  const aws_sdk_1 = __importDefault(require("aws-sdk"));
17
17
  const log_1 = require("../../common/helpers/log");
18
18
  const array_1 = require("../../common/helpers/array");
19
+ const sleep_1 = require("../../common/helpers/sleep");
19
20
  // eslint-disable-next-line import/no-mutable-exports
20
21
  exports.dynamoDb = new aws_sdk_1.default.DynamoDB.DocumentClient();
21
22
  const setDynamo = (region) => {
@@ -40,6 +41,39 @@ const putDynamo = (item, tableName) => __awaiter(void 0, void 0, void 0, functio
40
41
  return { data: item };
41
42
  });
42
43
  exports.putDynamo = putDynamo;
44
+ let batchWriteRaw = (req, debugMsg) => __awaiter(void 0, void 0, void 0, function* () {
45
+ let count = 0;
46
+ let max = 5;
47
+ // eslint-disable-next-line no-constant-condition
48
+ while (true)
49
+ try {
50
+ const res = yield exports.dynamoDb
51
+ .batchWrite({
52
+ RequestItems: req,
53
+ })
54
+ .promise();
55
+ return res;
56
+ }
57
+ catch (e) {
58
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
+ let es = e.toString();
60
+ if (es.indexOf('429') !== -1 ||
61
+ es.indexOf('ProvisionedThroughputExceeded') !== -1) {
62
+ count += 1;
63
+ }
64
+ if (count >= max) {
65
+ throw e;
66
+ }
67
+ let msg = `batch write throttled. retry ${count}/${max}`;
68
+ if (!debugMsg) {
69
+ (0, log_1.info)(msg);
70
+ }
71
+ else {
72
+ debugMsg(msg);
73
+ }
74
+ yield (0, sleep_1.sleep)(2000);
75
+ }
76
+ });
43
77
  // eslint-disable-next-line @typescript-eslint/ban-types
44
78
  const batchWrite = (tableName, itemsIn, breakOnError = false) => __awaiter(void 0, void 0, void 0, function* () {
45
79
  var _a, _b;
@@ -50,16 +84,12 @@ const batchWrite = (tableName, itemsIn, breakOnError = false) => __awaiter(void
50
84
  const { part, rest } = (0, array_1.take)(items, 25);
51
85
  // eslint-disable-next-line no-param-reassign
52
86
  items = rest;
53
- // eslint-disable-next-line no-await-in-loop
54
- const res = yield exports.dynamoDb
55
- .batchWrite({
56
- RequestItems: {
57
- [`${tableName}`]: part.map((item) => ({
58
- PutRequest: { Item: item },
59
- })),
60
- },
61
- })
62
- .promise();
87
+ let req = {
88
+ [`${tableName}`]: part.map((item) => ({
89
+ PutRequest: { Item: item },
90
+ })),
91
+ };
92
+ let res = yield batchWriteRaw(req, (m) => (0, log_1.info)(`${m} remaining=${rest.length}`));
63
93
  const newError = (_b = (_a = res.$response) === null || _a === void 0 ? void 0 : _a.error) !== null && _b !== void 0 ? _b : null;
64
94
  if (newError) {
65
95
  error.push(newError);
@@ -1,4 +1,5 @@
1
1
  export * from './api';
2
+ export * from './aws';
2
3
  export * from './dynamo';
3
4
  export * from './dynamoInfra';
4
5
  export * from './openApiHelpers';
@@ -11,6 +11,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./api"), exports);
14
+ __exportStar(require("./aws"), exports);
14
15
  __exportStar(require("./dynamo"), exports);
15
16
  __exportStar(require("./dynamoInfra"), exports);
16
17
  __exportStar(require("./openApiHelpers"), exports);
@@ -12,4 +12,5 @@ export * from './math';
12
12
  export * from './object';
13
13
  export * from './random';
14
14
  export * from './secondsInNearest';
15
+ export * from './sleep';
15
16
  export * from './string';
@@ -24,4 +24,5 @@ __exportStar(require("./math"), exports);
24
24
  __exportStar(require("./object"), exports);
25
25
  __exportStar(require("./random"), exports);
26
26
  __exportStar(require("./secondsInNearest"), exports);
27
+ __exportStar(require("./sleep"), exports);
27
28
  __exportStar(require("./string"), exports);
@@ -15,3 +15,4 @@ export interface IArrayType<T> {
15
15
  export declare function objectToArray<T>(obj: {
16
16
  [a: string]: T;
17
17
  }): IArrayType<T>[];
18
+ export declare const objectAlphaSort: (object: any, depthLeft?: number) => object;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.objectToArray = exports.getObjectKeysAsNumber = exports.objectKeysToLowerCase = exports.isJson = exports.tryJsonParse = void 0;
3
+ exports.objectAlphaSort = exports.objectToArray = exports.getObjectKeysAsNumber = exports.objectKeysToLowerCase = exports.isJson = exports.tryJsonParse = void 0;
4
4
  const tryJsonParse = (str, defaultValue) => {
5
5
  if (!str) {
6
6
  return null;
@@ -52,3 +52,25 @@ function objectToArray(obj) {
52
52
  return ret;
53
53
  }
54
54
  exports.objectToArray = objectToArray;
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ const objectAlphaSort = (object, depthLeft = -1) => {
57
+ if (depthLeft === 0) {
58
+ return object;
59
+ }
60
+ if (object !== null && typeof object === 'object') {
61
+ return (Object.keys(object)
62
+ .sort((a, b) => (a.toLowerCase() < b.toLowerCase() ? -1 : 1))
63
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
64
+ .reduce((result, key) => {
65
+ result[key] = (0, exports.objectAlphaSort)(object[key], depthLeft - 1);
66
+ return result;
67
+ }, {}));
68
+ }
69
+ else if (Array.isArray(object)) {
70
+ return object.map((obj) => (0, exports.objectAlphaSort)(obj, depthLeft - 1));
71
+ }
72
+ else {
73
+ return object;
74
+ }
75
+ };
76
+ exports.objectAlphaSort = objectAlphaSort;
@@ -0,0 +1 @@
1
+ export declare const sleep: (ms: number) => Promise<void>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sleep = void 0;
4
+ const sleep = (ms) => {
5
+ return new Promise((resolve) => setTimeout(resolve, ms));
6
+ };
7
+ exports.sleep = sleep;
@@ -11,7 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.callOpenApi = void 0;
13
13
  const cookie_1 = require("./cookie");
14
- const debounce_1 = require("./debounce");
14
+ const sleep_1 = require("../../common/helpers/sleep");
15
15
  const callOpenApi = ({ func, apiUrl, overrideAuth, refreshToken, logout, newDefaultApi, }) => __awaiter(void 0, void 0, void 0, function* () {
16
16
  var _a, _b, _c, _d, _e, _f;
17
17
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -70,7 +70,7 @@ const callOpenApi = ({ func, apiUrl, overrideAuth, refreshToken, logout, newDefa
70
70
  }
71
71
  }
72
72
  // eslint-disable-next-line no-await-in-loop
73
- yield (0, debounce_1.sleep)(2000);
73
+ yield (0, sleep_1.sleep)(2000);
74
74
  }
75
75
  return {
76
76
  data,
@@ -1,5 +1,4 @@
1
1
  export declare function useDebounce<T>(value: T, delay: number): T;
2
- export declare const sleep: (ms: number) => Promise<unknown>;
3
2
  export declare function debounce(callback: () => void, { key, time, }: {
4
3
  time: number;
5
4
  key: string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.debounce = exports.sleep = exports.useDebounce = void 0;
3
+ exports.debounce = exports.useDebounce = void 0;
4
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
5
  const react_1 = require("react");
6
6
  function useDebounce(value, delay) {
@@ -16,10 +16,6 @@ function useDebounce(value, delay) {
16
16
  return debouncedValue;
17
17
  }
18
18
  exports.useDebounce = useDebounce;
19
- const sleep = (ms) => {
20
- return new Promise((resolve) => setTimeout(resolve, ms));
21
- };
22
- exports.sleep = sleep;
23
19
  const hashMap = {};
24
20
  function debounce(callback, { key, time, }) {
25
21
  clearTimeout(hashMap[key]);
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UseLocalStorage = exports.getLocalStorageItem = exports.setLocalStorageItem = exports.clearAllLocalStorage = exports.clearLocalStorageItem = void 0;
4
+ const react_1 = require("react");
4
5
  const log_1 = require("../../common/helpers/log");
5
6
  const object_1 = require("../../common/helpers/object");
6
7
  const getTimeSeconds = () => Math.ceil(new Date().getTime() / 1000);
@@ -66,6 +67,8 @@ exports.getLocalStorageItem = getLocalStorageItem;
66
67
  // Hook
67
68
  function UseLocalStorage(key, initialValue, ttl) {
68
69
  const storedValue = (0, exports.getLocalStorageItem)(key, initialValue, ttl);
70
+ //bump use of stored value
71
+ const [, setT] = (0, react_1.useState)(0);
69
72
  // Return a wrapped version of useState's setter function that ...
70
73
  // ... persists the new value to localStorage.
71
74
  const setValue = (value) => {
@@ -74,6 +77,7 @@ function UseLocalStorage(key, initialValue, ttl) {
74
77
  }
75
78
  const valueToStore = (value instanceof Function ? value(storedValue) : value);
76
79
  (0, exports.setLocalStorageItem)(key, valueToStore, ttl);
80
+ setT(new Date().getTime());
77
81
  };
78
82
  return [storedValue, setValue];
79
83
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ag-common",
3
- "version": "0.0.30",
3
+ "version": "0.0.34",
4
4
  "main": "./dist/index.js",
5
5
  "types": "./dist/index.d.ts",
6
6
  "author": "Andrei Gec <@andreigec> (https://gec.dev/)",