MCPcopy Create free account
hub / github.com/googlemaps/js-api-loader / bootstrap

Function bootstrap

src/bootstrap.js:15–43  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13import {setScriptSrc} from './setScriptSrc.js';
14
15export const bootstrap = bootstrapParams => {
16 var bootstrapPromise;
17 var script;
18 var bootstrapParamsKey;
19 var PRODUCT_NAME = "The Google Maps JavaScript API";
20 var GOOGLE = "google";
21 var IMPORT_API_NAME = "importLibrary";
22 var PENDING_BOOTSTRAP_KEY = "__ib__";
23 var doc = document;
24 var global_ = window;
25 var google_ = global_[GOOGLE] || (global_[GOOGLE] = {});
26 var namespace = google_.maps || (google_.maps = {});
27 var libraries = new Set();
28 var searchParams = new URLSearchParams();
29 var triggerBootstrap = () => bootstrapPromise || (bootstrapPromise = new Promise(async(resolve, reject) => {
30 await (script = doc.createElement("script"));
31 searchParams.set("libraries", [...libraries] + "");
32 for (bootstrapParamsKey in bootstrapParams) {
33 searchParams.set(bootstrapParamsKey.replace(/[A-Z]/g, g => "_" + g[0].toLowerCase()), bootstrapParams[bootstrapParamsKey]);
34 }
35 searchParams.set("callback", GOOGLE + ".maps." + PENDING_BOOTSTRAP_KEY);
36 setScriptSrc(script, "https://maps.googleapis.com/maps/api/js?" + searchParams);
37 namespace[PENDING_BOOTSTRAP_KEY] = resolve;
38 script.onerror = () => bootstrapPromise = reject(Error(PRODUCT_NAME + " could not load."));
39 script.nonce = doc.querySelector("script[nonce]")?.nonce || "";
40 doc.head.append(script);
41 }));
42 namespace[IMPORT_API_NAME] ? console.warn(PRODUCT_NAME + " only loads once. Ignoring:", bootstrapParams) : namespace[IMPORT_API_NAME] = (libraryName, ...args) => libraries.add(libraryName) && triggerBootstrap().then(() => namespace[IMPORT_API_NAME](libraryName, ...args));
43};

Callers 1

installImportLibrary_Function · 0.90

Calls 1

triggerBootstrapFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…