diff --git a/scripts/sdk/base-manifest.json b/scripts/sdk/base-manifest.json
new file mode 100644
index 00000000..829cd3a6
--- /dev/null
+++ b/scripts/sdk/base-manifest.json
@@ -0,0 +1,11 @@
+{
+ "name": "hydrogen-sdk",
+ "version": "0.0.1",
+ "main": "./hydrogen.cjs.js",
+ "exports": {
+ "import": "./hydrogen.es.js",
+ "require": "./hydrogen.cjs.js"
+ },
+ "files": [],
+ "types": "types/lib.d.ts"
+}
diff --git a/scripts/sdk/build.sh b/scripts/sdk/build.sh
index 71c98438..90b43534 100755
--- a/scripts/sdk/build.sh
+++ b/scripts/sdk/build.sh
@@ -1,3 +1,4 @@
-yarn run vite build -c vite.sdk-config.js
+yarn run vite build -c vite.sdk-assets-config.js
+yarn run vite build -c vite.sdk-lib-config.js
yarn tsc -p tsconfig-declaration.json
./scripts/sdk/create-manifest.js ./target/package.json
diff --git a/scripts/sdk/create-manifest.js b/scripts/sdk/create-manifest.js
index 93074c55..7a01de0a 100755
--- a/scripts/sdk/create-manifest.js
+++ b/scripts/sdk/create-manifest.js
@@ -1,21 +1,15 @@
#!/usr/bin/env node
const fs = require("fs");
-const baseManifest = JSON.parse(fs.readFileSync("package.json", "utf8"));
+const appManifest = require("../../package.json")
+const baseSDKManifest = require("./base-manifest.json")
const mergeOptions = require('merge-options');
const manifestExtension = {
- name: "hydrogen-sdk",
- main: "./hydrogen.cjs.js",
- exports: {
- import: "./hydrogen.es.js",
- require: "./hydrogen.cjs.js"
- },
- files: [],
- types: "types/lib.d.ts",
devDependencies: undefined,
scripts: undefined,
};
-const manifest = mergeOptions(baseManifest, manifestExtension);
+
+const manifest = mergeOptions(appManifest, baseSDKManifest, manifestExtension);
const json = JSON.stringify(manifest, undefined, 2);
const outFile = process.argv[2];
fs.writeFileSync(outFile, json, {encoding: "utf8"});
diff --git a/src/foo-index.html b/src/index.html
similarity index 54%
rename from src/foo-index.html
rename to src/index.html
index c6bfa098..bec701d9 100644
--- a/src/foo-index.html
+++ b/src/index.html
@@ -1,16 +1,13 @@
+
-
-
diff --git a/src/lib.ts b/src/lib.ts
index 6a5f6581..27290fb5 100644
--- a/src/lib.ts
+++ b/src/lib.ts
@@ -31,12 +31,3 @@ export {RoomViewModel} from "./domain/session/room/RoomViewModel.js";
export {RoomView} from "./platform/web/ui/session/room/RoomView.js";
export {TimelineViewModel} from "./domain/session/room/timeline/TimelineViewModel.js";
export {TimelineView} from "./platform/web/ui/session/room/TimelineView";
-
-// @ts-ignore
-export * from "./platform/web/ui/css/main.css";
-// @ts-ignore
-export * from "./platform/web/ui/css/themes/element/theme.css";
-// @ts-ignore
-import _downloadSandboxPath from "./platform/web/assets/download-sandbox.html?url";
-// @ts-ignore
-import _workerPath from "./platform/web/worker/main.js?url";
diff --git a/vite.common-config.js b/vite.common-config.js
index 08d17b3a..b253d1fe 100644
--- a/vite.common-config.js
+++ b/vite.common-config.js
@@ -7,19 +7,10 @@ const version = manifest.version;
const commonOptions = {
logLevel: "info",
- public: false,
+ publicDir: false,
server: {
hmr: false
},
- resolve: {
- alias: {
- // these should only be imported by the base-x package in any runtime code
- // and works in the browser with a Uint8Array shim,
- // rather than including a ton of polyfill code
- "safe-buffer": "./scripts/package-overrides/safe-buffer/index.js",
- "buffer": "./scripts/package-overrides/buffer/index.js",
- }
- },
build: {
emptyOutDir: true,
assetsInlineLimit: 0,
diff --git a/vite.config.js b/vite.config.js
index b6ec597d..e11c61d8 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -9,6 +9,15 @@ export default defineConfig(({mode}) => {
return mergeOptions(commonOptions, {
root: "src/platform/web",
base: "./",
+ resolve: {
+ alias: {
+ // these should only be imported by the base-x package in any runtime code
+ // and works in the browser with a Uint8Array shim,
+ // rather than including a ton of polyfill code
+ "safe-buffer": "./scripts/package-overrides/safe-buffer/index.js",
+ "buffer": "./scripts/package-overrides/buffer/index.js",
+ }
+ },
build: {
outDir: "../../../target",
minify: true,
diff --git a/vite.sdk-assets-config.js b/vite.sdk-assets-config.js
new file mode 100644
index 00000000..90720966
--- /dev/null
+++ b/vite.sdk-assets-config.js
@@ -0,0 +1,11 @@
+const path = require("path");
+const mergeOptions = require('merge-options');
+const commonOptions = require("./vite.common-config.js");
+
+export default mergeOptions(commonOptions, {
+ root: "src/",
+ base: "./",
+ build: {
+ outDir: "../target/asset-build/",
+ },
+});
diff --git a/vite.sdk-config.js b/vite.sdk-config.js
deleted file mode 100644
index 194513fb..00000000
--- a/vite.sdk-config.js
+++ /dev/null
@@ -1,72 +0,0 @@
-const path = require("path");
-const mergeOptions = require('merge-options').bind({concatArrays: true});
-const commonOptions = require("./vite.common-config.js");
-const manifest = require("./package.json");
-
-const srcDir = path.join(__dirname, "src/");
-const modulesDir = path.join(srcDir, "node_modules/");
-const mocksDir = path.join(srcDir, "mocks/");
-const fixturesDir = path.join(srcDir, "fixtures/");
-
-const commonOutput = {
- // manualChunks: (id) => {
- // if (id.endsWith("/lib.ts")) {
- // console.log(id, arguments);
- // return "es/lib";
- // }
- // if (id.startsWith(srcDir)) {
- // const idPath = id.substring(srcDir.length);
- // const pathWithoutExt = idPath.substring(0, idPath.lastIndexOf("."));
- // return pathWithoutExt;
- // } else {
- // return "index";
- // }
- // },
- chunkFileNames: `[format]/[name].js`,
- assetFileNames: `assets/[name][extname]`,
- // important to preserve export names of every module
- // so we can still override the file and provider alternative impls
- minifyInternalExports: false,
- preferConst: true,
-};
-
-const externalDependencies = Object.keys(manifest.dependencies).concat(Object.keys(manifest.devDependencies)).filter(d => d !== "@matrix-org/olm").map(d => path.join(__dirname, "node_modules", d));
-console.log("external", externalDependencies);
-
-export default mergeOptions(commonOptions, {
- root: "src/",
- plugins: [
- {
- name: "showconfig",
- buildStart(rollupOptions) {
- console.dir(rollupOptions, {depth: 100});
- },
- resolveId(source, importer) {
- console.log(source, importer);
- }
- }
- ],
- build: {
- minify: false,
- sourcemap: false,
- outDir: "../target",
- rollupOptions: {
- input: "./src/lib.ts",
- treeshake: false,
- external: (id, parentId) => {
- const resolveId = (id.startsWith("./") || id.startsWith("../")) ? path.join(path.dirname(parentId), id) : id;
- const external = externalDependencies.some(d => resolveId.startsWith(d));
- if (external) {
- console.log("external", resolveId);
- }
- return external;
- //return !resolveId.startsWith(srcDir);// || resolveId.startsWith(mocksDir) || resolveId.startsWith(fixturesDir);
- },
- preserveEntrySignatures: "strict",
- output: [
- Object.assign({}, commonOutput, {format: "es"}),
- Object.assign({}, commonOutput, {format: "cjs"}),
- ]
- }
- },
-});
diff --git a/vite.sdk-lib-config.js b/vite.sdk-lib-config.js
new file mode 100644
index 00000000..bd2250af
--- /dev/null
+++ b/vite.sdk-lib-config.js
@@ -0,0 +1,54 @@
+const path = require("path");
+const mergeOptions = require('merge-options');
+const commonOptions = require("./vite.common-config.js");
+const manifest = require("./package.json")
+
+// const srcDir = path.join(__dirname, "src/");
+// const modulesDir = path.join(srcDir, "node_modules/");
+// const mocksDir = path.join(srcDir, "mocks/");
+// const fixturesDir = path.join(srcDir, "fixtures/");
+
+const externalDependencies = Object.keys(manifest.dependencies)
+ .concat(Object.keys(manifest.devDependencies))
+ .map(d => path.join(__dirname, "node_modules", d));
+
+export default mergeOptions(commonOptions, {
+ root: "src/",
+ build: {
+ lib: {
+ entry: path.resolve(__dirname, 'src/lib.ts'),
+ formats: ["cjs", "es"],
+ fileName: format => `hydrogen.${format}.js`,
+ },
+ minify: false,
+ sourcemap: false,
+ outDir: "../target/lib-build",
+ // don't bundle any dependencies, they should be imported/required
+ rollupOptions: {
+ external(id, parentId) {
+ const isRelativePath = id.startsWith("./") || id.startsWith("../");
+ const isModuleIdentifier = !isRelativePath && !id.startsWith("/");
+ const resolveId = isRelativePath ? path.join(path.dirname(parentId), id) : id;
+ const external = isModuleIdentifier ||
+ externalDependencies.some(d => resolveId.startsWith(d));
+ // resolveId.startsWith(fixturesDir) ||
+ // resolveId.startsWith(mocksDir);
+ return external;
+ },
+ /* don't bundle, so we can override imports per file at build time to replace components */
+ // output: {
+ // manualChunks: (id) => {
+ // if (id.startsWith(srcDir)) {
+ // const idPath = id.substring(srcDir.length);
+ // const pathWithoutExt = idPath.substring(0, idPath.lastIndexOf("."));
+ // return pathWithoutExt;
+ // } else {
+ // return "index";
+ // }
+ // },
+ // minifyInternalExports: false,
+ // chunkFileNames: "[format]/[name].js"
+ // }
+ }
+ },
+});