ember-source 7.2.0-beta.1 → 7.3.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/build-metadata.json +3 -3
  2. package/dist/dev/packages/@ember/-internals/deprecations/index.js +10 -0
  3. package/dist/dev/packages/@ember/-internals/glimmer/index.js +3 -3
  4. package/dist/dev/packages/@ember/-internals/routing/index.js +1 -1
  5. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +1 -1
  6. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/comparable.js +5 -0
  7. package/dist/dev/packages/@ember/application/index.js +2 -2
  8. package/dist/dev/packages/@ember/application/instance.js +21 -1
  9. package/dist/dev/packages/@ember/component/helper.js +321 -1
  10. package/dist/dev/packages/@ember/component/index.js +1 -1
  11. package/dist/dev/packages/@ember/engine/index.js +2 -2
  12. package/dist/dev/packages/@ember/renderer/index.js +1 -1
  13. package/dist/dev/packages/@ember/routing/-internals.js +1 -1
  14. package/dist/dev/packages/@ember/routing/lib/routing-service.js +0 -1
  15. package/dist/dev/packages/@ember/routing/lib/utils.js +1 -1
  16. package/dist/dev/packages/@ember/routing/route.js +1 -1
  17. package/dist/dev/packages/@ember/routing/router-service.js +0 -1
  18. package/dist/dev/packages/@ember/routing/router.js +1 -1
  19. package/dist/dev/packages/@ember/utils/lib/compare.js +5 -2
  20. package/dist/dev/packages/ember/version.js +1 -1
  21. package/dist/dev/packages/router_js/index.js +2 -2
  22. package/dist/dev/packages/shared-chunks/{curly-Ei5G8jhk.js → curly-DGUCLOud.js} +4 -5
  23. package/dist/dev/packages/shared-chunks/curly-brand-B_F79Dep.js +12 -0
  24. package/dist/dev/packages/shared-chunks/helper-brand-C9_8vvOf.js +12 -0
  25. package/dist/dev/packages/shared-chunks/{index-B3pPx1fL.js → index-CCyXUNBa.js} +616 -1573
  26. package/dist/dev/packages/shared-chunks/outlet-CHFL7tun.js +135 -0
  27. package/dist/dev/packages/shared-chunks/setup-registry-BHdDJATP.js +951 -0
  28. package/dist/dev/packages/shared-chunks/{unrecognized-url-error-BJHjL30Q.js → unrecognized-url-error-B8loxkay.js} +1 -1
  29. package/dist/prod/packages/@ember/-internals/deprecations/index.js +10 -0
  30. package/dist/prod/packages/@ember/-internals/glimmer/index.js +3 -3
  31. package/dist/prod/packages/@ember/-internals/routing/index.js +1 -1
  32. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +1 -1
  33. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/comparable.js +5 -0
  34. package/dist/prod/packages/@ember/application/index.js +2 -2
  35. package/dist/prod/packages/@ember/application/instance.js +17 -2
  36. package/dist/prod/packages/@ember/component/helper.js +305 -1
  37. package/dist/prod/packages/@ember/component/index.js +1 -1
  38. package/dist/prod/packages/@ember/engine/index.js +2 -2
  39. package/dist/prod/packages/@ember/renderer/index.js +1 -1
  40. package/dist/prod/packages/@ember/routing/lib/routing-service.js +0 -1
  41. package/dist/prod/packages/@ember/routing/lib/utils.js +1 -1
  42. package/dist/prod/packages/@ember/routing/route.js +1 -1
  43. package/dist/prod/packages/@ember/routing/router-service.js +0 -1
  44. package/dist/prod/packages/@ember/routing/router.js +1 -1
  45. package/dist/prod/packages/@ember/utils/lib/compare.js +5 -2
  46. package/dist/prod/packages/ember/version.js +1 -1
  47. package/dist/prod/packages/router_js/index.js +2 -2
  48. package/dist/prod/packages/shared-chunks/{curly-IY06zACp.js → curly-a6DP7r87.js} +4 -5
  49. package/dist/prod/packages/shared-chunks/curly-brand-B_F79Dep.js +12 -0
  50. package/dist/prod/packages/shared-chunks/helper-brand-C9_8vvOf.js +12 -0
  51. package/dist/prod/packages/shared-chunks/{index-CslMfEpb.js → index-npr2B-vu.js} +546 -1449
  52. package/dist/prod/packages/shared-chunks/outlet--lIm3q7t.js +132 -0
  53. package/dist/prod/packages/shared-chunks/setup-registry-Dfu8EyLU.js +886 -0
  54. package/dist/prod/packages/shared-chunks/{unrecognized-url-error-EgNrnFu_.js → unrecognized-url-error-jjQ-FqKB.js} +1 -1
  55. package/docs/data.json +279 -214
  56. package/package.json +6 -6
  57. package/types/stable/@ember/-internals/deprecations/index.d.ts +6 -0
  58. package/types/stable/@ember/-internals/glimmer/lib/base-renderer.d.ts +150 -0
  59. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly-brand.d.ts +10 -0
  60. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +3 -2
  61. package/types/stable/@ember/-internals/glimmer/lib/helper-brand.d.ts +10 -0
  62. package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +4 -6
  63. package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +7 -154
  64. package/types/stable/@ember/-internals/glimmer/lib/router-resolver.d.ts +17 -0
  65. package/types/stable/@ember/renderer/index.d.ts +2 -2
  66. package/types/stable/index.d.ts +590 -586
  67. package/dist/dev/packages/shared-chunks/helper-DIj85_-f.js +0 -326
  68. package/dist/dev/packages/shared-chunks/setup-registry-9DCmHTFF.js +0 -77
  69. package/dist/prod/packages/shared-chunks/helper-DkXiTBjc.js +0 -310
  70. package/dist/prod/packages/shared-chunks/setup-registry-U-6VaNQG.js +0 -74
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-source",
3
- "version": "7.2.0-beta.1",
3
+ "version": "7.3.0-alpha.1",
4
4
  "description": "A JavaScript framework for creating ambitious web applications",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -92,7 +92,7 @@
