diff --git a/package.json b/package.json index 52eb38af..65e72801 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "hydrogen-web", "version": "0.2.16", "description": "A javascript matrix client prototype, trying to minize RAM usage by offloading as much as possible to IndexedDB", - "main": "index.js", + "main": "src/lib.ts", "directories": { "doc": "doc" }, diff --git a/src/lib.ts b/src/lib.ts new file mode 100644 index 00000000..54b8b4f8 --- /dev/null +++ b/src/lib.ts @@ -0,0 +1,33 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// types need to bootstrap a SessionContainer +export {SessionContainer} from "./matrix/SessionContainer.js"; +export {Session} from "./matrix/Session.js"; +export {Sync} from "./matrix/Sync.js"; +export {Room} from "./matrix/room/Room.js"; +export {Timeline} from "./matrix/room/timeline/Timeline.js"; +export {createNavigation, createRouter} from "./domain/navigation/index.js"; +export {Platform} from "./platform/web/Platform.js"; +// export main view & view models +export {RootViewModel} from "./domain/RootViewModel.js"; +export {RootView} from "./platform/web/ui/RootView.js"; +export {SessionViewModel} from "./domain/session/SessionViewModel.js"; +export {SessionView} from "./platform/web/ui/session/SessionView.js"; +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"; diff --git a/src/sdk.ts b/src/sdk.ts deleted file mode 100644 index 0754b2ab..00000000 --- a/src/sdk.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2020 Bruno Windels -Copyright 2020 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -// import {RecordRequester, ReplayRequester} from "./matrix/net/request/replay.js"; -import {SessionContainer} from "./matrix/SessionContainer.js"; -import {RootViewModel} from "./domain/RootViewModel.js"; -import {createNavigation, createRouter} from "./domain/navigation/index.js"; -// Don't use a default export here, as we use multiple entries during legacy build, -// which does not support default exports, -// see https://github.com/rollup/plugins/tree/master/packages/multi-entry -export async function main(platform) { - try { - // to replay: - // const fetchLog = await (await fetch("/fetchlogs/constrainterror.json")).json(); - // const replay = new ReplayRequester(fetchLog, {delay: false}); - // const request = replay.request; - - // to record: - // const recorder = new RecordRequester(createFetchRequest(clock.createTimeout)); - // const request = recorder.request; - // window.getBrawlFetchLog = () => recorder.log(); - const navigation = createNavigation(); - platform.setNavigation(navigation); - const urlRouter = createRouter({navigation, history: platform.history}); - urlRouter.attach(); - const olmPromise = platform.loadOlm(); - const workerPromise = platform.loadOlmWorker(); - - const vm = new RootViewModel({ - createSessionContainer: () => { - return new SessionContainer({platform, olmPromise, workerPromise}); - }, - platform, - // the only public interface of the router is to create urls, - // so we call it that in the view models - urlCreator: urlRouter, - navigation, - }); - await vm.load(); - platform.createAndMountRootView(vm); - } catch(err) { - console.error(`${err.message}:\n${err.stack}`); - } -}