@karmaniverous/entity-manager 4.3.3 → 4.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.
|
@@ -245,7 +245,7 @@ class EntityManager {
|
|
|
245
245
|
shardQuery,
|
|
246
246
|
limit,
|
|
247
247
|
pageKeys,
|
|
248
|
-
pages =
|
|
248
|
+
pages = 'all'
|
|
249
249
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
250
250
|
// Validate params.
|
|
251
251
|
this.#entityManager.validateKeyToken(entityToken, keyToken);
|
|
@@ -255,6 +255,9 @@ class EntityManager {
|
|
|
255
255
|
if (!(0, _isUndefined2.default)(pageKeys) && !(0, _isPlainObject2.default)(pageKeys)) throw new Error('pageKeys must be an object');
|
|
256
256
|
if (!(0, _isUndefined2.default)(pages) && !/^(?:\d+|all)$/i.test(pages.toString())) throw new Error("pages must be a positive integer or 'all'");
|
|
257
257
|
|
|
258
|
+
// Apply default limit.
|
|
259
|
+
limit ??= this.#entityManager.getEntityConfig(entityToken).defaultLimit;
|
|
260
|
+
|
|
258
261
|
// Parse pages.
|
|
259
262
|
if ((0, _isString2.default)(pages)) pages = pages.toLowerCase() === 'all' ? Infinity : (0, _parseInt2.default)(pages);
|
|
260
263
|
|
|
@@ -331,7 +334,7 @@ class EntityManager {
|
|
|
331
334
|
result.items = [...result.items, ...pageResult.items];
|
|
332
335
|
result.pageKeys = pageResult.pageKeys;
|
|
333
336
|
page++;
|
|
334
|
-
} while (page < pages && !(0, _isEmpty2.default)(result.pageKeys));
|
|
337
|
+
} while (page < pages && result.items.length < limit && !(0, _isEmpty2.default)(result.pageKeys));
|
|
335
338
|
return result;
|
|
336
339
|
}
|
|
337
340
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.PrivateEntityManager = void 0;
|
|
6
|
+
exports.PrivateEntityManager = exports.DEFAULT_LIMIT = void 0;
|
|
7
7
|
var _isInteger2 = _interopRequireDefault(require("lodash/isInteger"));
|
|
8
8
|
var _isPlainObject2 = _interopRequireDefault(require("lodash/isPlainObject"));
|
|
9
9
|
var _range2 = _interopRequireDefault(require("lodash/range"));
|
|
@@ -26,6 +26,8 @@ var _mapValues2 = _interopRequireDefault(require("lodash/mapValues"));
|
|
|
26
26
|
var _jsonschema = require("jsonschema");
|
|
27
27
|
var _stringHash = _interopRequireDefault(require("string-hash"));
|
|
28
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
+
const DEFAULT_LIMIT = exports.DEFAULT_LIMIT = 25;
|
|
30
|
+
|
|
29
31
|
/**
|
|
30
32
|
* EntityManager config validation schema.
|
|
31
33
|
*
|
|
@@ -40,6 +42,9 @@ const configSchema = {
|
|
|
40
42
|
'^\\w+$': {
|
|
41
43
|
type: 'object',
|
|
42
44
|
properties: {
|
|
45
|
+
defaultLimit: {
|
|
46
|
+
type: 'integer'
|
|
47
|
+
},
|
|
43
48
|
indexes: {
|
|
44
49
|
type: 'object',
|
|
45
50
|
additionalProperties: {
|
|
@@ -169,6 +174,7 @@ class PrivateEntityManager {
|
|
|
169
174
|
const conformedConfig = {
|
|
170
175
|
entities: (0, _mapValues2.default)(entities, _ref => {
|
|
171
176
|
let {
|
|
177
|
+
defaultLimit = DEFAULT_LIMIT,
|
|
172
178
|
indexes = {},
|
|
173
179
|
keys = {},
|
|
174
180
|
sharding: {
|
|
@@ -180,6 +186,7 @@ class PrivateEntityManager {
|
|
|
180
186
|
} = {}
|
|
181
187
|
} = _ref;
|
|
182
188
|
return {
|
|
189
|
+
defaultLimit,
|
|
183
190
|
indexes,
|
|
184
191
|
keys,
|
|
185
192
|
sharding: {
|
|
@@ -227,7 +227,7 @@ export class EntityManager {
|
|
|
227
227
|
shardQuery,
|
|
228
228
|
limit,
|
|
229
229
|
pageKeys,
|
|
230
|
-
pages =
|
|
230
|
+
pages = 'all',
|
|
231
231
|
} = {}) {
|
|
232
232
|
// Validate params.
|
|
233
233
|
this.#entityManager.validateKeyToken(entityToken, keyToken);
|
|
@@ -241,6 +241,9 @@ export class EntityManager {
|
|
|
241
241
|
if (!_.isUndefined(pages) && !/^(?:\d+|all)$/i.test(pages.toString()))
|
|
242
242
|
throw new Error("pages must be a positive integer or 'all'");
|
|
243
243
|
|
|
244
|
+
// Apply default limit.
|
|
245
|
+
limit ??= this.#entityManager.getEntityConfig(entityToken).defaultLimit;
|
|
246
|
+
|
|
244
247
|
// Parse pages.
|
|
245
248
|
if (_.isString(pages))
|
|
246
249
|
pages = pages.toLowerCase() === 'all' ? Infinity : _.parseInt(pages);
|
|
@@ -312,7 +315,11 @@ export class EntityManager {
|
|
|
312
315
|
result.items = [...result.items, ...pageResult.items];
|
|
313
316
|
result.pageKeys = pageResult.pageKeys;
|
|
314
317
|
page++;
|
|
315
|
-
} while (
|
|
318
|
+
} while (
|
|
319
|
+
page < pages &&
|
|
320
|
+
result.items.length < limit &&
|
|
321
|
+
!_.isEmpty(result.pageKeys)
|
|
322
|
+
);
|
|
316
323
|
|
|
317
324
|
return result;
|
|
318
325
|
}
|
|
@@ -2,6 +2,8 @@ import { validate } from 'jsonschema';
|
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import stringHash from 'string-hash';
|
|
4
4
|
|
|
5
|
+
export const DEFAULT_LIMIT = 25;
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
8
|
* EntityManager config validation schema.
|
|
7
9
|
*
|
|
@@ -16,6 +18,9 @@ const configSchema = {
|
|
|
16
18
|
'^\\w+$': {
|
|
17
19
|
type: 'object',
|
|
18
20
|
properties: {
|
|
21
|
+
defaultLimit: {
|
|
22
|
+
type: 'integer',
|
|
23
|
+
},
|
|
19
24
|
indexes: {
|
|
20
25
|
type: 'object',
|
|
21
26
|
additionalProperties: {
|
|
@@ -135,6 +140,7 @@ export class PrivateEntityManager {
|
|
|
135
140
|
entities: _.mapValues(
|
|
136
141
|
entities,
|
|
137
142
|
({
|
|
143
|
+
defaultLimit = DEFAULT_LIMIT,
|
|
138
144
|
indexes = {},
|
|
139
145
|
keys = {},
|
|
140
146
|
sharding: {
|
|
@@ -145,6 +151,7 @@ export class PrivateEntityManager {
|
|
|
145
151
|
timestamp,
|
|
146
152
|
} = {},
|
|
147
153
|
}) => ({
|
|
154
|
+
defaultLimit,
|
|
148
155
|
indexes,
|
|
149
156
|
keys,
|
|
150
157
|
sharding: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@karmaniverous/entity-manager",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -27,24 +27,24 @@
|
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@babel/cli": "^7.23.4",
|
|
30
|
-
"@babel/core": "^7.23.
|
|
30
|
+
"@babel/core": "^7.23.7",
|
|
31
31
|
"@babel/eslint-parser": "^7.23.3",
|
|
32
32
|
"@babel/plugin-syntax-import-assertions": "^7.23.3",
|
|
33
|
-
"@babel/preset-env": "^7.23.
|
|
34
|
-
"@babel/register": "^7.
|
|
35
|
-
"@karmaniverous/edge-logger": "^1.3.
|
|
33
|
+
"@babel/preset-env": "^7.23.7",
|
|
34
|
+
"@babel/register": "^7.23.7",
|
|
35
|
+
"@karmaniverous/edge-logger": "^1.3.7",
|
|
36
36
|
"@karmaniverous/tagged-templates": "^0.1.2",
|
|
37
|
-
"@types/node": "^20.
|
|
37
|
+
"@types/node": "^20.10.6",
|
|
38
38
|
"babel-plugin-lodash": "^3.3.4",
|
|
39
|
-
"chai": "^
|
|
39
|
+
"chai": "^5.0.0",
|
|
40
40
|
"concat-md": "^0.5.1",
|
|
41
|
-
"eslint": "^8.
|
|
42
|
-
"eslint-plugin-jsdoc": "^
|
|
41
|
+
"eslint": "^8.56.0",
|
|
42
|
+
"eslint-plugin-jsdoc": "^48.0.2",
|
|
43
43
|
"eslint-plugin-mocha": "^10.2.0",
|
|
44
44
|
"eslint-plugin-promise": "^6.1.1",
|
|
45
45
|
"jsdoc-to-markdown": "^8.0.0",
|
|
46
46
|
"mocha": "^10.2.0",
|
|
47
|
-
"release-it": "^17.0.
|
|
47
|
+
"release-it": "^17.0.1"
|
|
48
48
|
},
|
|
49
49
|
"exports": {
|
|
50
50
|
".": {
|