Skip to content

Commit

Permalink
fix: spread arguments in ie9
Browse files Browse the repository at this point in the history
  • Loading branch information
satanTime committed Jul 31, 2020
1 parent bbe286c commit 1d3e529
Show file tree
Hide file tree
Showing 12 changed files with 360 additions and 546 deletions.
852 changes: 320 additions & 532 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@
},
"homepage": "https://github.com/satanTime/ngrx-entity-relationship#readme",
"devDependencies": {
"@commitlint/cli": "^9.0.1",
"@commitlint/cli": "^9.1.2",
"@commitlint/config-conventional": "^9.0.1",
"@semantic-release/changelog": "^5.0.1",
"@semantic-release/exec": "^5.0.0",
Expand Down
4 changes: 2 additions & 2 deletions src/childEntity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
UNKNOWN,
VALUES_FILTER_PROPS,
} from './types';
import {mergeCache, normalizeSelector, verifyCache} from './utils';
import {argsToArray, mergeCache, normalizeSelector, verifyCache} from './utils';

export function childEntity<
STORE,
Expand Down Expand Up @@ -40,7 +40,7 @@ export function childEntity<
keyId: RELATED_KEY_IDS,
keyValue: RELATED_KEY_VALUES,
): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = [...arguments];
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);
relationships = relationships.slice(3);

let meta: SELECTOR_META = {};
Expand Down
3 changes: 2 additions & 1 deletion src/childEntitySelector.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {childEntity} from './childEntity';
import {FEATURE_SELECTOR, HANDLER_RELATED_ENTITY, ID_FILTER_PROPS, ID_TYPES, isSelectorMeta} from './types';
import {argsToArray} from './utils';

export function childEntitySelector<
STORE,
Expand Down Expand Up @@ -37,7 +38,7 @@ export function childEntitySelector<
...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>
) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
function callback(): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = [...arguments];
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);
let currentMeta = isSelectorMeta(meta) ? meta : undefined;
if (isSelectorMeta(relationships[0])) {
currentMeta = relationships[0];
Expand Down
4 changes: 2 additions & 2 deletions src/childrenEntities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
UNKNOWN,
VALUES_FILTER_PROPS,
} from './types';
import {mergeCache, normalizeSelector, verifyCache} from './utils';
import {argsToArray, mergeCache, normalizeSelector, verifyCache} from './utils';

export function childrenEntities<
STORE,
Expand Down Expand Up @@ -40,7 +40,7 @@ export function childrenEntities<
keyId: RELATED_KEY_IDS,
keyValue: RELATED_KEY_VALUES_ARRAYS,
): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = [...arguments];
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);
relationships = relationships.slice(3);

let meta: SELECTOR_META = {};
Expand Down
3 changes: 2 additions & 1 deletion src/childrenEntitiesSelector.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {childrenEntities} from './childrenEntities';
import {FEATURE_SELECTOR, HANDLER_RELATED_ENTITY, ID_FILTER_PROPS, ID_TYPES, isSelectorMeta} from './types';
import {argsToArray} from './utils';

export function childrenEntitiesSelector<
STORE,
Expand Down Expand Up @@ -37,7 +38,7 @@ export function childrenEntitiesSelector<
...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>
) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
function callback(): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = [...arguments];
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);
let currentMeta = isSelectorMeta(meta) ? meta : undefined;
if (isSelectorMeta(relationships[0])) {
currentMeta = relationships[0];
Expand Down
4 changes: 2 additions & 2 deletions src/relatedEntity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
UNKNOWN,
VALUES_FILTER_PROPS,
} from './types';
import {mergeCache, normalizeSelector, verifyCache} from './utils';
import {argsToArray, mergeCache, normalizeSelector, verifyCache} from './utils';

export function relatedEntity<
STORE,
Expand Down Expand Up @@ -49,7 +49,7 @@ export function relatedEntity<
keyId: RELATED_KEY_IDS | RELATED_KEY_IDS_ARRAYS,
keyValue: RELATED_KEY_VALUES | RELATED_KEY_VALUES_ARRAYS,
): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = [...arguments];
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);
relationships = relationships.slice(3);

