ember-source 5.11.0-beta.2 → 5.11.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 (147) hide show
  1. package/build-metadata.json +3 -3
  2. package/dist/ember-template-compiler.js +48 -42
  3. package/dist/ember-testing.js +1 -1
  4. package/dist/ember.debug.js +23102 -23100
  5. package/dist/ember.prod.js +31562 -31563
  6. package/dist/packages/@ember/-internals/container/index.js +1 -1
  7. package/dist/packages/@ember/-internals/deprecations/index.js +2 -1
  8. package/dist/packages/@ember/-internals/glimmer/index.js +2 -1
  9. package/dist/packages/@ember/-internals/meta/lib/meta.js +4 -3
  10. package/dist/packages/@ember/-internals/metal/index.js +9 -8
  11. package/dist/packages/@ember/-internals/routing/index.js +6 -5
  12. package/dist/packages/@ember/-internals/runtime/lib/ext/rsvp.js +3 -2
  13. package/dist/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +6 -5
  14. package/dist/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +4 -3
  15. package/dist/packages/@ember/-internals/runtime/lib/mixins/container_proxy.js +1 -1
  16. package/dist/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +2 -1
  17. package/dist/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +4 -3
  18. package/dist/packages/@ember/-internals/string/index.js +1 -1
  19. package/dist/packages/@ember/-internals/utils/index.js +4 -4
  20. package/dist/packages/@ember/-internals/views/index.js +1 -1
  21. package/dist/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +1 -1
  22. package/dist/packages/@ember/-internals/views/lib/component_lookup.js +1 -1
  23. package/dist/packages/@ember/-internals/views/lib/mixins/action_support.js +5 -3
  24. package/dist/packages/@ember/-internals/views/lib/mixins/child_views_support.js +3 -3
  25. package/dist/packages/@ember/-internals/views/lib/mixins/class_names_support.js +4 -3
  26. package/dist/packages/@ember/-internals/views/lib/mixins/view_support.js +4 -3
  27. package/dist/packages/@ember/-internals/views/lib/system/event_dispatcher.js +6 -12
  28. package/dist/packages/@ember/-internals/views/lib/system/utils.js +3 -2
  29. package/dist/packages/@ember/-internals/views/lib/views/core_view.js +76 -8
  30. package/dist/packages/@ember/-internals/views/lib/views/states.js +4 -3
  31. package/dist/packages/@ember/application/index.js +16 -7
  32. package/dist/packages/@ember/application/instance.js +13 -9
  33. package/dist/packages/@ember/application/namespace.js +7 -6
  34. package/dist/packages/@ember/array/index.js +617 -11
  35. package/dist/packages/@ember/array/make.js +1 -0
  36. package/dist/packages/@ember/array/mutable.js +1 -1
  37. package/dist/packages/@ember/array/proxy.js +8 -5
  38. package/dist/packages/@ember/component/helper.js +4 -4
  39. package/dist/packages/@ember/component/index.js +4 -4
  40. package/dist/packages/@ember/controller/index.js +6 -6
  41. package/dist/packages/@ember/debug/container-debug-adapter.js +5 -4
  42. package/dist/packages/@ember/debug/data-adapter.js +7 -4
  43. package/dist/packages/@ember/debug/index.js +213 -4
  44. package/dist/packages/@ember/debug/lib/assert.js +47 -0
  45. package/dist/packages/@ember/debug/lib/deprecate.js +194 -4
  46. package/dist/packages/@ember/debug/lib/inspect.js +120 -2
  47. package/dist/packages/@ember/debug/lib/warn.js +94 -3
  48. package/dist/packages/@ember/engine/index.js +440 -17
  49. package/dist/packages/@ember/engine/instance.js +175 -11
  50. package/dist/packages/@ember/engine/parent.js +1 -0
  51. package/dist/packages/@ember/helper/index.js +4 -4
  52. package/dist/packages/@ember/instrumentation/index.js +2 -1
  53. package/dist/packages/@ember/modifier/index.js +13 -5
  54. package/dist/packages/@ember/modifier/on.js +15 -0
  55. package/dist/packages/@ember/object/-internals.js +6 -5
  56. package/dist/packages/@ember/object/compat.js +4 -3
  57. package/dist/packages/@ember/object/computed.js +4 -4
  58. package/dist/packages/@ember/object/core.js +861 -14
  59. package/dist/packages/@ember/object/evented.js +4 -4
  60. package/dist/packages/@ember/object/events.js +3 -3
  61. package/dist/packages/@ember/object/index.js +260 -9
  62. package/dist/packages/@ember/object/internals.js +1 -1
  63. package/dist/packages/@ember/object/lib/computed/computed_macros.js +8 -6
  64. package/dist/packages/@ember/object/lib/computed/reduce_computed_macros.js +8 -4
  65. package/dist/packages/@ember/object/mixin.js +6 -5
  66. package/dist/packages/@ember/object/observable.js +103 -9
  67. package/dist/packages/@ember/object/observers.js +3 -3
  68. package/dist/packages/@ember/object/promise-proxy-mixin.js +5 -5
  69. package/dist/packages/@ember/renderer/index.js +4 -4
  70. package/dist/packages/@ember/routing/-internals.js +3 -1
  71. package/dist/packages/@ember/routing/hash-location.js +2 -2
  72. package/dist/packages/@ember/routing/history-location.js +3 -2
  73. package/dist/packages/@ember/routing/index.js +4 -4
  74. package/dist/packages/@ember/routing/lib/dsl.js +2 -1
  75. package/dist/packages/@ember/routing/lib/generate_controller.js +4 -3
  76. package/dist/packages/@ember/routing/lib/router_state.js +26 -1
  77. package/dist/packages/@ember/routing/lib/routing-service.js +107 -9
  78. package/dist/packages/@ember/routing/lib/utils.js +238 -7
  79. package/dist/packages/@ember/routing/none-location.js +3 -2
  80. package/dist/packages/@ember/routing/route.js +1618 -22
  81. package/dist/packages/@ember/routing/router-service.js +638 -12
  82. package/dist/packages/@ember/routing/router.js +1449 -14
  83. package/dist/packages/@ember/runloop/index.js +760 -6
  84. package/dist/packages/@ember/service/index.js +3 -3
  85. package/dist/packages/@ember/template/index.js +4 -4
  86. package/dist/packages/@ember/utils/index.js +2 -1
  87. package/dist/packages/@ember/utils/lib/compare.js +159 -4
  88. package/dist/packages/@ember/utils/lib/is_empty.js +4 -4
  89. package/dist/packages/@ember/utils/lib/type-of.js +110 -1
  90. package/dist/packages/@glimmer/tracking/index.js +3 -3
  91. package/dist/packages/@glimmer/tracking/primitives/cache.js +3 -3
  92. package/dist/packages/ember/barrel.js +28 -13
  93. package/dist/packages/ember/version.js +1 -1
  94. package/dist/packages/ember-testing/lib/adapters/adapter.js +1 -1
  95. package/dist/packages/ember-testing/lib/adapters/qunit.js +2 -1
  96. package/dist/packages/ember-testing/lib/ext/application.js +2 -1
  97. package/dist/packages/ember-testing/lib/ext/rsvp.js +1 -1
  98. package/dist/packages/ember-testing/lib/helpers/and_then.js +2 -1
  99. package/dist/packages/ember-testing/lib/helpers/current_path.js +8 -6
  100. package/dist/packages/ember-testing/lib/helpers/current_route_name.js +8 -6
  101. package/dist/packages/ember-testing/lib/helpers/current_url.js +6 -5
  102. package/dist/packages/ember-testing/lib/helpers/pause_test.js +2 -1
  103. package/dist/packages/ember-testing/lib/helpers/visit.js +4 -3
  104. package/dist/packages/ember-testing/lib/helpers/wait.js +4 -3
  105. package/dist/packages/ember-testing/lib/initializers.js +15 -8
  106. package/dist/packages/ember-testing/lib/setup_for_testing.js +1 -1
  107. package/dist/packages/ember-testing/lib/test/run.js +1 -1
  108. package/dist/packages/router_js/index.js +2 -1
  109. package/dist/packages/shared-chunks/{alias-By_2yu5c.js → alias-Dri0koi2.js} +5 -3
  110. package/dist/packages/shared-chunks/array-3xbmc_4J.js +119 -0
  111. package/dist/packages/shared-chunks/{cache-gDE3bkXq.js → cache-BESCGvbE.js} +667 -1529
  112. package/dist/packages/shared-chunks/{core_view-Cxne2_wu.js → chunk-3SQBS3Y5-Cj4eryg1.js} +1 -88
  113. package/dist/packages/shared-chunks/{index-BXPoca1S.js → index-Llq6dmgX.js} +40 -4660
  114. package/dist/packages/shared-chunks/{is_proxy-Dmis-70B.js → is_proxy-DjvCKvd5.js} +1 -1
  115. package/dist/packages/shared-chunks/{mandatory-setter-1UQhiJOb.js → mandatory-setter-BiXq-dpN.js} +2 -1
  116. package/dist/packages/shared-chunks/{name-z9D9Yibn.js → name-Dx2bGFVv.js} +1 -1
  117. package/dist/packages/shared-chunks/{namespace_search-CBgHTkDh.js → namespace_search-btMaPM-_.js} +2 -2
  118. package/dist/packages/shared-chunks/{property_set-CW4q-uo4.js → property_set-BapAkp3X.js} +5 -4
  119. package/dist/packages/shared-chunks/{registry-DzfcDwii.js → registry-B8WARvkP.js} +3 -2
  120. package/dist/packages/shared-chunks/{router-B-Q1aYBn.js → router-DrLZsJeE.js} +2 -482
  121. package/dist/packages/shared-chunks/{set_properties-DvalyQdu.js → set_properties-BScfxzvI.js} +2 -2
  122. package/dist/packages/shared-chunks/setup-registry-du4pSGZi.js +48 -0
  123. package/dist/packages/shared-chunks/{to-string-D8i3mjEU.js → to-string-B1BmwUkt.js} +1 -1
  124. package/dist/packages/shared-chunks/unrecognized-url-error-zpz-JEoG.js +484 -0
  125. package/docs/data.json +152 -142
  126. package/package.json +4 -7
  127. package/types/stable/@ember/-internals/metal/lib/array.d.ts +1 -2
  128. package/types/stable/@ember/-internals/metal/lib/object-at.d.ts +4 -0
  129. package/types/stable/@ember/-internals/metal/lib/observer.d.ts +2 -1
  130. package/types/stable/@ember/array/index.d.ts +1 -1
  131. package/types/stable/@ember/array/make.d.ts +3 -0
  132. package/types/stable/@ember/debug/index.d.ts +3 -7
  133. package/types/stable/@ember/debug/lib/assert.d.ts +8 -0
  134. package/types/stable/@ember/engine/index.d.ts +1 -1
  135. package/types/stable/@ember/engine/instance.d.ts +2 -2
  136. package/types/stable/@ember/engine/parent.d.ts +3 -0
  137. package/types/stable/@ember/modifier/index.d.ts +1 -3
  138. package/types/stable/@ember/modifier/on.d.ts +5 -0
  139. package/types/stable/@ember/routing/lib/routing-service.d.ts +1 -1
  140. package/types/stable/@ember/routing/route.d.ts +2 -3
  141. package/types/stable/@ember/routing/router-service.d.ts +1 -1
  142. package/types/stable/@ember/routing/router.d.ts +4 -4
  143. package/types/stable/ember/barrel.d.ts +1 -1
  144. package/types/stable/ember/index.d.ts +1 -1
  145. package/types/stable/index.d.ts +5 -0
  146. package/dist/packages/shared-chunks/index-DTxy4Zgx.js +0 -641
  147. package/dist/packages/shared-chunks/index-PYiGj1jp.js +0 -2071
