@ng-util/lazy 18.1.0 → 19.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.
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { DOCUMENT } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { inject, Injectable } from '@angular/core';
|
|
4
4
|
import { BehaviorSubject, pipe } from 'rxjs';
|
|
5
5
|
import { share, filter } from 'rxjs/operators';
|
|
6
6
|
|
|
7
7
|
class NuLazyService {
|
|
8
|
-
constructor(
|
|
9
|
-
this.doc =
|
|
8
|
+
constructor() {
|
|
9
|
+
this.doc = inject(DOCUMENT);
|
|
10
10
|
this.list = {};
|
|
11
11
|
this.cached = {};
|
|
12
12
|
this._notify = new BehaviorSubject([]);
|
|
@@ -33,7 +33,7 @@ class NuLazyService {
|
|
|
33
33
|
const libs = this.fixPaths(paths);
|
|
34
34
|
const pipes = [share(), filter((ls) => ls.length !== 0)];
|
|
35
35
|
if (libs.length > 0) {
|
|
36
|
-
pipes.push(filter((ls) => ls.length === libs.length && ls.every(v => v.status === 'ok' && libs.find(lw => lw.path === v.path))));
|
|
36
|
+
pipes.push(filter((ls) => ls.length === libs.length && ls.every((v) => v.status === 'ok' && libs.find((lw) => lw.path === v.path))));
|
|
37
37
|
}
|
|
38
38
|
return this._notify.asObservable().pipe(pipe.apply(this, pipes));
|
|
39
39
|
}
|
|
@@ -49,14 +49,14 @@ class NuLazyService {
|
|
|
49
49
|
*/
|
|
50
50
|
async load(paths) {
|
|
51
51
|
paths = this.fixPaths(paths);
|
|
52
|
-
return Promise.all(paths.map(p => p.type === 'script' ? this.loadScript(p.path, { callback: p.callback }) : this.loadStyle(p.path))).then(res => {
|
|
52
|
+
return Promise.all(paths.map((p) => p.type === 'script' ? this.loadScript(p.path, { callback: p.callback }) : this.loadStyle(p.path))).then((res) => {
|
|
53
53
|
this._notify.next(res);
|
|
54
54
|
return Promise.resolve(res);
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
loadScript(path, options) {
|
|
58
58
|
const { innerContent } = { ...options };
|
|
59
|
-
return new Promise(resolve => {
|
|
59
|
+
return new Promise((resolve) => {
|
|
60
60
|
if (this.list[path] === true) {
|
|
61
61
|
resolve({ ...this.cached[path], status: 'loading' });
|
|
62
62
|
return;
|
|
@@ -113,7 +113,7 @@ class NuLazyService {
|
|
|
113
113
|
}
|
|
114
114
|
loadStyle(path, options) {
|
|
115
115
|
const { rel, innerContent } = { rel: 'stylesheet', ...options };
|
|
116
|
-
return new Promise(resolve => {
|
|
116
|
+
return new Promise((resolve) => {
|
|
117
117
|
if (this.list[path] === true) {
|
|
118
118
|
resolve(this.cached[path]);
|
|
119
119
|
return;
|
|
@@ -136,16 +136,13 @@ class NuLazyService {
|
|
|
136
136
|
resolve(item);
|
|
137
137
|
});
|
|
138
138
|
}
|
|
139
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
140
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
139
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NuLazyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
140
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NuLazyService, providedIn: 'root' }); }
|
|
141
141
|
}
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NuLazyService, decorators: [{
|
|
143
143
|
type: Injectable,
|
|
144
144
|
args: [{ providedIn: 'root' }]
|
|
145
|
-
}]
|
|
146
|
-
type: Inject,
|
|
147
|
-
args: [DOCUMENT]
|
|
148
|
-
}] }] });
|
|
145
|
+
}] });
|
|
149
146
|
|
|
150
147
|
/**
|
|
151
148
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-util-lazy.mjs","sources":["../../../../packages/lazy/lazy.service.ts","../../../../packages/lazy/ng-util-lazy.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, pipe } from 'rxjs';\nimport { filter, share } from 'rxjs/operators';\n\nexport type NuLazyResourcesType = 'script' | 'style';\n\nexport interface NuLazyResources {\n path: string;\n type: NuLazyResourcesType;\n /**\n * 回调名称\n */\n callback?: string;\n}\n\nexport interface NuLazyResult {\n path: string;\n status: 'ok' | 'error' | 'loading';\n type?: NuLazyResourcesType;\n error?: {};\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NuLazyService {\n private list: { [key: string]: boolean } = {};\n private cached: { [key: string]: NuLazyResult } = {};\n private _notify: BehaviorSubject<NuLazyResult[]> = new BehaviorSubject<NuLazyResult[]>([]);\n\n constructor(@Inject(DOCUMENT) private doc: any) {}\n\n private fixPaths(paths?: string | Array<string | NuLazyResources>): NuLazyResources[] {\n paths = paths || [];\n if (!Array.isArray(paths)) {\n paths = [paths];\n }\n return paths.map((p: string | NuLazyResources) => {\n const res = (typeof p === 'string' ? { path: p } : p) as NuLazyResources;\n if (!res.type) {\n res.type = res.path.endsWith('.js') || res.callback ? 'script' : 'style';\n }\n return res;\n });\n }\n\n /**\n * Monitor for the finished of `paths`\n *\n * - It's recommended to pass the value in accordance with the `load()` method\n */\n monitor(paths?: string | Array<string | NuLazyResources>): Observable<NuLazyResult[]> {\n const libs = this.fixPaths(paths);\n\n const pipes = [share(), filter((ls: NuLazyResult[]) => ls.length !== 0)];\n\n if (libs.length > 0) {\n pipes.push(\n filter(\n (ls: NuLazyResult[]) => ls.length === libs.length && ls.every(v => v.status === 'ok' && libs.find(lw => lw.path === v.path)),\n ),\n );\n }\n\n return this._notify.asObservable().pipe(pipe.apply(this, pipes as any) as any);\n }\n\n clear(): void {\n this.list = {};\n this.cached = {};\n }\n\n /**\n * Load the specified resources, includes `.js`, `.css`\n *\n * - The returned Promise does not mean that it was successfully loaded\n * - You can monitor load is success via `monitor()`\n */\n async load(paths: string | Array<string | NuLazyResources>): Promise<NuLazyResult[]> {\n paths = this.fixPaths(paths);\n\n return Promise.all(\n (paths as NuLazyResources[]).map(p =>\n p.type === 'script' ? this.loadScript(p.path, { callback: p.callback }) : this.loadStyle(p.path),\n ),\n ).then(res => {\n this._notify.next(res);\n return Promise.resolve(res);\n });\n }\n\n loadScript(path: string, options?: { innerContent?: string; callback?: string }): Promise<NuLazyResult> {\n const { innerContent } = { ...options };\n return new Promise(resolve => {\n if (this.list[path] === true) {\n resolve({ ...this.cached[path], status: 'loading' });\n return;\n }\n\n this.list[path] = true;\n const onSuccess = (item: NuLazyResult) => {\n if (item.status === 'ok' && options?.callback) {\n (window as any)[options?.callback] = () => {\n onSuccessTruth(item);\n };\n } else {\n onSuccessTruth(item);\n }\n };\n const onSuccessTruth = (item: NuLazyResult) => {\n item.type = 'script';\n this.cached[path] = item;\n resolve(item);\n this._notify.next([item]);\n };\n\n const node = this.doc.createElement('script') as any;\n node.type = 'text/javascript';\n node.src = path;\n node.charset = 'utf-8';\n if (innerContent) {\n node.innerHTML = innerContent;\n }\n if (node.readyState) {\n // IE\n node.onreadystatechange = () => {\n if (node.readyState === 'loaded' || node.readyState === 'complete') {\n node.onreadystatechange = null;\n onSuccess({\n path,\n status: 'ok',\n });\n }\n };\n } else {\n node.onload = () =>\n onSuccess({\n path,\n status: 'ok',\n });\n }\n node.onerror = (error: {}) =>\n onSuccess({\n path,\n status: 'error',\n error,\n });\n this.doc.getElementsByTagName('head')[0].appendChild(node);\n });\n }\n\n loadStyle(path: string, options?: { rel?: string; innerContent?: string }): Promise<NuLazyResult> {\n const { rel, innerContent } = { rel: 'stylesheet', ...options };\n return new Promise(resolve => {\n if (this.list[path] === true) {\n resolve(this.cached[path]);\n return;\n }\n\n this.list[path] = true;\n\n const node = this.doc.createElement('link') as HTMLLinkElement;\n node.rel = rel;\n node.type = 'text/css';\n node.href = path;\n if (innerContent) {\n node.innerHTML = innerContent;\n }\n this.doc.getElementsByTagName('head')[0].appendChild(node);\n const item: NuLazyResult = {\n path,\n status: 'ok',\n type: 'style',\n };\n this.cached[path] = item;\n resolve(item);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-util-lazy.mjs","sources":["../../../../packages/lazy/lazy.service.ts","../../../../packages/lazy/ng-util-lazy.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, pipe } from 'rxjs';\nimport { filter, share } from 'rxjs/operators';\n\nexport type NuLazyResourcesType = 'script' | 'style';\n\nexport interface NuLazyResources {\n path: string;\n type: NuLazyResourcesType;\n /**\n * 回调名称\n */\n callback?: string;\n}\n\nexport interface NuLazyResult {\n path: string;\n status: 'ok' | 'error' | 'loading';\n type?: NuLazyResourcesType;\n error?: {};\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NuLazyService {\n private readonly doc = inject(DOCUMENT);\n private list: { [key: string]: boolean } = {};\n private cached: { [key: string]: NuLazyResult } = {};\n private _notify: BehaviorSubject<NuLazyResult[]> = new BehaviorSubject<NuLazyResult[]>([]);\n\n private fixPaths(paths?: string | Array<string | NuLazyResources>): NuLazyResources[] {\n paths = paths || [];\n if (!Array.isArray(paths)) {\n paths = [paths];\n }\n return paths.map((p: string | NuLazyResources) => {\n const res = (typeof p === 'string' ? { path: p } : p) as NuLazyResources;\n if (!res.type) {\n res.type = res.path.endsWith('.js') || res.callback ? 'script' : 'style';\n }\n return res;\n });\n }\n\n /**\n * Monitor for the finished of `paths`\n *\n * - It's recommended to pass the value in accordance with the `load()` method\n */\n monitor(paths?: string | Array<string | NuLazyResources>): Observable<NuLazyResult[]> {\n const libs = this.fixPaths(paths);\n\n const pipes = [share(), filter((ls: NuLazyResult[]) => ls.length !== 0)];\n\n if (libs.length > 0) {\n pipes.push(\n filter(\n (ls: NuLazyResult[]) => ls.length === libs.length && ls.every((v) => v.status === 'ok' && libs.find((lw) => lw.path === v.path)),\n ),\n );\n }\n\n return this._notify.asObservable().pipe(pipe.apply(this, pipes as any) as any);\n }\n\n clear(): void {\n this.list = {};\n this.cached = {};\n }\n\n /**\n * Load the specified resources, includes `.js`, `.css`\n *\n * - The returned Promise does not mean that it was successfully loaded\n * - You can monitor load is success via `monitor()`\n */\n async load(paths: string | Array<string | NuLazyResources>): Promise<NuLazyResult[]> {\n paths = this.fixPaths(paths);\n\n return Promise.all(\n (paths as NuLazyResources[]).map((p) =>\n p.type === 'script' ? this.loadScript(p.path, { callback: p.callback }) : this.loadStyle(p.path),\n ),\n ).then((res) => {\n this._notify.next(res);\n return Promise.resolve(res);\n });\n }\n\n loadScript(path: string, options?: { innerContent?: string; callback?: string }): Promise<NuLazyResult> {\n const { innerContent } = { ...options };\n return new Promise((resolve) => {\n if (this.list[path] === true) {\n resolve({ ...this.cached[path], status: 'loading' });\n return;\n }\n\n this.list[path] = true;\n const onSuccess = (item: NuLazyResult) => {\n if (item.status === 'ok' && options?.callback) {\n (window as any)[options?.callback] = () => {\n onSuccessTruth(item);\n };\n } else {\n onSuccessTruth(item);\n }\n };\n const onSuccessTruth = (item: NuLazyResult) => {\n item.type = 'script';\n this.cached[path] = item;\n resolve(item);\n this._notify.next([item]);\n };\n\n const node = this.doc.createElement('script') as any;\n node.type = 'text/javascript';\n node.src = path;\n node.charset = 'utf-8';\n if (innerContent) {\n node.innerHTML = innerContent;\n }\n if (node.readyState) {\n // IE\n node.onreadystatechange = () => {\n if (node.readyState === 'loaded' || node.readyState === 'complete') {\n node.onreadystatechange = null;\n onSuccess({\n path,\n status: 'ok',\n });\n }\n };\n } else {\n node.onload = () =>\n onSuccess({\n path,\n status: 'ok',\n });\n }\n node.onerror = (error: {}) =>\n onSuccess({\n path,\n status: 'error',\n error,\n });\n this.doc.getElementsByTagName('head')[0].appendChild(node);\n });\n }\n\n loadStyle(path: string, options?: { rel?: string; innerContent?: string }): Promise<NuLazyResult> {\n const { rel, innerContent } = { rel: 'stylesheet', ...options };\n return new Promise((resolve) => {\n if (this.list[path] === true) {\n resolve(this.cached[path]);\n return;\n }\n\n this.list[path] = true;\n\n const node = this.doc.createElement('link') as HTMLLinkElement;\n node.rel = rel;\n node.type = 'text/css';\n node.href = path;\n if (innerContent) {\n node.innerHTML = innerContent;\n }\n this.doc.getElementsByTagName('head')[0].appendChild(node);\n const item: NuLazyResult = {\n path,\n status: 'ok',\n type: 'style',\n };\n this.cached[path] = item;\n resolve(item);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAwBa,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAA,IAAA,GAA+B,EAAE;QACrC,IAAM,CAAA,MAAA,GAAoC,EAAE;AAC5C,QAAA,IAAA,CAAA,OAAO,GAAoC,IAAI,eAAe,CAAiB,EAAE,CAAC;AAoJ3F;AAlJS,IAAA,QAAQ,CAAC,KAAgD,EAAA;AAC/D,QAAA,KAAK,GAAG,KAAK,IAAI,EAAE;QACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,KAAK,GAAG,CAAC,KAAK,CAAC;;AAEjB,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAA2B,KAAI;YAC/C,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,QAAQ,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAoB;AACxE,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;gBACb,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,GAAG,QAAQ,GAAG,OAAO;;AAE1E,YAAA,OAAO,GAAG;AACZ,SAAC,CAAC;;AAGJ;;;;AAIG;AACH,IAAA,OAAO,CAAC,KAAgD,EAAA;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAEjC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,EAAkB,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAExE,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,KAAK,CAAC,IAAI,CACR,MAAM,CACJ,CAAC,EAAkB,KAAK,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CACjI,CACF;;AAGH,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAY,CAAQ,CAAC;;IAGhF,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE;AACd,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;;AAGlB;;;;;AAKG;IACH,MAAM,IAAI,CAAC,KAA+C,EAAA;AACxD,QAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAE5B,OAAO,OAAO,CAAC,GAAG,CACf,KAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,KACjC,CAAC,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CACjG,CACF,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AACb,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,YAAA,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AAC7B,SAAC,CAAC;;IAGJ,UAAU,CAAC,IAAY,EAAE,OAAsD,EAAA;QAC7E,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE;AACvC,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;AAC5B,gBAAA,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACpD;;AAGF,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;AACtB,YAAA,MAAM,SAAS,GAAG,CAAC,IAAkB,KAAI;gBACvC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,EAAE,QAAQ,EAAE;AAC5C,oBAAA,MAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAK;wBACxC,cAAc,CAAC,IAAI,CAAC;AACtB,qBAAC;;qBACI;oBACL,cAAc,CAAC,IAAI,CAAC;;AAExB,aAAC;AACD,YAAA,MAAM,cAAc,GAAG,CAAC,IAAkB,KAAI;AAC5C,gBAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI;gBACxB,OAAO,CAAC,IAAI,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3B,aAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAQ;AACpD,YAAA,IAAI,CAAC,IAAI,GAAG,iBAAiB;AAC7B,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;YACtB,IAAI,YAAY,EAAE;AAChB,gBAAA,IAAI,CAAC,SAAS,GAAG,YAAY;;AAE/B,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE;;AAEnB,gBAAA,IAAI,CAAC,kBAAkB,GAAG,MAAK;AAC7B,oBAAA,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU,EAAE;AAClE,wBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,wBAAA,SAAS,CAAC;4BACR,IAAI;AACJ,4BAAA,MAAM,EAAE,IAAI;AACb,yBAAA,CAAC;;AAEN,iBAAC;;iBACI;AACL,gBAAA,IAAI,CAAC,MAAM,GAAG,MACZ,SAAS,CAAC;oBACR,IAAI;AACJ,oBAAA,MAAM,EAAE,IAAI;AACb,iBAAA,CAAC;;YAEN,IAAI,CAAC,OAAO,GAAG,CAAC,KAAS,KACvB,SAAS,CAAC;gBACR,IAAI;AACJ,gBAAA,MAAM,EAAE,OAAO;gBACf,KAAK;AACN,aAAA,CAAC;AACJ,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;AAC5D,SAAC,CAAC;;IAGJ,SAAS,CAAC,IAAY,EAAE,OAAiD,EAAA;AACvE,QAAA,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE;AAC/D,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC1B;;AAGF,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;YAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAoB;AAC9D,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,YAAA,IAAI,CAAC,IAAI,GAAG,UAAU;AACtB,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;YAChB,IAAI,YAAY,EAAE;AAChB,gBAAA,IAAI,CAAC,SAAS,GAAG,YAAY;;AAE/B,YAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;AAC1D,YAAA,MAAM,IAAI,GAAiB;gBACzB,IAAI;AACJ,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,IAAI,EAAE,OAAO;aACd;AACD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI;YACxB,OAAO,CAAC,IAAI,CAAC;AACf,SAAC,CAAC;;iIAtJO,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA,CAAA;;2FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACvBlC;;AAEG;;;;"}
|
package/lazy.service.d.ts
CHANGED
|
@@ -16,11 +16,10 @@ export interface NuLazyResult {
|
|
|
16
16
|
error?: {};
|
|
17
17
|
}
|
|
18
18
|
export declare class NuLazyService {
|
|
19
|
-
private doc;
|
|
19
|
+
private readonly doc;
|
|
20
20
|
private list;
|
|
21
21
|
private cached;
|
|
22
22
|
private _notify;
|
|
23
|
-
constructor(doc: any);
|
|
24
23
|
private fixPaths;
|
|
25
24
|
/**
|
|
26
25
|
* Monitor for the finished of `paths`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-util/lazy",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "19.0.0",
|
|
4
4
|
"author": "cipchk<cipchk@qq.com>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -28,8 +28,6 @@
|
|
|
28
28
|
},
|
|
29
29
|
".": {
|
|
30
30
|
"types": "./index.d.ts",
|
|
31
|
-
"esm2022": "./esm2022/ng-util-lazy.mjs",
|
|
32
|
-
"esm": "./esm2022/ng-util-lazy.mjs",
|
|
33
31
|
"default": "./fesm2022/ng-util-lazy.mjs"
|
|
34
32
|
}
|
|
35
33
|
},
|
package/esm2022/lazy.service.mjs
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, pipe } from 'rxjs';
|
|
4
|
-
import { filter, share } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class NuLazyService {
|
|
7
|
-
constructor(doc) {
|
|
8
|
-
this.doc = doc;
|
|
9
|
-
this.list = {};
|
|
10
|
-
this.cached = {};
|
|
11
|
-
this._notify = new BehaviorSubject([]);
|
|
12
|
-
}
|
|
13
|
-
fixPaths(paths) {
|
|
14
|
-
paths = paths || [];
|
|
15
|
-
if (!Array.isArray(paths)) {
|
|
16
|
-
paths = [paths];
|
|
17
|
-
}
|
|
18
|
-
return paths.map((p) => {
|
|
19
|
-
const res = (typeof p === 'string' ? { path: p } : p);
|
|
20
|
-
if (!res.type) {
|
|
21
|
-
res.type = res.path.endsWith('.js') || res.callback ? 'script' : 'style';
|
|
22
|
-
}
|
|
23
|
-
return res;
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Monitor for the finished of `paths`
|
|
28
|
-
*
|
|
29
|
-
* - It's recommended to pass the value in accordance with the `load()` method
|
|
30
|
-
*/
|
|
31
|
-
monitor(paths) {
|
|
32
|
-
const libs = this.fixPaths(paths);
|
|
33
|
-
const pipes = [share(), filter((ls) => ls.length !== 0)];
|
|
34
|
-
if (libs.length > 0) {
|
|
35
|
-
pipes.push(filter((ls) => ls.length === libs.length && ls.every(v => v.status === 'ok' && libs.find(lw => lw.path === v.path))));
|
|
36
|
-
}
|
|
37
|
-
return this._notify.asObservable().pipe(pipe.apply(this, pipes));
|
|
38
|
-
}
|
|
39
|
-
clear() {
|
|
40
|
-
this.list = {};
|
|
41
|
-
this.cached = {};
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Load the specified resources, includes `.js`, `.css`
|
|
45
|
-
*
|
|
46
|
-
* - The returned Promise does not mean that it was successfully loaded
|
|
47
|
-
* - You can monitor load is success via `monitor()`
|
|
48
|
-
*/
|
|
49
|
-
async load(paths) {
|
|
50
|
-
paths = this.fixPaths(paths);
|
|
51
|
-
return Promise.all(paths.map(p => p.type === 'script' ? this.loadScript(p.path, { callback: p.callback }) : this.loadStyle(p.path))).then(res => {
|
|
52
|
-
this._notify.next(res);
|
|
53
|
-
return Promise.resolve(res);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
loadScript(path, options) {
|
|
57
|
-
const { innerContent } = { ...options };
|
|
58
|
-
return new Promise(resolve => {
|
|
59
|
-
if (this.list[path] === true) {
|
|
60
|
-
resolve({ ...this.cached[path], status: 'loading' });
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
this.list[path] = true;
|
|
64
|
-
const onSuccess = (item) => {
|
|
65
|
-
if (item.status === 'ok' && options?.callback) {
|
|
66
|
-
window[options?.callback] = () => {
|
|
67
|
-
onSuccessTruth(item);
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
onSuccessTruth(item);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
const onSuccessTruth = (item) => {
|
|
75
|
-
item.type = 'script';
|
|
76
|
-
this.cached[path] = item;
|
|
77
|
-
resolve(item);
|
|
78
|
-
this._notify.next([item]);
|
|
79
|
-
};
|
|
80
|
-
const node = this.doc.createElement('script');
|
|
81
|
-
node.type = 'text/javascript';
|
|
82
|
-
node.src = path;
|
|
83
|
-
node.charset = 'utf-8';
|
|
84
|
-
if (innerContent) {
|
|
85
|
-
node.innerHTML = innerContent;
|
|
86
|
-
}
|
|
87
|
-
if (node.readyState) {
|
|
88
|
-
// IE
|
|
89
|
-
node.onreadystatechange = () => {
|
|
90
|
-
if (node.readyState === 'loaded' || node.readyState === 'complete') {
|
|
91
|
-
node.onreadystatechange = null;
|
|
92
|
-
onSuccess({
|
|
93
|
-
path,
|
|
94
|
-
status: 'ok',
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
node.onload = () => onSuccess({
|
|
101
|
-
path,
|
|
102
|
-
status: 'ok',
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
node.onerror = (error) => onSuccess({
|
|
106
|
-
path,
|
|
107
|
-
status: 'error',
|
|
108
|
-
error,
|
|
109
|
-
});
|
|
110
|
-
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
loadStyle(path, options) {
|
|
114
|
-
const { rel, innerContent } = { rel: 'stylesheet', ...options };
|
|
115
|
-
return new Promise(resolve => {
|
|
116
|
-
if (this.list[path] === true) {
|
|
117
|
-
resolve(this.cached[path]);
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
this.list[path] = true;
|
|
121
|
-
const node = this.doc.createElement('link');
|
|
122
|
-
node.rel = rel;
|
|
123
|
-
node.type = 'text/css';
|
|
124
|
-
node.href = path;
|
|
125
|
-
if (innerContent) {
|
|
126
|
-
node.innerHTML = innerContent;
|
|
127
|
-
}
|
|
128
|
-
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
|
129
|
-
const item = {
|
|
130
|
-
path,
|
|
131
|
-
status: 'ok',
|
|
132
|
-
type: 'style',
|
|
133
|
-
};
|
|
134
|
-
this.cached[path] = item;
|
|
135
|
-
resolve(item);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NuLazyService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
139
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NuLazyService, providedIn: 'root' }); }
|
|
140
|
-
}
|
|
141
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NuLazyService, decorators: [{
|
|
142
|
-
type: Injectable,
|
|
143
|
-
args: [{ providedIn: 'root' }]
|
|
144
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
145
|
-
type: Inject,
|
|
146
|
-
args: [DOCUMENT]
|
|
147
|
-
}] }] });
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF6eS9sYXp5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBcUIvQyxNQUFNLE9BQU8sYUFBYTtJQUt4QixZQUFzQyxHQUFRO1FBQVIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUp0QyxTQUFJLEdBQStCLEVBQUUsQ0FBQztRQUN0QyxXQUFNLEdBQW9DLEVBQUUsQ0FBQztRQUM3QyxZQUFPLEdBQW9DLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztJQUUxQyxDQUFDO0lBRTFDLFFBQVEsQ0FBQyxLQUFnRDtRQUMvRCxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUEyQixFQUFFLEVBQUU7WUFDL0MsTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQW9CLENBQUM7WUFDekUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxHQUFHLENBQUMsSUFBSSxH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LEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFvQixDQUFDO1lBQy9ELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7WUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7WUFDaEMsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNELE1BQU0sSUFBSSxHQUFpQjtnQkFDekIsSUFBSTtnQkFDSixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsT0FBTzthQUNkLENBQUM7WUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztZQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2tJQXhKVSxhQUFhLGtCQUtKLFFBQVE7c0lBTGpCLGFBQWEsY0FEQSxNQUFNOzs0RkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQU1uQixNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgcGlwZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzaGFyZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgTnVMYXp5UmVzb3VyY2VzVHlwZSA9ICdzY3JpcHQnIHwgJ3N0eWxlJztcblxuZXhwb3J0IGludGVyZmFjZSBOdUxhenlSZXNvdXJjZXMge1xuICBwYXRoOiBzdHJpbmc7XG4gIHR5cGU6IE51TGF6eVJlc291cmNlc1R5cGU7XG4gIC8qKlxuICAgKiDlm57osIPlkI3np7BcbiAgICovXG4gIGNhbGxiYWNrPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51TGF6eVJlc3VsdCB7XG4gIHBhdGg6IHN0cmluZztcbiAgc3RhdHVzOiAnb2snIHwgJ2Vycm9yJyB8ICdsb2FkaW5nJztcbiAgdHlwZT86IE51TGF6eVJlc291cmNlc1R5cGU7XG4gIGVycm9yPzoge307XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTnVMYXp5U2VydmljZSB7XG4gIHByaXZhdGUgbGlzdDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgcHJpdmF0ZSBjYWNoZWQ6IHsgW2tleTogc3RyaW5nXTogTnVMYXp5UmVzdWx0IH0gPSB7fTtcbiAgcHJpdmF0ZSBfbm90aWZ5OiBCZWhhdmlvclN1YmplY3Q8TnVMYXp5UmVzdWx0W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOdUxhenlSZXN1bHRbXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jOiBhbnkpIHt9XG5cbiAgcHJpdmF0ZSBmaXhQYXRocyhwYXRocz86IHN0cmluZyB8IEFycmF5PHN0cmluZyB8IE51TGF6eVJlc291cmNlcz4pOiBOdUxhenlSZXNvdXJjZXNbXSB7XG4gICAgcGF0aHMgPSBwYXRocyB8fCBbXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGF0aHMpKSB7XG4gICAgICBwYXRocyA9IFtwYXRoc107XG4gICAgfVxuICAgIHJldHVybiBwYXRocy5tYXAoKHA6IHN0cmluZyB8IE51TGF6eVJlc291cmNlcykgPT4ge1xuICAgICAgY29uc3QgcmVzID0gKHR5cGVvZiBwID09PSAnc3RyaW5nJyA/IHsgcGF0aDogcCB9IDogcCkgYXMgTnVMYXp5UmVzb3VyY2VzO1xuICAgICAgaWYgKCFyZXMudHlwZSkge1xuICAgICAgICByZXMudHlwZSA9IHJlcy5wYXRoLmVuZHNXaXRoKCcuanMnKSB8fCByZXMuY2FsbGJhY2sgPyAnc2NyaXB0JyA6ICdzdHlsZSc7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vbml0b3IgZm9yIHRoZSBmaW5pc2hlZCBvZiBgcGF0aHNgXG4gICAqXG4gICAqIC0gSXQncyByZWNvbW1lbmRlZCB0byBwYXNzIHRoZSB2YWx1ZSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGBsb2FkKClgIG1ldGhvZFxuICAgKi9cbiAgbW9uaXRvcihwYXRocz86IHN0cmluZyB8IEFycmF5PHN0cmluZyB8IE51TGF6eVJlc291cmNlcz4pOiBPYnNlcnZhYmxlPE51TGF6eVJlc3VsdFtdPiB7XG4gICAgY29uc3QgbGlicyA9IHRoaXMuZml4UGF0aHMocGF0aHMpO1xuXG4gICAgY29uc3QgcGlwZXMgPSBbc2hhcmUoKSwgZmlsdGVyKChsczogTnVMYXp5UmVzdWx0W10pID0+IGxzLmxlbmd0aCAhPT0gMCldO1xuXG4gICAgaWYgKGxpYnMubGVuZ3RoID4gMCkge1xuICAgICAgcGlwZXMucHVzaChcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChsczogTnVMYXp5UmVzdWx0W10pID0+IGxzLmxlbmd0aCA9PT0gbGlicy5sZW5ndGggJiYgbHMuZXZlcnkodiA9PiB2LnN0YXR1cyA9PT0gJ29rJyAmJiBsaWJzLmZpbmQobHcgPT4gbHcucGF0aCA9PT0gdi5wYXRoKSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9ub3RpZnkuYXNPYnNlcnZhYmxlKCkucGlwZShwaXBlLmFwcGx5KHRoaXMsIHBpcGVzIGFzIGFueSkgYXMgYW55KTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdCA9IHt9O1xuICAgIHRoaXMuY2FjaGVkID0ge307XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgc3BlY2lmaWVkIHJlc291cmNlcywgaW5jbHVkZXMgYC5qc2AsIGAuY3NzYFxuICAgKlxuICAgKiAtIFRoZSByZXR1cm5lZCBQcm9taXNlIGRvZXMgbm90IG1lYW4gdGhhdCBpdCB3YXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZFxuICAgKiAtIFlvdSBjYW4gbW9uaXRvciBsb2FkIGlzIHN1Y2Nlc3MgdmlhIGBtb25pdG9yKClgXG4gICAqL1xuICBhc3luYyBsb2FkKHBhdGhzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmcgfCBOdUxhenlSZXNvdXJjZXM+KTogUHJvbWlzZTxOdUxhenlSZXN1bHRbXT4ge1xuICAgIHBhdGhzID0gdGhpcy5maXhQYXRocyhwYXRocyk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICAocGF0aHMgYXMgTnVMYXp5UmVzb3VyY2VzW10pLm1hcChwID0+XG4gICAgICAgIHAudHlwZSA9PT0gJ3NjcmlwdCcgPyB0aGlzLmxvYWRTY3JpcHQocC5wYXRoLCB7IGNhbGxiYWNrOiBwLmNhbGxiYWNrIH0pIDogdGhpcy5sb2FkU3R5bGUocC5wYXRoKSxcbiAgICAgICksXG4gICAgKS50aGVuKHJlcyA9PiB7XG4gICAgICB0aGlzLl9ub3RpZnkubmV4dChyZXMpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZFNjcmlwdChwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiB7IGlubmVyQ29udGVudD86IHN0cmluZzsgY2FsbGJhY2s/OiBzdHJpbmcgfSk6IFByb21pc2U8TnVMYXp5UmVzdWx0PiB7XG4gICAgY29uc3QgeyBpbm5lckNvbnRlbnQgfSA9IHsgLi4ub3B0aW9ucyB9O1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICh0aGlzLmxpc3RbcGF0aF0gPT09IHRydWUpIHtcbiAgICAgICAgcmVzb2x2ZSh7IC4uLnRoaXMuY2FjaGVkW3BhdGhdLCBzdGF0dXM6ICdsb2FkaW5nJyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxpc3RbcGF0aF0gPSB0cnVlO1xuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGl0ZW06IE51TGF6eVJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5zdGF0dXMgPT09ICdvaycgJiYgb3B0aW9ucz8uY2FsbGJhY2spIHtcbiAgICAgICAgICAod2luZG93IGFzIGFueSlbb3B0aW9ucz8uY2FsbGJhY2tdID0gKCkgPT4ge1xuICAgICAgICAgICAgb25TdWNjZXNzVHJ1dGgoaXRlbSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvblN1Y2Nlc3NUcnV0aChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG9uU3VjY2Vzc1RydXRoID0gKGl0ZW06IE51TGF6eVJlc3VsdCkgPT4ge1xuICAgICAgICBpdGVtLnR5cGUgPSAnc2NyaXB0JztcbiAgICAgICAgdGhpcy5jYWNoZWRbcGF0aF0gPSBpdGVtO1xuICAgICAgICByZXNvbHZlKGl0ZW0pO1xuICAgICAgICB0aGlzLl9ub3RpZnkubmV4dChbaXRlbV0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpIGFzIGFueTtcbiAgICAgIG5vZGUudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgbm9kZS5zcmMgPSBwYXRoO1xuICAgICAgbm9kZS5jaGFyc2V0ID0gJ3V0Zi04JztcbiAgICAgIGlmIChpbm5lckNvbnRlbnQpIHtcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBpbm5lckNvbnRlbnQ7XG4gICAgICB9XG4gICAgICBpZiAobm9kZS5yZWFkeVN0YXRlKSB7XG4gICAgICAgIC8vIElFXG4gICAgICAgIG5vZGUub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChub2RlLnJlYWR5U3RhdGUgPT09ICdsb2FkZWQnIHx8IG5vZGUucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICAgICAgbm9kZS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsO1xuICAgICAgICAgICAgb25TdWNjZXNzKHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgc3RhdHVzOiAnb2snLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5vbmxvYWQgPSAoKSA9PlxuICAgICAgICAgIG9uU3VjY2Vzcyh7XG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgc3RhdHVzOiAnb2snLFxuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbm9kZS5vbmVycm9yID0gKGVycm9yOiB7fSkgPT5cbiAgICAgICAgb25TdWNjZXNzKHtcbiAgICAgICAgICBwYXRoLFxuICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLmRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKG5vZGUpO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZFN0eWxlKHBhdGg6IHN0cmluZywgb3B0aW9ucz86IHsgcmVsPzogc3RyaW5nOyBpbm5lckNvbnRlbnQ/OiBzdHJpbmcgfSk6IFByb21pc2U8TnVMYXp5UmVzdWx0PiB7XG4gICAgY29uc3QgeyByZWwsIGlubmVyQ29udGVudCB9ID0geyByZWw6ICdzdHlsZXNoZWV0JywgLi4ub3B0aW9ucyB9O1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICh0aGlzLmxpc3RbcGF0aF0gPT09IHRydWUpIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmNhY2hlZFtwYXRoXSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5saXN0W3BhdGhdID0gdHJ1ZTtcblxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZG9jLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKSBhcyBIVE1MTGlua0VsZW1lbnQ7XG4gICAgICBub2RlLnJlbCA9IHJlbDtcbiAgICAgIG5vZGUudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgICBub2RlLmhyZWYgPSBwYXRoO1xuICAgICAgaWYgKGlubmVyQ29udGVudCkge1xuICAgICAgICBub2RlLmlubmVySFRNTCA9IGlubmVyQ29udGVudDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICBjb25zdCBpdGVtOiBOdUxhenlSZXN1bHQgPSB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHN0YXR1czogJ29rJyxcbiAgICAgICAgdHlwZTogJ3N0eWxlJyxcbiAgICAgIH07XG4gICAgICB0aGlzLmNhY2hlZFtwYXRoXSA9IGl0ZW07XG4gICAgICByZXNvbHZlKGl0ZW0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
package/esm2022/ng-util-lazy.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdXRpbC1sYXp5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbGF6eS9uZy11dGlsLWxhenkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './lazy.service';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2xhenkvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXp5LnNlcnZpY2UnO1xuIl19
|