UNPKG

onairos

Version:

The Onairos Library is a collection of functions that enable Applications to connect and communicate data with Onairos Identities via User Authorization. Integration for developers is seamless, simple and effective for all applications. LLM SDK capabiliti

197 lines (192 loc) 5.67 kB
const path = require('path'); const TerserPlugin = require('terser-webpack-plugin'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const CopyWebpackPlugin = require('copy-webpack-plugin'); const baseConfig = { externals: { react: { commonjs: 'react', commonjs2: 'react', amd: 'React', root: 'React' }, 'react-dom': { commonjs: 'react-dom', commonjs2: 'react-dom', amd: 'ReactDOM', root: 'ReactDOM' }, 'ajv': 'ajv', 'ajv/dist/runtime/validation_error': 'ajv/dist/runtime/validation_error', 'ajv/dist/runtime/equal': 'ajv/dist/runtime/equal', 'ajv/dist/runtime/ucs2length': 'ajv/dist/runtime/ucs2length', 'ajv/dist/runtime/uri': 'ajv/dist/runtime/uri', '@anthropic-ai/sdk': '@anthropic-ai/sdk', '@google/generative-ai': '@google/generative-ai', '@pinecone-database/pinecone': '@pinecone-database/pinecone', 'openai': 'openai' }, optimization: { minimize: true, minimizer: [ new TerserPlugin({ terserOptions: { compress: { dead_code: true, }, mangle: true, output: { comments: false, }, }, extractComments: false, }), ], }, devtool: process.env.NODE_ENV === 'production' ? false : 'source-map', module: { rules: [ { test: /\.jsx?$/, exclude: /node_modules/, use: { loader: 'babel-loader', options: { presets: ['@babel/preset-env', '@babel/preset-react'] } } }, { test: /\.(png|jpg|gif|svg)$/i, type: 'asset/resource', generator: { filename: 'static/[hash][ext][query]' } } ] }, resolve: { extensions: ['.js', '.jsx', '.mjs'], alias: { '@': path.resolve(__dirname, 'src'), }, fallback: { "crypto": require.resolve("crypto-browserify"), "stream": require.resolve("stream-browserify"), "assert": require.resolve("assert"), "http": require.resolve("stream-http"), "https": require.resolve("https-browserify"), "os": require.resolve("os-browserify/browser"), "url": require.resolve("url"), "zlib": require.resolve("browserify-zlib"), "path": require.resolve("path-browserify"), "vm": require.resolve("vm-browserify"), "fs": false, "net": false, "tls": false, "child_process": false } } }; // ES Module specific externals configuration const esmExternals = { react: 'react', 'react-dom': 'react-dom', 'ajv': 'ajv', 'ajv/dist/runtime/validation_error': 'ajv/dist/runtime/validation_error', 'ajv/dist/runtime/equal': 'ajv/dist/runtime/equal', 'ajv/dist/runtime/ucs2length': 'ajv/dist/runtime/ucs2length', 'ajv/dist/runtime/uri': 'ajv/dist/runtime/uri', '@anthropic-ai/sdk': '@anthropic-ai/sdk', '@google/generative-ai': '@google/generative-ai', '@pinecone-database/pinecone': '@pinecone-database/pinecone', 'openai': 'openai' }; module.exports = [ // UMD build for browsers { ...baseConfig, entry: { onairos: path.resolve(__dirname, 'src', 'onairos.jsx'), iframe: path.resolve(__dirname, 'src', 'iframe', 'data_request_page.js') }, output: { path: path.resolve(__dirname, 'dist'), filename: (pathData) => { return pathData.chunk.name === 'onairos' ? 'onairos.bundle.js' : '[name].bundle.js'; }, libraryTarget: 'umd', library: 'Onairos', globalObject: 'this', umdNamedDefine: true, publicPath: 'auto', }, plugins: [ new HtmlWebpackPlugin({ template: path.resolve(__dirname, 'src', 'iframe', 'data_request_iframe.html'), filename: 'data_request_iframe.html', chunks: ['iframe'], inject: true }), new CopyWebpackPlugin({ patterns: [ { from: path.resolve(__dirname, 'public', 'data_request_popup.html'), to: path.resolve(__dirname, 'dist', 'data_request_popup.html') }, { from: path.resolve(__dirname, 'public', 'oauth-callback.html'), to: path.resolve(__dirname, 'dist', 'oauth-callback.html') } ] }) ] }, // Laravel-specific build { ...baseConfig, entry: { 'onairos-laravel': path.resolve(__dirname, 'src', 'laravel', 'blade-helpers.js') }, output: { path: path.resolve(__dirname, 'dist'), filename: '[name].js', libraryTarget: 'umd', library: 'OnairosLaravel', globalObject: 'this', umdNamedDefine: true, }, externals: { // Laravel build shouldn't externalize React since blade-helpers.js doesn't use React 'ajv': 'ajv', 'ajv/dist/runtime/validation_error': 'ajv/dist/runtime/validation_error', 'ajv/dist/runtime/equal': 'ajv/dist/runtime/equal', 'ajv/dist/runtime/ucs2length': 'ajv/dist/runtime/ucs2length', 'ajv/dist/runtime/uri': 'ajv/dist/runtime/uri', '@anthropic-ai/sdk': '@anthropic-ai/sdk', '@google/generative-ai': '@google/generative-ai', '@pinecone-database/pinecone': '@pinecone-database/pinecone', 'openai': 'openai' } }, // ES Module build { ...baseConfig, entry: path.resolve(__dirname, 'src', 'onairos.jsx'), externals: esmExternals, experiments: { outputModule: true, }, output: { path: path.resolve(__dirname, 'dist'), filename: 'onairos.esm.js', library: { type: 'module' }, environment: { module: true } }, target: 'es2020' } ];