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

Commit 8bdc862

Browse files
committed
feat: Makes functions synchronous.
1 parent 010c758 commit 8bdc862

12 files changed

+50
-53
lines changed

package-lock.json

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

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
"mocha": "5.0.5",
4040
"nyc": "11.6.0",
4141
"power-assert": "1.4.4",
42-
"rimraf": "2.6.2"
42+
"rimraf": "2.6.2",
43+
"typescript": "2.8.1"
4344
},
4445
"publishConfig": {
4546
"access": "public"

src/factory.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import patchEntity from './functions/patchEntity';
1010
import removeEntities from './functions/removeEntities';
1111
import removeEntity from './functions/removeEntity';
1212
import replaceEntity from './functions/replaceEntity';
13+
import createPromiser from './utils/createPromiser';
1314

1415
export default <E extends Entity>(factoryConfig: FactoryConfig<E>): Facade<E> => {
1516
// tslint:disable-next-line:no-let
@@ -21,13 +22,13 @@ export default <E extends Entity>(factoryConfig: FactoryConfig<E>): Facade<E> =>
2122
...factoryConfig,
2223
};
2324
return {
24-
countEntities: countEntities<E>(facadeConfig),
25-
createEntity: createEntity<E>(facadeConfig),
26-
getEntities: getEntities<E>(facadeConfig),
27-
getEntity: getEntity<E>(facadeConfig),
28-
patchEntity: patchEntity<E>(facadeConfig),
29-
removeEntities: removeEntities<E>(facadeConfig),
30-
removeEntity: removeEntity<E>(facadeConfig),
31-
replaceEntity: replaceEntity<E>(facadeConfig),
25+
countEntities: createPromiser(countEntities<E>(facadeConfig)),
26+
createEntity: createPromiser(createEntity<E>(facadeConfig)),
27+
getEntities: createPromiser(getEntities<E>(facadeConfig)),
28+
getEntity: createPromiser(getEntity<E>(facadeConfig)),
29+
patchEntity: createPromiser(patchEntity<E>(facadeConfig)),
30+
removeEntities: createPromiser(removeEntities<E>(facadeConfig)),
31+
removeEntity: createPromiser(removeEntity<E>(facadeConfig)),
32+
replaceEntity: createPromiser(replaceEntity<E>(facadeConfig)),
3233
};
3334
};

src/functions/countEntities.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import CountEntities from '@js-entity-repos/core/dist/signatures/CountEntities';
1+
import { Opts, Result } from '@js-entity-repos/core/dist/signatures/CountEntities';
22
import Entity from '@js-entity-repos/core/dist/types/Entity';
33
import FacadeConfig from '../FacadeConfig';
44
import filterEntities from '../utils/filterEntities';
55