@@ -1 +1,26 @@
1
- export { R as default } from '../../../shared-chunks/index-BXPoca1S.js';
1
+ import { shallowEqual } from './utils.js';
2
+
3
+ class RouterState {
4
+ router;
5
+ emberRouter;
6
+ routerJsState;
7
+ constructor(emberRouter, router, routerJsState) {
8
+ this.emberRouter = emberRouter;
9
+ this.router = router;
10
+ this.routerJsState = routerJsState;
11
+ }
12
+ isActiveIntent(routeName, models, queryParams) {
13
+ let state = this.routerJsState;
14
+ if (!this.router.isActiveIntent(routeName, models, undefined, state)) {
15
+ return false;
16
+ }
17
+ if (queryParams !== undefined && Object.keys(queryParams).length > 0) {
18
+ let visibleQueryParams = Object.assign({}, queryParams);
19
+ this.emberRouter._prepareQueryParams(routeName, models, visibleQueryParams);
20
+ return shallowEqual(visibleQueryParams, state.queryParams);
21
+ }
22
+ return true;
23
+ }
24
+ }
25
+
26
+ export { RouterState as default };
@@ -1,15 +1,16 @@
1
- import '../../-internals/owner/index.js';
2
- import '../../../shared-chunks/index-DTxy4Zgx.js';
1
+ import { getOwner } from '../../-internals/owner/index.js';
2
+ import '../../debug/index.js';
3
3
  import '../../-internals/meta/lib/meta.js';
