@@ -32,6 +32,25 @@ export function createInjector(modulesToLoad, strictDi = false) {
3232 /** @type {Map<String|Function, boolean> } */
3333 const loadedModules = new Map ( ) ; // Keep track of loaded modules to avoid circular dependencies
3434
35+ /**
36+ * @typedef {{
37+ * $provide: {
38+ * provider: Function,
39+ * factory: Function,
40+ * service: Function,
41+ * value: Function,
42+ * constant: Function,
43+ * store: Function,
44+ * decorator: Function,
45+ * },
46+ * $injectorProvider?: {
47+ * $get: () => unknown
48+ * },
49+ * $injector?: ProviderInjector
50+ * }} ProviderCache
51+ */
52+
53+ /** @type {ProviderCache } */
3554 const providerCache = {
3655 $provide : {
3756 provider : supportObject ( provider ) ,
@@ -188,12 +207,11 @@ export function createInjector(modulesToLoad, strictDi = false) {
188207 * Registers a service persisted in a storage
189208 *
190209 * @param {string } name - Service name
191- * @param {Function } ctor - Constructor for the service
210+ * @param {import("../../interface.ts").Constructor } ctor - Constructor for the service
192211 * @param {ng.StorageType } type - Type of storage to be instantiated
193- * @param {Storage|Object } backendOrConfig - Either a Storage-like object (getItem/setItem) or a config object
194- * with { backend, serialize, deserialize }
212+ * @param {import("./inteface.ts").StorageLike & import("./inteface.ts").PersistentStoreConfig } [backendOrConfig]
195213 */
196- function store ( name , ctor , type , backendOrConfig = { } ) {
214+ function store ( name , ctor , type , backendOrConfig ) {
197215 return provider ( name , {
198216 $get : /** @param {ng.InjectorService } $injector */ ( $injector ) => {
199217 switch ( type ) {
@@ -212,11 +230,11 @@ export function createInjector(modulesToLoad, strictDi = false) {
212230
213231 const $cookie = $injector . get ( $injectTokens . _cookie ) ;
214232
215- const serialize = backendOrConfig . serialize ?? JSON . stringify ;
233+ const serialize = backendOrConfig ? .serialize ?? JSON . stringify ;
216234
217- const deserialize = backendOrConfig . deserialize ?? JSON . parse ;
235+ const deserialize = backendOrConfig ? .deserialize ?? JSON . parse ;
218236
219- const cookieOpts = backendOrConfig . cookie ?? { } ;
237+ const cookieOpts = backendOrConfig ? .cookie ?? { } ;
220238
221239 return createPersistentProxy ( instance , name , {
222240 getItem ( key ) {
@@ -266,10 +284,15 @@ export function createInjector(modulesToLoad, strictDi = false) {
266284 backend = localStorage ;
267285 }
268286
269- return createPersistentProxy ( instance , name , backend , {
270- serialize,
271- deserialize,
272- } ) ;
287+ return createPersistentProxy (
288+ instance ,
289+ name ,
290+ /** @type {import("./inteface.ts").StorageLike } */ ( backend ) ,
291+ {
292+ serialize,
293+ deserialize,
294+ } ,
295+ ) ;
273296 }
274297 }
275298
0 commit comments