Skip to content

Commit 9ec0883

Browse files
committed
feat: resolve window.google
1 parent 0845116 commit 9ec0883

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

src/index.test.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,9 @@ test("loader should resolve immediately when successfully loaded", async () => {
292292
// use await/async pattern since the promise resolves without trigger
293293
const loader = new Loader({ apiKey: "foo", retries: 0 });
294294
loader["done"] = true;
295-
296-
await expect(loader.loadPromise()).resolves.toBeUndefined();
295+
// TODO causes warning
296+
window.google = { maps: { version: "3.*.*" } as any };
297+
await expect(loader.loadPromise()).resolves.toBeDefined();
297298
});
298299

299300
test("loader should resolve immediately when failed loading", async () => {
@@ -324,7 +325,7 @@ test("loader should resolve immediately when google.maps defined", async () => {
324325
const loader = new Loader({ apiKey: "foo" });
325326
window.google = { maps: { version: "3.*.*" } as any };
326327
console.warn = jest.fn();
327-
await expect(loader.loadPromise()).resolves.toBeUndefined();
328+
await expect(loader.loadPromise()).resolves.toBeDefined();
328329
delete window.google;
329330
expect(console.warn).toHaveBeenCalledTimes(1);
330331
});
@@ -334,7 +335,7 @@ test("loader should not warn if done and google.maps is defined", async () => {
334335
loader["done"] = true;
335336
window.google = { maps: { version: "3.*.*" } as any };
336337
console.warn = jest.fn();
337-
await expect(loader.loadPromise()).resolves.toBeUndefined();
338+
await expect(loader.loadPromise()).resolves.toBeDefined();
338339
delete window.google;
339340
expect(console.warn).toHaveBeenCalledTimes(0);
340341
});

src/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ export interface LoaderOptions {
180180
* libraries: ["places"]
181181
* });
182182
*
183-
* loader.load().then(() => {
183+
* loader.load().then((google) => {
184184
* const map = new google.maps.Map(...)
185185
* })
186186
* ```
@@ -367,7 +367,7 @@ export class Loader {
367367
/**
368368
* Load the Google Maps JavaScript API script and return a Promise.
369369
*/
370-
load(): Promise<void> {
370+
load(): Promise<typeof google> {
371371
return this.loadPromise();
372372
}
373373

@@ -376,11 +376,11 @@ export class Loader {
376376
*
377377
* @ignore
378378
*/
379-
loadPromise(): Promise<void> {
379+
loadPromise(): Promise<typeof google> {
380380
return new Promise((resolve, reject) => {
381381
this.loadCallback((err: Event) => {
382382
if (!err) {
383-
resolve();
383+
resolve(window.google);
384384
} else {
385385
reject(err);
386386
}

0 commit comments

Comments
 (0)