4
- import '../../../shared-chunks/mandatory-setter-1UQhiJOb.js';
5
- import '@embroider/macros';
4
+ import '../../../shared-chunks/mandatory-setter-BiXq-dpN.js';
5
+ import { isDevelopingApp } from '@embroider/macros';
6
6
  import '../../../@glimmer/destroyable/index.js';
7
7
  import '../../../@glimmer/validator/index.js';
8
- import '../../../shared-chunks/cache-gDE3bkXq.js';
9
8
  import '../../../@glimmer/manager/index.js';
9
+ import '../../../shared-chunks/cache-BESCGvbE.js';
10
10
  import '../../../shared-chunks/env-BJLX2Arx.js';
11
- import '../../object/lib/computed/computed_macros.js';
12
- import '../../../shared-chunks/index-PYiGj1jp.js';
11
+ import { readOnly } from '../../object/lib/computed/computed_macros.js';
12
+ import '../../object/index.js';
13
+ import '../../object/core.js';
13
14
  import '../../-internals/runtime/lib/mixins/registry_proxy.js';
14
15
  import '../../-internals/runtime/lib/mixins/container_proxy.js';
15
16
  import '../../-internals/runtime/lib/mixins/comparable.js';
@@ -18,5 +19,102 @@ import '../../-internals/runtime/lib/mixins/-proxy.js';
18
19
  import '../../enumerable/mutable.js';