let meta: SELECTOR_META = {};
Expand Down
3 changes: 2 additions & 1 deletion src/relatedEntitySelector.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {relatedEntity} from './relatedEntity';
import {FEATURE_SELECTOR, HANDLER_RELATED_ENTITY, ID_TYPES, isSelectorMeta} from './types';
import {argsToArray} from './utils';

export function relatedEntitySelector<
STORE,
Expand Down Expand Up @@ -61,7 +62,7 @@ export function relatedEntitySelector<
...relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>>
) => HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
function callback(): HANDLER_RELATED_ENTITY<STORE, PARENT_ENTITY> {
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = [...arguments];
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, RELATED_ENTITY>> = argsToArray(arguments);
let currentMeta = meta;
if (isSelectorMeta(relationships[0])) {
currentMeta = relationships[0];
Expand Down
4 changes: 2 additions & 2 deletions src/rootEntity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
TRANSFORMER,
UNKNOWN,
} from './types';
import {mergeCache, normalizeSelector, verifyCache} from './utils';
import {argsToArray, mergeCache, normalizeSelector, verifyCache} from './utils';

export function rootEntity<STORE, ENTITY>(
featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,
Expand Down Expand Up @@ -43,7 +43,7 @@ export function rootEntity<STORE, ENTITY, TRANSFORMED>(
guess1?: TRANSFORMER<ENTITY, TRANSFORMED> | SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, ENTITY>,
guess2?: SELECTOR_META | HANDLER_RELATED_ENTITY<STORE, ENTITY>,
): HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY | TRANSFORMED, ID_TYPES> {
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>> = [...arguments];
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>> = argsToArray(arguments);
relationships = relationships.slice(1);

let transformer: undefined | TRANSFORMER<ENTITY, TRANSFORMED>;
Expand Down
3 changes: 2 additions & 1 deletion src/rootEntitySelector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
isSelectorMeta,
TRANSFORMER,
} from './types';
import {argsToArray} from './utils';

export function rootEntitySelector<STORE, ENTITY, TRANSFORMED>(
featureSelector: FEATURE_SELECTOR<STORE, ENTITY>,
Expand Down Expand Up @@ -51,7 +52,7 @@ export function rootEntitySelector<STORE, ENTITY, TRANSFORMED>(
function callback(
metaOverride?: SELECTOR_META,
): HANDLER_ROOT_ENTITY<STORE, ENTITY, ENTITY | TRANSFORMED, ID_TYPES> {
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>> = [...arguments];
let relationships: Array<HANDLER_RELATED_ENTITY<STORE, ENTITY>> = argsToArray(arguments);
const transformer = isSelectorMeta(guess1) ? undefined : guess1;
let currentMeta = isSelectorMeta(guess1) ? guess1 : guess2;
if (isSelectorMeta(metaOverride)) {
Expand Down
9 changes: 9 additions & 0 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,3 +107,12 @@ export function mergeCache<S>(from: CACHE_CHECKS_SET<S> | undefined, to: CACHE_C
}
}
}

export function argsToArray<T>(args: {length: number} & {[key: number]: T}): Array<T> {
const result = [];
// tslint:disable-next-line:prefer-for-of
for (let i = 0; i < args.length; i += 1) {
result.push(args[i]);
}
return result;
}
15 changes: 14 additions & 1 deletion test/utils.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {mergeCache, normalizeSelector, verifyCache} from 'ngrx-entity-relationship/dist/utils';
import {argsToArray, mergeCache, normalizeSelector, verifyCache} from 'ngrx-entity-relationship/dist/utils';

describe('utils', () => {
describe('normalizeSelector', () => {
Expand Down Expand Up @@ -287,4 +287,17 @@ describe('utils', () => {
expect(to.get(selector).get('id1')).toBe('id1exists');
});
});

describe('argsToArray', () => {
it('converts an object to an array', () => {
const data = {
[0]: 1,
[1]: 2,
length: 2,
test: 123,
};
const actual = argsToArray(data);
expect(actual).toEqual([1, 2]);
});
});
});

0 comments on commit 1d3e529

Please sign in to comment.