@arken/seer-protocol 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/.editorconfig +9 -0
- package/.eslintrc +123 -0
- package/.prettierrc +12 -0
- package/.rush/temp/shrinkwrap-deps.json +420 -0
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/package.json +25 -0
- package/src/index.ts +22 -0
- package/src/modules/evolution/evolution.models.ts +3 -0
- package/src/modules/evolution/evolution.router.ts +3738 -0
- package/src/modules/evolution/evolution.schema.ts +1 -0
- package/src/modules/evolution/evolution.service.ts +2000 -0
- package/src/modules/evolution/evolution.types.ts +20 -0
- package/src/modules/evolution/index.ts +5 -0
- package/src/modules/infinite/index.ts +5 -0
- package/src/modules/infinite/infinite.models.ts +3 -0
- package/src/modules/infinite/infinite.router.ts +3648 -0
- package/src/modules/infinite/infinite.schema.ts +1 -0
- package/src/modules/infinite/infinite.service.ts +40 -0
- package/src/modules/infinite/infinite.types.ts +20 -0
- package/src/modules/isles/index.ts +5 -0
- package/src/modules/isles/isles.models.ts +3 -0
- package/src/modules/isles/isles.router.ts +3648 -0
- package/src/modules/isles/isles.schema.ts +1 -0
- package/src/modules/isles/isles.service.ts +40 -0
- package/src/modules/isles/isles.types.ts +20 -0
- package/src/modules/oasis/index.ts +5 -0
- package/src/modules/oasis/oasis.models.ts +3 -0
- package/src/modules/oasis/oasis.router.ts +68 -0
- package/src/modules/oasis/oasis.schema.ts +1 -0
- package/src/modules/oasis/oasis.service.ts +38 -0
- package/src/modules/oasis/oasis.types.ts +20 -0
- package/src/modules/trek/index.ts +5 -0
- package/src/modules/trek/trek.models.ts +1 -0
- package/src/modules/trek/trek.router.ts +78 -0
- package/src/modules/trek/trek.schema.ts +1 -0
- package/src/modules/trek/trek.service.ts +1031 -0
- package/src/modules/trek/trek.types.ts +1 -0
- package/src/router.ts +130 -0
- package/src/types.ts +106 -0
- package/tsconfig.json +25 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { z, ObjectId, Entity } from '@arken/node/schema';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { RouterContext, RouterInput, RouterOutput } from './isles.types';
|
|
2
|
+
import { getFilter } from '@arken/node/util/api';
|
|
3
|
+
import { ARXError } from '@arken/node/util/rpc';
|
|
4
|
+
import * as Arken from '@arken/node';
|
|
5
|
+
|
|
6
|
+
export class Service {
|
|
7
|
+
async saveRound(input: RouterInput['saveRound'], ctx: RouterContext): Promise<RouterOutput['saveRound']> {
|
|
8
|
+
console.log('Evolution.Service.saveRound', input);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
async interact(input: RouterInput['interact'], ctx: RouterContext): Promise<RouterOutput['interact']> {
|
|
12
|
+
console.log('Evolution.Service.interact', input);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
async getScene(input: RouterInput['getScene'], ctx: RouterContext): Promise<RouterOutput['getScene']> {
|
|
16
|
+
if (!input) throw new Error('Input should not be void');
|
|
17
|
+
console.log('Evolution.Service.getScene', input);
|
|
18
|
+
|
|
19
|
+
let data = {};
|
|
20
|
+
|
|
21
|
+
if (input.data.applicationId === '668e4e805f9a03927caf883b') {
|
|
22
|
+
data = {
|
|
23
|
+
...data,
|
|
24
|
+
objects: [
|
|
25
|
+
{
|
|
26
|
+
id: 'adsad',
|
|
27
|
+
file: 'asdasdas.fbx',
|
|
28
|
+
position: {
|
|
29
|
+
x: 1000,
|
|
30
|
+
y: 1000,
|
|
31
|
+
z: 1000,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
] as Arken.Core.Types.Object,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Model, Document } from '@arken/node/util/mongo';
|
|
3
|
+
import * as schema from './isles.schema';
|
|
4
|
+
|
|
5
|
+
export type * from './isles.router';
|
|
6
|
+
export type * from './isles.service';
|
|
7
|
+
export type { RouterContext } from '../../types';
|
|
8
|
+
|
|
9
|
+
// // Define types based on the schema
|
|
10
|
+
// export type Game = z.infer<typeof schema.Game>;
|
|
11
|
+
// export type GameDocument = Game & Document;
|
|
12
|
+
|
|
13
|
+
// export type GameStat = z.infer<typeof schema.GameStat>;
|
|
14
|
+
// export type GameStatDocument = GameStat & Document;
|
|
15
|
+
|
|
16
|
+
// export type Era = z.infer<typeof schema.Era>;
|
|
17
|
+
// export type EraDocument = Era & Document;
|
|
18
|
+
|
|
19
|
+
// Mappings for MongoDB models
|
|
20
|
+
export type Mappings = {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { z as zod } from 'zod';
|
|
2
|
+
import { initTRPC } from '@trpc/server';
|
|
3
|
+
import { customErrorFormatter, hasRole } from '@arken/node/util/rpc';
|
|
4
|
+
import * as Arken from '@arken/node';
|
|
5
|
+
import { Query, getQueryInput, inferRouterOutputs, inferRouterInputs } from '@arken/node/schema';
|
|
6
|
+
import { RouterContext } from '../../types';
|
|
7
|
+
|
|
8
|
+
export const z = zod;
|
|
9
|
+
export const t = initTRPC.context<RouterContext>().create();
|
|
10
|
+
export const router = t.router;
|
|
11
|
+
export const procedure = t.procedure;
|
|
12
|
+
|
|
13
|
+
export const createRouter = () =>
|
|
14
|
+
router({
|
|
15
|
+
getPatrons: procedure
|
|
16
|
+
.use(hasRole('guest', t))
|
|
17
|
+
.use(customErrorFormatter(t))
|
|
18
|
+
.output(z.array(Arken.Profile.Schemas.Profile))
|
|
19
|
+
.query(({ input, ctx }) => (ctx.app.service.Oasis.getPatrons as any)(input, ctx)),
|
|
20
|
+
|
|
21
|
+
interact: t.procedure
|
|
22
|
+
.input(
|
|
23
|
+
z.object({
|
|
24
|
+
shardId: z.string(),
|
|
25
|
+
roundId: z.number(),
|
|
26
|
+
round: z.any(),
|
|
27
|
+
rewardWinnerAmount: z.number(),
|
|
28
|
+
lastClients: z.any(),
|
|
29
|
+
})
|
|
30
|
+
)
|
|
31
|
+
.mutation(({ input, ctx }) => {
|
|
32
|
+
return { status: 1 };
|
|
33
|
+
}),
|
|
34
|
+
|
|
35
|
+
getScene: t.procedure
|
|
36
|
+
.input(
|
|
37
|
+
z.object({
|
|
38
|
+
data: z.any(),
|
|
39
|
+
signature: z.object({ hash: z.string(), address: z.string() }),
|
|
40
|
+
})
|
|
41
|
+
)
|
|
42
|
+
.query(({ input, ctx }) => {
|
|
43
|
+
let data = {};
|
|
44
|
+
|
|
45
|
+
if (input.data.applicationId === '668e4e805f9a03927caf883b') {
|
|
46
|
+
data = {
|
|
47
|
+
...data,
|
|
48
|
+
objects: [
|
|
49
|
+
{
|
|
50
|
+
id: 'adsad',
|
|
51
|
+
file: 'asdasdas.fbx',
|
|
52
|
+
position: {
|
|
53
|
+
x: 1000,
|
|
54
|
+
y: 1000,
|
|
55
|
+
z: 1000,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
] as Arken.Core.Types.Object,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return data;
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export type Router = ReturnType<typeof createRouter>;
|
|
67
|
+
export type RouterInput = inferRouterInputs<Router>;
|
|
68
|
+
export type RouterOutput = inferRouterOutputs<Router>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { z, ObjectId, Entity } from '@arken/node/schema';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { RouterContext, RouterInput, RouterOutput } from './oasis.types';
|
|
2
|
+
import { getFilter } from '@arken/node/util/api';
|
|
3
|
+
import { ARXError } from '@arken/node/util/rpc';
|
|
4
|
+
import * as Arken from '@arken/node';
|
|
5
|
+
|
|
6
|
+
export class Service {
|
|
7
|
+
async getPatrons(input: RouterInput['getPatrons'], ctx: RouterContext): Promise<RouterOutput['getPatrons']> {
|
|
8
|
+
console.log('Oasis.Service.getPatrons', input);
|
|
9
|
+
|
|
10
|
+
const cubes = await ctx.app.model.Item.aggregate([
|
|
11
|
+
{ $match: { name: "Founder's Cube" } },
|
|
12
|
+
{ $sort: { quantity: -1 } },
|
|
13
|
+
{ $limit: 15 },
|
|
14
|
+
{
|
|
15
|
+
$lookup: {
|
|
16
|
+
from: 'Character',
|
|
17
|
+
localField: 'characterId',
|
|
18
|
+
foreignField: '_id',
|
|
19
|
+
as: 'character',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
{ $unwind: '$character' },
|
|
23
|
+
{
|
|
24
|
+
$lookup: {
|
|
25
|
+
from: 'Profile',
|
|
26
|
+
localField: 'character.profileId',
|
|
27
|
+
foreignField: '_id',
|
|
28
|
+
as: 'character.profile',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{ $unwind: '$character.profile' },
|
|
32
|
+
]);
|
|
33
|
+
console.log(cubes);
|
|
34
|
+
const profiles = cubes.map((ticket: any) => ticket.character?.profile);
|
|
35
|
+
|
|
36
|
+
return profiles as Arken.Profile.Types.Profile[];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Model, Document } from '@arken/node/util/mongo';
|
|
3
|
+
import * as schema from './oasis.schema';
|
|
4
|
+
|
|
5
|
+
export type * from './oasis.router';
|
|
6
|
+
export type * from './oasis.service';
|
|
7
|
+
export type { RouterContext } from '../../types';
|
|
8
|
+
|
|
9
|
+
// // Define types based on the schema
|
|
10
|
+
// export type Game = z.infer<typeof schema.Game>;
|
|
11
|
+
// export type GameDocument = Game & Document;
|
|
12
|
+
|
|
13
|
+
// export type GameStat = z.infer<typeof schema.GameStat>;
|
|
14
|
+
// export type GameStatDocument = GameStat & Document;
|
|
15
|
+
|
|
16
|
+
// export type Era = z.infer<typeof schema.Era>;
|
|
17
|
+
// export type EraDocument = Era & Document;
|
|
18
|
+
|
|
19
|
+
// Mappings for MongoDB models
|
|
20
|
+
export type Mappings = {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { z, ObjectId, Entity } from '@arken/node/schema';
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// arken/packages/seer/packages/protocol/src/modules/trek/trek.router.ts
|
|
2
|
+
|
|
3
|
+
import { z as zod } from 'zod';
|
|
4
|
+
import { initTRPC } from '@trpc/server';
|
|
5
|
+
import { customErrorFormatter, hasRole } from '@arken/node/util/rpc';
|
|
6
|
+
import type { inferRouterOutputs, inferRouterInputs } from '@trpc/server';
|
|
7
|
+
import type { RouterContext } from '../../types';
|
|
8
|
+
|
|
9
|
+
export const z = zod;
|
|
10
|
+
export const t = initTRPC.context<RouterContext>().create();
|
|
11
|
+
export const router = t.router;
|
|
12
|
+
export const procedure = t.procedure;
|
|
13
|
+
|
|
14
|
+
// If you want stricter outputs later you can add .output() schemas.
|
|
15
|
+
// For now we keep it flexible while wiring up the service.
|
|
16
|
+
|
|
17
|
+
export const createRouter = () =>
|
|
18
|
+
router({
|
|
19
|
+
/**
|
|
20
|
+
* Read current trek state for the active character.
|
|
21
|
+
* UI calls this as: trpc.trek.getState.useQuery({ metaverseId, trekId })
|
|
22
|
+
*/
|
|
23
|
+
getState: procedure
|
|
24
|
+
.use(hasRole('guest', t))
|
|
25
|
+
.use(customErrorFormatter(t))
|
|
26
|
+
.input(
|
|
27
|
+
z.object({
|
|
28
|
+
metaverseId: z.string().optional(),
|
|
29
|
+
trekId: z.string().optional(), // aka defKey
|
|
30
|
+
})
|
|
31
|
+
)
|
|
32
|
+
.query(({ input, ctx }) => {
|
|
33
|
+
return (ctx.app.service.Trek as any).getState(
|
|
34
|
+
{
|
|
35
|
+
defKey: input?.trekId || 'trek.default',
|
|
36
|
+
metaverseId: input?.metaverseId,
|
|
37
|
+
},
|
|
38
|
+
ctx
|
|
39
|
+
);
|
|
40
|
+
}),
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Generate the next open node IF no open node exists.
|
|
44
|
+
* Equivalent to "Next Stop" in UI.
|
|
45
|
+
*/
|
|
46
|
+
nextStop: procedure
|
|
47
|
+
.use(hasRole('user', t))
|
|
48
|
+
.use(customErrorFormatter(t))
|
|
49
|
+
.input(
|
|
50
|
+
z.object({
|
|
51
|
+
trekId: z.string().optional(), // aka defKey
|
|
52
|
+
})
|
|
53
|
+
)
|
|
54
|
+
.mutation(({ input, ctx }) => {
|
|
55
|
+
return (ctx.app.service.Trek as any).nextStop({ defKey: input?.trekId || 'trek.default' }, ctx);
|
|
56
|
+
}),
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Choose a choice on the open node.
|
|
60
|
+
*/
|
|
61
|
+
choose: procedure
|
|
62
|
+
.use(hasRole('user', t))
|
|
63
|
+
.use(customErrorFormatter(t))
|
|
64
|
+
.input(
|
|
65
|
+
z.object({
|
|
66
|
+
runId: z.string(),
|
|
67
|
+
nodeId: z.string(),
|
|
68
|
+
choiceId: z.string(),
|
|
69
|
+
})
|
|
70
|
+
)
|
|
71
|
+
.mutation(({ input, ctx }) => {
|
|
72
|
+
return (ctx.app.service.Trek as any).choose(input, ctx);
|
|
73
|
+
}),
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
export type Router = ReturnType<typeof createRouter>;
|
|
77
|
+
export type RouterInput = inferRouterInputs<Router>;
|
|
78
|
+
export type RouterOutput = inferRouterOutputs<Router>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { z, ObjectId, Entity } from '@arken/node/schema';
|