19
20
  import '../../-internals/runtime/lib/mixins/target_action_support.js';
20
21
  import '../../-internals/runtime/lib/ext/rsvp.js';
21
- import '../../service/index.js';
22
- export { a as default } from '../../../shared-chunks/index-BXPoca1S.js';
22
+ import '../../array/index.js';
23
+ import Service from '../../service/index.js';
24
+ import EmberRouter from '../router.js';
25
+ import { ROUTER } from '../router-service.js';
26
+ import { assert } from '../../debug/lib/assert.js';
27
+
28
+ /**
29
+ @module ember
30
+ */
31
+
32
+ class RoutingService extends Service {
33
+ [ROUTER];
34
+ get router() {
35
+ let router = this[ROUTER];
36
+ if (router !== undefined) {
37
+ return router;
38
+ }
39
+ let owner = getOwner(this);
40
+ (isDevelopingApp() && !(owner) && assert('RoutingService is unexpectedly missing an owner', owner));
41
+ let _router = owner.lookup('router:main');
42
+ (isDevelopingApp() && !(_router instanceof EmberRouter) && assert('ROUTING SERVICE BUG: Expected router to be an instance of EmberRouter', _router instanceof EmberRouter));
43
+ _router.setupRouter();
44
+ return this[ROUTER] = _router;
45
+ }
46
+ hasRoute(routeName) {
47
+ return this.router.hasRoute(routeName);
48
+ }
49
+ transitionTo(routeName, models, queryParams, shouldReplace) {
50
+ let transition = this.router._doTransition(routeName, models, queryParams);
51
+ if (shouldReplace) {
52
+ transition.method('replace');
53
+ }
54
+ return transition;
55
+ }
56
+ normalizeQueryParams(routeName, models, queryParams) {
57
+ this.router._prepareQueryParams(routeName, models, queryParams);
58
+ }
59
+ _generateURL(routeName, models, queryParams) {
60
+ let visibleQueryParams = {};
61
+ if (queryParams) {
62
+ Object.assign(visibleQueryParams, queryParams);
63
+ this.normalizeQueryParams(routeName, models, visibleQueryParams);
64
+ }
65
+ return this.router.generate(routeName, ...models, {
66
+ queryParams: visibleQueryParams
67
+ });
68
+ }
69
+ generateURL(routeName, models, queryParams) {
70
+ if (this.router._initialTransitionStarted) {
71
+ return this._generateURL(routeName, models, queryParams);
72
+ } else {
73
+ // Swallow error when transition has not started.
74
+ // When rendering in tests without visit(), we cannot infer the route context which <LinkTo/> needs be aware of
75
+ try {
76
+ return this._generateURL(routeName, models, queryParams);
77
+ } catch (_e) {
78
+ return;
79
+ }
80
+ }
81
+ }
82
+ isActiveForRoute(contexts, queryParams, routeName, routerState) {
83
+ let handlers = this.router._routerMicrolib.recognizer.handlersFor(routeName);
84
+ let leafName = handlers[handlers.length - 1].handler;
85
+ let maximumContexts = numberOfContextsAcceptedByHandler(routeName, handlers);
86
+
87
+ // NOTE: any ugliness in the calculation of activeness is largely
88
+ // due to the fact that we support automatic normalizing of
89
+ // `resource` -> `resource.index`, even though there might be
90
+ // dynamic segments / query params defined on `resource.index`
91
+ // which complicates (and makes somewhat ambiguous) the calculation
92
+ // of activeness for links that link to `resource` instead of
93
+ // directly to `resource.index`.
94
+
95
+ // if we don't have enough contexts revert back to full route name
96
+ // this is because the leaf route will use one of the contexts
97
+ if (contexts.length > maximumContexts) {
98
+ routeName = leafName;
99
+ }
100
+ return routerState.isActiveIntent(routeName, contexts, queryParams);
101
+ }
102
+ }
103
+ RoutingService.reopen({
104
+ targetState: readOnly('router.targetState'),
105
+ currentState: readOnly('router.currentState'),
106
+ currentRouteName: readOnly('router.currentRouteName'),
107
+ currentPath: readOnly('router.currentPath')
108
+ });
109
+ function numberOfContextsAcceptedByHandler(handlerName, handlerInfos) {
110
+ let req = 0;
111
+ for (let i = 0; i < handlerInfos.length; i++) {
112
+ req += handlerInfos[i].names.length;
113
+ if (handlerInfos[i].handler === handlerName) {
114
+ break;
115
+ }
116
+ }
117
+ return req;
118
+ }
119
+
120
+ export { RoutingService as default };
@@ -1,14 +1,245 @@
1
1
  import '../../-internals/meta/lib/meta.js';
