Skip to content

Commit

Permalink
Extract ember-compat stuff to a central location
Browse files Browse the repository at this point in the history
  • Loading branch information
NullVoxPopuli committed Jan 3, 2025
1 parent eb07aa6 commit 3d90f66
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 26 deletions.
22 changes: 22 additions & 0 deletions ember-resources/src/ember-compat.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { dependencySatisfies, importSync, macroCondition } from '@embroider/macros';

import type Owner from '@ember/owner';

interface CompatOwner {
getOwner: (context: unknown) => Owner | undefined;
setOwner: (context: unknown, owner: Owner) => void;
}

export const compatOwner = {} as CompatOwner;

if (macroCondition(dependencySatisfies('ember-source', '>=4.12.0'))) {
// In no version of ember where `@ember/owner` tried to be imported did it exist
// if (macroCondition(false)) {
// Using 'any' here because importSync can't lookup types correctly
compatOwner.getOwner = (importSync('@ember/owner') as any).getOwner;
compatOwner.setOwner = (importSync('@ember/owner') as any).setOwner;
} else {
// Using 'any' here because importSync can't lookup types correctly
compatOwner.getOwner = (importSync('@ember/application') as any).getOwner;
compatOwner.setOwner = (importSync('@ember/application') as any).setOwner;
}
13 changes: 2 additions & 11 deletions ember-resources/src/immediate-invocation-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { assert } from '@ember/debug';
import { associateDestroyableChild, destroy } from '@ember/destroyable';
// @ts-ignore
import { capabilities as helperCapabilities, invokeHelper, setHelperManager } from '@ember/helper';
import { dependencySatisfies, importSync, macroCondition } from '@embroider/macros';

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

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

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

class ResourceInvokerManager {
capabilities = helperCapabilities('3.23', {
Expand Down
17 changes: 2 additions & 15 deletions ember-resources/src/resource-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import { associateDestroyableChild, destroy, registerDestructor } from '@ember/d
import { invokeHelper } from '@ember/helper';
// @ts-ignore
import { capabilities as helperCapabilities } from '@ember/helper';
import { dependencySatisfies, importSync, macroCondition } from '@embroider/macros';

import { ReadonlyCell } from './cell.ts';
import { compatOwner } from './ember-compat.ts';
import { CURRENT, INTERNAL } from './types.ts';

import type {
Expand All @@ -19,20 +19,7 @@ import type {
} from './types.ts';
import type Owner from '@ember/owner';

let getOwner: (context: unknown) => Owner | undefined;
let setOwner: (context: unknown, owner: Owner) => void;

if (macroCondition(dependencySatisfies('ember-source', '>=4.12.0'))) {
// In no version of ember where `@ember/owner` tried to be imported did it exist
// if (macroCondition(false)) {
// Using 'any' here because importSync can't lookup types correctly
getOwner = (importSync('@ember/owner') as any).getOwner;
setOwner = (importSync('@ember/owner') as any).setOwner;
} else {
// Using 'any' here because importSync can't lookup types correctly
getOwner = (importSync('@ember/application') as any).getOwner;
setOwner = (importSync('@ember/application') as any).setOwner;
}
const setOwner = compatOwner.setOwner;

/**
* Note, a function-resource receives on object, hooks.
Expand Down

0 comments on commit 3d90f66

Please sign in to comment.