@xyo-network/id-plugin 2.42.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/LICENSE +165 -0
- package/README.md +81 -0
- package/dist/cjs/Plugin.d.ts +16 -0
- package/dist/cjs/Plugin.d.ts.map +1 -0
- package/dist/cjs/Plugin.js +16 -0
- package/dist/cjs/Plugin.js.map +1 -0
- package/dist/cjs/Witness.d.ts +17 -0
- package/dist/cjs/Witness.d.ts.map +1 -0
- package/dist/cjs/Witness.js +45 -0
- package/dist/cjs/Witness.js.map +1 -0
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +4898 -0
- package/dist/esm/Plugin.d.ts +16 -0
- package/dist/esm/Plugin.d.ts.map +1 -0
- package/dist/esm/Plugin.js +11 -0
- package/dist/esm/Plugin.js.map +1 -0
- package/dist/esm/Witness.d.ts +17 -0
- package/dist/esm/Witness.d.ts.map +1 -0
- package/dist/esm/Witness.js +28 -0
- package/dist/esm/Witness.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +54 -0
- package/src/Plugin.spec.ts +13 -0
- package/src/Plugin.ts +17 -0
- package/src/Witness.browser.spec.ts +26 -0
- package/src/Witness.spec.ts +78 -0
- package/src/Witness.ts +42 -0
- package/src/index.ts +8 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { XyoModuleParams } from '@xyo-network/module';
|
|
2
|
+
import { PayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin';
|
|
3
|
+
export declare const IdPlugin: () => PayloadSetWitnessPlugin<XyoModuleParams<import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & {
|
|
4
|
+
security?: {
|
|
5
|
+
allowed?: Record<string, string[][]> | undefined;
|
|
6
|
+
disallowed?: Record<string, string[]> | undefined;
|
|
7
|
+
} | undefined;
|
|
8
|
+
} & {
|
|
9
|
+
salt: string;
|
|
10
|
+
schema: "network.xyo.id.witness.config";
|
|
11
|
+
} & {
|
|
12
|
+
targetSet?: (import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & import("@xyo-network/payload").PayloadSet & {
|
|
13
|
+
schema: "network.xyo.payload.set";
|
|
14
|
+
}) | undefined;
|
|
15
|
+
}>>;
|
|
16
|
+
//# sourceMappingURL=Plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAA0B,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAIhG,eAAO,MAAM,QAAQ;;;;;;;;;;;;GASlB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IdSchema } from '@xyo-network/id-payload-plugin';
|
|
2
|
+
import { PayloadSetSchema } from '@xyo-network/payload';
|
|
3
|
+
import { createPayloadSetPlugin } from '@xyo-network/payloadset-plugin';
|
|
4
|
+
import { IdWitness } from './Witness';
|
|
5
|
+
export const IdPlugin = () => createPayloadSetPlugin({ required: { [IdSchema]: 1 }, schema: PayloadSetSchema }, {
|
|
6
|
+
witness: async (params) => {
|
|
7
|
+
const result = await IdWitness.create(params);
|
|
8
|
+
return result;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=Plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAA2B,MAAM,gCAAgC,CAAA;AAEhG,OAAO,EAAE,SAAS,EAAmB,MAAM,WAAW,CAAA;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAC3B,sBAAsB,CACpB,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EACzD;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC7C,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IdPayload } from '@xyo-network/id-payload-plugin';
|
|
2
|
+
import { XyoModuleParams } from '@xyo-network/module';
|
|
3
|
+
import { XyoPayload } from '@xyo-network/payload';
|
|
4
|
+
import { AbstractWitness, XyoWitnessConfig } from '@xyo-network/witness';
|
|
5
|
+
export type IdWitnessConfigSchema = 'network.xyo.id.witness.config';
|
|
6
|
+
export declare const IdWitnessConfigSchema: IdWitnessConfigSchema;
|
|
7
|
+
export type IdWitnessConfig = XyoWitnessConfig<{
|
|
8
|
+
salt: string;
|
|
9
|
+
schema: IdWitnessConfigSchema;
|
|
10
|
+
}>;
|
|
11
|
+
export declare class IdWitness extends AbstractWitness<IdWitnessConfig> {
|
|
12
|
+
static configSchema: "network.xyo.id.witness.config";
|
|
13
|
+
get salt(): string;
|
|
14
|
+
static create(params?: XyoModuleParams<IdWitnessConfig>): Promise<IdWitness>;
|
|
15
|
+
observe(payloads?: IdPayload[]): Promise<XyoPayload[]>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=Witness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,gCAAgC,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAExE,MAAM,MAAM,qBAAqB,GAAG,+BAA+B,CAAA;AACnE,eAAO,MAAM,qBAAqB,EAAE,qBAAuD,CAAA;AAE3F,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,qBAAqB,CAAA;CAC9B,CAAC,CAAA;AAEF,qBAAa,SAAU,SAAQ,eAAe,CAAC,eAAe,CAAC;IAC7D,OAAgB,YAAY,kCAAwB;IAEpD,IAAW,IAAI,WAEd;WAEqB,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAI5E,OAAO,CAAC,QAAQ,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAiB1E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { IdSchema } from '@xyo-network/id-payload-plugin';
|
|
2
|
+
import { AbstractWitness } from '@xyo-network/witness';
|
|
3
|
+
export const IdWitnessConfigSchema = 'network.xyo.id.witness.config';
|
|
4
|
+
export class IdWitness extends AbstractWitness {
|
|
5
|
+
static configSchema = IdWitnessConfigSchema;
|
|
6
|
+
get salt() {
|
|
7
|
+
return this.config?.salt ?? `${Math.floor(Math.random() * 9999999)}`;
|
|
8
|
+
}
|
|
9
|
+
static async create(params) {
|
|
10
|
+
return (await super.create(params));
|
|
11
|
+
}
|
|
12
|
+
async observe(payloads = []) {
|
|
13
|
+
return await super.observe(payloads.length > 0
|
|
14
|
+
? payloads.map((fieldItems) => {
|
|
15
|
+
return {
|
|
16
|
+
salt: fieldItems?.salt ?? this.salt,
|
|
17
|
+
schema: IdSchema,
|
|
18
|
+
};
|
|
19
|
+
})
|
|
20
|
+
: [
|
|
21
|
+
{
|
|
22
|
+
salt: this.salt,
|
|
23
|
+
schema: IdSchema,
|
|
24
|
+
},
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=Witness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAGpE,OAAO,EAAE,eAAe,EAAoB,MAAM,sBAAsB,CAAA;AAGxE,MAAM,CAAC,MAAM,qBAAqB,GAA0B,+BAA+B,CAAA;AAO3F,MAAM,OAAO,SAAU,SAAQ,eAAgC;IAC7D,MAAM,CAAU,YAAY,GAAG,qBAAqB,CAAA;IAEpD,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;IACtE,CAAC;IAED,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAAyC;QACpE,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAc,CAAA;IAClD,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,WAAwB,EAAE;QAC/C,OAAO,MAAM,KAAK,CAAC,OAAO,CACxB,QAAQ,CAAC,MAAM,GAAG,CAAC;YACjB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBAC1B,OAAO;oBACL,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI;oBACnC,MAAM,EAAE,QAAQ;iBACjB,CAAA;YACH,CAAC,CAAC;YACJ,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,QAAQ;iBACjB;aACF,CACN,CAAA;IACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,CAAA;AAGnB,eAAe,QAAQ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAEnC,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,CAAA;AAEnB,oDAAoD;AACpD,eAAe,QAAQ,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xyo-network/id-plugin",
|
|
3
|
+
"author": {
|
|
4
|
+
"email": "support@xyo.network",
|
|
5
|
+
"name": "XYO Development Team",
|
|
6
|
+
"url": "https://xyo.network"
|
|
7
|
+
},
|
|
8
|
+
"bugs": {
|
|
9
|
+
"email": "support@xyo.network",
|
|
10
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@xyo-network/id-payload-plugin": "^2.42.0",
|
|
14
|
+
"@xyo-network/module": "^2.42.0",
|
|
15
|
+
"@xyo-network/payload": "^2.42.0",
|
|
16
|
+
"@xyo-network/payloadset-plugin": "^2.42.0",
|
|
17
|
+
"@xyo-network/witness": "^2.42.0",
|
|
18
|
+
"tslib": "^2.4.1"
|
|
19
|
+
},
|
|
20
|
+
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
21
|
+
"browser": "dist/esm/index.js",
|
|
22
|
+
"docs": "dist/docs.json",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"node": {
|
|
26
|
+
"import": "./dist/esm/index.js",
|
|
27
|
+
"require": "./dist/cjs/index.js"
|
|
28
|
+
},
|
|
29
|
+
"browser": {
|
|
30
|
+
"import": "./dist/esm/index.js",
|
|
31
|
+
"require": "./dist/cjs/index.js"
|
|
32
|
+
},
|
|
33
|
+
"default": "./dist/esm/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./dist/docs.json": {
|
|
36
|
+
"default": "./dist/docs.json"
|
|
37
|
+
},
|
|
38
|
+
"./package.json": "./package.json"
|
|
39
|
+
},
|
|
40
|
+
"main": "dist/cjs/index.js",
|
|
41
|
+
"module": "dist/esm/index.js",
|
|
42
|
+
"homepage": "https://xyo.network",
|
|
43
|
+
"license": "LGPL-3.0-only",
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
50
|
+
},
|
|
51
|
+
"sideEffects": false,
|
|
52
|
+
"types": "dist/esm/index.d.ts",
|
|
53
|
+
"version": "2.42.0"
|
|
54
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IdSchema } from '@xyo-network/id-payload-plugin'
|
|
2
|
+
import { PayloadSetPluginResolver } from '@xyo-network/payloadset-plugin'
|
|
3
|
+
|
|
4
|
+
import { IdPlugin } from './Plugin'
|
|
5
|
+
|
|
6
|
+
describe('IdPlugin', () => {
|
|
7
|
+
test('Add to Resolver', () => {
|
|
8
|
+
const plugin = IdPlugin()
|
|
9
|
+
const resolver = new PayloadSetPluginResolver().register(plugin)
|
|
10
|
+
expect(resolver.resolve(plugin.set)).toBeObject()
|
|
11
|
+
expect(resolver.witness(IdSchema)).toBeObject()
|
|
12
|
+
})
|
|
13
|
+
})
|
package/src/Plugin.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IdSchema } from '@xyo-network/id-payload-plugin'
|
|
2
|
+
import { XyoModuleParams } from '@xyo-network/module'
|
|
3
|
+
import { PayloadSetSchema } from '@xyo-network/payload'
|
|
4
|
+
import { createPayloadSetPlugin, PayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
|
|
5
|
+
|
|
6
|
+
import { IdWitness, IdWitnessConfig } from './Witness'
|
|
7
|
+
|
|
8
|
+
export const IdPlugin = () =>
|
|
9
|
+
createPayloadSetPlugin<PayloadSetWitnessPlugin<XyoModuleParams<IdWitnessConfig>>>(
|
|
10
|
+
{ required: { [IdSchema]: 1 }, schema: PayloadSetSchema },
|
|
11
|
+
{
|
|
12
|
+
witness: async (params) => {
|
|
13
|
+
const result = await IdWitness.create(params)
|
|
14
|
+
return result
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jest-environment jsdom
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { IdSchema } from '@xyo-network/id-payload-plugin'
|
|
6
|
+
import { PayloadWrapper } from '@xyo-network/payload'
|
|
7
|
+
|
|
8
|
+
import { IdWitness, IdWitnessConfigSchema } from './Witness'
|
|
9
|
+
|
|
10
|
+
describe('IdWitness [Browser]', () => {
|
|
11
|
+
test('observe', async () => {
|
|
12
|
+
const witness = await IdWitness.create({
|
|
13
|
+
config: { salt: 'test', schema: IdWitnessConfigSchema },
|
|
14
|
+
})
|
|
15
|
+
const [observation] = await witness.observe([{ salt: 'test', schema: IdSchema }])
|
|
16
|
+
expect(observation.schema).toBe(IdSchema)
|
|
17
|
+
expect(new PayloadWrapper(observation).valid).toBe(true)
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
test('observe [no config]', async () => {
|
|
21
|
+
const witness = await IdWitness.create()
|
|
22
|
+
const [observation] = await witness.observe([{ salt: 'test', schema: IdSchema }])
|
|
23
|
+
expect(observation.schema).toBe(IdSchema)
|
|
24
|
+
expect(new PayloadWrapper(observation).valid).toBe(true)
|
|
25
|
+
})
|
|
26
|
+
})
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { IdPayload, IdSchema } from '@xyo-network/id-payload-plugin'
|
|
2
|
+
import { PayloadWrapper } from '@xyo-network/payload'
|
|
3
|
+
|
|
4
|
+
import { IdWitness, IdWitnessConfigSchema } from './Witness'
|
|
5
|
+
|
|
6
|
+
describe('IdWitness', () => {
|
|
7
|
+
describe('observe', () => {
|
|
8
|
+
const payloadSalt = 'payload salt'
|
|
9
|
+
describe('with config', () => {
|
|
10
|
+
const configSalt = 'config salt'
|
|
11
|
+
const config = {
|
|
12
|
+
salt: configSalt,
|
|
13
|
+
schema: IdWitnessConfigSchema,
|
|
14
|
+
targetSchema: IdSchema,
|
|
15
|
+
}
|
|
16
|
+
describe('with payloads supplied to observe', () => {
|
|
17
|
+
it('without salt uses config salt', async () => {
|
|
18
|
+
const witness = await IdWitness.create({ config })
|
|
19
|
+
const observations = (await witness.observe()) as IdPayload[]
|
|
20
|
+
validateObservationShape(observations)
|
|
21
|
+
const [observation] = observations
|
|
22
|
+
expect(observation.salt).toBe(witness.config.salt)
|
|
23
|
+
})
|
|
24
|
+
it('with salt uses payload salt', async () => {
|
|
25
|
+
const witness = await IdWitness.create({ config })
|
|
26
|
+
const observations = (await witness.observe([{ salt: payloadSalt, schema: IdSchema }])) as IdPayload[]
|
|
27
|
+
validateObservationShape(observations)
|
|
28
|
+
const [observation] = observations
|
|
29
|
+
expect(observation.salt).toBe(payloadSalt)
|
|
30
|
+
})
|
|
31
|
+
})
|
|
32
|
+
describe('with no payloads supplied to observe', () => {
|
|
33
|
+
it('uses config salt', async () => {
|
|
34
|
+
const witness = await IdWitness.create({ config })
|
|
35
|
+
const observations = (await witness.observe()) as IdPayload[]
|
|
36
|
+
validateObservationShape(observations)
|
|
37
|
+
const [observation] = observations
|
|
38
|
+
expect(observation.salt).toBe(witness.config.salt)
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
})
|
|
42
|
+
describe('with no config', () => {
|
|
43
|
+
describe('with payloads supplied to observe', () => {
|
|
44
|
+
it('without salt uses random numeric string', async () => {
|
|
45
|
+
const witness = await IdWitness.create()
|
|
46
|
+
const observations = (await witness.observe()) as IdPayload[]
|
|
47
|
+
validateObservationShape(observations)
|
|
48
|
+
const [observation] = observations
|
|
49
|
+
expect(parseInt(observation.salt)).toBeInteger()
|
|
50
|
+
})
|
|
51
|
+
it('with salt uses payload salt', async () => {
|
|
52
|
+
const witness = await IdWitness.create()
|
|
53
|
+
const observations = (await witness.observe([{ salt: payloadSalt, schema: IdSchema }])) as IdPayload[]
|
|
54
|
+
validateObservationShape(observations)
|
|
55
|
+
const [observation] = observations
|
|
56
|
+
expect(observation.salt).toBe(payloadSalt)
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
describe('with no payloads supplied to observe', () => {
|
|
60
|
+
it('uses random numeric string', async () => {
|
|
61
|
+
const witness = await IdWitness.create()
|
|
62
|
+
const observations = (await witness.observe()) as IdPayload[]
|
|
63
|
+
validateObservationShape(observations)
|
|
64
|
+
const [observation] = observations
|
|
65
|
+
expect(parseInt(observation.salt)).toBeInteger()
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
|
+
})
|
|
69
|
+
})
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
const validateObservationShape = (observations: IdPayload[]) => {
|
|
73
|
+
expect(observations).toBeArrayOfSize(1)
|
|
74
|
+
const [observation] = observations
|
|
75
|
+
expect(observation.salt).toBeString()
|
|
76
|
+
expect(observation.schema).toBe(IdSchema)
|
|
77
|
+
expect(new PayloadWrapper(observation).valid).toBe(true)
|
|
78
|
+
}
|
package/src/Witness.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { IdPayload, IdSchema } from '@xyo-network/id-payload-plugin'
|
|
2
|
+
import { XyoModuleParams } from '@xyo-network/module'
|
|
3
|
+
import { XyoPayload } from '@xyo-network/payload'
|
|
4
|
+
import { AbstractWitness, XyoWitnessConfig } from '@xyo-network/witness'
|
|
5
|
+
|
|
6
|
+
export type IdWitnessConfigSchema = 'network.xyo.id.witness.config'
|
|
7
|
+
export const IdWitnessConfigSchema: IdWitnessConfigSchema = 'network.xyo.id.witness.config'
|
|
8
|
+
|
|
9
|
+
export type IdWitnessConfig = XyoWitnessConfig<{
|
|
10
|
+
salt: string
|
|
11
|
+
schema: IdWitnessConfigSchema
|
|
12
|
+
}>
|
|
13
|
+
|
|
14
|
+
export class IdWitness extends AbstractWitness<IdWitnessConfig> {
|
|
15
|
+
static override configSchema = IdWitnessConfigSchema
|
|
16
|
+
|
|
17
|
+
public get salt() {
|
|
18
|
+
return this.config?.salt ?? `${Math.floor(Math.random() * 9999999)}`
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static override async create(params?: XyoModuleParams<IdWitnessConfig>): Promise<IdWitness> {
|
|
22
|
+
return (await super.create(params)) as IdWitness
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
override async observe(payloads: IdPayload[] = []): Promise<XyoPayload[]> {
|
|
26
|
+
return await super.observe(
|
|
27
|
+
payloads.length > 0
|
|
28
|
+
? payloads.map((fieldItems) => {
|
|
29
|
+
return {
|
|
30
|
+
salt: fieldItems?.salt ?? this.salt,
|
|
31
|
+
schema: IdSchema,
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
: [
|
|
35
|
+
{
|
|
36
|
+
salt: this.salt,
|
|
37
|
+
schema: IdSchema,
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
}
|