Skip to content

Commit 0096f1b

Browse files
Merge pull request #1167 from NullVoxPopuli/centralize-compat-things
Extract ember-compat stuff to a central location
2 parents eb07aa6 + 3d90f66 commit 0096f1b

File tree

3 files changed

+26
-26
lines changed

3 files changed

+26
-26
lines changed

ember-resources/src/ember-compat.ts

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { dependencySatisfies, importSync, macroCondition } from '@embroider/macros';
2+
3+
import type Owner from '@ember/owner';
4+
5+
interface CompatOwner {
6+
getOwner: (context: unknown) => Owner | undefined;
7+
setOwner: (context: unknown, owner: Owner) => void;
8+
}
9+
10+
export const compatOwner = {} as CompatOwner;
11+
12+
if (macroCondition(dependencySatisfies('ember-source', '>=4.12.0'))) {
13+
// In no version of ember where `@ember/owner` tried to be imported did it exist
14+
// if (macroCondition(false)) {
15+
// Using 'any' here because importSync can't lookup types correctly
16+
compatOwner.getOwner = (importSync('@ember/owner') as any).getOwner;
17+
compatOwner.setOwner = (importSync('@ember/owner') as any).setOwner;
18+
} else {
19+
// Using 'any' here because importSync can't lookup types correctly
20+
compatOwner.getOwner = (importSync('@ember/application') as any).getOwner;
21+
compatOwner.setOwner = (importSync('@ember/application') as any).setOwner;
22+
}

ember-resources/src/immediate-invocation-manager.ts

+2-11
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { assert } from '@ember/debug';
44
import { associateDestroyableChild, destroy } from '@ember/destroyable';
55
// @ts-ignore
66
import { capabilities as helperCapabilities, invokeHelper, setHelperManager } from '@ember/helper';
7-
import { dependencySatisfies, importSync, macroCondition } from '@embroider/macros';
87

98
import type { resource } from './resource.ts';
109
import type Owner from '@ember/owner';
@@ -16,17 +15,9 @@ interface State {
1615
cache: ReturnType<typeof invokeHelper>;
1716
}
1817

19-
let setOwner: (context: unknown, owner: Owner) => void;
18+
import { compatOwner } from './ember-compat.ts';
2019

21-
if (macroCondition(dependencySatisfies('ember-source', '>=4.12.0'))) {
22-
// In no version of ember where `@ember/owner` tried to be imported did it exist
23-
// if (macroCondition(false)) {
24-
// Using 'any' here because importSync can't lookup types correctly
25-
setOwner = (importSync('@ember/owner') as any).setOwner;
26-
} else {
27-
// Using 'any' here because importSync can't lookup types correctly
28-
setOwner = (importSync('@ember/application') as any).setOwner;
29-
}
20+
const setOwner = compatOwner.setOwner;
3021

3122
class ResourceInvokerManager {
3223
capabilities = helperCapabilities('3.23', {

ember-resources/src/resource-manager.ts

+2-15
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import { associateDestroyableChild, destroy, registerDestructor } from '@ember/d
66
import { invokeHelper } from '@ember/helper';
77
// @ts-ignore
88
import { capabilities as helperCapabilities } from '@ember/helper';
9-
import { dependencySatisfies, importSync, macroCondition } from '@embroider/macros';
109

1110
import { ReadonlyCell } from './cell.ts';
11+
import { compatOwner } from './ember-compat.ts';
1212
import { CURRENT, INTERNAL } from './types.ts';
1313

1414
import type {
@@ -19,20 +19,7 @@ import type {
1919
} from './types.ts';
2020
import type Owner from '@ember/owner';
2121

22-
let getOwner: (context: unknown) => Owner | undefined;
23-
let setOwner: (context: unknown, owner: Owner) => void;
24-
25-
if (macroCondition(dependencySatisfies('ember-source', '>=4.12.0'))) {
26-
// In no version of ember where `@ember/owner` tried to be imported did it exist
27-
// if (macroCondition(false)) {
28-
// Using 'any' here because importSync can't lookup types correctly
29-
getOwner = (importSync('@ember/owner') as any).getOwner;
30-
setOwner = (importSync('@ember/owner') as any).setOwner;
31-
} else {
32-
// Using 'any' here because importSync can't lookup types correctly
33-
getOwner = (importSync('@ember/application') as any).getOwner;
34-
setOwner = (importSync('@ember/application') as any).setOwner;
35-
}
22+
const setOwner = compatOwner.setOwner;
3623

3724
/**
3825
* Note, a function-resource receives on object, hooks.

0 commit comments

Comments
 (0)