alemonjs 2.1.78 → 2.1.80
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/lib/app/event-processor.js +2 -0
- package/lib/app/hook-event-context.js +18 -6
- package/lib/app/hook-use/index.d.ts +1 -0
- package/lib/app/hook-use/index.js +1 -0
- package/lib/app/hook-use/route.d.ts +32 -0
- package/lib/app/hook-use/route.js +39 -0
- package/lib/app/index.js +1 -0
- package/lib/app/router/dsl.js +6 -0
- package/lib/app/router/types.d.ts +2 -0
- package/lib/index.js +1 -0
- package/lib/types/event/base/expansion.d.ts +5 -0
- package/lib/types/event/base/platform.d.ts +2 -0
- package/package.json +1 -1
|
@@ -146,6 +146,8 @@ const onProcessor = (name, event, data) => {
|
|
|
146
146
|
event['value'] = data;
|
|
147
147
|
}
|
|
148
148
|
event['name'] = name;
|
|
149
|
+
event['IsPrivate'] = event['IsPrivate'] ?? name.startsWith('private.');
|
|
150
|
+
event['IsAtMe'] = event['IsAtMe'] ?? false;
|
|
149
151
|
expendCycle(event, name, value);
|
|
150
152
|
}
|
|
151
153
|
catch (error) {
|
|
@@ -96,29 +96,41 @@ const finishCurrentTrace = (reason) => {
|
|
|
96
96
|
const getTargetEvent = (event) => {
|
|
97
97
|
return event ?? eventStore.getStore()?.event;
|
|
98
98
|
};
|
|
99
|
+
const setSendAttempted = (target) => {
|
|
100
|
+
target._sendAttempted = true;
|
|
101
|
+
target._has_send_attempt = true;
|
|
102
|
+
};
|
|
103
|
+
const setSendSucceeded = (target) => {
|
|
104
|
+
target._sendSucceeded = true;
|
|
105
|
+
target._has_send_success = true;
|
|
106
|
+
};
|
|
107
|
+
const setLastSendError = (target, error) => {
|
|
108
|
+
target._lastSendError = error;
|
|
109
|
+
target._last_send_error = error;
|
|
110
|
+
};
|
|
99
111
|
const markEventSendAttempt = (event) => {
|
|
100
112
|
const target = getTargetEvent(event);
|
|
101
113
|
if (!target) {
|
|
102
114
|
return;
|
|
103
115
|
}
|
|
104
|
-
target
|
|
116
|
+
setSendAttempted(target);
|
|
105
117
|
};
|
|
106
118
|
const markEventSendSuccess = (event) => {
|
|
107
119
|
const target = getTargetEvent(event);
|
|
108
120
|
if (!target) {
|
|
109
121
|
return;
|
|
110
122
|
}
|
|
111
|
-
target
|
|
112
|
-
target
|
|
113
|
-
target
|
|
123
|
+
setSendAttempted(target);
|
|
124
|
+
setSendSucceeded(target);
|
|
125
|
+
setLastSendError(target, null);
|
|
114
126
|
};
|
|
115
127
|
const markEventSendFailure = (error, event) => {
|
|
116
128
|
const target = getTargetEvent(event);
|
|
117
129
|
if (!target) {
|
|
118
130
|
return;
|
|
119
131
|
}
|
|
120
|
-
target
|
|
121
|
-
target
|
|
132
|
+
setSendAttempted(target);
|
|
133
|
+
setLastSendError(target, error instanceof Error ? error.message : typeof error === 'string' ? error : 'Unknown send error');
|
|
122
134
|
};
|
|
123
135
|
const recordEventSendResults = (results, event) => {
|
|
124
136
|
markEventSendAttempt(event);
|
|
@@ -12,6 +12,7 @@ export { usePermission } from './permission.js';
|
|
|
12
12
|
export { useReaction } from './reaction.js';
|
|
13
13
|
export { useRequest } from './request.js';
|
|
14
14
|
export { useRole } from './role.js';
|
|
15
|
+
export { useRoute } from './route.js';
|
|
15
16
|
export { useUser } from './user.js';
|
|
16
17
|
export { useObserver, useSubscribe } from './subscribe.js';
|
|
17
18
|
export { createEvent, useEvent } from './event.js';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { EventKeys, Events } from '../../types';
|
|
2
|
+
import type { RouteParams } from '../router/types';
|
|
3
|
+
import type { RouteSchemaValue } from '../router/validator';
|
|
4
|
+
type RouteReader = {
|
|
5
|
+
param: (name: string) => RouteSchemaValue | undefined;
|
|
6
|
+
hasParam: (name: string) => boolean;
|
|
7
|
+
};
|
|
8
|
+
export type UseRouteUnmatched = RouteReader & {
|
|
9
|
+
matched: false;
|
|
10
|
+
key: undefined;
|
|
11
|
+
text: undefined;
|
|
12
|
+
sourceText: undefined;
|
|
13
|
+
rewrittenText: undefined;
|
|
14
|
+
rawArgs: [];
|
|
15
|
+
parsedArgs: [];
|
|
16
|
+
params: {
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export type UseRouteMatched = RouteReader & {
|
|
21
|
+
matched: true;
|
|
22
|
+
key: string;
|
|
23
|
+
text: string;
|
|
24
|
+
sourceText?: string;
|
|
25
|
+
rewrittenText: string;
|
|
26
|
+
rawArgs: string[];
|
|
27
|
+
parsedArgs: RouteSchemaValue[];
|
|
28
|
+
params: RouteParams;
|
|
29
|
+
};
|
|
30
|
+
export type UseRouteResult = UseRouteUnmatched | UseRouteMatched;
|
|
31
|
+
export declare const useRoute: <T extends EventKeys>(event?: Events[T]) => readonly [UseRouteResult];
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { getEventOrThrow } from './common.js';
|
|
2
|
+
|
|
3
|
+
const createRouteReader = (params) => ({
|
|
4
|
+
param: (name) => params[name],
|
|
5
|
+
hasParam: (name) => Object.prototype.hasOwnProperty.call(params, name) && params[name] !== undefined
|
|
6
|
+
});
|
|
7
|
+
const createEmptyRoute = () => ({
|
|
8
|
+
matched: false,
|
|
9
|
+
key: undefined,
|
|
10
|
+
text: undefined,
|
|
11
|
+
sourceText: undefined,
|
|
12
|
+
rewrittenText: undefined,
|
|
13
|
+
rawArgs: [],
|
|
14
|
+
parsedArgs: [],
|
|
15
|
+
params: {},
|
|
16
|
+
...createRouteReader({})
|
|
17
|
+
});
|
|
18
|
+
const useRoute = (event) => {
|
|
19
|
+
const currentEvent = getEventOrThrow(event);
|
|
20
|
+
const route = currentEvent.__route;
|
|
21
|
+
if (!route) {
|
|
22
|
+
return [createEmptyRoute()];
|
|
23
|
+
}
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
matched: true,
|
|
27
|
+
key: route.key,
|
|
28
|
+
text: route.text,
|
|
29
|
+
sourceText: route.sourceText,
|
|
30
|
+
rewrittenText: route.rewrittenText ?? route.text,
|
|
31
|
+
rawArgs: [...route.rawArgs],
|
|
32
|
+
parsedArgs: [...route.parsedArgs],
|
|
33
|
+
params: { ...route.params },
|
|
34
|
+
...createRouteReader(route.params)
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export { useRoute };
|
package/lib/app/index.js
CHANGED
|
@@ -30,6 +30,7 @@ export { usePermission } from './hook-use/permission.js';
|
|
|
30
30
|
export { useReaction } from './hook-use/reaction.js';
|
|
31
31
|
export { useRequest } from './hook-use/request.js';
|
|
32
32
|
export { useRole } from './hook-use/role.js';
|
|
33
|
+
export { useRoute } from './hook-use/route.js';
|
|
33
34
|
export { useUser } from './hook-use/user.js';
|
|
34
35
|
export { useObserver, useSubscribe } from './hook-use/subscribe.js';
|
|
35
36
|
export { createEvent, useEvent } from './hook-use/event.js';
|
package/lib/app/router/dsl.js
CHANGED
|
@@ -545,6 +545,8 @@ class Router {
|
|
|
545
545
|
attachRouteContext(event, {
|
|
546
546
|
key: match.route.config.path,
|
|
547
547
|
text: match.normalizedCommand,
|
|
548
|
+
sourceText: typeof event.MessageText === 'string' ? event.MessageText : undefined,
|
|
549
|
+
rewrittenText: match.normalizedCommand,
|
|
548
550
|
rawArgs: match.rawArgs,
|
|
549
551
|
parsedArgs: [],
|
|
550
552
|
params: {}
|
|
@@ -570,6 +572,8 @@ class Router {
|
|
|
570
572
|
attachRouteContext(event, {
|
|
571
573
|
key: match.route.config.path,
|
|
572
574
|
text: match.normalizedCommand,
|
|
575
|
+
sourceText: initialMessageText,
|
|
576
|
+
rewrittenText: match.normalizedCommand,
|
|
573
577
|
rawArgs: match.rawArgs,
|
|
574
578
|
parsedArgs: match.parsedArgs,
|
|
575
579
|
params
|
|
@@ -606,6 +610,8 @@ class Router {
|
|
|
606
610
|
attachRouteContext(event, {
|
|
607
611
|
key: '',
|
|
608
612
|
text: scopedText,
|
|
613
|
+
sourceText: typeof event.MessageText === 'string' ? event.MessageText : undefined,
|
|
614
|
+
rewrittenText: scopedText,
|
|
609
615
|
rawArgs: [],
|
|
610
616
|
parsedArgs: [],
|
|
611
617
|
params: {}
|
package/lib/index.js
CHANGED
|
@@ -37,6 +37,7 @@ export { usePermission } from './app/hook-use/permission.js';
|
|
|
37
37
|
export { useReaction } from './app/hook-use/reaction.js';
|
|
38
38
|
export { useRequest } from './app/hook-use/request.js';
|
|
39
39
|
export { useRole } from './app/hook-use/role.js';
|
|
40
|
+
export { useRoute } from './app/hook-use/route.js';
|
|
40
41
|
export { useUser } from './app/hook-use/user.js';
|
|
41
42
|
export { useObserver, useSubscribe } from './app/hook-use/subscribe.js';
|
|
42
43
|
export { createEvent, useEvent } from './app/hook-use/event.js';
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export type Expansion = {
|
|
2
|
+
IsAtMe?: boolean;
|
|
3
|
+
IsPrivate?: boolean;
|
|
4
|
+
_sendAttempted?: boolean;
|
|
2
5
|
_has_send_attempt?: boolean;
|
|
6
|
+
_sendSucceeded?: boolean;
|
|
3
7
|
_has_send_success?: boolean;
|
|
8
|
+
_lastSendError?: string | null;
|
|
4
9
|
_last_send_error?: string | null;
|
|
5
10
|
[key: string]: any;
|
|
6
11
|
};
|