aboutsummaryrefslogtreecommitdiffstats
path: root/packages/service-shared
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-24 01:36:20 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-24 01:36:20 +0100
commitcf3ec7fc396125ed452c553b34ae2737329fc61d (patch)
tree6d2fdbb40b9c9b1d32168d1ccb2372b5602f1968 /packages/service-shared
parentfeat: Set up partition persistence (diff)
downloadsophie-cf3ec7fc396125ed452c553b34ae2737329fc61d.tar.gz
sophie-cf3ec7fc396125ed452c553b34ae2737329fc61d.tar.zst
sophie-cf3ec7fc396125ed452c553b34ae2737329fc61d.zip
feat: Service to main process communication
Diffstat (limited to 'packages/service-shared')
-rw-r--r--packages/service-shared/package.json21
-rw-r--r--packages/service-shared/src/index.ts28
-rw-r--r--packages/service-shared/src/ipc.ts23
-rw-r--r--packages/service-shared/src/schemas.ts28
-rw-r--r--packages/service-shared/tsconfig.json12
-rw-r--r--packages/service-shared/vite.config.js34
6 files changed, 146 insertions, 0 deletions
diff --git a/packages/service-shared/package.json b/packages/service-shared/package.json
new file mode 100644
index 0000000..88f113e
--- /dev/null
+++ b/packages/service-shared/package.json
@@ -0,0 +1,21 @@
1{
2 "name": "@sophie/service-shared",
3 "version": "0.1.0",
4 "private": true,
5 "sideEffects": false,
6 "main": "dist/index.cjs",
7 "types": "dist-types/index.d.ts",
8 "scripts": {
9 "clean": "rimraf dist dist-types tsconfig.tsbuildinfo",
10 "build": "vite build",
11 "typecheck": "tsc"
12 },
13 "dependencies": {
14 "zod": "^3.11.6"
15 },
16 "devDependencies": {
17 "rimraf": "^3.0.2",
18 "typescript": "^4.5.4",
19 "vite": "^2.7.6"
20 }
21}
diff --git a/packages/service-shared/src/index.ts b/packages/service-shared/src/index.ts
new file mode 100644
index 0000000..c517959
--- /dev/null
+++ b/packages/service-shared/src/index.ts
@@ -0,0 +1,28 @@
1/*
2 * Copyright (C) 2021-2022 Kristóf Marussy <kristof@marussy.com>
3 *
4 * This file is part of Sophie.
5 *
6 * Sophie is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 *
18 * SPDX-License-Identifier: AGPL-3.0-only
19 */
20
21export { ServiceToMainIpcMessage } from './ipc';
22
23export type {
24 UnreadCount,
25} from './schemas';
26export {
27 unreadCount,
28} from './schemas';
diff --git a/packages/service-shared/src/ipc.ts b/packages/service-shared/src/ipc.ts
new file mode 100644
index 0000000..ad2ceca
--- /dev/null
+++ b/packages/service-shared/src/ipc.ts
@@ -0,0 +1,23 @@
1/*
2 * Copyright (C) 2021-2022 Kristóf Marussy <kristof@marussy.com>
3 *
4 * This file is part of Sophie.
5 *
6 * Sophie is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 *
18 * SPDX-License-Identifier: AGPL-3.0-only
19 */
20
21export enum ServiceToMainIpcMessage {
22 SetUnreadCount = 'sophie-service-to-main:set-unread-count',
23}
diff --git a/packages/service-shared/src/schemas.ts b/packages/service-shared/src/schemas.ts
new file mode 100644
index 0000000..1513e43
--- /dev/null
+++ b/packages/service-shared/src/schemas.ts
@@ -0,0 +1,28 @@
1/*
2 * Copyright (C) 2021-2022 Kristóf Marussy <kristof@marussy.com>
3 *
4 * This file is part of Sophie.
5 *
6 * Sophie is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Affero General Public License for more details.
14 *
15 * You should have received a copy of the GNU Affero General Public License
16 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17 *
18 * SPDX-License-Identifier: AGPL-3.0-only
19 */
20
21import { z } from 'zod';
22
23export const unreadCount = z.object({
24 direct: z.number().nonnegative().optional(),
25 indirect: z.number().nonnegative().optional(),
26});
27
28export type UnreadCount = z.infer<typeof unreadCount>;
diff --git a/packages/service-shared/tsconfig.json b/packages/service-shared/tsconfig.json
new file mode 100644
index 0000000..de75833
--- /dev/null
+++ b/packages/service-shared/tsconfig.json
@@ -0,0 +1,12 @@
1{
2 "extends": "../../tsconfig.json",
3 "compilerOptions": {
4 "composite": true,
5 "declarationDir": "dist-types",
6 "emitDeclarationOnly": true,
7 "rootDir": "src"
8 },
9 "include": [
10 "src/**/*.ts"
11 ]
12}
diff --git a/packages/service-shared/vite.config.js b/packages/service-shared/vite.config.js
new file mode 100644
index 0000000..6f4959f
--- /dev/null
+++ b/packages/service-shared/vite.config.js
@@ -0,0 +1,34 @@
1// @ts-check
2
3import { builtinModules } from 'module';
4
5import { chrome, makeConfig, node } from '../../config/vite-common';
6
7/** @type string */
8const PACKAGE_ROOT = __dirname;
9
10/**
11 * @type {import('vite').UserConfig}
12 * @see https://vitejs.dev/config/
13 */
14const config = makeConfig({
15 root: PACKAGE_ROOT,
16 build: {
17 target: [
18 chrome,
19 node,
20 ],
21 lib: {
22 entry: 'src/index.ts',
23 formats: ['cjs'],
24 },
25 rollupOptions: {
26 external: [
27 'zod',
28 ...builtinModules,
29 ],
30 },
31 },
32});
33
34export default config;