@appconda/nextjs 1.0.160 → 1.0.171
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/dist/actions/actionClient.d.ts +8 -2
- package/dist/actions/actionClient.js +21 -15
- package/dist/actions/auth.d.ts +1 -0
- package/dist/actions/auth.js +7 -0
- package/dist/actions/authOptions.d.ts +5 -0
- package/dist/actions/authOptions.js +235 -0
- package/dist/actions/index.d.ts +3 -0
- package/dist/actions/index.js +4 -0
- package/dist/actions/nextAuthHandler.d.ts +1 -0
- package/dist/actions/nextAuthHandler.js +6 -0
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -0
- package/dist/decorators/Cache.js +1 -0
- package/dist/decorators/CacheKey.js +1 -0
- package/dist/decorators/Invalidate.js +1 -0
- package/dist/enums/api-service.js +1 -0
- package/dist/enums/api.js +1 -0
- package/dist/enums/auth-method.js +1 -0
- package/dist/enums/browser.js +1 -0
- package/dist/enums/compression.js +1 -0
- package/dist/enums/credit-card.js +1 -0
- package/dist/enums/database-usage-range.js +1 -0
- package/dist/enums/email-template-locale.js +1 -0
- package/dist/enums/email-template-type.js +1 -0
- package/dist/enums/entities/EntityLimitType.js +1 -0
- package/dist/enums/entities/PropertyAttributeName.js +1 -0
- package/dist/enums/entities/PropertyCondition.js +1 -0
- package/dist/enums/entities/PropertyType.js +1 -0
- package/dist/enums/entities/PropertyValueType.js +1 -0
- package/dist/enums/entities/RowAccess.js +1 -0
- package/dist/enums/entities/ViewFilterCondition.js +1 -0
- package/dist/enums/execution-method.js +1 -0
- package/dist/enums/flag.js +1 -0
- package/dist/enums/function-usage-range.js +1 -0
- package/dist/enums/image-format.js +1 -0
- package/dist/enums/image-gravity.js +1 -0
- package/dist/enums/index-type.js +1 -0
- package/dist/enums/messaging-provider-type.js +1 -0
- package/dist/enums/name.js +1 -0
- package/dist/enums/o-auth-provider copy.js +1 -0
- package/dist/enums/password-hash.js +1 -0
- package/dist/enums/platform-type.js +1 -0
- package/dist/enums/project-usage-range.js +1 -0
- package/dist/enums/region.js +1 -0
- package/dist/enums/relation-mutate.js +1 -0
- package/dist/enums/relationship-type.js +1 -0
- package/dist/enums/resource-type.js +1 -0
- package/dist/enums/runtime.js +1 -0
- package/dist/enums/s-m-t-p-secure.js +1 -0
- package/dist/enums/shared/ApplicationLayout.js +1 -0
- package/dist/enums/shared/Colors.js +1 -0
- package/dist/enums/shared/InputType.js +1 -0
- package/dist/enums/shared/Periodicity.js +1 -0
- package/dist/enums/shared/SvgIcon.js +1 -0
- package/dist/enums/shared/Theme.js +1 -0
- package/dist/enums/sms-template-locale.js +1 -0
- package/dist/enums/sms-template-type.js +1 -0
- package/dist/enums/smtp-encryption.js +1 -0
- package/dist/enums/storage-usage-range.js +1 -0
- package/dist/enums/subscriptions/PricingModel.js +1 -0
- package/dist/enums/subscriptions/SubscriptionBillingPeriod.js +1 -0
- package/dist/enums/subscriptions/SubscriptionFeatureLimitType.js +1 -0
- package/dist/enums/subscriptions/SubscriptionPriceType.js +1 -0
- package/dist/enums/tenants/LinkedAccountStatus.js +1 -0
- package/dist/enums/tenants/TenantUserJoined.js +1 -0
- package/dist/enums/tenants/TenantUserStatus.js +1 -0
- package/dist/enums/tenants/TenantUserType.js +1 -0
- package/dist/enums/user-usage-range.js +1 -0
- package/dist/getAppcondaClient.js +5 -3
- package/dist/getSDKForCurrentUser.d.ts +8 -2
- package/dist/getSDKForCurrentUser.js +13 -5
- package/dist/getSDKForService.js +3 -1
- package/dist/getSDKForTenant.d.ts +20 -0
- package/dist/getSDKForTenant.js +44 -0
- package/dist/id.js +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +5 -1
- package/dist/inputFile.js +1 -0
- package/dist/lib/Cache/Adapter.js +1 -0
- package/dist/lib/Cache/Adapters/Filesystem.js +1 -0
- package/dist/lib/Cache/Adapters/Memory.js +1 -0
- package/dist/lib/Cache/Adapters/None.js +1 -0
- package/dist/lib/Cache/Adapters/Sharding.js +1 -0
- package/dist/lib/Cache/Cache.js +1 -0
- package/dist/lib/Cache/index.js +1 -0
- package/dist/lib/Cache/test.js +1 -0
- package/dist/lib/Registry/Registry.js +1 -0
- package/dist/lib/Registry/index.js +1 -0
- package/dist/lib/Services.js +1 -0
- package/dist/lib/crypto.d.ts +23 -0
- package/dist/lib/crypto.js +78 -0
- package/dist/lib/env.d.ts +1 -0
- package/dist/lib/env.js +137 -0
- package/dist/lib/errors.d.ts +70 -0
- package/dist/lib/errors.js +76 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/jwt.d.ts +12 -0
- package/dist/lib/jwt.js +103 -0
- package/dist/lib/types.d.ts +5 -0
- package/dist/lib/types.js +2 -0
- package/dist/models.js +1 -0
- package/dist/modules/account/actions.d.ts +6 -24
- package/dist/modules/account/actions.js +12 -10
- package/dist/modules/account/enums/authentication-factor.js +1 -0
- package/dist/modules/account/enums/authenticator-type.js +1 -0
- package/dist/modules/account/enums/o-auth-provider.js +1 -0
- package/dist/modules/account/index.js +1 -0
- package/dist/modules/account/schema.d.ts +8 -8
- package/dist/modules/account/schema.js +1 -0
- package/dist/modules/account/service.js +1 -0
- package/dist/modules/account/types.js +1 -0
- package/dist/modules/acl/service.d.ts +26 -0
- package/dist/modules/acl/service.js +27 -0
- package/dist/modules/agent/action.d.ts +28 -52
- package/dist/modules/agent/action.js +24 -34
- package/dist/modules/agent/index.js +1 -0
- package/dist/modules/agent/schema.d.ts +18 -18
- package/dist/modules/agent/schema.js +1 -0
- package/dist/modules/agent/service.js +1 -0
- package/dist/modules/agent/types.js +1 -0
- package/dist/modules/ai/index.js +1 -0
- package/dist/modules/ai/node/actions.d.ts +4 -4
- package/dist/modules/ai/node/actions.js +7 -8
- package/dist/modules/ai/node/index.js +1 -0
- package/dist/modules/ai/node/service.js +1 -0
- package/dist/modules/hooks/index.d.ts +3 -0
- package/dist/modules/hooks/index.js +4 -0
- package/dist/modules/hooks/lib/Hooks.d.ts +32 -0
- package/dist/modules/hooks/lib/Hooks.js +64 -0
- package/dist/modules/hooks/lib/handler.d.ts +12 -0
- package/dist/modules/hooks/lib/handler.js +23 -0
- package/dist/modules/hooks/lib/jobs/index.d.ts +2 -0
- package/dist/modules/hooks/lib/jobs/index.js +3 -0
- package/dist/modules/hooks/lib/jobs/job1.d.ts +1 -0
- package/dist/modules/hooks/lib/jobs/job1.js +16 -0
- package/dist/modules/hooks/lib/jobs/log-job.d.ts +1 -0
- package/dist/modules/hooks/lib/jobs/log-job.js +9 -0
- package/dist/modules/hooks/lib/wait.d.ts +8 -0
- package/dist/modules/hooks/lib/wait.js +13 -0
- package/dist/modules/index.d.ts +4 -0
- package/dist/modules/index.js +5 -0
- package/dist/modules/scheduled-job/action.d.ts +65 -0
- package/dist/modules/scheduled-job/action.js +163 -0
- package/dist/modules/scheduled-job/action2.d.ts +5 -0
- package/dist/modules/scheduled-job/action2.js +17 -0
- package/dist/modules/scheduled-job/index.d.ts +7 -0
- package/dist/modules/scheduled-job/index.js +8 -0
- package/dist/modules/scheduled-job/lib/Schedules.d.ts +34 -0
- package/dist/modules/scheduled-job/lib/Schedules.js +65 -0
- package/dist/modules/scheduled-job/lib/handler.d.ts +13 -0
- package/dist/modules/scheduled-job/lib/handler.js +23 -0
- package/dist/modules/scheduled-job/lib/jobs/index.d.ts +1 -0
- package/dist/modules/scheduled-job/lib/jobs/index.js +2 -0
- package/dist/modules/scheduled-job/lib/jobs/job1.d.ts +1 -0
- package/dist/modules/scheduled-job/lib/jobs/job1.js +10 -0
- package/dist/modules/scheduled-job/lib/jobs/log-job.d.ts +1 -0
- package/dist/modules/scheduled-job/lib/jobs/log-job.js +9 -0
- package/dist/modules/scheduled-job/lib/wait.d.ts +8 -0
- package/dist/modules/scheduled-job/lib/wait.js +13 -0
- package/dist/modules/scheduled-job/schema.d.ts +75 -0
- package/dist/modules/scheduled-job/schema.js +34 -0
- package/dist/modules/scheduled-job/service.d.ts +19 -0
- package/dist/modules/scheduled-job/service.js +43 -0
- package/dist/modules/scheduled-job/types.d.ts +65 -0
- package/dist/modules/scheduled-job/types.js +2 -0
- package/dist/modules/task/action.d.ts +77 -0
- package/dist/modules/task/action.js +136 -0
- package/dist/modules/task/index.d.ts +4 -0
- package/dist/modules/task/index.js +5 -0
- package/dist/modules/task/schema.d.ts +117 -0
- package/dist/modules/task/schema.js +48 -0
- package/dist/modules/task/service.d.ts +20 -0
- package/dist/modules/task/service.js +46 -0
- package/dist/modules/task/types.d.ts +84 -0
- package/dist/modules/task/types.js +2 -0
- package/dist/modules/tenant/actions.d.ts +48 -0
- package/dist/modules/tenant/actions.js +51 -0
- package/dist/modules/tenant/index.d.ts +3 -0
- package/dist/modules/tenant/index.js +4 -0
- package/dist/modules/tenant/tenant.d.ts +32 -0
- package/dist/modules/tenant/tenant.js +125 -0
- package/dist/modules/tenant/types.d.ts +11 -0
- package/dist/modules/tenant/types.js +2 -0
- package/dist/modules/waitlist/action.d.ts +31 -29
- package/dist/modules/waitlist/action.js +1 -0
- package/dist/modules/waitlist/index.js +1 -0
- package/dist/modules/waitlist/schema.d.ts +12 -12
- package/dist/modules/waitlist/schema.js +1 -0
- package/dist/modules/waitlist/service.js +1 -0
- package/dist/modules/waitlist/types.js +1 -0
- package/dist/permission.js +1 -0
- package/dist/query.js +1 -0
- package/dist/role.js +1 -0
- package/dist/schemas/nodes.js +1 -0
- package/dist/service-client.js +1 -0
- package/dist/service.js +1 -0
- package/dist/services/applets.js +1 -0
- package/dist/services/avatars.js +1 -0
- package/dist/services/chat-flow.js +1 -0
- package/dist/services/community.js +1 -0
- package/dist/services/configuration.js +1 -0
- package/dist/services/databases.js +1 -0
- package/dist/services/functions.js +1 -0
- package/dist/services/graphql.js +1 -0
- package/dist/services/health.js +1 -0
- package/dist/services/locale.js +1 -0
- package/dist/services/messaging.js +1 -0
- package/dist/services/permissions.js +1 -0
- package/dist/services/pricing.js +1 -0
- package/dist/services/projects.js +1 -0
- package/dist/services/roles.js +1 -0
- package/dist/services/schema.js +1 -0
- package/dist/services/storage.js +1 -0
- package/dist/services/subscription.js +1 -0
- package/dist/services/teams.js +1 -0
- package/dist/services/tenant-subscription.js +1 -0
- package/dist/services/users.js +1 -0
- package/package.json +4 -1
- package/src/actions/actionClient.ts +13 -6
- package/src/actions/auth.ts +7 -0
- package/src/actions/authOptions.ts +255 -0
- package/src/actions/index.ts +3 -0
- package/src/actions/nextAuthHandler.ts +9 -0
- package/src/client.ts +1 -1
- package/src/getAppcondaClient.ts +4 -3
- package/src/getSDKForCurrentUser.ts +12 -5
- package/src/getSDKForService.ts +2 -1
- package/src/getSDKForTenant.ts +52 -0
- package/src/index.ts +4 -2
- package/src/lib/crypto.ts +105 -0
- package/src/lib/env.ts +145 -0
- package/src/lib/errors.ts +138 -0
- package/src/lib/index.ts +2 -0
- package/src/lib/jwt.ts +113 -0
- package/src/lib/types.ts +7 -0
- package/src/modules/account/actions.ts +16 -13
- package/src/modules/acl/service.ts +55 -0
- package/src/modules/agent/action.ts +27 -38
- package/src/modules/ai/node/actions.ts +6 -9
- package/src/modules/hooks/index.ts +5 -0
- package/src/modules/hooks/lib/Hooks.ts +103 -0
- package/src/modules/hooks/lib/handler.ts +27 -0
- package/src/modules/hooks/lib/jobs/index.ts +2 -0
- package/src/modules/hooks/lib/jobs/job1.ts +20 -0
- package/src/modules/hooks/lib/jobs/log-job.ts +10 -0
- package/src/modules/hooks/lib/wait.ts +17 -0
- package/src/modules/index.ts +5 -1
- package/src/modules/scheduled-job/action.ts +201 -0
- package/src/modules/scheduled-job/index.ts +8 -0
- package/src/modules/scheduled-job/lib/Schedules.ts +105 -0
- package/src/modules/scheduled-job/lib/handler.ts +27 -0
- package/src/modules/scheduled-job/lib/jobs/index.ts +2 -0
- package/src/modules/scheduled-job/lib/jobs/job1.ts +12 -0
- package/src/modules/scheduled-job/lib/wait.ts +17 -0
- package/src/modules/scheduled-job/schema.ts +55 -0
- package/src/modules/scheduled-job/service.ts +60 -0
- package/src/modules/scheduled-job/types.ts +78 -0
- package/src/modules/task/action.ts +167 -0
- package/src/modules/task/index.ts +4 -0
- package/src/modules/task/schema.ts +58 -0
- package/src/modules/task/service.ts +65 -0
- package/src/modules/task/types.ts +89 -0
- package/src/modules/tenant/actions.ts +57 -0
- package/src/modules/tenant/index.ts +3 -0
- package/src/{services → modules/tenant}/tenant.ts +3 -4
- package/src/modules/tenant/types.ts +12 -0
- package/tsconfig.json +4 -1
- package/dist/actions/nodes.d.ts +0 -4
- package/dist/actions/nodes.js +0 -15
- package/dist/enums/authentication-factor.d.ts +0 -6
- package/dist/enums/authentication-factor.js +0 -7
- package/dist/enums/authenticator-type.d.ts +0 -3
- package/dist/enums/authenticator-type.js +0 -4
- package/dist/enums/o-auth-provider.d.ts +0 -41
- package/dist/enums/o-auth-provider.js +0 -42
- package/dist/services/account.d.ts +0 -530
- package/dist/services/account.js +0 -1259
- package/dist/services/node.d.ts +0 -5
- package/dist/services/node.js +0 -11
@@ -1,21 +1,24 @@
|
|
1
1
|
'use server';
|
2
2
|
|
3
|
-
import {
|
3
|
+
import { z } from "zod";
|
4
4
|
import { getSDKForCurrentUser } from "../../getSDKForCurrentUser";
|
5
5
|
import { CreateUserSchema } from "./schema";
|
6
6
|
import { User } from "./types";
|
7
7
|
|
8
8
|
|
9
|
-
export const CreateUser =
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
export const CreateUser = async (params: z.infer<typeof CreateUserSchema>): Promise<{ data?: User, serverError?: string }> => {
|
10
|
+
try {
|
11
|
+
const { userId, email, password, name } = params;
|
12
|
+
const { accounts } = await getSDKForCurrentUser();
|
13
|
+
return {
|
14
|
+
//@ts-ignore
|
15
|
+
data: await accounts.create(userId, email, password, name) as any
|
16
|
+
};
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
} catch (error) {
|
19
|
+
console.error('Error in CreateUser:', error);
|
20
|
+
return {
|
21
|
+
serverError: error.toString()
|
22
|
+
};
|
23
|
+
}
|
24
|
+
};
|
@@ -0,0 +1,55 @@
|
|
1
|
+
|
2
|
+
import { Payload } from "../../client";
|
3
|
+
import { ServiceClient } from "../../service-client";
|
4
|
+
|
5
|
+
type Blacklist = {
|
6
|
+
id: string
|
7
|
+
createdAt: Date
|
8
|
+
type: string
|
9
|
+
value: string
|
10
|
+
active: boolean
|
11
|
+
registerAttempts: number
|
12
|
+
}
|
13
|
+
|
14
|
+
export class Acl extends ServiceClient {
|
15
|
+
|
16
|
+
protected getServiceName(): string {
|
17
|
+
return 'com.appconda.service.acl';
|
18
|
+
}
|
19
|
+
|
20
|
+
public async getBlacklist(
|
21
|
+
filters?: any,
|
22
|
+
pagination?: { page: number; pageSize: number }
|
23
|
+
): Promise<{ items: Blacklist[]; pagination: any }> {
|
24
|
+
|
25
|
+
const payload: Payload = {};
|
26
|
+
|
27
|
+
return await this.actionCall('GetBlackList', payload);
|
28
|
+
|
29
|
+
}
|
30
|
+
|
31
|
+
public async addToBlackList(type: string, value: string ): Promise<Blacklist> {
|
32
|
+
|
33
|
+
const payload: Payload = {};
|
34
|
+
payload['type'] = type;
|
35
|
+
payload['value'] = value;
|
36
|
+
return await this.actionCall('AddToBlackList', payload);
|
37
|
+
|
38
|
+
}
|
39
|
+
|
40
|
+
public async deleteFromBlackList(type: string, value: string ): Promise<boolean> {
|
41
|
+
|
42
|
+
const payload: Payload = {};
|
43
|
+
payload['type'] = type;
|
44
|
+
payload['value'] = value;
|
45
|
+
return await this.actionCall('DeleteFromBlackList', payload);
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
public async getAllTenantIpAddresses(): Promise<{ items: any[]; pagination: any }> {
|
50
|
+
|
51
|
+
const payload: Payload = {};
|
52
|
+
return await this.actionCall('GetAllTenantIpAddresses', payload);
|
53
|
+
|
54
|
+
}
|
55
|
+
}
|
@@ -1,77 +1,66 @@
|
|
1
1
|
'use server';
|
2
2
|
|
3
3
|
|
4
|
-
import {
|
4
|
+
import { z } from 'zod';
|
5
5
|
import { getSDKForCurrentUser } from '../../getSDKForCurrentUser';
|
6
|
-
import { getSDKForService } from '../../getSDKForService';
|
7
|
-
import { CreateAgentSchema, GetAgentSchema, ListModelsSchema } from './schema';
|
8
6
|
import { Agent, AIModel } from './types';
|
7
|
+
import { CreateAgentSchema, GetAgentSchema, ListModelsSchema } from './schema';
|
9
8
|
|
10
9
|
|
11
|
-
export const ListAgents =
|
12
|
-
//.schema(ListWaitlistSignupsSchema)
|
13
|
-
.action(async ({ parsedInput }): Promise<Agent[]> => {
|
10
|
+
export const ListAgents = async (): Promise<{data?: Agent[], serverError?: string}> => {
|
14
11
|
try {
|
15
|
-
|
16
12
|
const { agent } = await getSDKForCurrentUser();
|
17
|
-
return await agent.ListAgents();
|
13
|
+
return { data: await agent.ListAgents() };
|
18
14
|
} catch (error) {
|
19
|
-
console.error('Error in
|
20
|
-
|
15
|
+
console.error('Error in ListAgents:', error);
|
16
|
+
return { serverError: error.toString() };
|
21
17
|
}
|
22
|
-
}
|
18
|
+
};
|
23
19
|
|
24
20
|
|
25
21
|
|
26
|
-
export const CreateAgent =
|
27
|
-
.schema(CreateAgentSchema)
|
28
|
-
.action(async ({ parsedInput }): Promise<Agent> => {
|
22
|
+
export const CreateAgent = async ({ parsedInput }: { parsedInput: z.infer<typeof CreateAgentSchema> }): Promise<{data?: Agent, serverError?: string}> => {
|
29
23
|
try {
|
30
|
-
|
31
24
|
const { agent } = await getSDKForCurrentUser();
|
32
|
-
return await agent.CreateAgent(parsedInput);
|
25
|
+
return { data: await agent.CreateAgent(parsedInput) };
|
33
26
|
|
34
27
|
} catch (error) {
|
35
|
-
console.error('Error in
|
36
|
-
|
28
|
+
console.error('Error in CreateAgent:', error);
|
29
|
+
return { serverError: error.toString() };
|
37
30
|
}
|
38
|
-
}
|
31
|
+
};
|
39
32
|
|
40
|
-
export const GetAgent =
|
41
|
-
.schema(GetAgentSchema)
|
42
|
-
.action(async ({ parsedInput }): Promise<Agent> => {
|
33
|
+
export const GetAgent = async ({ parsedInput }: { parsedInput: z.infer<typeof GetAgentSchema> }): Promise<{data?: Agent, serverError?: string}> => {
|
43
34
|
try {
|
44
|
-
|
45
35
|
const { agent } = await getSDKForCurrentUser();
|
46
|
-
return await agent.GetAgent(parsedInput);
|
36
|
+
return { data: await agent.GetAgent(parsedInput) };
|
47
37
|
|
48
38
|
} catch (error) {
|
49
|
-
console.error('Error in
|
50
|
-
|
39
|
+
console.error('Error in GetAgent:', error);
|
40
|
+
return { serverError: error.toString() };
|
51
41
|
}
|
52
|
-
}
|
42
|
+
};
|
53
43
|
|
54
|
-
export const ListModelProviders =
|
55
|
-
.action(async ({ parsedInput }): Promise<Agent[]> => {
|
44
|
+
export const ListModelProviders = async (): Promise<{data?: Agent[], serverError?: string}> => {
|
56
45
|
try {
|
57
46
|
|
58
47
|
const { agent } = await getSDKForCurrentUser();
|
59
|
-
return await agent.ListModelProviders();
|
48
|
+
return { data: await agent.ListModelProviders() };
|
60
49
|
} catch (error) {
|
61
50
|
console.error('Error in ListModelProviders:', error);
|
62
|
-
|
51
|
+
return { serverError: error.toString() };
|
63
52
|
}
|
64
|
-
}
|
53
|
+
}
|
65
54
|
|
66
|
-
export const ListModels =
|
67
|
-
.schema(ListModelsSchema)
|
68
|
-
.action(async ({ parsedInput }): Promise<AIModel[]> => {
|
55
|
+
export const ListModels = async ({ parsedInput }: { parsedInput: z.infer<typeof ListModelsSchema> }): Promise<{data?: AIModel[], serverError?: string}> => {
|
69
56
|
try {
|
70
57
|
|
71
58
|
const { agent } = await getSDKForCurrentUser();
|
72
|
-
return await agent.ListModels(parsedInput);
|
59
|
+
return { data: await agent.ListModels(parsedInput) };
|
73
60
|
} catch (error) {
|
74
61
|
console.error('Error in ListModels:', error);
|
75
|
-
|
62
|
+
return { serverError: error.toString() };
|
76
63
|
}
|
77
|
-
}
|
64
|
+
};
|
65
|
+
|
66
|
+
|
@@ -1,17 +1,14 @@
|
|
1
1
|
'use server';
|
2
2
|
|
3
|
-
import { getSDKForCurrentUser } from "
|
4
|
-
import { z } from "zod";
|
5
|
-
import { actionClient } from "../../../actions/actionClient";
|
3
|
+
import { getSDKForCurrentUser } from "../../../getSDKForCurrentUser";
|
6
4
|
|
7
|
-
export const getAllNodesAction =
|
8
|
-
// .schema(listModelsSchema)
|
9
|
-
.action(async ({ parsedInput }) => {
|
5
|
+
export const getAllNodesAction = async (): Promise<{data: Node[], serverError?: string}> => {
|
10
6
|
try {
|
11
7
|
const { node } = await getSDKForCurrentUser();
|
12
|
-
return await node.GetAllNodes();
|
8
|
+
return { data: await node.GetAllNodes() };
|
13
9
|
} catch (error) {
|
14
10
|
console.error('Error in getAllNodesAction:', error);
|
15
|
-
|
11
|
+
//@ts-ignore
|
12
|
+
return { serverError: error.toString() };
|
16
13
|
}
|
17
|
-
}
|
14
|
+
}
|
@@ -0,0 +1,103 @@
|
|
1
|
+
|
2
|
+
type TaskPayload = {
|
3
|
+
timestamp: Date;
|
4
|
+
lastTimestamp?: Date;
|
5
|
+
timezone: string;
|
6
|
+
};
|
7
|
+
|
8
|
+
type TaskContext = {
|
9
|
+
retriesLeft: number;
|
10
|
+
};
|
11
|
+
|
12
|
+
type TriggerArgs = {
|
13
|
+
id: string;
|
14
|
+
events: string[];
|
15
|
+
maxDuration?: number; // saniye
|
16
|
+
retries?: number;
|
17
|
+
run: (
|
18
|
+
payload: TaskPayload,
|
19
|
+
tools: { ctx: TaskContext }
|
20
|
+
) => Promise<void> | void;
|
21
|
+
};
|
22
|
+
|
23
|
+
export class Hooks {
|
24
|
+
private lastRunTimestamps: Record<string, Date> = {};
|
25
|
+
private triggers: TriggerArgs[] = [];
|
26
|
+
|
27
|
+
public trigger(args: TriggerArgs) {
|
28
|
+
this.triggers.push(args);
|
29
|
+
}
|
30
|
+
|
31
|
+
public async run(hookId: string) {
|
32
|
+
const now = new Date();
|
33
|
+
const lastTimestamp = this.lastRunTimestamps[hookId];
|
34
|
+
|
35
|
+
const payload: TaskPayload = {
|
36
|
+
timestamp: now,
|
37
|
+
lastTimestamp,
|
38
|
+
timezone: "UTC",
|
39
|
+
};
|
40
|
+
|
41
|
+
this.lastRunTimestamps[hookId] = now;
|
42
|
+
|
43
|
+
const context: TaskContext = {
|
44
|
+
retriesLeft: this.triggers.find(hook => hook.id === hookId)?.retries ?? 0,
|
45
|
+
};
|
46
|
+
|
47
|
+
await this.runWithRetry(this.triggers.find(hook => hook.id === hookId)!, payload, context);
|
48
|
+
|
49
|
+
|
50
|
+
}
|
51
|
+
|
52
|
+
private async runWithRetry(
|
53
|
+
trigger: TriggerArgs,
|
54
|
+
payload: TaskPayload,
|
55
|
+
ctx: TaskContext
|
56
|
+
) {
|
57
|
+
const start = Date.now();
|
58
|
+
|
59
|
+
try {
|
60
|
+
await Promise.race([
|
61
|
+
trigger.run(payload, { ctx }),
|
62
|
+
timeout(trigger.maxDuration ?? 60),
|
63
|
+
]);
|
64
|
+
log("success", { hookId: trigger.id, time: new Date().toISOString() });
|
65
|
+
} catch (err) {
|
66
|
+
//@ts-ignore
|
67
|
+
log("error", { hookId: trigger.id, error: err });
|
68
|
+
|
69
|
+
if (ctx.retriesLeft > 0) {
|
70
|
+
ctx.retriesLeft -= 1;
|
71
|
+
//@ts-ignore
|
72
|
+
log("warn", { hookId: trigger.id, msg: "Retrying..." });
|
73
|
+
await this.runWithRetry(trigger, payload, ctx);
|
74
|
+
}
|
75
|
+
} finally {
|
76
|
+
const duration = Date.now() - start;
|
77
|
+
//@ts-ignore
|
78
|
+
log("info", { hookId: trigger.id, durationMs: duration });
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
public toJSON() {
|
83
|
+
return this.triggers.map(trigger => ({
|
84
|
+
id: trigger.id,
|
85
|
+
events: trigger.events,
|
86
|
+
maxDuration: trigger.maxDuration,
|
87
|
+
retries: trigger.retries,
|
88
|
+
}));
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
function log(arg0: string, arg1: { hookId: string; time: string; }) {
|
93
|
+
// console.log(arg0, arg1);
|
94
|
+
}
|
95
|
+
|
96
|
+
function timeout(seconds: number) {
|
97
|
+
return new Promise((_, reject) =>
|
98
|
+
setTimeout(() => reject(new Error("Timeout reached")), seconds * 1000)
|
99
|
+
);
|
100
|
+
}
|
101
|
+
|
102
|
+
|
103
|
+
export const hooks = new Hooks();
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { NextRequest, NextResponse } from 'next/server';
|
2
|
+
|
3
|
+
import './jobs';
|
4
|
+
import { hooks } from './Hooks';
|
5
|
+
|
6
|
+
/* export async function GET() {
|
7
|
+
return NextResponse.json({ schedules: schedules.toJSON() },
|
8
|
+
{ status: 200 });
|
9
|
+
}
|
10
|
+
|
11
|
+
export async function POST(request: Request) {
|
12
|
+
|
13
|
+
} */
|
14
|
+
|
15
|
+
export async function hookHandler(request: NextRequest, res: NextResponse) {
|
16
|
+
if (request.method === 'POST') {
|
17
|
+
const body = await request.json();
|
18
|
+
const hookId = body.hookId;
|
19
|
+
hooks.run(hookId);
|
20
|
+
return NextResponse.json({ message: 'Callback triggered' },
|
21
|
+
{ status: 200 });
|
22
|
+
} else {
|
23
|
+
return NextResponse.json({ hooks: hooks.toJSON() },
|
24
|
+
{ status: 200 });
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
import { hooks } from "../Hooks";
|
3
|
+
|
4
|
+
hooks.trigger({
|
5
|
+
id: "job1",
|
6
|
+
events: ["event1"],
|
7
|
+
run: async () => {
|
8
|
+
console.log("hello from job 1");
|
9
|
+
},
|
10
|
+
});
|
11
|
+
|
12
|
+
|
13
|
+
hooks.trigger({
|
14
|
+
id: "job2",
|
15
|
+
events: ["event2"],
|
16
|
+
run: async () => {
|
17
|
+
console.log("hello from job 2");
|
18
|
+
},
|
19
|
+
});
|
20
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
export const wait = {
|
2
|
+
for: ({ seconds }: { seconds: number }) =>
|
3
|
+
new Promise((resolve) => setTimeout(resolve, seconds * 1000)),
|
4
|
+
|
5
|
+
until: ({ date }: { date: Date }) => {
|
6
|
+
const now = new Date();
|
7
|
+
const diff = date.getTime() - now.getTime();
|
8
|
+
|
9
|
+
if (diff <= 0) {
|
10
|
+
// Hedef tarih zaten geçmişse hiç bekleme
|
11
|
+
return Promise.resolve();
|
12
|
+
}
|
13
|
+
|
14
|
+
return new Promise((resolve) => setTimeout(resolve, diff));
|
15
|
+
},
|
16
|
+
};
|
17
|
+
|
package/src/modules/index.ts
CHANGED
@@ -0,0 +1,201 @@
|
|
1
|
+
'use server';
|
2
|
+
|
3
|
+
|
4
|
+
import { z, ZodError } from 'zod';
|
5
|
+
import { actionClient } from '../../actions/actionClient';
|
6
|
+
import { getSDKForCurrentUser } from '../../getSDKForCurrentUser';
|
7
|
+
import { CreateScheduledJobSchema, DeleteJobSchema, GetDailyExecutionTrendSchema, GetJobStatsSchema, GetScheduledJobSchema, GetTopFailedJobsSchema, ListAvgExecutionsSchema, ListExecutionsSchema, ListScheduledJobsSchema, QueueJobSchema, UpdateJobSchema } from './schema';
|
8
|
+
import { AvgExecution, Execution, ExecutionTrend, FailedJob, JobStats, ScheduledJob } from './types';
|
9
|
+
import { AppcondaException } from '../../client';
|
10
|
+
import { ActionResult } from '../../lib/types';
|
11
|
+
|
12
|
+
export const CreateScheduledJob = async ({ parsedInput }: { parsedInput: z.infer<typeof CreateScheduledJobSchema> }): Promise<{ data?: ScheduledJob, serverError?: string }> => {
|
13
|
+
try {
|
14
|
+
|
15
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
16
|
+
return { data: await scheduledJob.CreateScheduledJob(parsedInput) };
|
17
|
+
|
18
|
+
} catch (error) {
|
19
|
+
console.error('Error in CreateScheduledJob:', error);
|
20
|
+
return { serverError: error.toString() };
|
21
|
+
}
|
22
|
+
};
|
23
|
+
|
24
|
+
export const ListScheduledJobs = async (parsedInput: z.infer<typeof ListScheduledJobsSchema>): Promise<{ data?: ScheduledJob[], serverError?: string }> => {
|
25
|
+
try {
|
26
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
27
|
+
return { data: await scheduledJob.ListScheduledJobs(parsedInput) };
|
28
|
+
|
29
|
+
} catch (error) {
|
30
|
+
console.error('Error in ListScheduledJobs:', error);
|
31
|
+
return { serverError: error.toString() };
|
32
|
+
}
|
33
|
+
};
|
34
|
+
|
35
|
+
export const GetScheduledJob = async (parsedInput: z.infer<typeof GetScheduledJobSchema>): Promise<{ data?: ScheduledJob, serverError?: string }> => {
|
36
|
+
try {
|
37
|
+
|
38
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
39
|
+
return { data: await scheduledJob.GetScheduledJob(parsedInput) };
|
40
|
+
|
41
|
+
} catch (error) {
|
42
|
+
console.error('Error in GetScheduledJob:', error);
|
43
|
+
return { serverError: error.toString() };
|
44
|
+
}
|
45
|
+
};
|
46
|
+
|
47
|
+
export const ListExecutions = async (parsedInput: z.infer<typeof ListExecutionsSchema>): Promise<{ data?: Execution[], serverError?: string }> => {
|
48
|
+
try {
|
49
|
+
|
50
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
51
|
+
return { data: await scheduledJob.ListExecutions(parsedInput) };
|
52
|
+
|
53
|
+
} catch (error) {
|
54
|
+
console.error('Error in ListExecutions:', error);
|
55
|
+
return { serverError: error.toString() };
|
56
|
+
}
|
57
|
+
};
|
58
|
+
|
59
|
+
export const ListAvgExecutions = async (parsedInput: z.infer<typeof ListAvgExecutionsSchema>): Promise<{ data?: AvgExecution[], serverError?: string }> => {
|
60
|
+
try {
|
61
|
+
|
62
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
63
|
+
return { data: await scheduledJob.ListAvgExecutions(parsedInput) };
|
64
|
+
|
65
|
+
} catch (error) {
|
66
|
+
console.error('Error in ListAvgExecutions:', error);
|
67
|
+
return { serverError: error.toString() };
|
68
|
+
}
|
69
|
+
};
|
70
|
+
|
71
|
+
export const UpdateJob = async (params: z.infer<typeof UpdateJobSchema>): Promise<ActionResult<ScheduledJob>> => {
|
72
|
+
try {
|
73
|
+
console.log('params', params);
|
74
|
+
const parsedInput = UpdateJobSchema.parse(params);
|
75
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
76
|
+
return { data: await scheduledJob.UpdateJob(parsedInput) };
|
77
|
+
|
78
|
+
} catch (error) {
|
79
|
+
if (error instanceof AppcondaException) {
|
80
|
+
return { serverError: error.message };
|
81
|
+
}
|
82
|
+
if (error instanceof ZodError) {
|
83
|
+
return { validationError: error.toString() };
|
84
|
+
}
|
85
|
+
console.error('Error in UpdateJob:', error);
|
86
|
+
return { serverError: error.toString() };
|
87
|
+
}
|
88
|
+
};
|
89
|
+
|
90
|
+
export const GetDailyExecutionTrend = async (parsedInput: z.infer<typeof GetDailyExecutionTrendSchema>): Promise<{ data?: ExecutionTrend[], serverError?: string }> => {
|
91
|
+
try {
|
92
|
+
|
93
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
94
|
+
return { data: await scheduledJob.GetDailyExecutionTrend(parsedInput) };
|
95
|
+
|
96
|
+
} catch (error) {
|
97
|
+
console.error('Error in GetDailyExecutionTrend:', error);
|
98
|
+
return { serverError: error.toString() };
|
99
|
+
}
|
100
|
+
};
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
export const GetTopFailedJobs = async (parsedInput: z.infer<typeof GetTopFailedJobsSchema>): Promise<{ data?: FailedJob[], serverError?: string }> => {
|
105
|
+
try {
|
106
|
+
|
107
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
108
|
+
//@ts-ignore
|
109
|
+
return { data: await scheduledJob.GetTopFailedJobs(parsedInput) };
|
110
|
+
|
111
|
+
} catch (error) {
|
112
|
+
console.error('Error in GetTopFailedJobs:', error);
|
113
|
+
return { serverError: error.toString() };
|
114
|
+
}
|
115
|
+
};
|
116
|
+
|
117
|
+
export const GetJobStats = async (parsedInput: z.infer<typeof GetJobStatsSchema>): Promise<{ data?: JobStats, serverError?: string }> => {
|
118
|
+
try {
|
119
|
+
|
120
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
121
|
+
return { data: await scheduledJob.GetJobStats(parsedInput) };
|
122
|
+
|
123
|
+
} catch (error) {
|
124
|
+
console.error('Error in GetJobStats:', error);
|
125
|
+
return { serverError: error.toString() };
|
126
|
+
}
|
127
|
+
};
|
128
|
+
|
129
|
+
export const DeleteJob = async (parsedInput: z.infer<typeof DeleteJobSchema>): Promise<ActionResult<void>> => {
|
130
|
+
try {
|
131
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
132
|
+
await scheduledJob.DeleteJob(parsedInput);
|
133
|
+
return {};
|
134
|
+
} catch (error) {
|
135
|
+
console.error('Error in DeleteJob:', error);
|
136
|
+
return { serverError: error.toString() };
|
137
|
+
}
|
138
|
+
};
|
139
|
+
|
140
|
+
export const ListJobsWithStats = async () => {
|
141
|
+
try {
|
142
|
+
|
143
|
+
const jobs = await ListScheduledJobs({});
|
144
|
+
const avg = await ListAvgExecutions({});
|
145
|
+
|
146
|
+
// Merge jobs with average execution data
|
147
|
+
const mergedJobs = jobs?.data?.map(job => {
|
148
|
+
const jobAvg = avg?.data?.find(a => a.scheduledJobId === job.id);
|
149
|
+
return {
|
150
|
+
...job,
|
151
|
+
totalExecutions: jobAvg?.totalExecutions || 0,
|
152
|
+
activeDays: jobAvg?.activeDays || 0,
|
153
|
+
avgExecutionsPerDay: jobAvg?.avgExecutionsPerDay || 0,
|
154
|
+
completed: jobAvg?.completed || 0,
|
155
|
+
failed: jobAvg?.failed || 0,
|
156
|
+
queued: jobAvg?.queued || 0,
|
157
|
+
};
|
158
|
+
}) || [];
|
159
|
+
|
160
|
+
return { data: mergedJobs };
|
161
|
+
|
162
|
+
} catch (error) {
|
163
|
+
console.error('Error in ListJobsWithStats:', error);
|
164
|
+
return { serverError: error.toString() };
|
165
|
+
}
|
166
|
+
};
|
167
|
+
|
168
|
+
export const GetJobMetrics = async () => {
|
169
|
+
try {
|
170
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
171
|
+
return await scheduledJob.GetJobMetrics();
|
172
|
+
} catch (error) {
|
173
|
+
console.error('Error in GetJobMetrics:', error);
|
174
|
+
throw new Error(error.toString());
|
175
|
+
}
|
176
|
+
};
|
177
|
+
|
178
|
+
export const QueueJob = async (parsedInput: z.infer<typeof QueueJobSchema>): Promise<boolean> => {
|
179
|
+
try {
|
180
|
+
const { scheduledJob } = await getSDKForCurrentUser();
|
181
|
+
await scheduledJob.QueueJob(parsedInput);
|
182
|
+
return true;
|
183
|
+
} catch (error) {
|
184
|
+
if (error instanceof AppcondaException) {
|
185
|
+
console.error('Error in QueueJob:', error.message);
|
186
|
+
|
187
|
+
}
|
188
|
+
return false;
|
189
|
+
}
|
190
|
+
};
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
|