92
92
  "@embroider/vite": "^1.7.2",
93
93
  "@eslint/js": "^9.21.0",
94
94
  "@glimmer/component": "workspace:*",
95
- "@octokit/rest": "^20.1.2",
95
+ "@octokit/rest": "^22.0.0",
96
96
  "@rollup/plugin-babel": "^6.0.4",
97
97
  "@simple-dom/document": "^1.4.0",
98
98
  "@swc-node/register": "^1.6.8",
@@ -123,8 +123,8 @@
123
123
  "expect-type": "^0.15.0",
124
124
  "fs-extra": "^11.1.1",
125
125
  "git-repo-info": "^2.1.1",
126
- "glob": "^8.0.3",
127
- "globals": "^16.0.0",
126
+ "glob": "^13.0.0",
127
+ "globals": "^17.0.0",
128
128
  "kill-port-process": "^3.2.1",
129
129
  "mitata": "^1.0.34",
130
130
  "mocha": "^11.0.0",
@@ -367,9 +367,9 @@
367
367
  }
368
368
  },
369
369
  "packageManager": "pnpm@10.33.2",
370
- "_originalVersion": "7.2.0-beta.1",
370
+ "_originalVersion": "7.3.0-alpha.1",
371
371
  "_versionPreviouslyCalculated": true,
372
372
  "publishConfig": {
373
- "tag": "beta"
373
+ "tag": "alpha"
374
374
  }
375
375
  }
@@ -21,6 +21,12 @@ declare module '@ember/-internals/deprecations' {
21
21
  isEnabled: boolean;
22
22
  isRemoved: boolean;
23
23
  };
24
+ DEPRECATE_COMPARABLE_MIXIN: {
25
+ options: DeprecationOptions;
26
+ test: boolean;
27
+ isEnabled: boolean;
28
+ isRemoved: boolean;
29
+ };
24
30
  };
