mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
In certain circonstances, a leading slash in the file paths created a incorrect unarchived project. fixes #57075 PR Close #59726
29 lines
814 B
TypeScript
29 lines
814 B
TypeScript
/*!
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.dev/license
|
|
*/
|
|
|
|
import {FileAndContent} from '../interfaces';
|
|
|
|
// TODO(josephperrott): Determine how we can load the fflate package dynamically again.
|
|
import {zip, strToU8} from 'fflate';
|
|
|
|
export async function generateZip(files: FileAndContent[]): Promise<Uint8Array> {
|
|
const filesObj: Record<string, Uint8Array> = {};
|
|
files.forEach(({path, content}) => {
|
|
filesObj[path] = typeof content === 'string' ? strToU8(content) : content;
|
|
});
|
|
|
|
return new Promise((resolve, reject) => {
|
|
zip(filesObj, (err, data) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(data);
|
|
}
|
|
});
|
|
});
|
|
}
|