Refactored App component in front. Implemented pnpm workspaces. Separated messages types into package
This commit is contained in:
13
packages/messages/package.json
Normal file
13
packages/messages/package.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "@roomruler/messages",
|
||||
"main": "dist/src/index.js",
|
||||
"version": "0.0.0",
|
||||
"types": "dist/src/index.d.ts",
|
||||
"scripts": {
|
||||
"build": "tsc --build"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^4.4.2"
|
||||
},
|
||||
"private": "true"
|
||||
}
|
33
packages/messages/src/index.ts
Normal file
33
packages/messages/src/index.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
export type Message = {
|
||||
type: string;
|
||||
args: unknown;
|
||||
};
|
||||
|
||||
export type UpdateMessage = Message & {
|
||||
type: "update";
|
||||
args: {
|
||||
id: number;
|
||||
value: boolean;
|
||||
};
|
||||
};
|
||||
|
||||
const isObjLike = (obj: unknown): obj is object =>
|
||||
Boolean(obj) && typeof obj === "object";
|
||||
|
||||
const hasProperty = <T extends {}, U extends PropertyKey>(
|
||||
obj: T,
|
||||
prop: U
|
||||
): obj is T & Record<U, unknown> => prop in obj;
|
||||
|
||||
export const isMessage = (obj: unknown): obj is Message =>
|
||||
isObjLike(obj) &&
|
||||
hasProperty(obj, "type") &&
|
||||
typeof obj.type === "string" &&
|
||||
hasProperty(obj, "args");
|
||||
|
||||
export const isUpdateMessage = (message: Message): message is UpdateMessage =>
|
||||
isObjLike(message.args) &&
|
||||
hasProperty(message.args, "id") &&
|
||||
typeof message.args.id === "number" &&
|
||||
hasProperty(message.args, "value") &&
|
||||
typeof message.args.value === "boolean";
|
10
packages/messages/tsconfig.json
Normal file
10
packages/messages/tsconfig.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"target": "es6",
|
||||
"outDir": "dist",
|
||||
"composite": true
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
Reference in New Issue
Block a user