ember-browser-services 4.0.3 → 5.0.0

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 (36) hide show
  1. package/CHANGELOG.md +84 -87
  2. package/LICENSE.md +9 -0
  3. package/README.md +1 -1
  4. package/dist/_app_/services/browser/document.js +1 -1
  5. package/dist/_app_/services/browser/local-storage.js +1 -1
  6. package/dist/_app_/services/browser/navigator.js +1 -1
  7. package/dist/_app_/services/browser/session-storage.js +1 -1
  8. package/dist/_app_/services/browser/window.js +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/services/browser/-proxy-service.d.ts +2 -2
  12. package/dist/services/browser/-proxy-service.js +3 -16
  13. package/dist/services/browser/-proxy-service.js.map +1 -1
  14. package/dist/services/browser/document.d.ts +1 -1
  15. package/dist/services/browser/document.js.map +1 -1
  16. package/dist/services/browser/local-storage.d.ts +1 -1
  17. package/dist/services/browser/local-storage.js +0 -1
  18. package/dist/services/browser/local-storage.js.map +1 -1
  19. package/dist/services/browser/navigator.d.ts +1 -1
  20. package/dist/services/browser/navigator.js.map +1 -1
  21. package/dist/services/browser/session-storage.d.ts +1 -1
  22. package/dist/services/browser/session-storage.js +0 -1
  23. package/dist/services/browser/session-storage.js.map +1 -1
  24. package/dist/services/browser/window.d.ts +1 -1
  25. package/dist/services/browser/window.js +0 -1
  26. package/dist/services/browser/window.js.map +1 -1
  27. package/dist/test-support/-private/web-storage.js +0 -7
  28. package/dist/test-support/-private/web-storage.js.map +1 -1
  29. package/dist/test-support/index.d.ts +1 -1
  30. package/dist/test-support/index.js +15 -23
  31. package/dist/test-support/index.js.map +1 -1
  32. package/dist/types.d.ts +5 -5
  33. package/package.json +39 -61
  34. package/dist/test-support/window-mock-augments.d.ts +0 -2
  35. package/dist/test-support/window-mock-augments.js +0 -54
  36. package/dist/test-support/window-mock-augments.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,257 +1,254 @@