25
31
  export function deprecateUntil(message: string, deprecation: DeprecationObject): void;
26
32
  export {};
@@ -0,0 +1,150 @@
1
+ declare module '@ember/-internals/glimmer/lib/base-renderer' {
2
+ import type { Cursor, DebugRenderTree, Environment, RenderResult as GlimmerRenderResult, EvaluationContext, TreeBuilder, ClassicResolver } from "@glimmer/interfaces";
3
+ import type { SimpleDocument, SimpleElement } from "@simple-dom/interface";
4
+ export type IBuilder = (env: Environment, cursor: Cursor) => TreeBuilder;
5
+ export function errorLoopTransaction(fn: () => void): () => void;
6
+ /**
7
+ * The interface the `RendererState` needs from a render root. The base
8
+ * renderer only ever creates `ComponentRootState`s; the classic renderer
9
+ * (`./renderer`) adds `ClassicRootState` for outlet/classic-component roots.
10
+ */
11
+ export interface RendererRoot {
12
+ readonly type: string;
13
+ readonly result: GlimmerRenderResult | undefined;
14
+ readonly destroyed: boolean;
15
+ render(): void;
16
+ destroy(): void;
17
+ isFor(possibleRoot: unknown): boolean;
18
+ }
19
+ export class ComponentRootState implements RendererRoot {
20
+ #private;
21
+ readonly type = "component";
22
+ constructor(state: RendererState, definition: object, options: {
23
+ into: Cursor;
24
+ args?: Record<string, unknown>;
25
+ });
26
+ isFor(_possibleRoot: unknown): boolean;
27
+ render(): void;
28
+ destroy(): void;
29
+ get destroyed(): boolean;
30
+ get result(): GlimmerRenderResult | undefined;
31
+ }
32
+ export function _resetRenderers(): void;
33
+ export function renderSettled(): Promise<void>;
34
+ type Resolver = ClassicResolver;
35
+ interface RendererData {
36
+ owner: object;
37
+ context: EvaluationContext;
38
+ builder: IBuilder;
39
+ }
40
+ export class RendererState {
41
+ #private;
42
+ static create(data: RendererData, renderer: BaseRenderer): RendererState;
43
+ private constructor();
44
+ get debug(): {
45
+ roots: RendererRoot[];
46
+ inRenderTransaction: boolean;
47
+ isInteractive: boolean;
48
+ };
49
+ get roots(): RendererRoot[];
50
+ get owner(): object;
51
+ get builder(): IBuilder;
52
+ get context(): EvaluationContext;
53
+ get env(): Environment;
54
+ get isInteractive(): boolean;
55
+ renderRoot(root: RendererRoot, renderer: BaseRenderer): RendererRoot;
56
+ renderRoots(renderer: BaseRenderer): void;
57
+ scheduleRevalidate(renderer: BaseRenderer): void;
58
+ isValid(): boolean;
59
+ revalidate(renderer: BaseRenderer): void;
60
+ clearAllRoots(renderer: BaseRenderer): void;
61
+ }
62
+ type IntoTarget = Cursor | Element | SimpleElement;
63
+ /**
64
+ * The returned object from `renderComponent`
65
+ * @public
66
+ * @module @ember/renderer
67
+ */
68
+ export interface RenderResult {
69
+ /**
70
+ * Destroys the render tree and removes all rendered content from the element rendered into
71
+ */
72
+ destroy(): void;
73
+ }
74
+ /**
75
+ * Render a component into a DOM element.
76
+ *
77
+ * @method renderComponent
78
+ * @static
79
+ * @for @ember/renderer
80
+ * @param {Object} component The component to render.
81
+ * @param {Object} options
82
+ * @param {Element} options.into Where to render the component in to.
83
+ * @param {Object} [options.owner] Optionally specify the owner to use. This will be used for injections, and overall cleanup.
84
+ * @param {Object} [options.env] Optional renderer configuration
85
+ * @param {Object} [options.args] Optionally pass args in to the component. These may be reactive as long as it is an object or object-like
86
+ * @public
87
+ */
88
+ export function renderComponent(
89
+ /**
90
+ * The component definition to render.
91
+ *
92
+ * Any component that has had its manager registered is valid.
93
+ * For the component-types that ship with ember, manager registration
94
+ * does not need to be worried about.
95
+ */
96
+ component: object,
97
+ { owner, env, into, args, }: {
98
+ /**
99
+ * The element to render the component in to.
100
+ */
101
+ into: IntoTarget;
102
+ /**
103
+ * Optional owner. Defaults to `{}`, can be any object, but will need to implement the [Owner](https://api.emberjs.com/ember/release/classes/Owner) API for components within this render tree to access services.
104
+ */
105
+ owner?: object;
106
+ /**
107
+ * Optionally configure the rendering environment
108
+ */
109
+ env?: {
110
+ /**
111
+ * When false, modifiers will not run.
112
+ */
113
+ isInteractive?: boolean;
114
+ /**
115
+ * All other options are forwarded to the underlying renderer.
116
+ * (its API is currently private and out of scope for this RFC,
117
+ * so passing additional things here is also considered private API)
118
+ */
119
+ [rendererOption: string]: unknown;
120
+ };
121
+ /**
122
+ * These args get passed to the rendered component
123
+ *
124
+ * If your args are reactive, re-rendering will happen automatically.
125
+ *
126
+ */
127
+ args?: Record<string, unknown>;
128
+ }
129
+ ): RenderResult;
130
+ export class BaseRenderer {
131
+ static strict(owner: object, document: SimpleDocument | Document, options: {
132
+ isInteractive: boolean;
133
+ hasDOM?: boolean;
134
+ }): BaseRenderer;
135
+ readonly state: RendererState;
136
+ constructor(owner: object, envOptions: {
137
+ isInteractive: boolean;
138
+ hasDOM: boolean;
139
+ }, document: SimpleDocument, resolver: Resolver, builder: IBuilder);
140
+ get debugRenderTree(): DebugRenderTree;
141
+ isValid(): boolean;
142
+ destroy(): void;
143
+ render(component: object, options: {
144
+ into: IntoTarget;
145
+ args?: Record<string, unknown>;
146
+ }): RendererRoot;
147
+ rerender(): void;
148
+ }
149
+ export {};
150
+ }
@@ -0,0 +1,10 @@
1
+ declare module '@ember/-internals/glimmer/lib/component-managers/curly-brand' {
2
+ /**
3
+ * The brand for the curly component manager lives in its own module so that
4
+ * code which only needs to *detect* the curly manager (e.g. the resolver)
5
+ * does not have to import the manager itself (and with it the classic
6
+ * component machinery).
7
+ */
8
+ export const CURLY_MANAGER_BRAND: unique symbol;
9
+ export function isCurlyManager(manager: object): boolean;
10
+ }
@@ -7,6 +7,7 @@ declare module '@ember/-internals/glimmer/lib/component-managers/curly' {
7
7
  import type { DynamicScope } from "@ember/-internals/glimmer/lib/renderer";
8
8
  import type RuntimeResolver from "@ember/-internals/glimmer/lib/resolver";
9
9
  import ComponentStateBucket from "@ember/-internals/glimmer/lib/utils/curly-component-state-bucket";
10
+ import { CURLY_MANAGER_BRAND } from "@ember/-internals/glimmer/lib/component-managers/curly-brand";
10
11
  export function getComponentCapturedArgs(component: object): CapturedArguments["named"] | undefined;
11
12
  export const DIRTY_TAG: unique symbol;
12
13
  export const IS_DISPATCHING_ATTRS: unique symbol;
@@ -20,6 +21,7 @@ declare module '@ember/-internals/glimmer/lib/component-managers/curly' {
20
21
  positionalParams: string | string[] | undefined | null;
21
22
  };
22
23
  export default class CurlyComponentManager implements WithCreateInstance<ComponentStateBucket>, WithDynamicLayout<ComponentStateBucket, RuntimeResolver>, WithDynamicTagName<ComponentStateBucket> {
24
+ readonly [CURLY_MANAGER_BRAND] = true;
23
25
  protected templateFor(component: Component): CompilableProgram | null;
24
26
  getDynamicLayout(bucket: ComponentStateBucket): CompilableProgram | null;
25
27
  getTagName(state: ComponentStateBucket): Nullable<string>;
@@ -39,6 +41,5 @@ declare module '@ember/-internals/glimmer/lib/component-managers/curly' {
39
41
  export function processComponentInitializationAssertions(component: Component, props: any): void;
40
42
  export function initialRenderInstrumentDetails(component: any): any;
41
43
  export const CURLY_COMPONENT_MANAGER: CurlyComponentManager;
42
- export function isCurlyManager(manager: object): boolean;
43
- export {};
44
+ export { isCurlyManager } from "@ember/-internals/glimmer/lib/component-managers/curly-brand";
44
45
  }
@@ -0,0 +1,10 @@
1
+ declare module '@ember/-internals/glimmer/lib/helper-brand' {
2
+ /**
3
+ * The brand for classic (class-based) helpers lives in its own module so that
4
+ * code which only needs to *detect* classic helpers (e.g. the resolver) does
5
+ * not have to import the classic `Helper` base class (and with it the classic
6
+ * object model: `EmberObject`, `Mixin`, meta, etc.).
7
+ */
8
+ export const IS_CLASSIC_HELPER: unique symbol;
9
+ export function isClassicHelper(obj: object): boolean;
10
+ }
@@ -4,6 +4,8 @@ declare module '@ember/-internals/glimmer/lib/helper' {
4
4
  */
5
5
  import { FrameworkObject } from "@ember/object/-internals";
6
6
  import type { DirtyableTag } from "@glimmer/interfaces";
7
+ import { IS_CLASSIC_HELPER } from "@ember/-internals/glimmer/lib/helper-brand";
8
+ export { isClassicHelper } from "@ember/-internals/glimmer/lib/helper-brand";
7
9
  const RECOMPUTE_TAG: unique symbol;
8
10
  type GetOr<T, K, Else> = K extends keyof T ? T[K] : Else;
9
11
  type Args<S> = GetOr<S, "Args", {}>;
@@ -20,7 +22,6 @@ declare module '@ember/-internals/glimmer/lib/helper' {
20
22
  destroy(): void;
21
23
  [RECOMPUTE_TAG]: DirtyableTag;
22
24
  }
23
- const IS_CLASSIC_HELPER: unique symbol;
24
25
  export interface SimpleHelper<S> {
25
26
  compute: (positional: Positional<S>, named: Named<S>) => Return<S>;
26
27
  }
@@ -31,7 +32,7 @@ declare module '@ember/-internals/glimmer/lib/helper' {
31
32
 
32
33
  ```app/templates/application.gjs
33
34
  import Cost from '../components/cost';
34
-
35
+
35
36
  <template>
36
37
  <Cost @cents={{230}} />
37
38
  </template>
@@ -39,7 +40,7 @@ declare module '@ember/-internals/glimmer/lib/helper' {
39
40
 
40
41
  ```app/components/cost.gjs
41
42
  import formatCurrency from '../helpers/format-currency';
42
-
43
+
43
44
  <template>
44
45
  <div>{{formatCurrency @cents currency="$"}}</div>
45
46
  </template>
@@ -140,8 +141,6 @@ declare module '@ember/-internals/glimmer/lib/helper' {
140
141
  */
141
142
  recompute(): void;
142
143
  }
143
- export function isClassicHelper(obj: object): boolean;
144
- export const CLASSIC_HELPER_MANAGER: import("@glimmer/interfaces").Helper<object> | import("@glimmer/manager").CustomHelperManager<object>;
145
144
  /**
146
145
  * The type of a function-based helper.
147
146
  *
@@ -181,5 +180,4 @@ declare module '@ember/-internals/glimmer/lib/helper' {
181
180
  Return: R;
182
181
  }>;
183
182
  export function helper<S>(helperFn: (positional: Positional<S>, named: Named<S>) => Return<S>): FunctionBasedHelper<S>;
184
- export {};
185
183
  }
@@ -1,18 +1,19 @@
1
1
  declare module '@ember/-internals/glimmer/lib/renderer' {
2
2
  import type { InternalOwner } from "@ember/-internals/owner";
3
- import type { Bounds, Cursor, DebugRenderTree, Environment, DynamicScope as GlimmerDynamicScope, RenderResult as GlimmerRenderResult, Template, TemplateFactory, EvaluationContext, TreeBuilder, ClassicResolver } from "@glimmer/interfaces";
3
+ import type { Bounds, DynamicScope as GlimmerDynamicScope, TemplateFactory, EvaluationContext } from "@glimmer/interfaces";
4
4
  import type { Nullable } from "@ember/-internals/utility-types";
5
5
  import type { Reference } from "@glimmer/reference/lib/reference";
6
6
  import type { CurriedValue } from "@glimmer/runtime/lib/curried-value";
7
7
  import { clientBuilder } from "@glimmer/runtime/lib/vm/element-builder";
8
8
  import type { SimpleDocument, SimpleElement, SimpleNode } from "@simple-dom/interface";
9
- import type Component from "@ember/-internals/glimmer/lib/component";
10
9
  import type ClassicComponent from "@ember/-internals/glimmer/lib/component";
11
10
  import { BOUNDS } from "@ember/-internals/glimmer/lib/component-managers/curly";
12
- import ResolverImpl from "@ember/-internals/glimmer/lib/resolver";
11
+ import RouterResolver from "@ember/-internals/glimmer/lib/router-resolver";
13
12
  import type { OutletState } from "@ember/-internals/glimmer/lib/utils/outlet";
14
13
  import OutletView from "@ember/-internals/glimmer/lib/views/outlet";
15
- export type IBuilder = (env: Environment, cursor: Cursor) => TreeBuilder;
14
+ import type { RendererRoot } from "@ember/-internals/glimmer/lib/base-renderer";
15
+ import { BaseRenderer } from "@ember/-internals/glimmer/lib/base-renderer";
16
+ export { type IBuilder, type RendererRoot, type RenderResult, BaseRenderer, ComponentRootState, errorLoopTransaction, renderComponent, renderSettled, _resetRenderers, } from "@ember/-internals/glimmer/lib/base-renderer";
16
17
  export interface View {
17
18
  parentView: Nullable<View>;
18
19
  renderer: Renderer;
@@ -30,157 +31,10 @@ declare module '@ember/-internals/glimmer/lib/renderer' {
30
31
  get(key: "outletState"): Reference<OutletState | undefined>;
31
32
  set(key: "outletState", value: Reference<OutletState | undefined>): Reference<OutletState | undefined>;
32
33
  }
33
- type RootState = ClassicRootState | ComponentRootState;
34
- class ComponentRootState {
35
- #private;
36
- readonly type = "component";
37
- constructor(state: RendererState, definition: object, options: {
38
- into: Cursor;
39
- args?: Record<string, unknown>;
40
- });
41
- isFor(_component: ClassicComponent): boolean;
42
- render(): void;
43
- destroy(): void;
44
- get destroyed(): boolean;
45
- get result(): GlimmerRenderResult | undefined;
46
- }
47
- class ClassicRootState {
48
- root: Component | OutletView;
49
- readonly type = "classic";
50
- id: string;
51
- result: GlimmerRenderResult | undefined;
52
- destroyed: boolean;
53
- render: () => void;
54
- readonly env: Environment;
55
- constructor(root: Component | OutletView, context: EvaluationContext, owner: object, template: Template, self: Reference<unknown>, parentElement: SimpleElement, dynamicScope: DynamicScope, builder: IBuilder);
56
- isFor(possibleRoot: unknown): boolean;
57
- destroy(): void;
58
- }
59
- export function _resetRenderers(): void;
60
- export function renderSettled(): Promise<void>;
61
34
  interface ViewRegistry {
62
35
  [viewId: string]: unknown;
63
36
  }
64
- type Resolver = ClassicResolver;
65
- interface RendererData {
66
- owner: object;
67
- context: EvaluationContext;
68
- builder: IBuilder;
69
- }
70
- class RendererState {
71
- #private;
72
- static create(data: RendererData, renderer: BaseRenderer): RendererState;
73
- private constructor();
74
- get debug(): {
75
- roots: RootState[];
76
- inRenderTransaction: boolean;
77
- isInteractive: boolean;
78
- };
79
- get roots(): RootState[];
80
- get owner(): object;
81
- get builder(): IBuilder;
82
- get context(): EvaluationContext;
83
- get env(): Environment;
84
- get isInteractive(): boolean;
85
- renderRoot(root: RootState, renderer: BaseRenderer): RootState;
86
- renderRoots(renderer: BaseRenderer): void;
87
- scheduleRevalidate(renderer: BaseRenderer): void;
88
- isValid(): boolean;
89
- revalidate(renderer: BaseRenderer): void;
90
- clearAllRoots(renderer: BaseRenderer): void;
91
- }
92
- type IntoTarget = Cursor | Element | SimpleElement;
93
- /**
94
- * The returned object from `renderComponent`
95
- * @public
96
- * @module @ember/renderer
97
- */
98
- export interface RenderResult {
99
- /**
100
- * Destroys the render tree and removes all rendered content from the element rendered into
101
- */
102
- destroy(): void;
103
- }
104
- /**
105
- * Render a component into a DOM element.
106
- *
107
- * @method renderComponent
108
- * @static
109
- * @for @ember/renderer
110
- * @param {Object} component The component to render.
111
- * @param {Object} options
112
- * @param {Element} options.into Where to render the component in to.
113
- * @param {Object} [options.owner] Optionally specify the owner to use. This will be used for injections, and overall cleanup.
114
- * @param {Object} [options.env] Optional renderer configuration
115
- * @param {Object} [options.args] Optionally pass args in to the component. These may be reactive as long as it is an object or object-like
116
- * @public
117
- */
118
- export function renderComponent(
119
- /**
120
- * The component definition to render.
121
- *
122
- * Any component that has had its manager registered is valid.
123
- * For the component-types that ship with ember, manager registration
124
- * does not need to be worried about.
125
- */
126
- component: object,
127
- { owner, env, into, args, }: {
128
- /**
129
- * The element to render the component in to.
130
- */
131
- into: IntoTarget;
132
- /**
133
- * Optional owner. Defaults to `{}`, can be any object, but will need to implement the [Owner](https://api.emberjs.com/ember/release/classes/Owner) API for components within this render tree to access services.
134
- */
135
- owner?: object;
136
- /**
137
- * Optionally configure the rendering environment
138
- */
139
- env?: {
140
- /**
141
- * When false, modifiers will not run.
142
- */
143
- isInteractive?: boolean;
144
- /**
145
- * All other options are forwarded to the underlying renderer.
146
- * (its API is currently private and out of scope for this RFC,
147
- * so passing additional things here is also considered private API)
148
- */
149
- [rendererOption: string]: unknown;
150
- };
151
- /**
152
- * These args get passed to the rendered component
153
- *
154
- * If your args are reactive, re-rendering will happen automatically.
155
- *
156
- */
157
- args?: Record<string, unknown>;
158
- }
159
- ): RenderResult;
160
- class BaseRenderer {
161
- static strict(owner: object, document: SimpleDocument | Document, options: {
162
- isInteractive: boolean;
163
- hasDOM?: boolean;
164
- }): BaseRenderer;
165
- readonly state: RendererState;
166
- constructor(owner: object, envOptions: {
167
- isInteractive: boolean;
168
- hasDOM: boolean;
169
- }, document: SimpleDocument, resolver: Resolver, builder: IBuilder);
170
- get debugRenderTree(): DebugRenderTree;
171
- isValid(): boolean;
172
- destroy(): void;
173
- render(component: object, options: {
174
- into: IntoTarget;
175
- args?: Record<string, unknown>;
176
- }): RootState;
177
- rerender(): void;
178
- }
179
37
  export class Renderer extends BaseRenderer {
180
- static strict(owner: object, document: SimpleDocument | Document, options: {
181
- isInteractive: boolean;
182
- hasDOM?: boolean;
183
- }): BaseRenderer;
184
38
  private _rootTemplate;
185
39
  private _viewRegistry;
186
40
  static create(props: {
@@ -189,13 +43,13 @@ declare module '@ember/-internals/glimmer/lib/renderer' {
189
43
  constructor(owner: InternalOwner, document: SimpleDocument, env: {
190
44
  isInteractive: boolean;
191
45
  hasDOM: boolean;
192
- }, rootTemplate: TemplateFactory, viewRegistry: ViewRegistry, builder?: typeof clientBuilder, resolver?: ResolverImpl);
46
+ }, rootTemplate: TemplateFactory, viewRegistry: ViewRegistry, builder?: typeof clientBuilder, resolver?: RouterResolver);
193
47
  appendOutletView(view: OutletView, target: SimpleElement): void;
194
48
  appendTo(view: ClassicComponent, target: SimpleElement): void;
195
49
  _appendDefinition(root: OutletView | ClassicComponent, definition: CurriedValue, target: SimpleElement): void;
196
50
  cleanupRootFor(component: ClassicComponent): void;
197
51
  remove(view: ClassicComponent): void;
198
- get _roots(): RootState[];
52
+ get _roots(): RendererRoot[];
199
53
  get _inRenderTransaction(): boolean;
200
54
  get _isInteractive(): boolean;
201
55
  get _context(): EvaluationContext;
@@ -208,5 +62,4 @@ declare module '@ember/-internals/glimmer/lib/renderer' {
208
62
  lastNode: SimpleNode;
209
63
  };
210
64
  }
211
- export {};
212
65
  }
@@ -0,0 +1,17 @@
1
+ declare module '@ember/-internals/glimmer/lib/router-resolver' {
2
+ import type { HelperDefinitionState } from "@glimmer/interfaces";
3
+ import type { InternalOwner } from "@ember/-internals/owner";
4
+ import type { Nullable } from "@ember/-internals/utility-types";
5
+ import ResolverImpl from "@ember/-internals/glimmer/lib/resolver";
6
+ /**
7
+ * The resolver used by the classic application `Renderer`. It extends the
8
+ * shared `ResolverImpl` with the keywords that require the router and engine
9
+ * infrastructure (`{{outlet}}` and `{{mount}}`). Keeping these out of the
10
+ * base resolver means renderers that have no router (e.g. `renderComponent`)
11
+ * do not pull the outlet/engine machinery into the build.
12
+ */
13
+ export default class RouterResolver extends ResolverImpl {
14
+ lookupBuiltInHelper(name: string): Nullable<HelperDefinitionState>;
15
+ lookupHelper(name: string, owner: InternalOwner): Nullable<HelperDefinitionState>;
16
+ }
17
+ }
@@ -59,7 +59,7 @@ declare module '@ember/renderer' {
59
59
  @returns {Promise<void>} a promise which fulfills when rendering has completed
60
60
  @public
61
61
  */
62
- export { renderSettled } from "@ember/-internals/glimmer/lib/renderer";
62
+ export { renderSettled } from "@ember/-internals/glimmer/lib/base-renderer";
63
63
  /**
64
64
  * Render a component into a DOM element.
65
65
  *
@@ -76,5 +76,5 @@ declare module '@ember/renderer' {
76
76
  * @param {Object} [options.args] Optionally pass args in to the component. These may be reactive as long as it is an object or object-like
77
77
  * @public
78
78
  */
79
- export { renderComponent } from "@ember/-internals/glimmer/lib/renderer";
79
+ export { renderComponent } from "@ember/-internals/glimmer/lib/base-renderer";
80
80
  }