Jelajahi Sumber

wip cdn maifests

Steven Fukase 4 tahun lalu
induk
melakukan
a0d99fc882

+ 31 - 0
packages/app/bin/cdn/cdn-resources-downloader.ts

@@ -19,6 +19,9 @@ export default class CdnResourcesDownloader {
     const cdnScriptResources: CdnResource[] = cdnManifests.js.map((manifest: CdnManifest) => {
     const cdnScriptResources: CdnResource[] = cdnManifests.js.map((manifest: CdnManifest) => {
       return { manifest, outDir: cdnLocalScriptRoot };
       return { manifest, outDir: cdnLocalScriptRoot };
     });
     });
+    const cdnGzResources: CdnResource[] = cdnManifests.gz.map((manifest: CdnManifest) => {
+      return { manifest, outDir: cdnLocalScriptRoot };
+    });
     const cdnStyleResources: CdnResource[] = cdnManifests.style.map((manifest) => {
     const cdnStyleResources: CdnResource[] = cdnManifests.style.map((manifest) => {
       return { manifest, outDir: cdnLocalStyleRoot };
       return { manifest, outDir: cdnLocalStyleRoot };
     });
     });
@@ -31,6 +34,7 @@ export default class CdnResourcesDownloader {
 
 
     return Promise.all([
     return Promise.all([
       this.downloadScripts(cdnScriptResources),
       this.downloadScripts(cdnScriptResources),
+      this.downloadGz(cdnGzResources),
       this.downloadStyles(cdnStyleResources, dlStylesOptions),
       this.downloadStyles(cdnStyleResources, dlStylesOptions),
     ]);
     ]);
   }
   }
@@ -61,6 +65,33 @@ export default class CdnResourcesDownloader {
     return Promise.all(promises);
     return Promise.all(promises);
   }
   }
 
 
+
+  /**
+   * Download gz files from CDN
+   * @param cdnResources JavaScript resource data
+   * @param options
+   */
+  private async downloadGz(cdnResources: CdnResource[], options?: any): Promise<any> {
+    logger.debug('Downloading scripts', cdnResources);
+
+    const opts = Object.assign({}, options);
+    const ext = opts.ext || 'gz';
+
+    const promises = cdnResources.map((cdnResource) => {
+      const { manifest } = cdnResource;
+
+      logger.info(`Processing CdnResource '${manifest.name}'`);
+
+      return downloadTo(
+        manifest.url,
+        cdnResource.outDir,
+        `${manifest.name}.${ext}`,
+      );
+    });
+
+    return Promise.all(promises);
+  }
+
   /**
   /**
    * Download style sheet file from CDN
    * Download style sheet file from CDN
    *  Assets in CSS is also downloaded
    *  Assets in CSS is also downloaded

+ 48 - 17
packages/app/resource/cdn-manifests.js

@@ -88,24 +88,55 @@ module.exports = {
         integrity: '',
         integrity: '',
       },
       },
     },
     },
+  ],
+  gz: [
     {
     {
-      name: 'kuromoji-dict',
-      url: 'https://cdn.jsdelivr.net/combine/'
-        + 'npm/kuromoji@0.1.2/dict/base.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/cc.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/check.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/tid_map.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/tid_pos.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/tid.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/unk_char.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/unk_compat.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/unk_invoke.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/unk_map.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/unk_pos.dat.gz,'
-        + 'npm/kuromoji@0.1.2/dict/unk.dat.gz',
-      args: {
-        integrity: '',
-      },
+      name: 'base.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/base.dat.gz,',
+    },
+    {
+      name: 'cc.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/cc.dat.gz,',
+    },
+    {
+      name: 'check.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/check.dat.gz,',
+    },
+    {
+      name: 'tid_map.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/tid_map.dat.gz,',
+    },
+    {
+      name: 'tid_pos.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/tid_pos.dat.gz,',
+    },
+    {
+      name: 'tid.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/tid.dat.gz,',
+    },
+    {
+      name: 'unk_char.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/unk_char.dat.gz,',
+    },
+    {
+      name: 'unk_compat.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/unk_compat.dat.gz,',
+    },
+    {
+      name: 'unk_invoke.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/unk_invoke.dat.gz,',
+    },
+    {
+      name: 'unk_map.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/unk_map.dat.gz,',
+    },
+    {
+      name: 'unk_pos.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/unk_pos.dat.gz,',
+    },
+    {
+      name: 'unk.dat',
+      url: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict/unk.dat.gz',
     },
     },
   ],
   ],
   style: [
   style: [

+ 5 - 0
packages/app/src/services/cdn-resources-service.js

@@ -57,6 +57,10 @@ class CdnResourcesService {
       const outDir = resolveFromRoot(cdnLocalScriptRoot);
       const outDir = resolveFromRoot(cdnLocalScriptRoot);
       return new CdnResource(manifest.name, manifest.url, outDir);
       return new CdnResource(manifest.name, manifest.url, outDir);
     });
     });
+    const cdnGzResources = this.cdnManifests.gz.map((manifest) => {
+      const outDir = resolveFromRoot(cdnLocalScriptRoot);
+      return new CdnResource(manifest.name, manifest.url, outDir);
+    });
     const cdnStyleResources = this.cdnManifests.style.map((manifest) => {
     const cdnStyleResources = this.cdnManifests.style.map((manifest) => {
       const outDir = resolveFromRoot(cdnLocalStyleRoot);
       const outDir = resolveFromRoot(cdnLocalStyleRoot);
       return new CdnResource(manifest.name, manifest.url, outDir);
       return new CdnResource(manifest.name, manifest.url, outDir);
@@ -70,6 +74,7 @@ class CdnResourcesService {
 
 
     return Promise.all([
     return Promise.all([
       cdnResourceDownloader.downloadScripts(cdnScriptResources),
       cdnResourceDownloader.downloadScripts(cdnScriptResources),
+      cdnResourceDownloader.downloadGz(cdnGzResources),
       cdnResourceDownloader.downloadStyles(cdnStyleResources, dlStylesOptions),
       cdnResourceDownloader.downloadStyles(cdnStyleResources, dlStylesOptions),
     ]);
     ]);
   }
   }