Skip to content
This repository was archived by the owner on Jun 15, 2021. It is now read-only.

Commit 9445966

Browse files
committed
fix(deps): Updates core to 6.0.2.
BREAKING CHANGE: The `filter`, `sort`, and `paginate` options are now optional. BREAKING CHANGE: The `upsertEntity` function has been removed due to filter issues. BREAKING CHANGE: The `overwriteEntity` function was renamed to `replaceEntity`. BREAKING CHANGE: Removes Id interface from all functions.
1 parent ed69743 commit 9445966

17 files changed

+108
-92
lines changed

package-lock.json

Lines changed: 4 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"check-coverage": true
2626
},
2727
"dependencies": {
28-
"@js-entity-repos/core": "^4.1.1",
28+
"@js-entity-repos/core": "^6.0.2",
2929
"lodash": "^4.17.4",
3030
"sift": "^5.0.0"
3131
},

src/Config.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
export default interface Config<Entity> {
2-
readonly getEntities: () => Entity[];
3-
readonly setEntities: (entities: Entity[]) => void;
1+
import Entity from '@js-entity-repos/core/dist/types/Entity';
2+
3+
export default interface Config<E extends Entity> {
4+
readonly getEntities: () => E[];
5+
readonly setEntities: (entities: E[]) => void;
46
readonly entityName: string;
7+
readonly defaultPaginationLimit: number;
58
}

src/facade.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import facadeTest from '@js-entity-repos/core/dist/tests';
2-
import { TestEntity, TestId } from '@js-entity-repos/core/dist/tests/utils/testEntity';
2+
import { TestEntity } from '@js-entity-repos/core/dist/tests/utils/testEntity';
33
import facade from './facade';
44

55
interface State {
@@ -9,7 +9,8 @@ interface State {
99

1010
const state: State = { entities: [] };
1111

12-
facadeTest(facade<TestId, TestEntity>({
12+
facadeTest(facade<TestEntity>({
13+
defaultPaginationLimit: 100,
1314
entityName: 'Test Entity',
1415
getEntities: () => state.entities,
1516
setEntities: (entities) => state.entities = entities,

src/facade.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
import Facade from '@js-entity-repos/core/dist/Facade';
2+
import Entity from '@js-entity-repos/core/dist/types/Entity';
23
import Config from './Config';
34
import countEntities from './functions/countEntities';
45
import createEntity from './functions/createEntity';
56
import getEntities from './functions/getEntities';
67
import getEntity from './functions/getEntity';
7-
import overwriteEntity from './functions/overwriteEntity';
88
import patchEntity from './functions/patchEntity';
99
import removeEntities from './functions/removeEntities';
1010
import removeEntity from './functions/removeEntity';
11-
import upsertEntity from './functions/upsertEntity';
11+
import replaceEntity from './functions/replaceEntity';
1212

13-
export default <Id, Entity extends Id>(config: Config<Entity>): Facade<Id, Entity> => {
13+
export default <E extends Entity>(config: Config<E>): Facade<E> => {
1414
return {
15-
countEntities: countEntities<Entity>(config),
16-
createEntity: createEntity<Id, Entity>(config),
17-
getEntities: getEntities<Entity>(config),
18-
getEntity: getEntity<Id, Entity>(config),
19-
overwriteEntity: overwriteEntity<Id, Entity>(config),
20-
patchEntity: patchEntity<Id, Entity>(config),
21-
removeEntities: removeEntities<Entity>(config),
22-
removeEntity: removeEntity<Id, Entity>(config),
23-
upsertEntity: upsertEntity<Id, Entity>(config),
15+
countEntities: countEntities<E>(config),
16+
createEntity: createEntity<E>(config),
17+
getEntities: getEntities<E>(config),
18+
getEntity: getEntity<E>(config),
19+
patchEntity: patchEntity<E>(config),
20+
removeEntities: removeEntities<E>(config),
21+
removeEntity: removeEntity<E>(config),
22+
replaceEntity: replaceEntity<E>(config),
2423
};
2524
};

src/functions/countEntities.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import CountEntities from '@js-entity-repos/core/dist/signatures/CountEntities';
2+
import Entity from '@js-entity-repos/core/dist/types/Entity';
23
import Config from '../Config';
34
import filterEntities from '../utils/filterEntities';
45

5-
export default <Entity>(config: Config<Entity>): CountEntities<Entity> => {
6-
return async ({ filter }) => {
6+
export default <E extends Entity>(config: Config<E>): CountEntities<E> => {
7+
return async ({ filter = {} }) => {
78
const storedEntities = config.getEntities();
89
const matchedEntities = filterEntities(storedEntities, filter);
910
const count = matchedEntities.length;

src/functions/createEntity.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
import ConflictingEntityError from '@js-entity-repos/core/dist/errors/ConflictingEntityError';
22
import CreateEntity from '@js-entity-repos/core/dist/signatures/CreateEntity';
3+
import Entity from '@js-entity-repos/core/dist/types/Entity';
4+
import Filter from '@js-entity-repos/core/dist/types/Filter';
35
import Config from '../Config';
46
import filterEntities from '../utils/filterEntities';
57

6-
export default <Id, Entity extends Id>(config: Config<Entity>): CreateEntity<Id, Entity> => {
8+
export default <E extends Entity>(config: Config<E>): CreateEntity<E> => {
79
return async ({ id, entity }) => {
810
const storedEntities = config.getEntities();
9-
const matchedEntities = filterEntities(storedEntities, id);
11+
const idFilter = { id } as Filter<E>;
12+
const matchedEntities = filterEntities(storedEntities, idFilter);
1013
if (matchedEntities.length > 0) {
1114
throw new ConflictingEntityError(config.entityName, id);
1215
}
13-
config.setEntities([...config.getEntities(), entity]);
14-
return { entity };
16+
const createdEntity = { ...entity as any, id };
17+
config.setEntities([...config.getEntities(), createdEntity]);
18+
return { entity: createdEntity };
1519
};
1620
};

src/functions/getEntities.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
import GetEntities from '@js-entity-repos/core/dist/signatures/GetEntities';
2+
import Entity from '@js-entity-repos/core/dist/types/Entity';
3+
import Sort from '@js-entity-repos/core/dist/types/Sort';
24
import createCursorFromEntity from '@js-entity-repos/core/dist/utils/createCursorFromEntity';
35
import createPaginationFilter from '@js-entity-repos/core/dist/utils/createPaginationFilter';
46
import { first, last } from 'lodash';
57
import Config from '../Config';
68
import filterEntities from '../utils/filterEntities';
79
import sortEntities from '../utils/sortEntities';
810

9-
export default <Entity>(config: Config<Entity>): GetEntities<Entity> => {
10-
return async ({ filter, sort, pagination }) => {
11+
export default <E extends Entity>(config: Config<E>): GetEntities<E> => {
12+
const defaultPagination = {
13+
cursor: undefined,
14+
forward: true,
15+
limit: config.defaultPaginationLimit,
16+
};
17+
const defaultSort = { id: true } as Sort<E>;
18+
return async ({ filter = {}, sort = defaultSort, pagination = defaultPagination }) => {
1119
const paginationFilter = createPaginationFilter(pagination, sort);
1220
const fullFilter = { $and: [filter, paginationFilter] };
1321
const storedEntities = config.getEntities();

src/functions/getEntity.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
import ConflictingEntityError from '@js-entity-repos/core/dist/errors/ConflictingEntityError';
22
import MissingEntityError from '@js-entity-repos/core/dist/errors/MissingEntityError';
33
import GetEntity from '@js-entity-repos/core/dist/signatures/GetEntity';
4+
import Entity from '@js-entity-repos/core/dist/types/Entity';
5+
import Filter from '@js-entity-repos/core/dist/types/Filter';
46
import Config from '../Config';
57
import filterEntities from '../utils/filterEntities';
68

7-
export default <Id, Entity extends Id>(config: Config<Entity>): GetEntity<Id, Entity> => {
8-
return async ({ id }) => {
9+
export default <E extends Entity>(config: Config<E>): GetEntity<E> => {
10+
return async ({ id, filter = {} }) => {
911
const storedEntities = config.getEntities();
10-
const matchedEntities = filterEntities(storedEntities, id);
12+
const idFilter = { id } as Filter<E>;
13+
const fullFilter = { $and: [idFilter, filter] };
14+
const matchedEntities = filterEntities(storedEntities, fullFilter);
1115
if (matchedEntities.length === 0) {
1216
throw new MissingEntityError(config.entityName, id);
1317
}

src/functions/overwriteEntity.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)