2
- import '../../../shared-chunks/mandatory-setter-1UQhiJOb.js';
3
- import '@embroider/macros';
4
- import '../../../shared-chunks/index-DTxy4Zgx.js';
2
+ import '../../../shared-chunks/mandatory-setter-BiXq-dpN.js';
3
+ import { isDevelopingApp } from '@embroider/macros';
4
+ import '../../debug/index.js';
5
5
  import '../../../@glimmer/destroyable/index.js';
6
6
  import '../../../@glimmer/validator/index.js';
7
- import '../../../shared-chunks/cache-gDE3bkXq.js';
8
7
  import '../../../@glimmer/manager/index.js';
8
+ import { g as get } from '../../../shared-chunks/cache-BESCGvbE.js';
9
9
  import '../../../shared-chunks/env-BJLX2Arx.js';
10
- import '../../-internals/owner/index.js';
11
- export { w as calculateCacheKey, q as extractRouteArgs, t as getActiveTargetName, x as normalizeControllerQueryParams, p as prefixRouteNameArg, y as resemblesURL, z as shallowEqual, v as stashParamNames } from '../../../shared-chunks/index-BXPoca1S.js';
10
+ import { getOwner } from '../../-internals/owner/index.js';
11
+ import EngineInstance from '../../engine/instance.js';
12
12
  import '../../../route-recognizer/index.js';
13
13
  import '../../../shared-chunks/rsvp-DaQAFb0W.js';