1
- ## [4.0.3](https://github.com/CrowdStrike/ember-browser-services/compare/v4.0.2...v4.0.3) (2022-06-08)
1
+ # ember-browser-services
2
+
3
+ ## 5.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#397](https://github.com/CrowdStrike/ember-browser-services/pull/397) [`606e0f8fe4e6ef3ff527cb432c65af2fb9d631d4`](https://github.com/CrowdStrike/ember-browser-services/commit/606e0f8fe4e6ef3ff527cb432c65af2fb9d631d4) Thanks [@simonihmig](https://github.com/simonihmig)! - Drop support for Ember < 4.8
8
+
9
+ - [#399](https://github.com/CrowdStrike/ember-browser-services/pull/399) [`562c673596fdcad78a4f7f5b89877b2ff3a18073`](https://github.com/CrowdStrike/ember-browser-services/commit/562c673596fdcad78a4f7f5b89877b2ff3a18073) Thanks [@simonihmig](https://github.com/simonihmig)! - Update ember-window-mock, drop unneeded glue code
10
+
11
+ There is a potentially breaking change, as you cannot mock `window.location.origin` directly anymore. But this should not restrict you, as you can set `window.location.href`, and `origin` will be correctly reflected. Having `origin` not be aligned with `href` can never happen in reality, since `origin` is a read-only property, so having these diverge in tests is not really useful.
12
+
13
+ ## 4.0.4
14
+
15
+ ### Patch Changes
16
+
17
+ - [#364](https://github.com/CrowdStrike/ember-browser-services/pull/364) [`0be2928`](https://github.com/CrowdStrike/ember-browser-services/commit/0be2928a13936c06c628ce70f69516981e0d7679) Thanks [@NullVoxPopuli](https://github.com/NullVoxPopuli)! - Include the LICENSE.md in the npm package
18
+
19
+ - [#364](https://github.com/CrowdStrike/ember-browser-services/pull/364) [`398d517`](https://github.com/CrowdStrike/ember-browser-services/commit/398d517fc8b520f8b38837c8bac6d5a8e7e1eb57) Thanks [@NullVoxPopuli](https://github.com/NullVoxPopuli)! - Address an issue where the types of each of the browser services did not have sufficient overlap with `Service`.
20
+
21
+ This is required for folks using more modern TypeScript in ember apps,
22
+ where the service-name argument is passed to the `@service` decorator.
23
+
24
+ Previously, an error would occur:
25
+
26
+ ```
27
+ ../ember-browser-services/dist/services/browser/document.d.ts:4:9 - error TS2411: Property ''browser/document'' of type 'typeof Service & Document' is not assignable to 'string' index type 'Service'.
2
28
 
29
+ 4 'browser/document': typeof DocumentProxyService;
30
+ ~~~~~~~~~~~~~~~~~~
31
+ ```
32
+
33
+ The expected type of Services in the Service Registry is `Service`, not `typeof Service`.
34
+
35
+ ## [4.0.3](https://github.com/CrowdStrike/ember-browser-services/compare/v4.0.2...v4.0.3) (2022-06-08)
3
36
 
4
37
  ### Bug Fixes
5
38
 
6
- * **deps:** widen range for @embroider/addon-shim ([4db62b7](https://github.com/CrowdStrike/ember-browser-services/commit/4db62b7e738cf862eec5a0eccc549849017cb93b))
39
+ - **deps:** widen range for @embroider/addon-shim ([4db62b7](https://github.com/CrowdStrike/ember-browser-services/commit/4db62b7e738cf862eec5a0eccc549849017cb93b))
7
40
 
8
41
  ## [4.0.2](https://github.com/CrowdStrike/ember-browser-services/compare/v4.0.1...v4.0.2) (2022-06-08)
9
42
 
10
-
11
43
  ### Bug Fixes
12
44
 
13
- * **package:** app-re-exports included non-public file ([f2c7ef1](https://github.com/CrowdStrike/ember-browser-services/commit/f2c7ef11c13d2364c79cc0996b2ea0a54b2f6a02))
45
+ - **package:** app-re-exports included non-public file ([f2c7ef1](https://github.com/CrowdStrike/ember-browser-services/commit/f2c7ef11c13d2364c79cc0996b2ea0a54b2f6a02))
14
46
 
15
47
  ## [4.0.1](https://github.com/CrowdStrike/ember-browser-services/compare/v4.0.0...v4.0.1) (2022-06-07)
16
48
 
17
-
18
49
  ### Bug Fixes
19
50
 
20
- * **package:** addon-main specified incorrect path ([61e99ab](https://github.com/CrowdStrike/ember-browser-services/commit/61e99abb11c1c3cede8c9beb916d60f7650fbc0d))
21
- * **package:** exports field did not specify test-support ([83a303f](https://github.com/CrowdStrike/ember-browser-services/commit/83a303f56f7ccfa2db92c4dc1cfbec982235ab3d))
22
- * **package:** typesVersions was woefully incorrect ([3538f00](https://github.com/CrowdStrike/ember-browser-services/commit/3538f0072272604aa3cf460fb7ca47bd2233a9e7))
51
+ - **package:** addon-main specified incorrect path ([61e99ab](https://github.com/CrowdStrike/ember-browser-services/commit/61e99abb11c1c3cede8c9beb916d60f7650fbc0d))
52
+ - **package:** exports field did not specify test-support ([83a303f](https://github.com/CrowdStrike/ember-browser-services/commit/83a303f56f7ccfa2db92c4dc1cfbec982235ab3d))
53
+ - **package:** typesVersions was woefully incorrect ([3538f00](https://github.com/CrowdStrike/ember-browser-services/commit/3538f0072272604aa3cf460fb7ca47bd2233a9e7))
23
54
 
24
55
  # [4.0.0](https://github.com/CrowdStrike/ember-browser-services/compare/v3.0.5...v4.0.0) (2022-06-07)
25
56
 
26
-
27
57
  ### chore
28
58
 
29
- * run `npx ember-addon-migrator` ([74bc722](https://github.com/CrowdStrike/ember-browser-services/commit/74bc722aca8fa0787b01b55be7bad58b9b873b9c))
30
-
59
+ - run `npx ember-addon-migrator` ([74bc722](https://github.com/CrowdStrike/ember-browser-services/commit/74bc722aca8fa0787b01b55be7bad58b9b873b9c))
31
60
 
32
61
  ### BREAKING CHANGES
33
62
 
34
- * this addon now requires ember-auto-import@v2
63
+ - this addon now requires ember-auto-import@v2
35
64
 
36
65
  ## [3.0.5](https://github.com/CrowdStrike/ember-browser-services/compare/v3.0.4...v3.0.5) (2022-05-16)
37
66
 
38
-
39
67
  ### Bug Fixes
40
68
 
41
- * **package:** opt in to which files to include on npm, instead of the inverse ([f0d2dd9](https://github.com/CrowdStrike/ember-browser-services/commit/f0d2dd917e1453fdd3b146b5741d70aa033431fb))
69
+ - **package:** opt in to which files to include on npm, instead of the inverse ([f0d2dd9](https://github.com/CrowdStrike/ember-browser-services/commit/f0d2dd917e1453fdd3b146b5741d70aa033431fb))
42
70
 
43
71
  ## [3.0.4](https://github.com/CrowdStrike/ember-browser-services/compare/v3.0.3...v3.0.4) (2022-04-21)
44
72
 
45
-
46
73
  ### Bug Fixes
47
74
 
48
- * **deps:** update dependency ember-cli-typescript to ^5.1.0 ([d2dd804](https://github.com/CrowdStrike/ember-browser-services/commit/d2dd8047b1850568a942fa6799838316974ab762))
75
+ - **deps:** update dependency ember-cli-typescript to ^5.1.0 ([d2dd804](https://github.com/CrowdStrike/ember-browser-services/commit/d2dd8047b1850568a942fa6799838316974ab762))
49
76
 
50
77
  ## [3.0.3](https://github.com/CrowdStrike/ember-browser-services/compare/v3.0.2...v3.0.3) (2022-02-18)
51
78
 
52
-
53
79
  ### Bug Fixes
54
80
 
55
- * **deps:** update dependency ember-window-mock to ^0.8.1 ([19d60dc](https://github.com/CrowdStrike/ember-browser-services/commit/19d60dc40c6bef507d93b1f1195888e3274cf1f3))
81
+ - **deps:** update dependency ember-window-mock to ^0.8.1 ([19d60dc](https://github.com/CrowdStrike/ember-browser-services/commit/19d60dc40c6bef507d93b1f1195888e3274cf1f3))
56
82
 
57
83
  ## [3.0.2](https://github.com/CrowdStrike/ember-browser-services/compare/v3.0.1...v3.0.2) (2022-02-04)
58
84
 
59
-
60
85
  ### Bug Fixes
61
86
 
62
- * **deps:** update dependency ember-cli-typescript to v5 ([c02ec71](https://github.com/CrowdStrike/ember-browser-services/commit/c02ec71729073af33ee2b8242cf764806c21396f))
87
+ - **deps:** update dependency ember-cli-typescript to v5 ([c02ec71](https://github.com/CrowdStrike/ember-browser-services/commit/c02ec71729073af33ee2b8242cf764806c21396f))
63
88
 
64
89
  ## [3.0.1](https://github.com/CrowdStrike/ember-browser-services/compare/v3.0.0...v3.0.1) (2022-01-31)
65
90
 
66
-
67
91
  ### Bug Fixes
68
92
 
69
- * **deps:** update dependency ember-window-mock to ^0.8.0 ([a717bde](https://github.com/CrowdStrike/ember-browser-services/commit/a717bdeb01674ba69c649ed807b851281af58a90))
93
+ - **deps:** update dependency ember-window-mock to ^0.8.0 ([a717bde](https://github.com/CrowdStrike/ember-browser-services/commit/a717bdeb01674ba69c649ed807b851281af58a90))
70
94
 
71
95
  # [3.0.0](https://github.com/CrowdStrike/ember-browser-services/compare/v2.1.4...v3.0.0) (2022-01-20)
72
96
 
73
-
74
97
  ### Bug Fixes
75
98
 
76
- * **deps:** update dependency ember-cli-babel to ^7.26.11 ([5381024](https://github.com/CrowdStrike/ember-browser-services/commit/538102488b54da3db067bd56df2447249b29d5bd))
77
-
99
+ - **deps:** update dependency ember-cli-babel to ^7.26.11 ([5381024](https://github.com/CrowdStrike/ember-browser-services/commit/538102488b54da3db067bd56df2447249b29d5bd))
78
100
 
79
101
  ### chore
80
102
 
81
- * drop support for classic ember ([353195f](https://github.com/CrowdStrike/ember-browser-services/commit/353195f4baff841392ec9f730fbf94ba131d5bed))
82
- * drop support for node 12 ([05d3a3b](https://github.com/CrowdStrike/ember-browser-services/commit/05d3a3b0760aabb749c4c4a6fcf501028c3eac5f))
83
-
103
+ - drop support for classic ember ([353195f](https://github.com/CrowdStrike/ember-browser-services/commit/353195f4baff841392ec9f730fbf94ba131d5bed))
104
+ - drop support for node 12 ([05d3a3b](https://github.com/CrowdStrike/ember-browser-services/commit/05d3a3b0760aabb749c4c4a6fcf501028c3eac5f))
84
105
 
85
106
  ### BREAKING CHANGES
86
107
 
87
- * ember octane is two years old
88
- and is all that is supported. This addon may still work with
89
- classic ember, but it will not be tested against (to help
90
- simplify this addon's C.I. configuration)
91
- * node 12 is no longer supported
108
+ - ember octane is two years old
109
+ and is all that is supported. This addon may still work with
110
+ classic ember, but it will not be tested against (to help
111
+ simplify this addon's C.I. configuration)
112
+ - node 12 is no longer supported
92
113
 
93
114
  ## [2.1.4](https://github.com/CrowdStrike/ember-browser-services/compare/v2.1.3...v2.1.4) (2021-12-17)
94
115
 
95
-
96
116
  ### Bug Fixes
97
117
 
98
- * **deps:** update dependency ember-cli-babel to ^7.26.10 ([3c2f6d6](https://github.com/CrowdStrike/ember-browser-services/commit/3c2f6d6f94ccf9f46a4cdd55653d38ceeb7e3018))
118
+ - **deps:** update dependency ember-cli-babel to ^7.26.10 ([3c2f6d6](https://github.com/CrowdStrike/ember-browser-services/commit/3c2f6d6f94ccf9f46a4cdd55653d38ceeb7e3018))
99
119
 
100
120
  ## [2.1.3](https://github.com/CrowdStrike/ember-browser-services/compare/v2.1.2...v2.1.3) (2021-12-16)
101
121
 
102
-
103
122
  ### Bug Fixes
104
123
 
105
- * **deps:** update dependency ember-cli-babel to ^7.26.8 ([82d4fe6](https://github.com/CrowdStrike/ember-browser-services/commit/82d4fe6e2b3d19a78f06b54dece915364435f822))
124
+ - **deps:** update dependency ember-cli-babel to ^7.26.8 ([82d4fe6](https://github.com/CrowdStrike/ember-browser-services/commit/82d4fe6e2b3d19a78f06b54dece915364435f822))
106
125
 
107
126
  ## [2.1.2](https://github.com/CrowdStrike/ember-browser-services/compare/v2.1.1...v2.1.2) (2021-12-15)
108
127
 
109
-
110
128
  ### Bug Fixes
111
129
 
112
- * **deps:** update dependency ember-cli-babel to ^7.26.7 ([1ba87de](https://github.com/CrowdStrike/ember-browser-services/commit/1ba87def8c8153e19ced80b335dfb000e3972a76))
130
+ - **deps:** update dependency ember-cli-babel to ^7.26.7 ([1ba87de](https://github.com/CrowdStrike/ember-browser-services/commit/1ba87def8c8153e19ced80b335dfb000e3972a76))
113
131
 
114
132
  ## [2.1.1](https://github.com/CrowdStrike/ember-browser-services/compare/v2.1.0...v2.1.1) (2021-12-06)
115
133
 
116
-
117
134
  ### Bug Fixes
118
135
 
119
- * **deps:** update dependency ember-cli-htmlbars to ^6.0.1 ([ee02fa1](https://github.com/CrowdStrike/ember-browser-services/commit/ee02fa1d7b190ed51ccc69fb12f87b7ac1f6717f))
136
+ - **deps:** update dependency ember-cli-htmlbars to ^6.0.1 ([ee02fa1](https://github.com/CrowdStrike/ember-browser-services/commit/ee02fa1d7b190ed51ccc69fb12f87b7ac1f6717f))
120
137
 
121
138
  # [2.1.0](https://github.com/CrowdStrike/ember-browser-services/compare/v2.0.2...v2.1.0) (2021-11-23)
122
139
 
123
-
124
140
  ### Features
125
141
 
126
- * support session-storage ([ffaf626](https://github.com/CrowdStrike/ember-browser-services/commit/ffaf6263080546c2dab2f5c62db40166dfc6f3a1))
142
+ - support session-storage ([ffaf626](https://github.com/CrowdStrike/ember-browser-services/commit/ffaf6263080546c2dab2f5c62db40166dfc6f3a1))
127
143
 
128
144
  ## [2.0.2](https://github.com/CrowdStrike/ember-browser-services/compare/v2.0.1...v2.0.2) (2021-11-18)
129
145
 
130
-
131
146
  ### Bug Fixes
132
147
 
133
- * **deps:** update dependency ember-cli-htmlbars to v6 ([a3115e3](https://github.com/CrowdStrike/ember-browser-services/commit/a3115e396af97177ce4b3824718ea18648ee0c60))
148
+ - **deps:** update dependency ember-cli-htmlbars to v6 ([a3115e3](https://github.com/CrowdStrike/ember-browser-services/commit/a3115e396af97177ce4b3824718ea18648ee0c60))
134
149
 
135
150
  ## [2.0.1](https://github.com/CrowdStrike/ember-browser-services/compare/v2.0.0...v2.0.1) (2021-11-18)
136
151
 
137
-
138
152
  ### Bug Fixes
139
153
 
140
- * **support:** expand and fix support ([dcd8dd6](https://github.com/CrowdStrike/ember-browser-services/commit/dcd8dd68b2c0170456e82e999513bea6beecbafa))
154
+ - **support:** expand and fix support ([dcd8dd6](https://github.com/CrowdStrike/ember-browser-services/commit/dcd8dd68b2c0170456e82e999513bea6beecbafa))
141
155
 
142
156
  # [2.0.0](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.8...v2.0.0) (2021-09-09)
143
157
 
144
-
145
158
  ### Features
146
159
 
147
- * utilize ember-window-mock for the underlying provider ([659f20f](https://github.com/CrowdStrike/ember-browser-services/commit/659f20f702873c942d6476301730107c71a566c4))
148
-
160
+ - utilize ember-window-mock for the underlying provider ([659f20f](https://github.com/CrowdStrike/ember-browser-services/commit/659f20f702873c942d6476301730107c71a566c4))
149
161
 
150
162
  ### BREAKING CHANGES
151
163
 
152
- * invalid hrefs will throw an error
164
+ - invalid hrefs will throw an error
153
165
 
154
166
  ## [1.1.8](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.7...v1.1.8) (2021-08-31)
155
167
 
156
-
157
168
  ### Bug Fixes
158
169
 
159
- * **npm:** remove unneeded files from npm package ([ee0914c](https://github.com/CrowdStrike/ember-browser-services/commit/ee0914cc9e35db88dbd42ba1f0abdc73faa8c733))
170
+ - **npm:** remove unneeded files from npm package ([ee0914c](https://github.com/CrowdStrike/ember-browser-services/commit/ee0914cc9e35db88dbd42ba1f0abdc73faa8c733))
160
171
 
161
172
  ## [1.1.7](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.6...v1.1.7) (2021-08-31)
162
173
 
163
-
164
174
  ### Bug Fixes
165
175
 
166
- * **deps:** update dependency ember-cli-babel to ^7.26.6 ([37cf27f](https://github.com/CrowdStrike/ember-browser-services/commit/37cf27ffb7322152d6c3c347f8ac7e41e6416ce9))
167
- * **deps:** update dependency ember-cli-typescript to ^4.2.1 ([ab1ab86](https://github.com/CrowdStrike/ember-browser-services/commit/ab1ab869df805acaea7045d5af2cd925fc1a55c7))
176
+ - **deps:** update dependency ember-cli-babel to ^7.26.6 ([37cf27f](https://github.com/CrowdStrike/ember-browser-services/commit/37cf27ffb7322152d6c3c347f8ac7e41e6416ce9))
177
+ - **deps:** update dependency ember-cli-typescript to ^4.2.1 ([ab1ab86](https://github.com/CrowdStrike/ember-browser-services/commit/ab1ab869df805acaea7045d5af2cd925fc1a55c7))
168
178
 
169
179
  ## [1.1.6](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.5...v1.1.6) (2021-04-17)
170
180
 
171
-
172
181
  ### Bug Fixes
173
182
 
174
- * **navigator:** add app re-export ([7a9db4d](https://github.com/CrowdStrike/ember-browser-services/commit/7a9db4dc9afa62f5b3a20754747897f53aadf746))
183
+ - **navigator:** add app re-export ([7a9db4d](https://github.com/CrowdStrike/ember-browser-services/commit/7a9db4dc9afa62f5b3a20754747897f53aadf746))
175
184
 
176
185
  ## [1.1.5](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.4...v1.1.5) (2021-04-17)
177
186
 
178
-
179
187
  ### Bug Fixes
180
188
 
181
- * **deps:** update dependency ember-cli-htmlbars to ^5.7.1 ([f4062bf](https://github.com/CrowdStrike/ember-browser-services/commit/f4062bfc2b417ef524c2ce28ba82d81cbbdb6e83))
189
+ - **deps:** update dependency ember-cli-htmlbars to ^5.7.1 ([f4062bf](https://github.com/CrowdStrike/ember-browser-services/commit/f4062bfc2b417ef524c2ce28ba82d81cbbdb6e83))
182
190
 
183
191
  ## [1.1.4](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.3...v1.1.4) (2021-03-15)
184
192
 
185
-
186
193
  ### Bug Fixes
187
194
 
188
- * **deps:** update dependency ember-cli-htmlbars to ^5.6.5 ([f60cc89](https://github.com/CrowdStrike/ember-browser-services/commit/f60cc89ad048429ae0a58890030a9b488b096d49))
195
+ - **deps:** update dependency ember-cli-htmlbars to ^5.6.5 ([f60cc89](https://github.com/CrowdStrike/ember-browser-services/commit/f60cc89ad048429ae0a58890030a9b488b096d49))
189
196
 
190
197
  ## [1.1.3](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.2...v1.1.3) (2021-03-09)
191
198
 
192
-
193
199
  ### Bug Fixes
194
200
 
195
- * **deps:** update dependency ember-cli-htmlbars to ^5.6.4 ([35d3b07](https://github.com/CrowdStrike/ember-browser-services/commit/35d3b07a99e4dc69889d29d87f25816be0bb3570))
201
+ - **deps:** update dependency ember-cli-htmlbars to ^5.6.4 ([35d3b07](https://github.com/CrowdStrike/ember-browser-services/commit/35d3b07a99e4dc69889d29d87f25816be0bb3570))
196
202
 
197
203
  ## [1.1.2](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.1...v1.1.2) (2021-02-27)
198
204
 
199
-
200
205
  ### Bug Fixes
201
206
 
202
- * **deps:** update dependency ember-cli-htmlbars to ^5.6.2 ([60820b8](https://github.com/CrowdStrike/ember-browser-services/commit/60820b8c5e9ce2d07b24565518b322d3e89088eb))
207
+ - **deps:** update dependency ember-cli-htmlbars to ^5.6.2 ([60820b8](https://github.com/CrowdStrike/ember-browser-services/commit/60820b8c5e9ce2d07b24565518b322d3e89088eb))
203
208
 
204
209
  ## [1.1.1](https://github.com/CrowdStrike/ember-browser-services/compare/v1.1.0...v1.1.1) (2021-02-26)
205
210
 
206
-
207
211
  ### Bug Fixes
208
212
 
209
- * **deps:** update dependency ember-cli-htmlbars to ^5.6.0 ([455b0b3](https://github.com/CrowdStrike/ember-browser-services/commit/455b0b351218da31322c3ad12f9aee384c115fb5))
213
+ - **deps:** update dependency ember-cli-htmlbars to ^5.6.0 ([455b0b3](https://github.com/CrowdStrike/ember-browser-services/commit/455b0b351218da31322c3ad12f9aee384c115fb5))
210
214
 
211
215
  # [1.1.0](https://github.com/CrowdStrike/ember-browser-services/compare/v1.0.2...v1.1.0) (2021-02-22)
212
216
 
213
-
214
217
  ### Features
215
218
 
216
- * add normal object-style stubbing to the navigator ([3e50c60](https://github.com/CrowdStrike/ember-browser-services/commit/3e50c600dcce24ffeb9513b048dbfb42b464a9bf))
217
- * add support for the navigator ([dc34355](https://github.com/CrowdStrike/ember-browser-services/commit/dc3435520823e4354daab32c6122b523d7a68697))
219
+ - add normal object-style stubbing to the navigator ([3e50c60](https://github.com/CrowdStrike/ember-browser-services/commit/3e50c600dcce24ffeb9513b048dbfb42b464a9bf))
220
+ - add support for the navigator ([dc34355](https://github.com/CrowdStrike/ember-browser-services/commit/dc3435520823e4354daab32c6122b523d7a68697))
218
221
 
219
222
  ## [1.0.2](https://github.com/CrowdStrike/ember-browser-services/compare/v1.0.1...v1.0.2) (2021-02-16)
220
223
 
221
-
222
224
  ### Bug Fixes
223
225
 
224
- * **deps:** update dependency ember-cli-babel to ^7.24.0 ([e84ab13](https://github.com/CrowdStrike/ember-browser-services/commit/e84ab13407e6b6b1832d57e4b606dccdbdac0513))
226
+ - **deps:** update dependency ember-cli-babel to ^7.24.0 ([e84ab13](https://github.com/CrowdStrike/ember-browser-services/commit/e84ab13407e6b6b1832d57e4b606dccdbdac0513))
225
227
 
226
228
  ## [1.0.1](https://github.com/CrowdStrike/ember-browser-services/compare/v1.0.0...v1.0.1) (2021-02-13)
227
229
 
228
-
229
230
  ### Bug Fixes
230
231
 
231
- * **ci:** disable persist-credentials option to actions/checkout ([c5fd21c](https://github.com/CrowdStrike/ember-browser-services/commit/c5fd21ce5a869828530dcad6216a6288c8c96662))
232
+ - **ci:** disable persist-credentials option to actions/checkout ([c5fd21c](https://github.com/CrowdStrike/ember-browser-services/commit/c5fd21ce5a869828530dcad6216a6288c8c96662))
232
233
 
233
234
  # 1.0.0 (2021-02-13)
234
235
 
235
-
236
236
  ### Bug Fixes
237
237
 
238
- * package.json scripts ([acdb13c](https://github.com/CrowdStrike/ember-browser-services/commit/acdb13c5fdfc7037d9f9a735b7a63903cfe059da))
239
- * specify 'main' for the release branch for semantic release ([02c533a](https://github.com/CrowdStrike/ember-browser-services/commit/02c533a3e1ef97e638b605829f50a03e9608653d))
240
- * update workflow configuration to reference branch 'main' ([2bcdac9](https://github.com/CrowdStrike/ember-browser-services/commit/2bcdac9f3bc87aa96b6e6f39d8de2db6311175f5))
241
-
238
+ - package.json scripts ([acdb13c](https://github.com/CrowdStrike/ember-browser-services/commit/acdb13c5fdfc7037d9f9a735b7a63903cfe059da))
239
+ - specify 'main' for the release branch for semantic release ([02c533a](https://github.com/CrowdStrike/ember-browser-services/commit/02c533a3e1ef97e638b605829f50a03e9608653d))
240
+ - update workflow configuration to reference branch 'main' ([2bcdac9](https://github.com/CrowdStrike/ember-browser-services/commit/2bcdac9f3bc87aa96b6e6f39d8de2db6311175f5))
242
241
 
243
242
  ### chore
244
243
 
245
- * drop support for node 10 ([e7a5550](https://github.com/CrowdStrike/ember-browser-services/commit/e7a55503f34affa76e9fa9111d3678f73c56f90c))
246
-
244
+ - drop support for node 10 ([e7a5550](https://github.com/CrowdStrike/ember-browser-services/commit/e7a55503f34affa76e9fa9111d3678f73c56f90c))
247
245
 
248
246
  ### Features
249
247
 
250
- * automatic releases based on conventional commits ([c43a9f2](https://github.com/CrowdStrike/ember-browser-services/commit/c43a9f21a8a397d7f2ad331f883edafb194b4cc8))
251
- * copy over files - initial implementation ([6b02e23](https://github.com/CrowdStrike/ember-browser-services/commit/6b02e23712ee505ee3c184a31accf9322328b602))
252
- * support all properties on Location ([c5329bb](https://github.com/CrowdStrike/ember-browser-services/commit/c5329bbf80b913e29e6e71cb58d4ea1174ba7893))
253
-
248
+ - automatic releases based on conventional commits ([c43a9f2](https://github.com/CrowdStrike/ember-browser-services/commit/c43a9f21a8a397d7f2ad331f883edafb194b4cc8))
249
+ - copy over files - initial implementation ([6b02e23](https://github.com/CrowdStrike/ember-browser-services/commit/6b02e23712ee505ee3c184a31accf9322328b602))
250
+ - support all properties on Location ([c5329bb](https://github.com/CrowdStrike/ember-browser-services/commit/c5329bbf80b913e29e6e71cb58d4ea1174ba7893))
254
251
 
255
252
  ### BREAKING CHANGES
256
253
 
257
- * node 10 support dropped
254
+ - node 10 support dropped
package/LICENSE.md ADDED
@@ -0,0 +1,9 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -25,7 +25,7 @@ looking at the documentation.
25
25
 
26
26
  ## Compatibility
27
27
 
28
- * Ember.js v3.12 or above
28
+ * Ember.js v4.8 or above
29
29
  * ember-auto-import v2 or above
30
30
  * typescript v4.5 or above
31
31
  * embroider max-compat and strict modes
@@ -1 +1 @@
1
- export { default } from "ember-browser-services/services/browser/document.js";
1
+ export { default } from "ember-browser-services/services/browser/document";
@@ -1 +1 @@
1
- export { default } from "ember-browser-services/services/browser/local-storage.js";
1
+ export { default } from "ember-browser-services/services/browser/local-storage";
@@ -1 +1 @@
1
- export { default } from "ember-browser-services/services/browser/navigator.js";
1
+ export { default } from "ember-browser-services/services/browser/navigator";
@@ -1 +1 @@
1
- export { default } from "ember-browser-services/services/browser/session-storage.js";
1
+ export { default } from "ember-browser-services/services/browser/session-storage";
@@ -1 +1 @@
1
- export { default } from "ember-browser-services/services/browser/window.js";
1
+ export { default } from "ember-browser-services/services/browser/window";
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { DocumentService, LocalStorageService, NavigatorService, SessionStorageService, WindowService } from "./types";
1
+ export type { DocumentService, LocalStorageService, NavigatorService, SessionStorageService, WindowService } from "./types.js";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gGAMN,gBAAgB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,gGAMX,mBAAgB"}
@@ -1,5 +1,5 @@
1
1
  import Service from '@ember/service';
2
- import { Class } from "../../types";
2
+ import { Class } from "../../types.js";
3
3
  /**
4
4
  * Allows Services to behave as Proxy objects for real objects, such as
5
5
  * window, document, navigator, Worker, etc.
@@ -13,5 +13,5 @@ import { Class } from "../../types";
13
13
  *
14
14
  * @param {Object | Class} browserObject - the api to wrap a service around.
15
15
  */
16
- declare function proxyService<BrowserAPI>(ObjectToProxy: BrowserAPI | Class<BrowserAPI>): typeof Service & BrowserAPI;
16
+ declare function proxyService<BrowserAPI>(ObjectToProxy: BrowserAPI | Class<BrowserAPI>): Service & BrowserAPI;
17
17
  export { proxyService };
@@ -13,71 +13,58 @@ import Service from '@ember/service';
13
13
  *
14
14
  * @param {Object | Class} browserObject - the api to wrap a service around.
15
15
  */
16
-
17
16
  function proxyService(ObjectToProxy) {
18
17
  // extending the types for the static method create is too hard / impossible
19
18
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
19
  let UnTypedService = Service;
21
-
22
20
  function instanceHandlerFor(browserObject) {
23
21
  return {
24
22
  get(targetInstance, prop, receiver) {
25
23
  if (prop in targetInstance) {
26
24
  return Reflect.get(targetInstance, prop, receiver);
27
25
  }
28
-
29
26
  let value = browserObject[prop];
30
-
31
27
  if (typeof value === 'function') {
32
28
  // prevents the error "Illegal Invocation"
33
29
  // which can sometimes happen due to losing the "this" depending on
34
30
  // the invocation context at the call site
35
31
  return value.bind(browserObject);
36
32
  }
37
-
38
33
  return value;
39
34
  },
40
-
41
35
  set(targetInstance, prop, value, receiver) {
42
36
  if (prop in targetInstance) {
43
37
  Reflect.set(targetInstance, prop, value, receiver);
44
38
  }
45
-
46
39
  browserObject[prop] = value;
47
40
  return true;
48
41
  }
49
-
50
42
  };
51
43
  }
52
-
53
44
  function isConstructable(proxyTo) {
54
45
  return typeof proxyTo === 'function';
55
- } // We have to untype the Service, because...
46
+ }
47
+
48
+ // We have to untype the Service, because...
56
49
  // this is nuts:
57
50
  // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/da0e5b5/types/ember__object/core.d.ts#L82-L94
58
51
  //
59
52
  // it's also all private, and the ember-TS team apparently didn't think people would want to do this :D
60
-
61
-
62
53
  class ProxyCreator extends UnTypedService {
63
54
  // https://github.com/emberjs/ember.js/blob/master/packages/%40ember/service/index.js#L66-L74
64
55
  // https://github.com/emberjs/ember.js/blob/f85cefe9855b2521b02800d4bb2b68da7db2a214/packages/%40ember/service/index.js#L68-L72
65
56
  static isServiceFactory = true;
66
-
67
57
  static create(injections) {
68
58
  let serviceInstance = class ProxiedService extends Service {}.create(injections);
69
59
  let browserObject = isConstructable(ObjectToProxy) ? new ObjectToProxy() : ObjectToProxy;
70
60
  serviceInstance.__browser_object__ = browserObject;
71
61
  return new Proxy(serviceInstance, instanceHandlerFor(browserObject));
72
62
  }
73
-
74
63
  constructor(...args) {
75
64
  super(...args);
76
65
  throw new Error('ProxyCreator is not new-able');
77
66
  }
78
-
79
67
  }
80
-
81
68
  return ProxyCreator;
82
69
  }
83
70
 
@@ -1 +1 @@
1
- {"version":3,"file":"-proxy-service.js","sources":["../../../src/services/browser/-proxy-service.ts"],"sourcesContent":["import Service from '@ember/service';\n\nimport type { Class } from '../../types';\n\n/**\n * Allows Services to behave as Proxy objects for real objects, such as\n * window, document, navigator, Worker, etc.\n *\n * useful for consistently accessing unmockable objects and then replacing them\n * with fakes in testing.\n *\n * would it be worth recursively wrapping in a proxy for any reason?\n *\n * NOTE: This only works for one layer deep of properties\n *\n * @param {Object | Class} browserObject - the api to wrap a service around.\n */\nexport function proxyService<BrowserAPI>(\n ObjectToProxy: BrowserAPI | Class<BrowserAPI>\n): typeof Service & BrowserAPI {\n type ProxyKey = BrowserAPI | Service;\n type CreateMethod = typeof Service['create'];\n\n // extending the types for the static method create is too hard / impossible\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let UnTypedService = Service as any;\n\n function instanceHandlerFor(browserObject: BrowserAPI) {\n return {\n get<K extends keyof ProxyKey>(targetInstance: Service, prop: K, receiver: unknown) {\n if (prop in targetInstance) {\n return Reflect.get(targetInstance, prop, receiver);\n }\n\n let value = browserObject[prop];\n\n if (typeof value === 'function') {\n // prevents the error \"Illegal Invocation\"\n // which can sometimes happen due to losing the \"this\" depending on\n // the invocation context at the call site\n return value.bind(browserObject);\n }\n\n return value;\n },\n set<K extends keyof ProxyKey>(\n targetInstance: Service,\n prop: K,\n value: BrowserAPI[K],\n receiver: unknown\n ) {\n if (prop in targetInstance) {\n Reflect.set(targetInstance, prop, value, receiver);\n }\n\n browserObject[prop] = value;\n\n return true;\n },\n };\n }\n\n function isConstructable(proxyTo: BrowserAPI | Class<BrowserAPI>): proxyTo is Class<BrowserAPI> {\n return typeof proxyTo === 'function';\n }\n\n // We have to untype the Service, because...\n // this is nuts:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/da0e5b5/types/ember__object/core.d.ts#L82-L94\n //\n // it's also all private, and the ember-TS team apparently didn't think people would want to do this :D\n class ProxyCreator extends UnTypedService {\n // https://github.com/emberjs/ember.js/blob/master/packages/%40ember/service/index.js#L66-L74\n // https://github.com/emberjs/ember.js/blob/f85cefe9855b2521b02800d4bb2b68da7db2a214/packages/%40ember/service/index.js#L68-L72\n static isServiceFactory = true;\n\n static create(injections: Parameters<CreateMethod>): ReturnType<CreateMethod> {\n let serviceInstance = class ProxiedService extends Service {\n // @private\n declare __browser_object__: BrowserAPI;\n /*\n * We cannot create the base Service, we must use a new one.\n * If we don't, we are unable to run tests in a legacy qunit environment\n * due to \"writableChains\" issues.\n *\n * https://github.com/emberjs/ember.js/pull/15347/files#diff-7e13eecefe753df1d82ce67b32bc4366R361\n *\n * */\n }.create(injections);\n\n let browserObject = isConstructable(ObjectToProxy) ? new ObjectToProxy() : ObjectToProxy;\n\n serviceInstance.__browser_object__ = browserObject;\n\n return new Proxy(serviceInstance, instanceHandlerFor(browserObject));\n }\n\n constructor(...args: unknown[]) {\n super(...args);\n throw new Error('ProxyCreator is not new-able');\n }\n }\n\n return ProxyCreator as unknown as typeof Service & BrowserAPI;\n}\n"],"names":["proxyService","ObjectToProxy","UnTypedService","Service","instanceHandlerFor","browserObject","get","targetInstance","prop","receiver","Reflect","value","bind","set","isConstructable","proxyTo","ProxyCreator","isServiceFactory","create","injections","serviceInstance","ProxiedService","__browser_object__","Proxy","constructor","args","Error"],"mappings":";;AAIA;;;;;;;;;;;;;;AAaM,SAAUA,YAAV,CACJC,aADI,EACyC;AAK7C;AACA;EACA,IAAIC,cAAc,GAAGC,OAArB,CAAA;;EAEA,SAASC,kBAAT,CAA4BC,aAA5B,EAAqD;IACnD,OAAO;AACLC,MAAAA,GAAG,CAA2BC,cAA3B,EAAoDC,IAApD,EAA6DC,QAA7D,EAA8E;QAC/E,IAAID,IAAI,IAAID,cAAZ,EAA4B;UAC1B,OAAOG,OAAO,CAACJ,GAAR,CAAYC,cAAZ,EAA4BC,IAA5B,EAAkCC,QAAlC,CAAP,CAAA;AACD,SAAA;;AAED,QAAA,IAAIE,KAAK,GAAGN,aAAa,CAACG,IAAD,CAAzB,CAAA;;AAEA,QAAA,IAAI,OAAOG,KAAP,KAAiB,UAArB,EAAiC;AAC/B;AACA;AACA;AACA,UAAA,OAAOA,KAAK,CAACC,IAAN,CAAWP,aAAX,CAAP,CAAA;AACD,SAAA;;AAED,QAAA,OAAOM,KAAP,CAAA;OAfG;;MAiBLE,GAAG,CACDN,cADC,EAEDC,IAFC,EAGDG,KAHC,EAIDF,QAJC,EAIgB;QAEjB,IAAID,IAAI,IAAID,cAAZ,EAA4B;UAC1BG,OAAO,CAACG,GAAR,CAAYN,cAAZ,EAA4BC,IAA5B,EAAkCG,KAAlC,EAAyCF,QAAzC,CAAA,CAAA;AACD,SAAA;;AAEDJ,QAAAA,aAAa,CAACG,IAAD,CAAb,GAAsBG,KAAtB,CAAA;AAEA,QAAA,OAAO,IAAP,CAAA;AACD,OAAA;;KA9BH,CAAA;AAgCD,GAAA;;EAED,SAASG,eAAT,CAAyBC,OAAzB,EAAgE;IAC9D,OAAO,OAAOA,OAAP,KAAmB,UAA1B,CAAA;AACD,GA9C4C;AAiD7C;AACA;AACA;AACA;;;EACA,MAAMC,YAAN,SAA2Bd,cAA3B,CAAyC;AACvC;AACA;IACuB,OAAhBe,gBAAgB,GAAG,IAAH,CAAA;;IAEV,OAANC,MAAM,CAACC,UAAD,EAAqC;AAChD,MAAA,IAAIC,eAAe,GAAG,MAAMC,cAAN,SAA6BlB,OAA7B,CAAoC,EAApC,CAWpBe,MAXoB,CAWbC,UAXa,CAAtB,CAAA;MAaA,IAAId,aAAa,GAAGS,eAAe,CAACb,aAAD,CAAf,GAAiC,IAAIA,aAAJ,EAAjC,GAAuDA,aAA3E,CAAA;MAEAmB,eAAe,CAACE,kBAAhB,GAAqCjB,aAArC,CAAA;MAEA,OAAO,IAAIkB,KAAJ,CAAUH,eAAV,EAA2BhB,kBAAkB,CAACC,aAAD,CAA7C,CAAP,CAAA;AACD,KAAA;;IAEDmB,WAAY,CAAA,GAAGC,IAAf,EAA8B;AAC5B,MAAA,KAAA,CAAM,GAAGA,IAAT,CAAA,CAAA;AACA,MAAA,MAAM,IAAIC,KAAJ,CAAU,8BAAV,CAAN,CAAA;AACD,KAAA;;AA7BsC,GAAA;;AAgCzC,EAAA,OAAOV,YAAP,CAAA;AACD;;;;"}
1
+ {"version":3,"file":"-proxy-service.js","sources":["../../../src/services/browser/-proxy-service.ts"],"sourcesContent":["import Service from '@ember/service';\n\nimport type { Class } from '../../types';\n\n/**\n * Allows Services to behave as Proxy objects for real objects, such as\n * window, document, navigator, Worker, etc.\n *\n * useful for consistently accessing unmockable objects and then replacing them\n * with fakes in testing.\n *\n * would it be worth recursively wrapping in a proxy for any reason?\n *\n * NOTE: This only works for one layer deep of properties\n *\n * @param {Object | Class} browserObject - the api to wrap a service around.\n */\nexport function proxyService<BrowserAPI>(\n ObjectToProxy: BrowserAPI | Class<BrowserAPI>\n): Service & BrowserAPI {\n type ProxyKey = BrowserAPI | Service;\n type CreateMethod = (typeof Service)['create'];\n\n // extending the types for the static method create is too hard / impossible\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let UnTypedService = Service as any;\n\n function instanceHandlerFor(browserObject: BrowserAPI) {\n return {\n get<K extends keyof ProxyKey>(\n targetInstance: Service,\n prop: K,\n receiver: unknown\n ) {\n if (prop in targetInstance) {\n return Reflect.get(targetInstance, prop, receiver);\n }\n\n let value = browserObject[prop];\n\n if (typeof value === 'function') {\n // prevents the error \"Illegal Invocation\"\n // which can sometimes happen due to losing the \"this\" depending on\n // the invocation context at the call site\n return value.bind(browserObject);\n }\n\n return value;\n },\n set<K extends keyof ProxyKey>(\n targetInstance: Service,\n prop: K,\n value: BrowserAPI[K],\n receiver: unknown\n ) {\n if (prop in targetInstance) {\n Reflect.set(targetInstance, prop, value, receiver);\n }\n\n browserObject[prop] = value;\n\n return true;\n },\n };\n }\n\n function isConstructable(\n proxyTo: BrowserAPI | Class<BrowserAPI>\n ): proxyTo is Class<BrowserAPI> {\n return typeof proxyTo === 'function';\n }\n\n // We have to untype the Service, because...\n // this is nuts:\n // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/da0e5b5/types/ember__object/core.d.ts#L82-L94\n //\n // it's also all private, and the ember-TS team apparently didn't think people would want to do this :D\n class ProxyCreator extends UnTypedService {\n // https://github.com/emberjs/ember.js/blob/master/packages/%40ember/service/index.js#L66-L74\n // https://github.com/emberjs/ember.js/blob/f85cefe9855b2521b02800d4bb2b68da7db2a214/packages/%40ember/service/index.js#L68-L72\n static isServiceFactory = true;\n\n static create(\n injections: Parameters<CreateMethod>\n ): ReturnType<CreateMethod> {\n let serviceInstance = class ProxiedService extends Service {\n // @private\n declare __browser_object__: BrowserAPI;\n /*\n * We cannot create the base Service, we must use a new one.\n * If we don't, we are unable to run tests in a legacy qunit environment\n * due to \"writableChains\" issues.\n *\n * https://github.com/emberjs/ember.js/pull/15347/files#diff-7e13eecefe753df1d82ce67b32bc4366R361\n *\n * */\n }.create(injections);\n\n let browserObject = isConstructable(ObjectToProxy)\n ? new ObjectToProxy()\n : ObjectToProxy;\n\n serviceInstance.__browser_object__ = browserObject;\n\n return new Proxy(serviceInstance, instanceHandlerFor(browserObject));\n }\n\n constructor(...args: unknown[]) {\n super(...args);\n throw new Error('ProxyCreator is not new-able');\n }\n }\n\n return ProxyCreator as unknown as Service & BrowserAPI;\n}\n"],"names":["proxyService","ObjectToProxy","UnTypedService","Service","instanceHandlerFor","browserObject","get","targetInstance","prop","receiver","Reflect","value","bind","set","isConstructable","proxyTo","ProxyCreator","isServiceFactory","create","injections","serviceInstance","ProxiedService","__browser_object__","Proxy","constructor","args","Error"],"mappings":";;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAYA,CAC1BC,aAA6C,EACvB;AAItB;AACA;EACA,IAAIC,cAAc,GAAGC,OAAc,CAAA;EAEnC,SAASC,kBAAkBA,CAACC,aAAyB,EAAE;IACrD,OAAO;AACLC,MAAAA,GAAGA,CACDC,cAAuB,EACvBC,IAAO,EACPC,QAAiB,EACjB;QACA,IAAID,IAAI,IAAID,cAAc,EAAE;UAC1B,OAAOG,OAAO,CAACJ,GAAG,CAACC,cAAc,EAAEC,IAAI,EAAEC,QAAQ,CAAC,CAAA;AACpD,SAAA;AAEA,QAAA,IAAIE,KAAK,GAAGN,aAAa,CAACG,IAAI,CAAC,CAAA;AAE/B,QAAA,IAAI,OAAOG,KAAK,KAAK,UAAU,EAAE;AAC/B;AACA;AACA;AACA,UAAA,OAAOA,KAAK,CAACC,IAAI,CAACP,aAAa,CAAC,CAAA;AAClC,SAAA;AAEA,QAAA,OAAOM,KAAK,CAAA;OACb;MACDE,GAAGA,CACDN,cAAuB,EACvBC,IAAO,EACPG,KAAoB,EACpBF,QAAiB,EACjB;QACA,IAAID,IAAI,IAAID,cAAc,EAAE;UAC1BG,OAAO,CAACG,GAAG,CAACN,cAAc,EAAEC,IAAI,EAAEG,KAAK,EAAEF,QAAQ,CAAC,CAAA;AACpD,SAAA;AAEAJ,QAAAA,aAAa,CAACG,IAAI,CAAC,GAAGG,KAAK,CAAA;AAE3B,QAAA,OAAO,IAAI,CAAA;AACb,OAAA;KACD,CAAA;AACH,GAAA;EAEA,SAASG,eAAeA,CACtBC,OAAuC,EACT;IAC9B,OAAO,OAAOA,OAAO,KAAK,UAAU,CAAA;AACtC,GAAA;;AAEA;AACA;AACA;AACA;AACA;EACA,MAAMC,YAAY,SAASd,cAAc,CAAC;AACxC;AACA;IACA,OAAOe,gBAAgB,GAAG,IAAI,CAAA;IAE9B,OAAOC,MAAMA,CACXC,UAAoC,EACV;AAC1B,MAAA,IAAIC,eAAe,GAAG,MAAMC,cAAc,SAASlB,OAAO,CAAC,EAW1D,CAACe,MAAM,CAACC,UAAU,CAAC,CAAA;AAEpB,MAAA,IAAId,aAAa,GAAGS,eAAe,CAACb,aAAa,CAAC,GAC9C,IAAIA,aAAa,EAAE,GACnBA,aAAa,CAAA;MAEjBmB,eAAe,CAACE,kBAAkB,GAAGjB,aAAa,CAAA;MAElD,OAAO,IAAIkB,KAAK,CAACH,eAAe,EAAEhB,kBAAkB,CAACC,aAAa,CAAC,CAAC,CAAA;AACtE,KAAA;IAEAmB,WAAWA,CAAC,GAAGC,IAAe,EAAE;MAC9B,KAAK,CAAC,GAAGA,IAAI,CAAC,CAAA;AACd,MAAA,MAAM,IAAIC,KAAK,CAAC,8BAA8B,CAAC,CAAA;AACjD,KAAA;AACF,GAAA;AAEA,EAAA,OAAOV,YAAY,CAAA;AACrB;;;;"}
@@ -1,4 +1,4 @@
1
- declare const DocumentProxyService: typeof import("@ember/service").default & Document;
1
+ declare const DocumentProxyService: import("@ember/service").default & Document;
2
2
  declare module '@ember/service' {
3
3
  interface Registry {
4
4
  'browser/document': typeof DocumentProxyService;
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sources":["../../../src/services/browser/document.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\nconst DocumentProxyService = proxyService(document);\n\n/**\n * In order to have thorough testing, we should only interact with the document\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nexport default DocumentProxyService;\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/document': typeof DocumentProxyService;\n }\n}\n"],"names":["DocumentProxyService","proxyService","document"],"mappings":";;;AAIA,MAAMA,oBAAoB,GAAGC,YAAY,CAACC,QAAD;;;;"}
1
+ {"version":3,"file":"document.js","sources":["../../../src/services/browser/document.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\nconst DocumentProxyService = proxyService(document);\n\n/**\n * In order to have thorough testing, we should only interact with the document\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nexport default DocumentProxyService;\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/document': typeof DocumentProxyService;\n }\n}\n"],"names":["DocumentProxyService","proxyService","document"],"mappings":";;;AAIA,MAAMA,oBAAoB,GAAGC,YAAY,CAACC,QAAQ;;;;"}
@@ -6,7 +6,7 @@
6
6
  * the browser APIs.
7
7
  *
8
8
  */
9
- declare const LocalStorageProxyService: typeof import("@ember/service").default & Storage;
9
+ declare const LocalStorageProxyService: import("@ember/service").default & Storage;
10
10
  declare module '@ember/service' {
11
11
  interface Registry {
12
12
  'browser/local-storage': typeof LocalStorageProxyService;
@@ -9,7 +9,6 @@ import { proxyService } from './-proxy-service.js';
9
9
  * the browser APIs.
10
10
  *
11
11
  */
12
-
13
12
  const LocalStorageProxyService = proxyService(localStorage);
14
13
 
15
14
  export { LocalStorageProxyService as default };
@@ -1 +1 @@
1
- {"version":3,"file":"local-storage.js","sources":["../../../src/services/browser/local-storage.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\n/**\n * In order to have thorough testing, we should only interact with the local storage\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nconst LocalStorageProxyService = proxyService(localStorage);\n\nexport default LocalStorageProxyService;\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/local-storage': typeof LocalStorageProxyService;\n }\n}\n"],"names":["LocalStorageProxyService","proxyService","localStorage"],"mappings":";;;AAIA;;;;;;;;;AAQA,MAAMA,wBAAwB,GAAGC,YAAY,CAACC,YAAD;;;;"}
1
+ {"version":3,"file":"local-storage.js","sources":["../../../src/services/browser/local-storage.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\n/**\n * In order to have thorough testing, we should only interact with the local storage\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nconst LocalStorageProxyService = proxyService(localStorage);\n\nexport default LocalStorageProxyService;\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/local-storage': typeof LocalStorageProxyService;\n }\n}\n"],"names":["LocalStorageProxyService","proxyService","localStorage"],"mappings":";;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,wBAAwB,GAAGC,YAAY,CAACC,YAAY;;;;"}
@@ -1,4 +1,4 @@
1
- declare const NavigatorProxyService: typeof import("@ember/service").default & Navigator;
1
+ declare const NavigatorProxyService: import("@ember/service").default & Navigator;
2
2
  declare module '@ember/service' {
3
3
  interface Registry {
4
4
  'browser/navigator': typeof NavigatorProxyService;
@@ -1 +1 @@
1
- {"version":3,"file":"navigator.js","sources":["../../../src/services/browser/navigator.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\nconst NavigatorProxyService = proxyService(navigator);\n\n/**\n * In order to have thorough testing, we should only interact with the navigator\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nexport default NavigatorProxyService;\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/navigator': typeof NavigatorProxyService;\n }\n}\n"],"names":["NavigatorProxyService","proxyService","navigator"],"mappings":";;;AAIA,MAAMA,qBAAqB,GAAGC,YAAY,CAACC,SAAD;;;;"}
1
+ {"version":3,"file":"navigator.js","sources":["../../../src/services/browser/navigator.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\nconst NavigatorProxyService = proxyService(navigator);\n\n/**\n * In order to have thorough testing, we should only interact with the navigator\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nexport default NavigatorProxyService;\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/navigator': typeof NavigatorProxyService;\n }\n}\n"],"names":["NavigatorProxyService","proxyService","navigator"],"mappings":";;;AAIA,MAAMA,qBAAqB,GAAGC,YAAY,CAACC,SAAS;;;;"}
@@ -6,7 +6,7 @@
6
6
  * the browser APIs.
7
7
  *
8
8
  */
9
- declare const SessionStorageProxyService: typeof import("@ember/service").default & Storage;
9
+ declare const SessionStorageProxyService: import("@ember/service").default & Storage;
10
10
  declare module '@ember/service' {
11
11
  interface Registry {
12
12
  'browser/session-storage': typeof SessionStorageProxyService;
@@ -9,7 +9,6 @@ import { proxyService } from './-proxy-service.js';
9
9
  * the browser APIs.
10
10
  *
11
11
  */
12
-
13
12
  const SessionStorageProxyService = proxyService(sessionStorage);
14
13
 
15
14
  export { SessionStorageProxyService as default };
@@ -1 +1 @@
1
- {"version":3,"file":"session-storage.js","sources":["../../../src/services/browser/session-storage.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\n/**\n * In order to have thorough testing, we should only interact with the session storage\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nconst SessionStorageProxyService = proxyService(sessionStorage);\n\nexport default SessionStorageProxyService;\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/session-storage': typeof SessionStorageProxyService;\n }\n}\n"],"names":["SessionStorageProxyService","proxyService","sessionStorage"],"mappings":";;;AAIA;;;;;;;;;AAQA,MAAMA,0BAA0B,GAAGC,YAAY,CAACC,cAAD;;;;"}
1
+ {"version":3,"file":"session-storage.js","sources":["../../../src/services/browser/session-storage.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\n/**\n * In order to have thorough testing, we should only interact with the session storage\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nconst SessionStorageProxyService = proxyService(sessionStorage);\n\nexport default SessionStorageProxyService;\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/session-storage': typeof SessionStorageProxyService;\n }\n}\n"],"names":["SessionStorageProxyService","proxyService","sessionStorage"],"mappings":";;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,0BAA0B,GAAGC,YAAY,CAACC,cAAc;;;;"}
@@ -6,7 +6,7 @@
6
6
  * the browser APIs.
7
7
  *
8
8
  */
9
- declare const WindowProxyService: typeof import("@ember/service").default & Window & typeof globalThis;
9
+ declare const WindowProxyService: import("@ember/service").default & Window & typeof globalThis;
10
10
  declare global {
11
11
  interface Window {
12
12
  requirejs: (path: string) => {
@@ -9,7 +9,6 @@ import { proxyService } from './-proxy-service.js';
9
9
  * the browser APIs.
10
10
  *
11
11
  */
12
-
13
12
  const WindowProxyService = proxyService(window);
14
13
 
15
14
  export { WindowProxyService as default };
@@ -1 +1 @@
1
- {"version":3,"file":"window.js","sources":["../../../src/services/browser/window.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\n/**\n * In order to have thorough testing, we should only interact with the window\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nconst WindowProxyService = proxyService(window);\n\nexport default WindowProxyService;\n\ndeclare global {\n interface Window {\n requirejs: (path: string) => { default: never };\n }\n}\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/window': typeof WindowProxyService;\n }\n}\n"],"names":["WindowProxyService","proxyService","window"],"mappings":";;;AAIA;;;;;;;;;AAQA,MAAMA,kBAAkB,GAAGC,YAAY,CAACC,MAAD;;;;"}
1
+ {"version":3,"file":"window.js","sources":["../../../src/services/browser/window.ts"],"sourcesContent":["import '@ember/service';\n\nimport { proxyService } from './-proxy-service';\n\n/**\n * In order to have thorough testing, we should only interact with the window\n * (and other browser APIs) via a service.\n *\n * We can control, mock, and override the services, but we can't do so with\n * the browser APIs.\n *\n */\nconst WindowProxyService = proxyService(window);\n\nexport default WindowProxyService;\n\ndeclare global {\n interface Window {\n requirejs: (path: string) => { default: never };\n }\n}\n\ndeclare module '@ember/service' {\n interface Registry {\n 'browser/window': typeof WindowProxyService;\n }\n}\n"],"names":["WindowProxyService","proxyService","window"],"mappings":";;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,kBAAkB,GAAGC,YAAY,CAACC,MAAM;;;;"}
@@ -4,29 +4,22 @@ import Service from '@ember/service';
4
4
  * Mimics the Web Storage API, as used by localStorage and sessionStorage.
5
5
  *
6
6
  */
7
-
8
7
  class FakeWebStorageService extends Service {
9
8
  fakeWebStorage = {};
10
-
11
9
  setItem(key, value) {
12
10
  // Everything in Web Storage is a string
13
11
  this.fakeWebStorage[key] = `${value}`;
14
12
  }
15
-
16
13
  getItem(key) {
17
14
  return this.fakeWebStorage[key] || null;
18
15
  }
19
-
20
16
  removeItem(key) {
21
17
  delete this.fakeWebStorage[key];
22
18
  }
23
-
24
19
  clear() {
25
20
  this.fakeWebStorage = {};
26
21
  }
27
-
28
22
  }
29
-
30
23
  class FakeLocalStorageService extends FakeWebStorageService {}
31
24
  class FakeSessionStorageService extends FakeWebStorageService {}
32
25
 
@@ -1 +1 @@
1
- {"version":3,"file":"web-storage.js","sources":["../../../src/test-support/-private/web-storage.ts"],"sourcesContent":["import Service from '@ember/service';\n\ntype FakeWebStorage = Record<string, string>;\n\n/**\n * Mimics the Web Storage API, as used by localStorage and sessionStorage.\n *\n */\nclass FakeWebStorageService extends Service {\n fakeWebStorage: FakeWebStorage = {};\n\n setItem(key: string, value: string): void {\n // Everything in Web Storage is a string\n this.fakeWebStorage[key] = `${value}`;\n }\n\n getItem(key: string): string | null {\n return this.fakeWebStorage[key] || null;\n }\n\n removeItem(key: string): void {\n delete this.fakeWebStorage[key];\n }\n\n clear(): void {\n this.fakeWebStorage = {};\n }\n}\n\nexport class FakeLocalStorageService extends FakeWebStorageService {}\nexport class FakeSessionStorageService extends FakeWebStorageService {}\n"],"names":["FakeWebStorageService","Service","fakeWebStorage","setItem","key","value","getItem","removeItem","clear","FakeLocalStorageService","FakeSessionStorageService"],"mappings":";;AAIA;;;;;AAIA,MAAMA,qBAAN,SAAoCC,OAApC,CAA2C;AACzCC,EAAAA,cAAc,GAAmB,EAAnB,CAAA;;AAEdC,EAAAA,OAAO,CAACC,GAAD,EAAcC,KAAd,EAA2B;AAChC;AACA,IAAA,IAAA,CAAKH,cAAL,CAAoBE,GAApB,CAA2B,GAAA,CAAA,EAAGC,KAAK,CAAnC,CAAA,CAAA;AACD,GAAA;;EAEDC,OAAO,CAACF,GAAD,EAAY;AACjB,IAAA,OAAO,IAAKF,CAAAA,cAAL,CAAoBE,GAApB,KAA4B,IAAnC,CAAA;AACD,GAAA;;EAEDG,UAAU,CAACH,GAAD,EAAY;AACpB,IAAA,OAAO,IAAKF,CAAAA,cAAL,CAAoBE,GAApB,CAAP,CAAA;AACD,GAAA;;EAEDI,KAAK,GAAA;IACH,IAAKN,CAAAA,cAAL,GAAsB,EAAtB,CAAA;AACD,GAAA;;AAlBwC,CAAA;;AAqBrC,MAAOO,uBAAP,SAAuCT,qBAAvC,CAA4D,EAAA;AAC5D,MAAOU,yBAAP,SAAyCV,qBAAzC,CAA8D;;;;"}
1
+ {"version":3,"file":"web-storage.js","sources":["../../../src/test-support/-private/web-storage.ts"],"sourcesContent":["import Service from '@ember/service';\n\ntype FakeWebStorage = Record<string, string>;\n\n/**\n * Mimics the Web Storage API, as used by localStorage and sessionStorage.\n *\n */\nclass FakeWebStorageService extends Service {\n fakeWebStorage: FakeWebStorage = {};\n\n setItem(key: string, value: string): void {\n // Everything in Web Storage is a string\n this.fakeWebStorage[key] = `${value}`;\n }\n\n getItem(key: string): string | null {\n return this.fakeWebStorage[key] || null;\n }\n\n removeItem(key: string): void {\n delete this.fakeWebStorage[key];\n }\n\n clear(): void {\n this.fakeWebStorage = {};\n }\n}\n\nexport class FakeLocalStorageService extends FakeWebStorageService {}\nexport class FakeSessionStorageService extends FakeWebStorageService {}\n"],"names":["FakeWebStorageService","Service","fakeWebStorage","setItem","key","value","getItem","removeItem","clear","FakeLocalStorageService","FakeSessionStorageService"],"mappings":";;AAIA;AACA;AACA;AACA;AACA,MAAMA,qBAAqB,SAASC,OAAO,CAAC;EAC1CC,cAAc,GAAmB,EAAE,CAAA;AAEnCC,EAAAA,OAAOA,CAACC,GAAW,EAAEC,KAAa,EAAQ;AACxC;IACA,IAAI,CAACH,cAAc,CAACE,GAAG,CAAC,GAAG,CAAA,EAAGC,KAAK,CAAE,CAAA,CAAA;AACvC,GAAA;EAEAC,OAAOA,CAACF,GAAW,EAAiB;AAClC,IAAA,OAAO,IAAI,CAACF,cAAc,CAACE,GAAG,CAAC,IAAI,IAAI,CAAA;AACzC,GAAA;EAEAG,UAAUA,CAACH,GAAW,EAAQ;AAC5B,IAAA,OAAO,IAAI,CAACF,cAAc,CAACE,GAAG,CAAC,CAAA;AACjC,GAAA;AAEAI,EAAAA,KAAKA,GAAS;AACZ,IAAA,IAAI,CAACN,cAAc,GAAG,EAAE,CAAA;AAC1B,GAAA;AACF,CAAA;AAEO,MAAMO,uBAAuB,SAAST,qBAAqB,CAAC,EAAA;AAC5D,MAAMU,yBAAyB,SAASV,qBAAqB,CAAC;;;;"}
@@ -1,5 +1,5 @@
1
1
  import Service from '@ember/service';
2
- import { RecursivePartial } from "../types";
2
+ import { RecursivePartial } from "../types.js";
3
3
  type Fakes = {
4
4
  window?: boolean | typeof Service | RecursivePartial<Window>;
5
5
  localStorage?: boolean;
@@ -3,71 +3,63 @@ import window from 'ember-window-mock';
3
3
  import { setupWindowMock } from 'ember-window-mock/test-support';
4
4
  import { proxyService } from '../services/browser/-proxy-service.js';
5
5
  import { FakeLocalStorageService, FakeSessionStorageService } from './-private/web-storage.js';
6
- import { patchWindow } from './window-mock-augments.js';
7
- import 'ember-window-mock/test-support/-private/mock/location';
8
6
 
9
7
  function setupBrowserFakes(hooks, options) {
10
8
  setupWindowMock(hooks);
9
+
10
+ // Switched to 'any' from 'TestContext' due to awkward migration period from
11
+ // DT to built-in-types.
12
+ // I don't know if it's possible to support both fake test-helper types and real ones
13
+ // (simultaneously)
14
+ //
15
+ // Additionally, these types have no bearing on end-user behavior, so this is low risk.
11
16
  hooks.beforeEach(function () {
12
17
  // the type for the owner keeps being wrong............
13
18
  let owner = this.owner;
14
-
15
19
  if (options.window) {
16
- // default, can still be overwritten
17
- // see: https://github.com/kaliber5/ember-window-mock/issues/175
18
- let patched = patchWindow(window);
19
- let service = maybeMake(options.window, patched);
20
+ let service = maybeMake(options.window, window);
20
21
  owner.register('service:browser/window', service);
21
22
  }
22
-
23
23
  if (options.document) {
24
24
  let service = maybeMake(options.document, window.document);
25
25
  owner.register('service:browser/document', service);
26
26
  }
27
-
28
27
  if (options.localStorage) {
29
28
  owner.register('service:browser/local-storage', FakeLocalStorageService);
30
29
  }
31
-
32
30
  if (options.sessionStorage) {
33
31
  owner.register('service:browser/session-storage', FakeSessionStorageService);
34
32
  }
35
-
36
33
  if (options.navigator) {
37
34
  let service = maybeMake(options.navigator, window.navigator);
38
35
  owner.register('service:browser/navigator', service);
39
36
  }
40
37
  });
41
38
  }
39
+
40
+ // this usage of any is correct, because it literally could be *any*thing
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+
42
43
  function maybeMake(maybeImplementation, target) {
43
44
  if (maybeImplementation === true) {
44
45
  return proxyService(target);
45
46
  }
46
-
47
47
  if (maybeImplementation.prototype instanceof Service) {
48
48
  return target;
49
49
  }
50
-
51
50
  if (typeof maybeImplementation === 'object') {
52
51
  applyStub(target, maybeImplementation);
53
52
  return proxyService(target);
54
53
  }
55
-
56
54
  return proxyService(target);
57
- } // we are already using ember-window-mock, so the proxy internal to that package will
58
- // "just handle" setting stuff on the window
59
- //
60
- // NOTE:
61
- // - Location implementation is incomplete:
62
- // https://github.com/kaliber5/ember-window-mock/blob/2b8fbf581fc65e7f5455cd291497a3fdc2efdaf5/addon-test-support/-private/mock/location.js#L23
63
- // - does not allow setting "origin"
55
+ }
64
56
 
57
+ // we are already using ember-window-mock, so the proxy internal to that package will
58
+ // "just handle" setting stuff on the window
65
59
  function applyStub(root, partial) {
66
60
  if (!partial) return root;
67
-
68
61
  for (let key of Object.keys(partial)) {
69
62
  let value = partial[key];
70
-
71
63
  if (Array.isArray(value)) {
72
64
  root[key] = value;
73
65
  } else if (typeof value === 'object') {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/test-support/index.ts"],"sourcesContent":["import Service from '@ember/service';\n\nimport window from 'ember-window-mock';\nimport { setupWindowMock } from 'ember-window-mock/test-support';\n\nimport { proxyService } from '../services/browser/-proxy-service';\nimport { FakeLocalStorageService, FakeSessionStorageService } from './-private/web-storage';\nimport { patchWindow } from './window-mock-augments';\n\nimport type { RecursivePartial } from '../types';\nimport type { TestContext } from '@ember/test-helpers';\n\ntype Fakes = {\n window?: boolean | typeof Service | RecursivePartial<Window>;\n localStorage?: boolean;\n sessionStorage?: boolean;\n document?: boolean | typeof Service | RecursivePartial<Document>;\n navigator?: boolean | RecursivePartial<Navigator>;\n};\n\nexport function setupBrowserFakes(hooks: NestedHooks, options: Fakes): void {\n setupWindowMock(hooks);\n\n hooks.beforeEach(function (this: TestContext) {\n // the type for the owner keeps being wrong............\n let owner = this.owner as unknown as {\n register: (name: string, thing: unknown) => void;\n unregister: (name: string) => void;\n };\n\n if (options.window) {\n // default, can still be overwritten\n // see: https://github.com/kaliber5/ember-window-mock/issues/175\n let patched = patchWindow(window);\n let service = maybeMake(options.window, patched);\n\n owner.register('service:browser/window', service);\n }\n\n if (options.document) {\n let service = maybeMake(options.document, window.document);\n\n owner.register('service:browser/document', service);\n }\n\n if (options.localStorage) {\n owner.register('service:browser/local-storage', FakeLocalStorageService);\n }\n\n if (options.sessionStorage) {\n owner.register('service:browser/session-storage', FakeSessionStorageService);\n }\n\n if (options.navigator) {\n let service = maybeMake(options.navigator, window.navigator);\n\n owner.register('service:browser/navigator', service);\n }\n });\n}\n\n// this usage of any is correct, because it literally could be *any*thing\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype UnknownObject = Record<string, any>;\n\nexport function maybeMake<DefaultType extends UnknownObject, TestClass extends UnknownObject>(\n maybeImplementation: true | typeof Service | TestClass | RecursivePartial<DefaultType>,\n target: DefaultType\n): DefaultType {\n if (maybeImplementation === true) {\n return proxyService(target);\n }\n\n if (maybeImplementation.prototype instanceof Service) {\n return target;\n }\n\n if (typeof maybeImplementation === 'object') {\n applyStub(target, maybeImplementation);\n\n return proxyService(target);\n }\n\n return proxyService(target);\n}\n\n// we are already using ember-window-mock, so the proxy internal to that package will\n// \"just handle\" setting stuff on the window\n//\n// NOTE:\n// - Location implementation is incomplete:\n// https://github.com/kaliber5/ember-window-mock/blob/2b8fbf581fc65e7f5455cd291497a3fdc2efdaf5/addon-test-support/-private/mock/location.js#L23\n// - does not allow setting \"origin\"\nfunction applyStub(root: any, partial?: any) {\n if (!partial) return root;\n\n for (let key of Object.keys(partial)) {\n let value = partial[key];\n\n if (Array.isArray(value)) {\n root[key] = value;\n } else if (typeof value === 'object') {\n applyStub(root[key], value);\n } else {\n root[key] = value;\n }\n }\n}\n"],"names":["setupBrowserFakes","hooks","options","setupWindowMock","beforeEach","owner","window","patched","patchWindow","service","maybeMake","register","document","localStorage","FakeLocalStorageService","sessionStorage","FakeSessionStorageService","navigator","maybeImplementation","target","proxyService","prototype","Service","applyStub","root","partial","key","Object","keys","value","Array","isArray"],"mappings":";;;;;;;;AAoBM,SAAUA,iBAAV,CAA4BC,KAA5B,EAAgDC,OAAhD,EAA8D;EAClEC,eAAe,CAACF,KAAD,CAAf,CAAA;EAEAA,KAAK,CAACG,UAAN,CAAiB,YAAA;AACf;IACA,IAAIC,KAAK,GAAG,IAAA,CAAKA,KAAjB,CAAA;;IAKA,IAAIH,OAAO,CAACI,MAAZ,EAAoB;AAClB;AACA;AACA,MAAA,IAAIC,OAAO,GAAGC,WAAW,CAACF,MAAD,CAAzB,CAAA;MACA,IAAIG,OAAO,GAAGC,SAAS,CAACR,OAAO,CAACI,MAAT,EAAiBC,OAAjB,CAAvB,CAAA;AAEAF,MAAAA,KAAK,CAACM,QAAN,CAAe,wBAAf,EAAyCF,OAAzC,CAAA,CAAA;AACD,KAAA;;IAED,IAAIP,OAAO,CAACU,QAAZ,EAAsB;MACpB,IAAIH,OAAO,GAAGC,SAAS,CAACR,OAAO,CAACU,QAAT,EAAmBN,MAAM,CAACM,QAA1B,CAAvB,CAAA;AAEAP,MAAAA,KAAK,CAACM,QAAN,CAAe,0BAAf,EAA2CF,OAA3C,CAAA,CAAA;AACD,KAAA;;IAED,IAAIP,OAAO,CAACW,YAAZ,EAA0B;AACxBR,MAAAA,KAAK,CAACM,QAAN,CAAe,+BAAf,EAAgDG,uBAAhD,CAAA,CAAA;AACD,KAAA;;IAED,IAAIZ,OAAO,CAACa,cAAZ,EAA4B;AAC1BV,MAAAA,KAAK,CAACM,QAAN,CAAe,iCAAf,EAAkDK,yBAAlD,CAAA,CAAA;AACD,KAAA;;IAED,IAAId,OAAO,CAACe,SAAZ,EAAuB;MACrB,IAAIR,OAAO,GAAGC,SAAS,CAACR,OAAO,CAACe,SAAT,EAAoBX,MAAM,CAACW,SAA3B,CAAvB,CAAA;AAEAZ,MAAAA,KAAK,CAACM,QAAN,CAAe,2BAAf,EAA4CF,OAA5C,CAAA,CAAA;AACD,KAAA;GAlCH,CAAA,CAAA;AAoCD,CAAA;AAMK,SAAUC,SAAV,CACJQ,mBADI,EAEJC,MAFI,EAEe;EAEnB,IAAID,mBAAmB,KAAK,IAA5B,EAAkC;IAChC,OAAOE,YAAY,CAACD,MAAD,CAAnB,CAAA;AACD,GAAA;;AAED,EAAA,IAAID,mBAAmB,CAACG,SAApB,YAAyCC,OAA7C,EAAsD;AACpD,IAAA,OAAOH,MAAP,CAAA;AACD,GAAA;;AAED,EAAA,IAAI,OAAOD,mBAAP,KAA+B,QAAnC,EAA6C;AAC3CK,IAAAA,SAAS,CAACJ,MAAD,EAASD,mBAAT,CAAT,CAAA;IAEA,OAAOE,YAAY,CAACD,MAAD,CAAnB,CAAA;AACD,GAAA;;EAED,OAAOC,YAAY,CAACD,MAAD,CAAnB,CAAA;AACD;AAGD;AACA;AACA;AACA;AACA;AACA;;AACA,SAASI,SAAT,CAAmBC,IAAnB,EAA8BC,OAA9B,EAA2C;AACzC,EAAA,IAAI,CAACA,OAAL,EAAc,OAAOD,IAAP,CAAA;;EAEd,KAAK,IAAIE,GAAT,IAAgBC,MAAM,CAACC,IAAP,CAAYH,OAAZ,CAAhB,EAAsC;AACpC,IAAA,IAAII,KAAK,GAAGJ,OAAO,CAACC,GAAD,CAAnB,CAAA;;AAEA,IAAA,IAAII,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAJ,EAA0B;AACxBL,MAAAA,IAAI,CAACE,GAAD,CAAJ,GAAYG,KAAZ,CAAA;AACD,KAFD,MAEO,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AACpCN,MAAAA,SAAS,CAACC,IAAI,CAACE,GAAD,CAAL,EAAYG,KAAZ,CAAT,CAAA;AACD,KAFM,MAEA;AACLL,MAAAA,IAAI,CAACE,GAAD,CAAJ,GAAYG,KAAZ,CAAA;AACD,KAAA;AACF,GAAA;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/test-support/index.ts"],"sourcesContent":["import Service from '@ember/service';\n\nimport window from 'ember-window-mock';\n\nimport { setupWindowMock } from 'ember-window-mock/test-support';\n\nimport { proxyService } from '../services/browser/-proxy-service';\nimport {\n FakeLocalStorageService,\n FakeSessionStorageService,\n} from './-private/web-storage';\n\nimport type { RecursivePartial } from '../types';\n\ntype Fakes = {\n window?: boolean | typeof Service | RecursivePartial<Window>;\n localStorage?: boolean;\n sessionStorage?: boolean;\n document?: boolean | typeof Service | RecursivePartial<Document>;\n navigator?: boolean | RecursivePartial<Navigator>;\n};\n\nexport function setupBrowserFakes(hooks: NestedHooks, options: Fakes): void {\n setupWindowMock(hooks);\n\n // Switched to 'any' from 'TestContext' due to awkward migration period from\n // DT to built-in-types.\n // I don't know if it's possible to support both fake test-helper types and real ones\n // (simultaneously)\n //\n // Additionally, these types have no bearing on end-user behavior, so this is low risk.\n hooks.beforeEach(function (this: any) {\n // the type for the owner keeps being wrong............\n let owner = this.owner as unknown as {\n register: (name: string, thing: unknown) => void;\n unregister: (name: string) => void;\n };\n\n if (options.window) {\n let service = maybeMake(options.window, window);\n\n owner.register('service:browser/window', service);\n }\n\n if (options.document) {\n let service = maybeMake(options.document, window.document);\n\n owner.register('service:browser/document', service);\n }\n\n if (options.localStorage) {\n owner.register('service:browser/local-storage', FakeLocalStorageService);\n }\n\n if (options.sessionStorage) {\n owner.register(\n 'service:browser/session-storage',\n FakeSessionStorageService\n );\n }\n\n if (options.navigator) {\n let service = maybeMake(options.navigator, window.navigator);\n\n owner.register('service:browser/navigator', service);\n }\n });\n}\n\n// this usage of any is correct, because it literally could be *any*thing\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype UnknownObject = Record<string, any>;\n\nexport function maybeMake<\n DefaultType extends UnknownObject,\n TestClass extends UnknownObject\n>(\n maybeImplementation:\n | true\n | typeof Service\n | TestClass\n | RecursivePartial<DefaultType>,\n target: DefaultType\n): DefaultType {\n if (maybeImplementation === true) {\n return proxyService(target);\n }\n\n if (maybeImplementation.prototype instanceof Service) {\n return target;\n }\n\n if (typeof maybeImplementation === 'object') {\n applyStub(target, maybeImplementation);\n\n return proxyService(target);\n }\n\n return proxyService(target);\n}\n\n// we are already using ember-window-mock, so the proxy internal to that package will\n// \"just handle\" setting stuff on the window\nfunction applyStub(root: any, partial?: any) {\n if (!partial) return root;\n\n for (let key of Object.keys(partial)) {\n let value = partial[key];\n\n if (Array.isArray(value)) {\n root[key] = value;\n } else if (typeof value === 'object') {\n applyStub(root[key], value);\n } else {\n root[key] = value;\n }\n }\n}\n"],"names":["setupBrowserFakes","hooks","options","setupWindowMock","beforeEach","owner","window","service","maybeMake","register","document","localStorage","FakeLocalStorageService","sessionStorage","FakeSessionStorageService","navigator","maybeImplementation","target","proxyService","prototype","Service","applyStub","root","partial","key","Object","keys","value","Array","isArray"],"mappings":";;;;;;AAsBO,SAASA,iBAAiBA,CAACC,KAAkB,EAAEC,OAAc,EAAQ;EAC1EC,eAAe,CAACF,KAAK,CAAC,CAAA;;AAEtB;AACA;AACA;AACA;AACA;AACA;EACAA,KAAK,CAACG,UAAU,CAAC,YAAqB;AACpC;AACA,IAAA,IAAIC,KAAK,GAAG,IAAI,CAACA,KAGhB,CAAA;IAED,IAAIH,OAAO,CAACI,MAAM,EAAE;MAClB,IAAIC,OAAO,GAAGC,SAAS,CAACN,OAAO,CAACI,MAAM,EAAEA,MAAM,CAAC,CAAA;AAE/CD,MAAAA,KAAK,CAACI,QAAQ,CAAC,wBAAwB,EAAEF,OAAO,CAAC,CAAA;AACnD,KAAA;IAEA,IAAIL,OAAO,CAACQ,QAAQ,EAAE;MACpB,IAAIH,OAAO,GAAGC,SAAS,CAACN,OAAO,CAACQ,QAAQ,EAAEJ,MAAM,CAACI,QAAQ,CAAC,CAAA;AAE1DL,MAAAA,KAAK,CAACI,QAAQ,CAAC,0BAA0B,EAAEF,OAAO,CAAC,CAAA;AACrD,KAAA;IAEA,IAAIL,OAAO,CAACS,YAAY,EAAE;AACxBN,MAAAA,KAAK,CAACI,QAAQ,CAAC,+BAA+B,EAAEG,uBAAuB,CAAC,CAAA;AAC1E,KAAA;IAEA,IAAIV,OAAO,CAACW,cAAc,EAAE;AAC1BR,MAAAA,KAAK,CAACI,QAAQ,CACZ,iCAAiC,EACjCK,yBACF,CAAC,CAAA;AACH,KAAA;IAEA,IAAIZ,OAAO,CAACa,SAAS,EAAE;MACrB,IAAIR,OAAO,GAAGC,SAAS,CAACN,OAAO,CAACa,SAAS,EAAET,MAAM,CAACS,SAAS,CAAC,CAAA;AAE5DV,MAAAA,KAAK,CAACI,QAAQ,CAAC,2BAA2B,EAAEF,OAAO,CAAC,CAAA;AACtD,KAAA;AACF,GAAC,CAAC,CAAA;AACJ,CAAA;;AAEA;AACA;;AAGO,SAASC,SAASA,CAIvBQ,mBAIiC,EACjCC,MAAmB,EACN;EACb,IAAID,mBAAmB,KAAK,IAAI,EAAE;IAChC,OAAOE,YAAY,CAACD,MAAM,CAAC,CAAA;AAC7B,GAAA;AAEA,EAAA,IAAID,mBAAmB,CAACG,SAAS,YAAYC,OAAO,EAAE;AACpD,IAAA,OAAOH,MAAM,CAAA;AACf,GAAA;AAEA,EAAA,IAAI,OAAOD,mBAAmB,KAAK,QAAQ,EAAE;AAC3CK,IAAAA,SAAS,CAACJ,MAAM,EAAED,mBAAmB,CAAC,CAAA;IAEtC,OAAOE,YAAY,CAACD,MAAM,CAAC,CAAA;AAC7B,GAAA;EAEA,OAAOC,YAAY,CAACD,MAAM,CAAC,CAAA;AAC7B,CAAA;;AAEA;AACA;AACA,SAASI,SAASA,CAACC,IAAS,EAAEC,OAAa,EAAE;AAC3C,EAAA,IAAI,CAACA,OAAO,EAAE,OAAOD,IAAI,CAAA;EAEzB,KAAK,IAAIE,GAAG,IAAIC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,EAAE;AACpC,IAAA,IAAII,KAAK,GAAGJ,OAAO,CAACC,GAAG,CAAC,CAAA;AAExB,IAAA,IAAII,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;AACxBL,MAAAA,IAAI,CAACE,GAAG,CAAC,GAAGG,KAAK,CAAA;AACnB,KAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AACpCN,MAAAA,SAAS,CAACC,IAAI,CAACE,GAAG,CAAC,EAAEG,KAAK,CAAC,CAAA;AAC7B,KAAC,MAAM;AACLL,MAAAA,IAAI,CAACE,GAAG,CAAC,GAAGG,KAAK,CAAA;AACnB,KAAA;AACF,GAAA;AACF;;;;"}
package/dist/types.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { default as _DocumentService } from "./services/browser/document";
2
- import { default as _LocalStorageService } from "./services/browser/local-storage";
3
- import { default as _NavigatorService } from "./services/browser/navigator";
4
- import { default as _SessionStorageService } from "./services/browser/session-storage";
5
- import { default as _WindowService } from "./services/browser/window";
1
+ import { default as _DocumentService } from "./services/browser/document.js";
2
+ import { default as _LocalStorageService } from "./services/browser/local-storage.js";
3
+ import { default as _NavigatorService } from "./services/browser/navigator.js";
4
+ import { default as _SessionStorageService } from "./services/browser/session-storage.js";
5
+ import { default as _WindowService } from "./services/browser/window.js";
6
6
  type WindowService = typeof _WindowService;
7
7
  type DocumentService = typeof _DocumentService;
8
8
  type LocalStorageService = typeof _LocalStorageService;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-browser-services",
3
- "version": "4.0.3",
3
+ "version": "5.0.0",
4
4
  "description": "Browser APIs as services for easier testing",
5
5
  "repository": "https://github.com/CrowdStrike/ember-browser-services",
6
6
  "license": "MIT",
@@ -33,56 +33,41 @@
33
33
  "CHANGELOG.md",
34
34
  "README.md"
35
35
  ],
36
- "scripts": {
37
- "start": "pnpm watch:js",
38
- "build": "concurrently 'npm:build:*'",
39
- "build:js": "rollup -c ./rollup.config.mjs",
40
- "build:docs": "cp ../README.md ./README.md",
41
- "watch:js": "rollup -c --watch --no-watch.clearScreen",
42
- "lint": "concurrently 'npm:lint:js'",
43
- "lint:fix": "concurrently 'npm:lint:js:fix'",
44
- "lint:js": "eslint . --cache",
45
- "lint:js:fix": "eslint . --fix",
46
- "test": "echo 'Addon does not have tests, run tests in test-app'",
47
- "prepublishOnly": "pnpm run build"
48
- },
49
36
  "dependencies": {
50
37
  "@embroider/addon-shim": "^1.3.0",
51
- "ember-window-mock": "^0.8.1"
38
+ "ember-window-mock": "^1.0.1"
52
39
  },
53
40
  "devDependencies": {
54
- "@babel/core": "7.17.5",
55
- "@babel/plugin-proposal-class-properties": "7.16.7",
56
- "@babel/plugin-proposal-decorators": "7.17.2",
57
- "@babel/plugin-syntax-decorators": "7.17.0",
58
- "@babel/plugin-transform-typescript": "7.16.8",
59
- "@babel/preset-typescript": "7.16.7",
60
- "@embroider/addon-dev": "1.3.0",
61
- "@nullvoxpopuli/eslint-configs": "2.2.22",
62
- "@semantic-release/changelog": "^5.0.0",
63
- "@semantic-release/git": "^9.0.0",
41
+ "@babel/core": "7.25.2",
42
+ "@babel/eslint-parser": "^7.19.1",
43
+ "@babel/plugin-proposal-class-properties": "7.18.6",
44
+ "@babel/plugin-proposal-decorators": "7.24.7",
45
+ "@babel/plugin-syntax-decorators": "7.24.7",
46
+ "@babel/plugin-transform-typescript": "7.25.2",
47
+ "@babel/preset-typescript": "7.24.7",
48
+ "@embroider/addon-dev": "3.2.0",
49
+ "@nullvoxpopuli/eslint-configs": "3.2.2",
64
50
  "@types/ember__application": "^4.0.0",
65
51
  "@types/ember__engine": "^4.0.0",
66
52
  "@types/ember__object": "^4.0.0",
67
53
  "@types/ember__service": "^4.0.0",
68
- "@types/ember__test-helpers": "^2.0.2",
69
54
  "@types/qunit": "^2.11.3",
70
- "babel-eslint": "10.1.0",
71
- "concurrently": "7.0.0",
72
- "eslint": "^7.0.0",
73
- "eslint-config-prettier": "8.5.0",
74
- "eslint-plugin-decorator-position": "4.0.1",
75
- "eslint-plugin-ember": "10.5.9",
76
- "eslint-plugin-import": "2.25.4",
55
+ "@typescript-eslint/eslint-plugin": "5.55.0",
56
+ "@typescript-eslint/parser": "^5.50.0",
57
+ "concurrently": "8.2.2",
58
+ "ember-source": "3.28.12",
59
+ "eslint": "^8.33.0",
60
+ "eslint-plugin-decorator-position": "5.0.2",
61
+ "eslint-plugin-ember": "11.4.8",
62
+ "eslint-plugin-import": "2.27.5",
77
63
  "eslint-plugin-json": "3.1.0",
78
64
  "eslint-plugin-node": "11.1.0",
79
- "eslint-plugin-prettier": "4.0.0",
80
- "eslint-plugin-simple-import-sort": "7.0.0",
81
- "prettier": "^2.2.1",
82
- "rollup": "2.69.1",
83
- "rollup-plugin-ts": "2.0.7",
84
- "semantic-release": "^17.0.0",
85
- "typescript": "4.6.2"
65
+ "eslint-plugin-simple-import-sort": "10.0.0",
66
+ "prettier": "^2.8.3",
67
+ "rollup": "3.29.4",
68
+ "rollup-plugin-copy": "^3.4.0",
69
+ "rollup-plugin-ts": "3.2.0",
70
+ "typescript": "4.9.5"
86
71
  },
87
72
  "publishConfig": {
88
73
  "registry": "https://registry.npmjs.org"
@@ -102,24 +87,17 @@
102
87
  "./services/browser/window.js": "./dist/_app_/services/browser/window.js"
103
88
  }
104
89
  },
105
- "engines": {
106
- "node": "12.* || >= 14"
107
- },
108
- "volta": {
109
- "extends": "../package.json"
110
- },
111
- "release": {
112
- "branches": [
113
- "main"
114
- ],
115
- "plugins": [
116
- "@semantic-release/commit-analyzer",
117
- "@semantic-release/release-notes-generator",
118
- "@semantic-release/changelog",
119
- "@semantic-release/npm",
120
- "@semantic-release/github",
121
- "@semantic-release/git"
122
- ]
123
- },
124
- "types": "dist"
125
- }
90
+ "types": "dist",
91
+ "scripts": {
92
+ "start": "pnpm watch:js",
93
+ "build": "rollup -c ./rollup.config.mjs",
94
+ "watch:js": "rollup -c --watch --no-watch.clearScreen",
95
+ "lint": "concurrently 'npm:lint:js'",
96
+ "lint:fix": "concurrently 'npm:lint:js:fix'",
97
+ "lint:js": "eslint . --cache",
98
+ "lint:js:fix": "eslint . --fix",
99
+ "test": "echo 'Addon does not have tests, run tests in test-app'",
100
+ "format:check": "prettier -c .",
101
+ "format": "prettier -w ."
102
+ }
103
+ }
@@ -1,2 +0,0 @@
1
- declare function patchWindow(target: any): any;
2
- export { patchWindow };
@@ -1,54 +0,0 @@
1
- import window from 'ember-window-mock';
2
- import locationFactory from 'ember-window-mock/test-support/-private/mock/location';
3
-
4
- const AUGMENTS = ['origin'];
5
-
6
- function createLocation(target) {
7
- let initialHref = target?.location?.href ?? window.location.href;
8
- let mockLocation = locationFactory(initialHref);
9
- let values = {};
10
- mockLocation.isPatchedLocation = true;
11
- return new Proxy(mockLocation, {
12
- get(target, key, receiver) {
13
- if (AUGMENTS.includes(key)) {
14
- return values[key] ?? Reflect.get(target, key, receiver);
15
- }
16
-
17
- return Reflect.get(target, key, receiver);
18
- },
19
-
20
- set(target, key, value, receiver) {
21
- if (AUGMENTS.includes(key)) {
22
- return values[key] = value;
23
- }
24
-
25
- return Reflect.set(target, key, value, receiver);
26
- }
27
-
28
- });
29
- }
30
-
31
- function patchWindow(target) {
32
- let location = createLocation(target);
33
- let self = new Proxy(target, {
34
- get(target, key, receiver) {
35
- if (key === 'location') return location;
36
- if (key === 'parent') return self;
37
- if (key === 'top') return self;
38
- return Reflect.get(target, key, receiver);
39
- },
40
-
41
- set(target, key, value, receiver) {
42
- if (key === 'location') {
43
- throw new Error(`location cannot be set on window`);
44
- }
45
-
46
- return Reflect.set(target, key, value, receiver);
47
- }
48
-
49
- });
50
- return self;
51
- }
52
-
53
- export { patchWindow };
54
- //# sourceMappingURL=window-mock-augments.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"window-mock-augments.js","sources":["../../src/test-support/window-mock-augments.ts"],"sourcesContent":["import window from 'ember-window-mock';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-expect-error\nimport locationFactory from 'ember-window-mock/test-support/-private/mock/location';\n\nconst AUGMENTS: Array<string | symbol> = ['origin'];\n\nfunction createLocation(target?: Window) {\n let initialHref = target?.location?.href ?? window.location.href;\n let mockLocation = locationFactory(initialHref);\n let values: any = {};\n\n mockLocation.isPatchedLocation = true;\n\n return new Proxy(mockLocation, {\n get(target, key, receiver) {\n if (AUGMENTS.includes(key)) {\n return values[key] ?? Reflect.get(target, key, receiver);\n }\n\n return Reflect.get(target, key, receiver);\n },\n\n set(target, key, value, receiver) {\n if (AUGMENTS.includes(key)) {\n return (values[key] = value);\n }\n\n return Reflect.set(target, key, value, receiver);\n },\n });\n}\n\nexport function patchWindow(target: any) {\n let location = createLocation(target);\n\n let self: any = new Proxy(target, {\n get(target, key, receiver) {\n if (key === 'location') return location;\n if (key === 'parent') return self;\n if (key === 'top') return self;\n\n return Reflect.get(target, key, receiver);\n },\n set(target, key, value, receiver) {\n if (key === 'location') {\n throw new Error(`location cannot be set on window`);\n }\n\n return Reflect.set(target, key, value, receiver);\n },\n });\n\n return self;\n}\n"],"names":["AUGMENTS","createLocation","target","initialHref","location","href","window","mockLocation","locationFactory","values","isPatchedLocation","Proxy","get","key","receiver","includes","Reflect","set","value","patchWindow","self","Error"],"mappings":";;;AAKA,MAAMA,QAAQ,GAA2B,CAAC,QAAD,CAAzC,CAAA;;AAEA,SAASC,cAAT,CAAwBC,MAAxB,EAAuC;AACrC,EAAA,IAAIC,WAAW,GAAGD,MAAM,EAAEE,QAAR,EAAkBC,IAAlB,IAA0BC,MAAM,CAACF,QAAP,CAAgBC,IAA5D,CAAA;AACA,EAAA,IAAIE,YAAY,GAAGC,eAAe,CAACL,WAAD,CAAlC,CAAA;EACA,IAAIM,MAAM,GAAQ,EAAlB,CAAA;EAEAF,YAAY,CAACG,iBAAb,GAAiC,IAAjC,CAAA;AAEA,EAAA,OAAO,IAAIC,KAAJ,CAAUJ,YAAV,EAAwB;AAC7BK,IAAAA,GAAG,CAACV,MAAD,EAASW,GAAT,EAAcC,QAAd,EAAsB;AACvB,MAAA,IAAId,QAAQ,CAACe,QAAT,CAAkBF,GAAlB,CAAJ,EAA4B;AAC1B,QAAA,OAAOJ,MAAM,CAACI,GAAD,CAAN,IAAeG,OAAO,CAACJ,GAAR,CAAYV,MAAZ,EAAoBW,GAApB,EAAyBC,QAAzB,CAAtB,CAAA;AACD,OAAA;;MAED,OAAOE,OAAO,CAACJ,GAAR,CAAYV,MAAZ,EAAoBW,GAApB,EAAyBC,QAAzB,CAAP,CAAA;KAN2B;;IAS7BG,GAAG,CAACf,MAAD,EAASW,GAAT,EAAcK,KAAd,EAAqBJ,QAArB,EAA6B;AAC9B,MAAA,IAAId,QAAQ,CAACe,QAAT,CAAkBF,GAAlB,CAAJ,EAA4B;AAC1B,QAAA,OAAQJ,MAAM,CAACI,GAAD,CAAN,GAAcK,KAAtB,CAAA;AACD,OAAA;;MAED,OAAOF,OAAO,CAACC,GAAR,CAAYf,MAAZ,EAAoBW,GAApB,EAAyBK,KAAzB,EAAgCJ,QAAhC,CAAP,CAAA;AACD,KAAA;;AAf4B,GAAxB,CAAP,CAAA;AAiBD,CAAA;;AAEK,SAAUK,WAAV,CAAsBjB,MAAtB,EAAiC;AACrC,EAAA,IAAIE,QAAQ,GAAGH,cAAc,CAACC,MAAD,CAA7B,CAAA;AAEA,EAAA,IAAIkB,IAAI,GAAQ,IAAIT,KAAJ,CAAUT,MAAV,EAAkB;AAChCU,IAAAA,GAAG,CAACV,MAAD,EAASW,GAAT,EAAcC,QAAd,EAAsB;AACvB,MAAA,IAAID,GAAG,KAAK,UAAZ,EAAwB,OAAOT,QAAP,CAAA;AACxB,MAAA,IAAIS,GAAG,KAAK,QAAZ,EAAsB,OAAOO,IAAP,CAAA;AACtB,MAAA,IAAIP,GAAG,KAAK,KAAZ,EAAmB,OAAOO,IAAP,CAAA;MAEnB,OAAOJ,OAAO,CAACJ,GAAR,CAAYV,MAAZ,EAAoBW,GAApB,EAAyBC,QAAzB,CAAP,CAAA;KAN8B;;IAQhCG,GAAG,CAACf,MAAD,EAASW,GAAT,EAAcK,KAAd,EAAqBJ,QAArB,EAA6B;MAC9B,IAAID,GAAG,KAAK,UAAZ,EAAwB;AACtB,QAAA,MAAM,IAAIQ,KAAJ,CAAU,CAAA,gCAAA,CAAV,CAAN,CAAA;AACD,OAAA;;MAED,OAAOL,OAAO,CAACC,GAAR,CAAYf,MAAZ,EAAoBW,GAApB,EAAyBK,KAAzB,EAAgCJ,QAAhC,CAAP,CAAA;AACD,KAAA;;AAd+B,GAAlB,CAAhB,CAAA;AAiBA,EAAA,OAAOM,IAAP,CAAA;AACD;;;;"}