6-
export default <E extends Entity>(config: FacadeConfig<E>): CountEntities<E> => {
7-
return async ({ filter = {} }) => {
6+
export default <E extends Entity>(config: FacadeConfig<E>) => {
7+
return ({ filter = {} }: Opts<E>): Result => {
88
const entities = config.getEntities();
99
const matchedEntities = filterEntities({ entities, filter });
1010
const count = matchedEntities.length;

src/functions/createEntity.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
import ConflictingEntityError from '@js-entity-repos/core/dist/errors/ConflictingEntityError';
2-
import CreateEntity from '@js-entity-repos/core/dist/signatures/CreateEntity';
2+
import { Opts, Result } from '@js-entity-repos/core/dist/signatures/CreateEntity';
33
import Entity from '@js-entity-repos/core/dist/types/Entity';
44
import Filter from '@js-entity-repos/core/dist/types/Filter';
55
import FacadeConfig from '../FacadeConfig';
66
import filterEntities from '../utils/filterEntities';
77

8-
export default <E extends Entity>({
9-
entityName,
10-
getEntities,
11-
setEntities,
12-
}: FacadeConfig<E>): CreateEntity<E> => {
13-
return async ({ id, entity }) => {
8+
export default <E extends Entity>({ entityName, getEntities, setEntities }: FacadeConfig<E>) => {
9+
return ({ id, entity }: Opts<E>): Result<E> => {
1410
const entities = getEntities();
1511
const idFilter = { id } as Filter<E>;
1612
const matchedEntities = filterEntities({ entities, filter: idFilter });

src/functions/getEntities.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import GetEntities from '@js-entity-repos/core/dist/signatures/GetEntities';
1+
import { Opts, Result } from '@js-entity-repos/core/dist/signatures/GetEntities';
2+
import { start } from '@js-entity-repos/core/dist/types/Cursor';
23
import Entity from '@js-entity-repos/core/dist/types/Entity';
34
import Pagination from '@js-entity-repos/core/dist/types/Pagination';
45
import { forward } from '@js-entity-repos/core/dist/types/PaginationDirection';
@@ -10,14 +11,18 @@ import FacadeConfig from '../FacadeConfig';
1011
import filterEntities from '../utils/filterEntities';
1112
import sortEntities from '../utils/sortEntities';
1213

13-
export default <E extends Entity>(config: FacadeConfig<E>): GetEntities<E> => {
14+
export default <E extends Entity>(config: FacadeConfig<E>) => {
1415
const defaultPagination: Pagination = {
15-
cursor: undefined,
16+
cursor: start,
1617
direction: forward,
1718
limit: config.defaultPaginationLimit,
1819
};
1920
const defaultSort = { id: asc } as Sort<E>;
20-
return async ({ filter = {}, sort = defaultSort, pagination = defaultPagination }) => {
21+
return ({
22+
filter = {},
23+
sort = defaultSort,
24+
pagination = defaultPagination,
25+
}: Opts<E>): Result<E> => {
2126
const paginationFilter = createPaginationFilter(pagination, sort);
2227
const fullFilter = { $and: [filter, paginationFilter] };
2328
const storedEntities = config.getEntities();

src/functions/getEntity.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
import GetEntity from '@js-entity-repos/core/dist/signatures/GetEntity';
1+
import { Opts, Result } from '@js-entity-repos/core/dist/signatures/GetEntity';
22
import Entity from '@js-entity-repos/core/dist/types/Entity';
33
import FacadeConfig from '../FacadeConfig';
44
import filterEntity from '../utils/filterEntity';
55

6-
export default <E extends Entity>({
7-
entityName,
8-
getEntities,
9-
}: FacadeConfig<E>): GetEntity<E> => {
10-
return async ({ id, filter = {} }) => {
6+
export default <E extends Entity>({ entityName, getEntities }: FacadeConfig<E>) => {
7+
return ({ id, filter = {} }: Opts<E>): Result<E> => {
118
const entities = getEntities();
129
const entity = filterEntity({ entities, entityName, id, filter });
1310
return { entity };

src/functions/patchEntity.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
1-
import PatchEntity from '@js-entity-repos/core/dist/signatures/PatchEntity';
1+
import { Opts, Result } from '@js-entity-repos/core/dist/signatures/PatchEntity';
22
import Entity from '@js-entity-repos/core/dist/types/Entity';
33
import { difference } from 'lodash';
44
import FacadeConfig from '../FacadeConfig';
55
import filterEntity from '../utils/filterEntity';
66

7-
export default <E extends Entity>({
8-
entityName,
9-
getEntities,
10-
setEntities,
11-
}: FacadeConfig<E>): PatchEntity<E> => {
12-
return async ({ id, patch, filter = {} }) => {
7+
export default <E extends Entity>({ entityName, getEntities, setEntities }: FacadeConfig<E>) => {
8+
return ({ id, patch, filter = {} }: Opts<E>): Result<E> => {
139
const entities = getEntities();
1410
const matchedEntity = filterEntity({ entities, entityName, id, filter });
1511
const patchedEntity = { ...matchedEntity as any, ...patch as any } as E;

src/functions/removeEntities.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import RemoveEntities from '@js-entity-repos/core/dist/signatures/RemoveEntities';
1+
import { Opts, Result } from '@js-entity-repos/core/dist/signatures/RemoveEntities';
22
import Entity from '@js-entity-repos/core/dist/types/Entity';
33
import FacadeConfig from '../FacadeConfig';
44
import filterEntities from '../utils/filterEntities';
55

6-
export default <E extends Entity>(config: FacadeConfig<E>): RemoveEntities<E> => {
7-
return async ({ filter = {} }) => {
6+
export default <E extends Entity>(config: FacadeConfig<E>) => {
7+
return ({ filter = {} }: Opts<E>): Result => {
88
const entities = config.getEntities();
99
const removalFilter = { $nor: [filter] };
1010
const unmatchedEntities = filterEntities({ entities, filter: removalFilter });

src/functions/removeEntity.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import ConflictingEntityError from '@js-entity-repos/core/dist/errors/ConflictingEntityError';
22
import MissingEntityError from '@js-entity-repos/core/dist/errors/MissingEntityError';
3-
import RemoveEntity from '@js-entity-repos/core/dist/signatures/RemoveEntity';
3+
import { Opts, Result } from '@js-entity-repos/core/dist/signatures/RemoveEntity';
44
import Entity from '@js-entity-repos/core/dist/types/Entity';
55
import Filter from '@js-entity-repos/core/dist/types/Filter';
66
import FacadeConfig from '../FacadeConfig';
77
import filterEntities from '../utils/filterEntities';
88

9-
export default <E extends Entity>(config: FacadeConfig<E>): RemoveEntity<E> => {
10-
return async ({ id, filter = {} }) => {
9+
export default <E extends Entity>(config: FacadeConfig<E>) => {
10+
return ({ id, filter = {} }: Opts<E>): Result => {
1111
const entities = config.getEntities();
1212
const idFilter = { id } as Filter<E>;
1313
const fullFilter = { $and: [idFilter, filter] };

0 commit comments

Comments
 (0)