@kyro-cms/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +241 -0
- package/dist/base-CQkFzqQl.d.ts +62 -0
- package/dist/base-DlhVlwnN.d.cts +62 -0
- package/dist/chunk-3Q3FS5J4.cjs +273 -0
- package/dist/chunk-3Q3FS5J4.cjs.map +1 -0
- package/dist/chunk-3TPQ2BU6.js +423 -0
- package/dist/chunk-3TPQ2BU6.js.map +1 -0
- package/dist/chunk-3VZCX4DF.cjs +384 -0
- package/dist/chunk-3VZCX4DF.cjs.map +1 -0
- package/dist/chunk-BXMWDUED.js +115 -0
- package/dist/chunk-BXMWDUED.js.map +1 -0
- package/dist/chunk-DIC236EW.js +290 -0
- package/dist/chunk-DIC236EW.js.map +1 -0
- package/dist/chunk-DKSMFC3L.js +268 -0
- package/dist/chunk-DKSMFC3L.js.map +1 -0
- package/dist/chunk-DVD5P72E.cjs +428 -0
- package/dist/chunk-DVD5P72E.cjs.map +1 -0
- package/dist/chunk-HT6VE4NW.cjs +293 -0
- package/dist/chunk-HT6VE4NW.cjs.map +1 -0
- package/dist/chunk-K7QF2QCM.cjs +311 -0
- package/dist/chunk-K7QF2QCM.cjs.map +1 -0
- package/dist/chunk-OG3KX56O.js +308 -0
- package/dist/chunk-OG3KX56O.js.map +1 -0
- package/dist/chunk-R3XIBBAW.cjs +34 -0
- package/dist/chunk-R3XIBBAW.cjs.map +1 -0
- package/dist/chunk-RLTG4YZM.cjs +117 -0
- package/dist/chunk-RLTG4YZM.cjs.map +1 -0
- package/dist/chunk-SDMNUYVU.js +30 -0
- package/dist/chunk-SDMNUYVU.js.map +1 -0
- package/dist/chunk-UEG7KMKC.cjs +228 -0
- package/dist/chunk-UEG7KMKC.cjs.map +1 -0
- package/dist/chunk-UEYC46RL.js +374 -0
- package/dist/chunk-UEYC46RL.js.map +1 -0
- package/dist/chunk-YPAFJ7EV.js +225 -0
- package/dist/chunk-YPAFJ7EV.js.map +1 -0
- package/dist/cli/index.cjs +306 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +303 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/drizzle/index.cjs +25 -0
- package/dist/drizzle/index.cjs.map +1 -0
- package/dist/drizzle/index.d.cts +49 -0
- package/dist/drizzle/index.d.ts +49 -0
- package/dist/drizzle/index.js +4 -0
- package/dist/drizzle/index.js.map +1 -0
- package/dist/graphql/index.cjs +16 -0
- package/dist/graphql/index.cjs.map +1 -0
- package/dist/graphql/index.d.cts +20 -0
- package/dist/graphql/index.d.ts +20 -0
- package/dist/graphql/index.js +3 -0
- package/dist/graphql/index.js.map +1 -0
- package/dist/index-4fJKLFK2.d.ts +63 -0
- package/dist/index-DI0DRPNv.d.cts +63 -0
- package/dist/index.cjs +2506 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +525 -0
- package/dist/index.d.ts +525 -0
- package/dist/index.js +2334 -0
- package/dist/index.js.map +1 -0
- package/dist/mongodb/index.cjs +17 -0
- package/dist/mongodb/index.cjs.map +1 -0
- package/dist/mongodb/index.d.cts +49 -0
- package/dist/mongodb/index.d.ts +49 -0
- package/dist/mongodb/index.js +4 -0
- package/dist/mongodb/index.js.map +1 -0
- package/dist/rest/index.cjs +17 -0
- package/dist/rest/index.cjs.map +1 -0
- package/dist/rest/index.d.cts +28 -0
- package/dist/rest/index.d.ts +28 -0
- package/dist/rest/index.js +4 -0
- package/dist/rest/index.js.map +1 -0
- package/dist/trpc/index.cjs +45 -0
- package/dist/trpc/index.cjs.map +1 -0
- package/dist/trpc/index.d.cts +130 -0
- package/dist/trpc/index.d.ts +130 -0
- package/dist/trpc/index.js +4 -0
- package/dist/trpc/index.js.map +1 -0
- package/dist/types-BGM5MV_K.d.cts +589 -0
- package/dist/types-BGM5MV_K.d.ts +589 -0
- package/dist/ws/index.cjs +24 -0
- package/dist/ws/index.cjs.map +1 -0
- package/dist/ws/index.d.cts +88 -0
- package/dist/ws/index.d.ts +88 -0
- package/dist/ws/index.js +3 -0
- package/dist/ws/index.js.map +1 -0
- package/package.json +120 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { WebSocket, WebSocketServer } from 'ws';
|
|
2
|
+
|
|
3
|
+
type EventHandler = (data: any) => void | Promise<void>;
|
|
4
|
+
declare class PubSub {
|
|
5
|
+
private channels;
|
|
6
|
+
private maxListeners;
|
|
7
|
+
constructor(maxListeners?: number);
|
|
8
|
+
subscribe(channel: string, handler: EventHandler): () => void;
|
|
9
|
+
publish(channel: string, data: any): void;
|
|
10
|
+
hasSubscribers(channel: string): boolean;
|
|
11
|
+
getSubscriberCount(channel: string): number;
|
|
12
|
+
getChannels(): string[];
|
|
13
|
+
clear(): void;
|
|
14
|
+
}
|
|
15
|
+
interface KyroEvent {
|
|
16
|
+
type: 'create' | 'update' | 'delete';
|
|
17
|
+
collection: string;
|
|
18
|
+
doc?: any;
|
|
19
|
+
originalDoc?: any;
|
|
20
|
+
id?: string;
|
|
21
|
+
tenantID?: string;
|
|
22
|
+
timestamp: string;
|
|
23
|
+
user?: any;
|
|
24
|
+
}
|
|
25
|
+
declare class KyroPubSub extends PubSub {
|
|
26
|
+
private registry;
|
|
27
|
+
constructor(registry: any, maxListeners?: number);
|
|
28
|
+
publishCollectionEvent(collection: string, event: KyroEvent): void;
|
|
29
|
+
subscribeToCollection(collection: string, handler: EventHandler): () => void;
|
|
30
|
+
subscribeToCollectionEvent(collection: string, eventType: 'create' | 'update' | 'delete', handler: EventHandler): () => void;
|
|
31
|
+
subscribeToTenant(tenantID: string, handler: EventHandler): () => void;
|
|
32
|
+
subscribeToTenantCollection(tenantID: string, collection: string, handler: EventHandler): () => void;
|
|
33
|
+
subscribeToAllCollections(handler: EventHandler): () => void;
|
|
34
|
+
createAfterChangeHook(collection: string): (args: any) => Promise<void>;
|
|
35
|
+
createAfterDeleteHook(collection: string): (args: any) => Promise<void>;
|
|
36
|
+
autoRegisterHooks(): void;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
interface WSServerOptions {
|
|
40
|
+
port?: number;
|
|
41
|
+
pubsub: KyroPubSub;
|
|
42
|
+
maxConnections?: number;
|
|
43
|
+
pingInterval?: number;
|
|
44
|
+
requireAuth?: boolean;
|
|
45
|
+
verifyToken?: (token: string) => Promise<any>;
|
|
46
|
+
}
|
|
47
|
+
interface WSSubscription {
|
|
48
|
+
channel: string;
|
|
49
|
+
unsubscribe: () => void;
|
|
50
|
+
}
|
|
51
|
+
interface WSClient {
|
|
52
|
+
id: string;
|
|
53
|
+
ws: WebSocket;
|
|
54
|
+
subscriptions: Map<string, WSSubscription>;
|
|
55
|
+
authenticated: boolean;
|
|
56
|
+
user?: any;
|
|
57
|
+
tenantID?: string;
|
|
58
|
+
connectedAt: Date;
|
|
59
|
+
lastActivity: Date;
|
|
60
|
+
}
|
|
61
|
+
declare class KyroWSServer {
|
|
62
|
+
private wss;
|
|
63
|
+
private clients;
|
|
64
|
+
private pubsub;
|
|
65
|
+
private options;
|
|
66
|
+
private pingTimer?;
|
|
67
|
+
constructor(options: WSServerOptions);
|
|
68
|
+
private setupServer;
|
|
69
|
+
private handleMessage;
|
|
70
|
+
private handleAuthenticate;
|
|
71
|
+
private handleSubscribe;
|
|
72
|
+
private handleUnsubscribe;
|
|
73
|
+
private handleUnsubscribeAll;
|
|
74
|
+
private handleList;
|
|
75
|
+
private handleDisconnect;
|
|
76
|
+
private sendToClient;
|
|
77
|
+
private generateClientId;
|
|
78
|
+
private startPingInterval;
|
|
79
|
+
broadcast(channel: string, data: any): void;
|
|
80
|
+
getConnectedClients(): WSClient[];
|
|
81
|
+
getClientCount(): number;
|
|
82
|
+
getSubscriptionCount(): number;
|
|
83
|
+
close(): Promise<void>;
|
|
84
|
+
getServer(): WebSocketServer;
|
|
85
|
+
}
|
|
86
|
+
declare function createWSServer(options: WSServerOptions): KyroWSServer;
|
|
87
|
+
|
|
88
|
+
export { type EventHandler, type KyroEvent, KyroPubSub, KyroWSServer, PubSub, type WSClient, type WSServerOptions, createWSServer };
|
package/dist/ws/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/package.json
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kyro-cms/core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Astro-native headless CMS with multi-database adapters, multi-protocol APIs, and multi-vendor support",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
},
|
|
15
|
+
"./trpc": {
|
|
16
|
+
"types": "./dist/trpc/index.d.ts",
|
|
17
|
+
"import": "./dist/trpc/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./graphql": {
|
|
20
|
+
"types": "./dist/graphql/index.d.ts",
|
|
21
|
+
"import": "./dist/graphql/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./rest": {
|
|
24
|
+
"types": "./dist/rest/index.d.ts",
|
|
25
|
+
"import": "./dist/rest/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./ws": {
|
|
28
|
+
"types": "./dist/ws/index.d.ts",
|
|
29
|
+
"import": "./dist/ws/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./drizzle": {
|
|
32
|
+
"types": "./dist/drizzle/index.d.ts",
|
|
33
|
+
"import": "./dist/drizzle/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./mongodb": {
|
|
36
|
+
"types": "./dist/mongodb/index.d.ts",
|
|
37
|
+
"import": "./dist/mongodb/index.js"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist"
|
|
42
|
+
],
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "tsup",
|
|
45
|
+
"dev": "tsup --watch",
|
|
46
|
+
"test": "vitest",
|
|
47
|
+
"test:run": "vitest run",
|
|
48
|
+
"test:coverage": "vitest run --coverage",
|
|
49
|
+
"typecheck": "tsc --noEmit",
|
|
50
|
+
"lint": "eslint src/",
|
|
51
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
52
|
+
"generate": "node --loader ts-node/esm scripts/generate-types.ts"
|
|
53
|
+
},
|
|
54
|
+
"bin": {
|
|
55
|
+
"kyro": "./dist/cli/index.js"
|
|
56
|
+
},
|
|
57
|
+
"keywords": [
|
|
58
|
+
"cms",
|
|
59
|
+
"astro",
|
|
60
|
+
"headless",
|
|
61
|
+
"trpc",
|
|
62
|
+
"graphql",
|
|
63
|
+
"rest",
|
|
64
|
+
"websocket",
|
|
65
|
+
"drizzle",
|
|
66
|
+
"mongodb",
|
|
67
|
+
"multitenant"
|
|
68
|
+
],
|
|
69
|
+
"license": "MIT",
|
|
70
|
+
"dependencies": {
|
|
71
|
+
"@trpc/client": "^11.0.0",
|
|
72
|
+
"@trpc/react-query": "^11.0.0",
|
|
73
|
+
"@trpc/server": "^11.0.0",
|
|
74
|
+
"bcrypt": "^5.1.1",
|
|
75
|
+
"chalk": "^5.4.1",
|
|
76
|
+
"commander": "^13.1.0",
|
|
77
|
+
"drizzle-kit": "^0.31.0",
|
|
78
|
+
"drizzle-orm": "^0.44.0",
|
|
79
|
+
"esbuild": "^0.25.0",
|
|
80
|
+
"glob": "^11.0.1",
|
|
81
|
+
"graphql": "^16.10.0",
|
|
82
|
+
"hono": "^4.7.0",
|
|
83
|
+
"jsonwebtoken": "^9.0.2",
|
|
84
|
+
"mongodb": "^6.12.0",
|
|
85
|
+
"ora": "^8.2.0",
|
|
86
|
+
"ws": "^8.18.0",
|
|
87
|
+
"zod": "^3.24.0"
|
|
88
|
+
},
|
|
89
|
+
"devDependencies": {
|
|
90
|
+
"@types/bcrypt": "^5.0.2",
|
|
91
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
92
|
+
"@types/jsonwebtoken": "^9.0.9",
|
|
93
|
+
"@types/node": "^22.13.0",
|
|
94
|
+
"@types/ws": "^8.18.1",
|
|
95
|
+
"better-sqlite3": "^11.8.1",
|
|
96
|
+
"eslint": "^9.20.0",
|
|
97
|
+
"mysql2": "^3.12.0",
|
|
98
|
+
"pg": "^8.13.1",
|
|
99
|
+
"prettier": "^3.5.0",
|
|
100
|
+
"tsup": "^8.4.0",
|
|
101
|
+
"typescript": "^5.7.3",
|
|
102
|
+
"vitest": "^3.0.0"
|
|
103
|
+
},
|
|
104
|
+
"peerDependencies": {
|
|
105
|
+
"better-sqlite3": ">=11.0.0",
|
|
106
|
+
"mysql2": ">=3.0.0",
|
|
107
|
+
"pg": ">=8.0.0"
|
|
108
|
+
},
|
|
109
|
+
"peerDependenciesMeta": {
|
|
110
|
+
"pg": {
|
|
111
|
+
"optional": true
|
|
112
|
+
},
|
|
113
|
+
"mysql2": {
|
|
114
|
+
"optional": true
|
|
115
|
+
},
|
|
116
|
+
"better-sqlite3": {
|
|
117
|
+
"optional": true
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|