From 3d90f66926de87bab491d0e86ba69b1a82a8cabf Mon Sep 17 00:00:00 2001 From: NullVoxPopuli <199018+NullVoxPopuli@users.noreply.github.com> Date: Fri, 27 Dec 2024 11:00:53 -0500 Subject: [PATCH] Extract ember-compat stuff to a central location --- ember-resources/src/ember-compat.ts | 22 +++++++++++++++++++ .../src/immediate-invocation-manager.ts | 13 ++--------- ember-resources/src/resource-manager.ts | 17 ++------------ 3 files changed, 26 insertions(+), 26 deletions(-) create mode 100644 ember-resources/src/ember-compat.ts diff --git a/ember-resources/src/ember-compat.ts b/ember-resources/src/ember-compat.ts new file mode 100644 index 00000000..9fa537c6 --- /dev/null +++ b/ember-resources/src/ember-compat.ts @@ -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; +} diff --git a/ember-resources/src/immediate-invocation-manager.ts b/ember-resources/src/immediate-invocation-manager.ts index 3aaeed5b..a74f4de7 100644 --- a/ember-resources/src/immediate-invocation-manager.ts +++ b/ember-resources/src/immediate-invocation-manager.ts @@ -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'; @@ -16,17 +15,9 @@ interface State { cache: ReturnType; } -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', { diff --git a/ember-resources/src/resource-manager.ts b/ember-resources/src/resource-manager.ts index c9d91bcc..382f9a0b 100644 --- a/ember-resources/src/resource-manager.ts +++ b/ember-resources/src/resource-manager.ts @@ -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 { @@ -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.