14
- import '../../../shared-chunks/router-B-Q1aYBn.js';
14
+ import { S as STATE_SYMBOL } from '../../../shared-chunks/unrecognized-url-error-zpz-JEoG.js';
15
+ import { assert } from '../../debug/lib/assert.js';
16
+
17
+ const ALL_PERIODS_REGEX = /\./g;
18
+ function extractRouteArgs(args) {
19
+ // SAFETY: This should just be the same thing
20
+ args = args.slice();
21
+ let possibleOptions = args[args.length - 1];
22
+ let queryParams;
23
+ if (isRouteOptions(possibleOptions)) {
24
+ args.pop(); // Remove options
25
+ queryParams = possibleOptions.queryParams;
26
+ } else {
27
+ queryParams = {};
28
+ }
29
+ let routeName;
30
+ if (typeof args[0] === 'string') {
31
+ routeName = args.shift();
32
+ // We just checked this!
33
+ (isDevelopingApp() && !(typeof routeName === 'string') && assert('routeName is a string', typeof routeName === 'string'));
34
+ }
35
+
36
+ // SAFTEY: We removed the name and options if they existed, only models left.
37
+ let models = args;
38
+ return {
39
+ routeName,
40
+ models,
41
+ queryParams
42
+ };
43
+ }
44
+ function getActiveTargetName(router) {
45
+ let routeInfos = router.activeTransition ? router.activeTransition[STATE_SYMBOL].routeInfos : router.state.routeInfos;
46
+ let lastRouteInfo = routeInfos[routeInfos.length - 1];
47
+ (isDevelopingApp() && !(lastRouteInfo) && assert('has last route info', lastRouteInfo));
48
+ return lastRouteInfo.name;
49
+ }
50
+ function stashParamNames(router, routeInfos) {
51
+ if (routeInfos['_namesStashed']) {
52
+ return;
53
+ }
54
+
55
+ // This helper exists because router.js/route-recognizer.js awkwardly
56
+ // keeps separate a routeInfo's list of parameter names depending
57
+ // on whether a URL transition or named transition is happening.
58
+ // Hopefully we can remove this in the future.
59
+ let routeInfo = routeInfos[routeInfos.length - 1];
60
+ (isDevelopingApp() && !(routeInfo) && assert('has route info', routeInfo));
61
+ let targetRouteName = routeInfo.name;
62
+ let recogHandlers = router._routerMicrolib.recognizer.handlersFor(targetRouteName);
63
+ let dynamicParent;
64
+ for (let i = 0; i < routeInfos.length; ++i) {
65
+ let routeInfo = routeInfos[i];
66
+ (isDevelopingApp() && !(routeInfo) && assert('has route info', routeInfo));
67
+ let names = recogHandlers[i].names;
68
+ if (names.length) {
69
+ dynamicParent = routeInfo;
70
+ }
71
+ routeInfo['_names'] = names;
72
+ let route = routeInfo.route;
73
+ route._stashNames(routeInfo, dynamicParent);
74
+ }
75
+ routeInfos['_namesStashed'] = true;
76
+ }
77
+ function _calculateCacheValuePrefix(prefix, part) {
78
+ // calculates the dot separated sections from prefix that are also
79
+ // at the start of part - which gives us the route name
80
+
81
+ // given : prefix = site.article.comments, part = site.article.id
82
+ // - returns: site.article (use get(values[site.article], 'id') to get the dynamic part - used below)
83
+
84
+ // given : prefix = site.article, part = site.article.id
85
+ // - returns: site.article. (use get(values[site.article], 'id') to get the dynamic part - used below)
86
+
87
+ let prefixParts = prefix.split('.');
88
+ let currPrefix = '';
89
+ for (let i = 0; i < prefixParts.length; i++) {
90
+ let currPart = prefixParts.slice(0, i + 1).join('.');
91
+ if (part.indexOf(currPart) !== 0) {
92
+ break;
93
+ }
94
+ currPrefix = currPart;
95
+ }
96
+ return currPrefix;
97
+ }
98
+
99
+ /*
100
+ Stolen from Controller
101
+ */
102
+ function calculateCacheKey(prefix, parts = [], values) {
103
+ let suffixes = '';
104
+ for (let part of parts) {
105
+ let cacheValuePrefix = _calculateCacheValuePrefix(prefix, part);
106
+ let value;
107
+ if (values) {
108
+ if (cacheValuePrefix && cacheValuePrefix in values) {
109
+ let partRemovedPrefix = part.indexOf(cacheValuePrefix) === 0 ? part.substring(cacheValuePrefix.length + 1) : part;
110
+ value = get(values[cacheValuePrefix], partRemovedPrefix);
111
+ } else {
112
+ value = get(values, part);
113
+ }
114
+ }
115
+ suffixes += `::${part}:${value}`;
116
+ }
117
+ return prefix + suffixes.replace(ALL_PERIODS_REGEX, '-');
118
+ }
119
+
120
+ /*
121
+ Controller-defined query parameters can come in three shapes:
122
+
123
+ Array
124
+ queryParams: ['foo', 'bar']
125
+ Array of simple objects where value is an alias
126
+ queryParams: [
127
+ {
128
+ 'foo': 'rename_foo_to_this'
129
+ },
130
+ {
131
+ 'bar': 'call_bar_this_instead'
132
+ }
133
+ ]
134
+ Array of fully defined objects
135
+ queryParams: [
136
+ {
137
+ 'foo': {
138
+ as: 'rename_foo_to_this'
139
+ },
140
+ }
141
+ {
142
+ 'bar': {
143
+ as: 'call_bar_this_instead',
144
+ scope: 'controller'
145
+ }
146
+ }
147
+ ]
148
+
149
+ This helper normalizes all three possible styles into the
150
+ 'Array of fully defined objects' style.
151
+ */
152
+ function normalizeControllerQueryParams(queryParams) {
153
+ let qpMap = {};
154
+ for (let queryParam of queryParams) {
155
+ accumulateQueryParamDescriptors(queryParam, qpMap);
156
+ }
157
+ return qpMap;
158
+ }
159
+ function accumulateQueryParamDescriptors(_desc, accum) {
160
+ let desc = typeof _desc === 'string' ? {
161
+ [_desc]: {
162
+ as: null
163
+ }
164
+ } : _desc;
165
+ for (let key in desc) {
166
+ if (!Object.prototype.hasOwnProperty.call(desc, key)) {
167
+ return;
168
+ }
169
+ let _singleDesc = desc[key];
170
+ let singleDesc = typeof _singleDesc === 'string' ? {
171
+ as: _singleDesc
172
+ } : _singleDesc;
173
+ let partialVal = accum[key] || {
174
+ as: null,
175
+ scope: 'model'
176
+ };
177
+ let val = {
178
+ ...partialVal,
179
+ ...singleDesc
180
+ };
181
+ accum[key] = val;
182
+ }
183
+ }
184
+
185
+ /*
186
+ Check if a routeName resembles a url instead
187
+
188
+ @private
189
+ */
190
+ function resemblesURL(str) {
191
+ return typeof str === 'string' && (str === '' || str[0] === '/');
192
+ }
193
+
194
+ /*
195
+ Returns an arguments array where the route name arg is prefixed based on the mount point
196
+
197
+ @private
198
+ */
199
+ function prefixRouteNameArg(route, args) {
200
+ let routeName;
201
+ let owner = getOwner(route);
202
+ (isDevelopingApp() && !(owner instanceof EngineInstance) && assert('Expected route to have EngineInstance as owner', owner instanceof EngineInstance));
203
+ let prefix = owner.mountPoint;
204
+
205
+ // only alter the routeName if it's actually referencing a route.
206
+ if (owner.routable && typeof args[0] === 'string') {
207
+ routeName = args[0];
208
+ if (resemblesURL(routeName)) {
209
+ throw new Error('Programmatic transitions by URL cannot be used within an Engine. Please use the route name instead.');
210
+ } else {
211
+ routeName = `${prefix}.${routeName}`;
212
+ args[0] = routeName;
213
+ }
214
+ }
215
+ return args;
216
+ }
217
+ function shallowEqual(a, b) {
218
+ let aCount = 0;
219
+ let bCount = 0;
220
+ for (let kA in a) {
221
+ if (Object.prototype.hasOwnProperty.call(a, kA)) {
222
+ if (a[kA] !== b[kA]) {
223
+ return false;
224
+ }
225
+ aCount++;
226
+ }
227
+ }
228
+ for (let kB in b) {
229
+ if (Object.prototype.hasOwnProperty.call(b, kB)) {
230
+ bCount++;
231
+ }
232
+ }
233
+ return aCount === bCount;
234
+ }
235
+ function isRouteOptions(value) {
236
+ if (value && typeof value === 'object') {
237
+ let qps = value.queryParams;
238
+ if (qps && typeof qps === 'object') {
239
+ return Object.keys(qps).every(k => typeof k === 'string');
240
+ }
241
+ }
242
+ return false;
243
+ }
244
+
245
+ export { calculateCacheKey, extractRouteArgs, getActiveTargetName, normalizeControllerQueryParams, prefixRouteNameArg, resemblesURL, shallowEqual, stashParamNames };
@@ -1,6 +1,7 @@
1
- import { E as EmberObject } from '../../shared-chunks/index-PYiGj1jp.js';
2
- import { a as assert } from '../../shared-chunks/index-DTxy4Zgx.js';
1
+ import EmberObject from '../object/index.js';
2
+ import '../debug/index.js';
3
3
  import { isDevelopingApp } from '@embroider/macros';
4
+ import { assert } from '../debug/lib/assert.js';
4
5
 
5
6
  /**
6
7
  @module @ember/routing/none-location