mirror of
https://github.com/suitenumerique/meet.git
synced 2026-07-28 04:39:16 +00:00
4548f69de8
Provide the minimal components required to support an Outlook add-in: user authentication, JWT retrieval, and API calls to generate meeting links. This implementation is an early alpha: developer experience is limited, documentation is incomplete, and the solution is not white-labeled. It's too early to consider these parts ready to ship into production. As a result, it is currently only available within the DINUM frontend image.
128 lines
3.5 KiB
JavaScript
128 lines
3.5 KiB
JavaScript
/* eslint-disable no-undef */
|
|
|
|
const devCerts = require("office-addin-dev-certs");
|
|
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
const htmlWebpackInjectAttributesPlugin = require("html-webpack-inject-attributes-plugin");
|
|
|
|
async function getHttpsOptions() {
|
|
const httpsOptions = await devCerts.getHttpsServerOptions();
|
|
return { ca: httpsOptions.ca, key: httpsOptions.key, cert: httpsOptions.cert };
|
|
}
|
|
|
|
module.exports = async (env, options) => {
|
|
const config = {
|
|
devtool: "source-map",
|
|
entry: {
|
|
polyfill: ["core-js/stable", "regenerator-runtime/runtime"],
|
|
taskpane: ["./src/taskpane/taskpane.js", "./src/taskpane/taskpane.html"],
|
|
commands: "./src/commands/commands.js",
|
|
transit: ["./src/transit/transit.js", "./src/transit/transit.html"],
|
|
success: ["./src/success/success.js", "./src/success/success.html"],
|
|
},
|
|
output: {
|
|
clean: true,
|
|
},
|
|
resolve: {
|
|
extensions: [".html", ".js"],
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.js$/,
|
|
exclude: /node_modules/,
|
|
use: {
|
|
loader: "babel-loader",
|
|
},
|
|
},
|
|
{
|
|
test: /\.html$/,
|
|
exclude: /node_modules/,
|
|
use: {
|
|
loader: "html-loader",
|
|
options: {
|
|
sources: {
|
|
urlFilter: (attribute, value) => {
|
|
// Don't try to resolve the runtime-injected config
|
|
if (value.includes("config.js")) {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
test: /\.(png|jpg|jpeg|gif|ico)$/,
|
|
type: "asset/resource",
|
|
generator: {
|
|
filename: "assets/[name][ext][query]",
|
|
},
|
|
},
|
|
],
|
|
},
|
|
plugins: [
|
|
new HtmlWebpackPlugin({
|
|
filename: "taskpane.html",
|
|
template: "./src/taskpane/taskpane.html",
|
|
chunks: ["polyfill", "taskpane"],
|
|
scriptLoading: "defer",
|
|
attributes: {
|
|
nonce: "NONCE_PLACEHOLDER",
|
|
},
|
|
}),
|
|
new CopyWebpackPlugin({
|
|
patterns: [
|
|
{
|
|
from: "assets/*",
|
|
to: "assets/[name][ext][query]",
|
|
}
|
|
],
|
|
}),
|
|
new HtmlWebpackPlugin({
|
|
filename: "commands.html",
|
|
template: "./src/commands/commands.html",
|
|
chunks: ["polyfill", "commands"],
|
|
scriptLoading: "defer",
|
|
attributes: {
|
|
nonce: "NONCE_PLACEHOLDER",
|
|
},
|
|
}),
|
|
new HtmlWebpackPlugin({
|
|
filename: "transit.html",
|
|
template: "./src/transit/transit.html",
|
|
chunks: ["polyfill", "transit"],
|
|
scriptLoading: "defer",
|
|
attributes: {
|
|
nonce: "NONCE_PLACEHOLDER",
|
|
},
|
|
}),
|
|
new HtmlWebpackPlugin({
|
|
filename: "success.html",
|
|
template: "./src/success/success.html",
|
|
chunks: ["polyfill", "success"],
|
|
scriptLoading: "defer",
|
|
attributes: {
|
|
nonce: "NONCE_PLACEHOLDER",
|
|
},
|
|
}),
|
|
new htmlWebpackInjectAttributesPlugin(),
|
|
],
|
|
devServer: {
|
|
headers: {
|
|
"Access-Control-Allow-Origin": "*",
|
|
},
|
|
server: {
|
|
type: "https",
|
|
options:
|
|
env.WEBPACK_BUILD || options.https !== undefined
|
|
? options.https
|
|
: await getHttpsOptions(),
|
|
},
|
|
port: process.env.npm_package_config_dev_server_port || 3000,
|
|
},
|
|
};
|
|
|
|
return config;
|
|
}; |