Initial commit

This commit is contained in:
2025-03-07 19:22:02 +01:00
commit 4a98255d83
55743 changed files with 5280367 additions and 0 deletions
@@ -0,0 +1,8 @@
import { ManifestInfo } from "../manifestInfo";
export declare abstract class ManifestHandler {
constructor(manifestPath: string);
abstract modifyManifest(guid?: string, displayName?: string): Promise<any>;
abstract parseManifest(): Promise<ManifestInfo>;
abstract writeManifestData(manifestData: any): Promise<void>;
manifestPath: string;
}
@@ -0,0 +1,12 @@
"use strict";
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
Object.defineProperty(exports, "__esModule", { value: true });
exports.ManifestHandler = void 0;
class ManifestHandler {
constructor(manifestPath) {
this.manifestPath = manifestPath;
}
}
exports.ManifestHandler = ManifestHandler;
//# sourceMappingURL=manifestHandler.js.map
@@ -0,0 +1 @@
{"version":3,"file":"manifestHandler.js","sourceRoot":"","sources":["../../src/manifestHandler/manifestHandler.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,kCAAkC;;;AAIlC,MAAsB,eAAe;IACnC,YAAY,YAAoB;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CAMF;AATD,0CASC"}
@@ -0,0 +1,9 @@
import { devPreview } from "@microsoft/teams-manifest";
import { ManifestInfo } from "../manifestInfo";
import { ManifestHandler } from "./manifestHandler";
export declare class ManifestHandlerJson extends ManifestHandler {
modifyManifest(guid?: string, displayName?: string): Promise<devPreview.DevPreviewSchema>;
parseManifest(): Promise<ManifestInfo>;
getManifestInfo(appManifest: devPreview.DevPreviewSchema): ManifestInfo;
writeManifestData(manifestData: devPreview.DevPreviewSchema): Promise<void>;
}
@@ -0,0 +1,79 @@
"use strict";
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ManifestHandlerJson = void 0;
const teams_manifest_1 = require("@microsoft/teams-manifest");
const uuid_1 = require("uuid");
const manifestInfo_1 = require("../manifestInfo");
const manifestHandler_1 = require("./manifestHandler");
class ManifestHandlerJson extends manifestHandler_1.ManifestHandler {
modifyManifest(guid, displayName) {
return __awaiter(this, void 0, void 0, function* () {
try {
const appManifest = yield teams_manifest_1.ManifestUtil.loadFromPath(this.manifestPath);
if (typeof guid !== "undefined") {
if (!guid || guid === "random") {
guid = (0, uuid_1.v4)();
}
appManifest.id = guid;
}
if (typeof displayName !== "undefined") {
appManifest.name.short = displayName;
}
return appManifest;
}
catch (err) {
throw new Error(`Unable to modify json data for manifest file: ${this.manifestPath}. \n${err}`);
}
});
}
parseManifest() {
return __awaiter(this, void 0, void 0, function* () {
try {
const file = yield teams_manifest_1.ManifestUtil.loadFromPath(this.manifestPath);
return this.getManifestInfo(file);
}
catch (err) {
throw new Error(`Unable to read data for manifest file: ${this.manifestPath}. \n${err}`);
}
});
}
getManifestInfo(appManifest) {
var _a, _b, _c, _d, _e, _f, _g;
const manifestInfo = new manifestInfo_1.ManifestInfo();
// Need to handle mutliple version of the prerelease json manifest schema
const extensionElement = (_a = appManifest.extensions) === null || _a === void 0 ? void 0 : _a[0];
manifestInfo.id = appManifest.id;
manifestInfo.appDomains = appManifest.validDomains;
manifestInfo.defaultLocale = (_b = appManifest.localizationInfo) === null || _b === void 0 ? void 0 : _b.defaultLanguageTag;
manifestInfo.description = appManifest.description.short;
manifestInfo.displayName = appManifest.name.short;
manifestInfo.highResolutionIconUrl = appManifest.icons.color;
manifestInfo.hosts = (_c = extensionElement === null || extensionElement === void 0 ? void 0 : extensionElement.requirements) === null || _c === void 0 ? void 0 : _c.scopes;
manifestInfo.iconUrl = appManifest.icons.color;
manifestInfo.officeAppType = "TaskPaneApp"; // Should check "ContentRuntimes" in JSON the tell if the Office type is "ContentApp". Hard code here because web extension will be removed after all.
manifestInfo.permissions = (_g = (_f = (_e = (_d = appManifest.authorization) === null || _d === void 0 ? void 0 : _d.permissions) === null || _e === void 0 ? void 0 : _e.resourceSpecific) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.name;
manifestInfo.providerName = appManifest.developer.name;
manifestInfo.supportUrl = appManifest.developer.websiteUrl;
manifestInfo.version = appManifest.version;
manifestInfo.manifestType = manifestInfo_1.ManifestType.JSON;
return manifestInfo;
}
writeManifestData(manifestData) {
return __awaiter(this, void 0, void 0, function* () {
yield teams_manifest_1.ManifestUtil.writeToPath(this.manifestPath, manifestData);
});
}
}
exports.ManifestHandlerJson = ManifestHandlerJson;
//# sourceMappingURL=manifestHandlerJson.js.map
@@ -0,0 +1 @@
{"version":3,"file":"manifestHandlerJson.js","sourceRoot":"","sources":["../../src/manifestHandler/manifestHandlerJson.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
import * as xmlMethods from "../xml";
import { ManifestInfo } from "../manifestInfo";
import { ManifestHandler } from "./manifestHandler";
export type Xml = xmlMethods.Xml;
export declare class ManifestHandlerXml extends ManifestHandler {
modifyManifest(guid?: string, displayName?: string): Promise<Xml>;
parseManifest(): Promise<ManifestInfo>;
parseXmlAsync(): Promise<Xml>;
readFromManifestFile(): Promise<string>;
setModifiedXmlData(xml: any, guid: string | undefined, displayName: string | undefined): void;
writeManifestData(manifestData: any): Promise<void>;
}
@@ -0,0 +1,159 @@
"use strict";
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ManifestHandlerXml = void 0;
const fs_1 = __importDefault(require("fs"));
const util_1 = __importDefault(require("util"));
const uuid_1 = require("uuid");
const xml2js_1 = __importDefault(require("xml2js"));
const xmlMethods = __importStar(require("../xml"));
const manifestInfo_1 = require("../manifestInfo");
const manifestHandler_1 = require("./manifestHandler");
const writeFileAsync = util_1.default.promisify(fs_1.default.writeFile);
class ManifestHandlerXml extends manifestHandler_1.ManifestHandler {
modifyManifest(guid, displayName) {
return __awaiter(this, void 0, void 0, function* () {
try {
const manifestXml = yield this.parseXmlAsync();
this.setModifiedXmlData(manifestXml.OfficeApp, guid, displayName);
return manifestXml;
}
catch (err) {
throw new Error(`Unable to modify xml data for manifest file: ${this.manifestPath}.\n${err}`);
}
});
}
parseManifest() {
return __awaiter(this, void 0, void 0, function* () {
const xml = yield this.parseXmlAsync();
const manifest = new manifestInfo_1.ManifestInfo();
const officeApp = xml.OfficeApp;
if (officeApp) {
const defaultSettingsXml = xmlMethods.getXmlElement(officeApp, "DefaultSettings");
manifest.id = xmlMethods.getXmlElementValue(officeApp, "Id");
manifest.allowSnapshot = xmlMethods.getXmlElementValue(officeApp, "AllowSnapshot");
manifest.alternateId = xmlMethods.getXmlElementValue(officeApp, "AlternateId");
manifest.appDomains = xmlMethods.getXmlElementsValue(officeApp, "AppDomains", "AppDomain");
manifest.defaultLocale = xmlMethods.getXmlElementValue(officeApp, "DefaultLocale");
manifest.description = xmlMethods.getXmlElementAttributeValue(officeApp, "Description");
manifest.displayName = xmlMethods.getXmlElementAttributeValue(officeApp, "DisplayName");
manifest.highResolutionIconUrl = xmlMethods.getXmlElementAttributeValue(officeApp, "HighResolutionIconUrl");
manifest.hosts = xmlMethods.getXmlElementsAttributeValue(officeApp, "Hosts", "Host", "Name");
manifest.iconUrl = xmlMethods.getXmlElementAttributeValue(officeApp, "IconUrl");
manifest.officeAppType = xmlMethods.getXmlAttributeValue(officeApp, "xsi:type");
manifest.permissions = xmlMethods.getXmlElementValue(officeApp, "Permissions");
manifest.providerName = xmlMethods.getXmlElementValue(officeApp, "ProviderName");
manifest.supportUrl = xmlMethods.getXmlElementAttributeValue(officeApp, "SupportUrl");
manifest.version = xmlMethods.getXmlElementValue(officeApp, "Version");
manifest.manifestType = manifestInfo_1.ManifestType.XML;
if (defaultSettingsXml) {
const defaultSettings = new manifestInfo_1.DefaultSettings();
defaultSettings.requestedHeight = xmlMethods.getXmlElementValue(defaultSettingsXml, "RequestedHeight");
defaultSettings.requestedWidth = xmlMethods.getXmlElementValue(defaultSettingsXml, "RequestedWidth");
defaultSettings.sourceLocation = xmlMethods.getXmlElementAttributeValue(defaultSettingsXml, "SourceLocation");
manifest.defaultSettings = defaultSettings;
}
}
return manifest;
});
}
parseXmlAsync() {
return __awaiter(this, void 0, void 0, function* () {
// Needed declaration as `this` does not work inside the new Promise expression
const fileData = yield this.readFromManifestFile();
const manifestPath = this.manifestPath;
return new Promise(function (resolve, reject) {
xml2js_1.default.parseString(fileData, function (parseError, xml) {
if (parseError) {
reject(new Error(`Unable to parse the manifest file: ${manifestPath}. \n${parseError}`));
}
else {
resolve(xml);
}
});
});
});
}
readFromManifestFile() {
return __awaiter(this, void 0, void 0, function* () {
try {
const fileData = yield util_1.default.promisify(fs_1.default.readFile)(this.manifestPath, {
encoding: "utf8",
});
return fileData;
}
catch (err) {
throw new Error(`Unable to read data for manifest file: ${this.manifestPath}.\n${err}`);
}
});
}
setModifiedXmlData(xml, guid, displayName) {
if (typeof guid !== "undefined") {
if (!guid || guid === "random") {
guid = (0, uuid_1.v4)();
}
xmlMethods.setXmlElementValue(xml, "Id", guid);
}
if (typeof displayName !== "undefined") {
xmlMethods.setXmlElementAttributeValue(xml, "DisplayName", displayName);
}
}
writeManifestData(manifestData) {
return __awaiter(this, void 0, void 0, function* () {
let xml;
try {
// Generate xml for the manifest data.
const builder = new xml2js_1.default.Builder();
xml = builder.buildObject(manifestData);
}
catch (err) {
throw new Error(`Unable to generate xml for the manifest.\n${err}`);
}
try {
// Write the xml back to the manifest file.
yield writeFileAsync(this.manifestPath, xml);
}
catch (err) {
throw new Error(`Unable to write to file. ${this.manifestPath} \n${err}`);
}
});
}
}
exports.ManifestHandlerXml = ManifestHandlerXml;
//# sourceMappingURL=manifestHandlerXml.js.map
@@ -0,0 +1 @@
{"version":3,"file":"manifestHandlerXml.js","sourceRoot":"","sources":["../../src/manifestHandler/manifestHandlerXml.ts"],"names":[],"mappings":"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"}