@xyo-network/module-model 2.72.8 → 2.73.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/dist/index.d.mts +330 -0
- package/dist/index.d.ts +330 -0
- package/dist/index.js +7486 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +7433 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +41 -28
- package/src/ModuleFactory.ts +1 -1
- package/src/lib/serializable.ts +1 -9
- package/tsup.config.ts +16 -0
- package/dist/cjs/Config.js +0 -5
- package/dist/cjs/Config.js.map +0 -1
- package/dist/cjs/CreatableModule.js +0 -16
- package/dist/cjs/CreatableModule.js.map +0 -1
- package/dist/cjs/CreatableModuleDictionary.js +0 -3
- package/dist/cjs/CreatableModuleDictionary.js.map +0 -1
- package/dist/cjs/Events/ModuleBusy.js +0 -3
- package/dist/cjs/Events/ModuleBusy.js.map +0 -1
- package/dist/cjs/Events/ModuleError.js +0 -3
- package/dist/cjs/Events/ModuleError.js.map +0 -1
- package/dist/cjs/Events/ModuleEventArgs.js +0 -3
- package/dist/cjs/Events/ModuleEventArgs.js.map +0 -1
- package/dist/cjs/Events/ModuleEventData.js +0 -3
- package/dist/cjs/Events/ModuleEventData.js.map +0 -1
- package/dist/cjs/Events/ModuleQueried.js +0 -3
- package/dist/cjs/Events/ModuleQueried.js.map +0 -1
- package/dist/cjs/Events/index.js +0 -9
- package/dist/cjs/Events/index.js.map +0 -1
- package/dist/cjs/ModuleDescription.js +0 -3
- package/dist/cjs/ModuleDescription.js.map +0 -1
- package/dist/cjs/ModuleFactory.js +0 -48
- package/dist/cjs/ModuleFactory.js.map +0 -1
- package/dist/cjs/ModuleParams.js +0 -3
- package/dist/cjs/ModuleParams.js.map +0 -1
- package/dist/cjs/ModuleQueryHandlerResult.js +0 -3
- package/dist/cjs/ModuleQueryHandlerResult.js.map +0 -1
- package/dist/cjs/ModuleQueryResult.js +0 -3
- package/dist/cjs/ModuleQueryResult.js.map +0 -1
- package/dist/cjs/Queries/Describe/Payload.js +0 -5
- package/dist/cjs/Queries/Describe/Payload.js.map +0 -1
- package/dist/cjs/Queries/Describe/Query.js +0 -5
- package/dist/cjs/Queries/Describe/Query.js.map +0 -1
- package/dist/cjs/Queries/Describe/index.js +0 -6
- package/dist/cjs/Queries/Describe/index.js.map +0 -1
- package/dist/cjs/Queries/Discover.js +0 -5
- package/dist/cjs/Queries/Discover.js.map +0 -1
- package/dist/cjs/Queries/Manifest.js +0 -5
- package/dist/cjs/Queries/Manifest.js.map +0 -1
- package/dist/cjs/Queries/ModuleAddress/Payload.js +0 -6
- package/dist/cjs/Queries/ModuleAddress/Payload.js.map +0 -1
- package/dist/cjs/Queries/ModuleAddress/Query.js +0 -5
- package/dist/cjs/Queries/ModuleAddress/Query.js.map +0 -1
- package/dist/cjs/Queries/ModuleAddress/index.js +0 -6
- package/dist/cjs/Queries/ModuleAddress/index.js.map +0 -1
- package/dist/cjs/Queries/Subscribe.js +0 -5
- package/dist/cjs/Queries/Subscribe.js.map +0 -1
- package/dist/cjs/Queries/index.js +0 -9
- package/dist/cjs/Queries/index.js.map +0 -1
- package/dist/cjs/index.js +0 -18
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/instance/ModuleInstance.js +0 -8
- package/dist/cjs/instance/ModuleInstance.js.map +0 -1
- package/dist/cjs/instance/ModuleRepository.js +0 -3
- package/dist/cjs/instance/ModuleRepository.js.map +0 -1
- package/dist/cjs/instance/asModuleInstance.js +0 -7
- package/dist/cjs/instance/asModuleInstance.js.map +0 -1
- package/dist/cjs/instance/index.js +0 -8
- package/dist/cjs/instance/index.js.map +0 -1
- package/dist/cjs/instance/isModuleInstance.js +0 -15
- package/dist/cjs/instance/isModuleInstance.js.map +0 -1
- package/dist/cjs/lib/duplicateModules.js +0 -17
- package/dist/cjs/lib/duplicateModules.js.map +0 -1
- package/dist/cjs/lib/index.js +0 -6
- package/dist/cjs/lib/index.js.map +0 -1
- package/dist/cjs/lib/serializable.js +0 -38
- package/dist/cjs/lib/serializable.js.map +0 -1
- package/dist/cjs/module/IsModuleFactory.js +0 -20
- package/dist/cjs/module/IsModuleFactory.js.map +0 -1
- package/dist/cjs/module/Module.js +0 -3
- package/dist/cjs/module/Module.js.map +0 -1
- package/dist/cjs/module/ModuleFields.js +0 -3
- package/dist/cjs/module/ModuleFields.js.map +0 -1
- package/dist/cjs/module/ModuleQueryFunctions.js +0 -3
- package/dist/cjs/module/ModuleQueryFunctions.js.map +0 -1
- package/dist/cjs/module/asModule.js +0 -7
- package/dist/cjs/module/asModule.js.map +0 -1
- package/dist/cjs/module/asModuleObject.js +0 -7
- package/dist/cjs/module/asModuleObject.js.map +0 -1
- package/dist/cjs/module/index.js +0 -12
- package/dist/cjs/module/index.js.map +0 -1
- package/dist/cjs/module/isModule.js +0 -18
- package/dist/cjs/module/isModule.js.map +0 -1
- package/dist/cjs/module/isModuleObject.js +0 -15
- package/dist/cjs/module/isModuleObject.js.map +0 -1
- package/dist/cjs/withModule.js +0 -19
- package/dist/cjs/withModule.js.map +0 -1
- package/dist/docs.json +0 -51205
- package/dist/esm/Config.js +0 -2
- package/dist/esm/Config.js.map +0 -1
- package/dist/esm/CreatableModule.js +0 -12
- package/dist/esm/CreatableModule.js.map +0 -1
- package/dist/esm/CreatableModuleDictionary.js +0 -2
- package/dist/esm/CreatableModuleDictionary.js.map +0 -1
- package/dist/esm/Events/ModuleBusy.js +0 -2
- package/dist/esm/Events/ModuleBusy.js.map +0 -1
- package/dist/esm/Events/ModuleError.js +0 -2
- package/dist/esm/Events/ModuleError.js.map +0 -1
- package/dist/esm/Events/ModuleEventArgs.js +0 -2
- package/dist/esm/Events/ModuleEventArgs.js.map +0 -1
- package/dist/esm/Events/ModuleEventData.js +0 -2
- package/dist/esm/Events/ModuleEventData.js.map +0 -1
- package/dist/esm/Events/ModuleQueried.js +0 -2
- package/dist/esm/Events/ModuleQueried.js.map +0 -1
- package/dist/esm/Events/index.js +0 -6
- package/dist/esm/Events/index.js.map +0 -1
- package/dist/esm/ModuleDescription.js +0 -2
- package/dist/esm/ModuleDescription.js.map +0 -1
- package/dist/esm/ModuleFactory.js +0 -46
- package/dist/esm/ModuleFactory.js.map +0 -1
- package/dist/esm/ModuleParams.js +0 -2
- package/dist/esm/ModuleParams.js.map +0 -1
- package/dist/esm/ModuleQueryHandlerResult.js +0 -2
- package/dist/esm/ModuleQueryHandlerResult.js.map +0 -1
- package/dist/esm/ModuleQueryResult.js +0 -2
- package/dist/esm/ModuleQueryResult.js.map +0 -1
- package/dist/esm/Queries/Describe/Payload.js +0 -2
- package/dist/esm/Queries/Describe/Payload.js.map +0 -1
- package/dist/esm/Queries/Describe/Query.js +0 -2
- package/dist/esm/Queries/Describe/Query.js.map +0 -1
- package/dist/esm/Queries/Describe/index.js +0 -3
- package/dist/esm/Queries/Describe/index.js.map +0 -1
- package/dist/esm/Queries/Discover.js +0 -2
- package/dist/esm/Queries/Discover.js.map +0 -1
- package/dist/esm/Queries/Manifest.js +0 -2
- package/dist/esm/Queries/Manifest.js.map +0 -1
- package/dist/esm/Queries/ModuleAddress/Payload.js +0 -3
- package/dist/esm/Queries/ModuleAddress/Payload.js.map +0 -1
- package/dist/esm/Queries/ModuleAddress/Query.js +0 -2
- package/dist/esm/Queries/ModuleAddress/Query.js.map +0 -1
- package/dist/esm/Queries/ModuleAddress/index.js +0 -3
- package/dist/esm/Queries/ModuleAddress/index.js.map +0 -1
- package/dist/esm/Queries/Subscribe.js +0 -2
- package/dist/esm/Queries/Subscribe.js.map +0 -1
- package/dist/esm/Queries/index.js +0 -6
- package/dist/esm/Queries/index.js.map +0 -1
- package/dist/esm/index.js +0 -15
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/instance/ModuleInstance.js +0 -4
- package/dist/esm/instance/ModuleInstance.js.map +0 -1
- package/dist/esm/instance/ModuleRepository.js +0 -2
- package/dist/esm/instance/ModuleRepository.js.map +0 -1
- package/dist/esm/instance/asModuleInstance.js +0 -4
- package/dist/esm/instance/asModuleInstance.js.map +0 -1
- package/dist/esm/instance/index.js +0 -5
- package/dist/esm/instance/index.js.map +0 -1
- package/dist/esm/instance/isModuleInstance.js +0 -12
- package/dist/esm/instance/isModuleInstance.js.map +0 -1
- package/dist/esm/lib/duplicateModules.js +0 -13
- package/dist/esm/lib/duplicateModules.js.map +0 -1
- package/dist/esm/lib/index.js +0 -3
- package/dist/esm/lib/index.js.map +0 -1
- package/dist/esm/lib/serializable.js +0 -32
- package/dist/esm/lib/serializable.js.map +0 -1
- package/dist/esm/module/IsModuleFactory.js +0 -15
- package/dist/esm/module/IsModuleFactory.js.map +0 -1
- package/dist/esm/module/Module.js +0 -2
- package/dist/esm/module/Module.js.map +0 -1
- package/dist/esm/module/ModuleFields.js +0 -2
- package/dist/esm/module/ModuleFields.js.map +0 -1
- package/dist/esm/module/ModuleQueryFunctions.js +0 -2
- package/dist/esm/module/ModuleQueryFunctions.js.map +0 -1
- package/dist/esm/module/asModule.js +0 -4
- package/dist/esm/module/asModule.js.map +0 -1
- package/dist/esm/module/asModuleObject.js +0 -4
- package/dist/esm/module/asModuleObject.js.map +0 -1
- package/dist/esm/module/index.js +0 -9
- package/dist/esm/module/index.js.map +0 -1
- package/dist/esm/module/isModule.js +0 -15
- package/dist/esm/module/isModule.js.map +0 -1
- package/dist/esm/module/isModuleObject.js +0 -12
- package/dist/esm/module/isModuleObject.js.map +0 -1
- package/dist/esm/withModule.js +0 -16
- package/dist/esm/withModule.js.map +0 -1
- package/dist/types/Config.d.ts +0 -56
- package/dist/types/Config.d.ts.map +0 -1
- package/dist/types/CreatableModule.d.ts +0 -23
- package/dist/types/CreatableModule.d.ts.map +0 -1
- package/dist/types/CreatableModuleDictionary.d.ts +0 -5
- package/dist/types/CreatableModuleDictionary.d.ts.map +0 -1
- package/dist/types/Events/ModuleBusy.d.ts +0 -9
- package/dist/types/Events/ModuleBusy.d.ts.map +0 -1
- package/dist/types/Events/ModuleError.d.ts +0 -9
- package/dist/types/Events/ModuleError.d.ts.map +0 -1
- package/dist/types/Events/ModuleEventArgs.d.ts +0 -7
- package/dist/types/Events/ModuleEventArgs.d.ts.map +0 -1
- package/dist/types/Events/ModuleEventData.d.ts +0 -6
- package/dist/types/Events/ModuleEventData.d.ts.map +0 -1
- package/dist/types/Events/ModuleQueried.d.ts +0 -14
- package/dist/types/Events/ModuleQueried.d.ts.map +0 -1
- package/dist/types/Events/index.d.ts +0 -6
- package/dist/types/Events/index.d.ts.map +0 -1
- package/dist/types/ModuleDescription.d.ts +0 -7
- package/dist/types/ModuleDescription.d.ts.map +0 -1
- package/dist/types/ModuleFactory.d.ts +0 -23
- package/dist/types/ModuleFactory.d.ts.map +0 -1
- package/dist/types/ModuleParams.d.ts +0 -12
- package/dist/types/ModuleParams.d.ts.map +0 -1
- package/dist/types/ModuleQueryHandlerResult.d.ts +0 -3
- package/dist/types/ModuleQueryHandlerResult.d.ts.map +0 -1
- package/dist/types/ModuleQueryResult.d.ts +0 -4
- package/dist/types/ModuleQueryResult.d.ts.map +0 -1
- package/dist/types/Queries/Describe/Payload.d.ts +0 -6
- package/dist/types/Queries/Describe/Payload.d.ts.map +0 -1
- package/dist/types/Queries/Describe/Query.d.ts +0 -7
- package/dist/types/Queries/Describe/Query.d.ts.map +0 -1
- package/dist/types/Queries/Describe/index.d.ts +0 -3
- package/dist/types/Queries/Describe/index.d.ts.map +0 -1
- package/dist/types/Queries/Discover.d.ts +0 -7
- package/dist/types/Queries/Discover.d.ts.map +0 -1
- package/dist/types/Queries/Manifest.d.ts +0 -7
- package/dist/types/Queries/Manifest.d.ts.map +0 -1
- package/dist/types/Queries/ModuleAddress/Payload.d.ts +0 -9
- package/dist/types/Queries/ModuleAddress/Payload.d.ts.map +0 -1
- package/dist/types/Queries/ModuleAddress/Query.d.ts +0 -7
- package/dist/types/Queries/ModuleAddress/Query.d.ts.map +0 -1
- package/dist/types/Queries/ModuleAddress/index.d.ts +0 -3
- package/dist/types/Queries/ModuleAddress/index.d.ts.map +0 -1
- package/dist/types/Queries/Subscribe.d.ts +0 -17
- package/dist/types/Queries/Subscribe.d.ts.map +0 -1
- package/dist/types/Queries/index.d.ts +0 -14
- package/dist/types/Queries/index.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -15
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/instance/ModuleInstance.d.ts +0 -41
- package/dist/types/instance/ModuleInstance.d.ts.map +0 -1
- package/dist/types/instance/ModuleRepository.d.ts +0 -9
- package/dist/types/instance/ModuleRepository.d.ts.map +0 -1
- package/dist/types/instance/asModuleInstance.d.ts +0 -5
- package/dist/types/instance/asModuleInstance.d.ts.map +0 -1
- package/dist/types/instance/index.d.ts +0 -5
- package/dist/types/instance/index.d.ts.map +0 -1
- package/dist/types/instance/isModuleInstance.d.ts +0 -5
- package/dist/types/instance/isModuleInstance.d.ts.map +0 -1
- package/dist/types/lib/duplicateModules.d.ts +0 -12
- package/dist/types/lib/duplicateModules.d.ts.map +0 -1
- package/dist/types/lib/index.d.ts +0 -3
- package/dist/types/lib/index.d.ts.map +0 -1
- package/dist/types/lib/serializable.d.ts +0 -3
- package/dist/types/lib/serializable.d.ts.map +0 -1
- package/dist/types/module/IsModuleFactory.d.ts +0 -7
- package/dist/types/module/IsModuleFactory.d.ts.map +0 -1
- package/dist/types/module/Module.d.ts +0 -7
- package/dist/types/module/Module.d.ts.map +0 -1
- package/dist/types/module/ModuleFields.d.ts +0 -18
- package/dist/types/module/ModuleFields.d.ts.map +0 -1
- package/dist/types/module/ModuleQueryFunctions.d.ts +0 -12
- package/dist/types/module/ModuleQueryFunctions.d.ts.map +0 -1
- package/dist/types/module/asModule.d.ts +0 -5
- package/dist/types/module/asModule.d.ts.map +0 -1
- package/dist/types/module/asModuleObject.d.ts +0 -5
- package/dist/types/module/asModuleObject.d.ts.map +0 -1
- package/dist/types/module/index.d.ts +0 -9
- package/dist/types/module/index.d.ts.map +0 -1
- package/dist/types/module/isModule.d.ts +0 -5
- package/dist/types/module/isModule.d.ts.map +0 -1
- package/dist/types/module/isModuleObject.d.ts +0 -5
- package/dist/types/module/isModuleObject.d.ts.map +0 -1
- package/dist/types/withModule.d.ts +0 -7
- package/dist/types/withModule.d.ts.map +0 -1
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { WithAdditional, AnyObject, BaseParams } from '@xyo-network/core';
|
|
2
|
+
import { Payload, ModuleError, Query } from '@xyo-network/payload-model';
|
|
3
|
+
import { AccountInstance } from '@xyo-network/account-model';
|
|
4
|
+
import { Logger } from '@xyo-network/logger';
|
|
5
|
+
import * as _xyo_network_object_identity from '@xyo-network/object-identity';
|
|
6
|
+
import { ObjectTypeCheck, ObjectTypeShape, IsObjectFactory } from '@xyo-network/object-identity';
|
|
7
|
+
import { Promisable } from '@xyo-network/promise';
|
|
8
|
+
import { EventArgs, EventData, EventFunctions } from '@xyo-network/module-events';
|
|
9
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
|
|
10
|
+
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
11
|
+
import { WalletInstance } from '@xyo-network/wallet-model';
|
|
12
|
+
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
13
|
+
|
|
14
|
+
type ModuleConfigSchema = 'network.xyo.module.config';
|
|
15
|
+
declare const ModuleConfigSchema: ModuleConfigSchema;
|
|
16
|
+
type AddressString = string;
|
|
17
|
+
type CosigningAddressSet = string[];
|
|
18
|
+
type SchemaString = string;
|
|
19
|
+
type NameOrAddress = string;
|
|
20
|
+
interface IndividualArchivistConfig {
|
|
21
|
+
readonly commit?: NameOrAddress;
|
|
22
|
+
readonly read?: NameOrAddress;
|
|
23
|
+
readonly write?: NameOrAddress;
|
|
24
|
+
}
|
|
25
|
+
type ArchivistModuleConfig = NameOrAddress | IndividualArchivistConfig;
|
|
26
|
+
type ModuleConfigBase<TConfig extends Payload | undefined = undefined> = Payload<WithAdditional<{
|
|
27
|
+
/** @field The path to use when creating the account */
|
|
28
|
+
accountDerivationPath?: string;
|
|
29
|
+
/** @field The name/address of the Archivist to use for this module */
|
|
30
|
+
readonly archivist?: ArchivistModuleConfig;
|
|
31
|
+
/** @field Friendly name of module (not collision resistent). Can be used to resolve module when registered/attached to Node. */
|
|
32
|
+
readonly name?: string;
|
|
33
|
+
/** @field paging settings for queries */
|
|
34
|
+
readonly paging?: Record<string, {
|
|
35
|
+
size?: number;
|
|
36
|
+
}>;
|
|
37
|
+
/** @field The config schema for the module */
|
|
38
|
+
readonly schema: TConfig extends Payload ? TConfig['schema'] : ModuleConfigSchema;
|
|
39
|
+
/** @field The query schemas and allowed/disallowed addresses which are allowed to issue them against the module. If both allowed and disallowed is specified, then disallowed takes priority. */
|
|
40
|
+
readonly security?: {
|
|
41
|
+
/** @field Will the module process queries that have unsigned BoundWitness in query tuples */
|
|
42
|
+
readonly allowAnonymous?: boolean;
|
|
43
|
+
/** @field If schema in record, then only these address sets can access query */
|
|
44
|
+
readonly allowed?: Record<SchemaString, (AddressString | CosigningAddressSet)[]>;
|
|
45
|
+
/** @field If schema in record, then anyone except these addresses can access query */
|
|
46
|
+
readonly disallowed?: Record<SchemaString, AddressString[]>;
|
|
47
|
+
};
|
|
48
|
+
/** @field sign every query */
|
|
49
|
+
readonly sign?: boolean;
|
|
50
|
+
/** @field Store the queries made to the module in an archivist if possible */
|
|
51
|
+
readonly storeQueries?: boolean;
|
|
52
|
+
/** @field add a timestamp payload to every query */
|
|
53
|
+
readonly timestamp?: boolean;
|
|
54
|
+
}, Omit<TConfig, 'schema'>>>;
|
|
55
|
+
type ModuleConfig<TConfig extends Payload | undefined = undefined> = ModuleConfigBase<TConfig>;
|
|
56
|
+
type AnyConfigSchema<TConfig extends Omit<ModuleConfig, 'schema'> & {
|
|
57
|
+
schema: string;
|
|
58
|
+
} = Omit<ModuleConfig, 'schema'> & {
|
|
59
|
+
schema: string;
|
|
60
|
+
}> = ModuleConfig<WithAdditional<Omit<TConfig, 'schema'>, {
|
|
61
|
+
schema: string;
|
|
62
|
+
}>>;
|
|
63
|
+
type OptionalConfigSchema<TConfig extends AnyConfigSchema<ModuleConfig> = AnyConfigSchema<ModuleConfig>> = Omit<TConfig, 'schema'> & {
|
|
64
|
+
schema?: TConfig['schema'];
|
|
65
|
+
};
|
|
66
|
+
type AnyModuleConfig = AnyConfigSchema<ModuleConfig>;
|
|
67
|
+
|
|
68
|
+
type ModuleEventArgs<TModule extends object = object, TArgs extends EventArgs | undefined = undefined> = TArgs extends EventArgs ? {
|
|
69
|
+
module: TModule;
|
|
70
|
+
} & TArgs : {
|
|
71
|
+
module: TModule;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
type ModuleBusyEventArgs<TModule extends object = object> = ModuleEventArgs<TModule, {
|
|
75
|
+
busy: boolean;
|
|
76
|
+
}>;
|
|
77
|
+
interface ModuleBusyEventData<TModule extends object = object> extends EventData {
|
|
78
|
+
moduleBusy: ModuleBusyEventArgs<TModule>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
type ModuleErrorEventArgs<TModule extends object = object> = ModuleEventArgs<TModule, {
|
|
82
|
+
error: Error;
|
|
83
|
+
}>;
|
|
84
|
+
interface ModuleErrorEventData<TModule extends object = object> extends EventData {
|
|
85
|
+
moduleError: ModuleErrorEventArgs<TModule>;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
type ModuleQueryResult = [BoundWitness, Payload[], ModuleError[]];
|
|
89
|
+
|
|
90
|
+
type ModuleQueriedEventArgs<TModule extends object = object> = ModuleEventArgs<TModule, {
|
|
91
|
+
payloads?: Payload[];
|
|
92
|
+
query: QueryBoundWitness;
|
|
93
|
+
result: ModuleQueryResult;
|
|
94
|
+
}>;
|
|
95
|
+
interface ModuleQueriedEventData<TModule extends object = object> extends EventData {
|
|
96
|
+
moduleQueried: ModuleQueriedEventArgs<TModule>;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
interface ModuleEventData<TModule extends object = object> extends ModuleQueriedEventData<TModule>, ModuleBusyEventData<TModule>, ModuleErrorEventData<TModule> {
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
type BasicModuleParams<TConfig extends AnyConfigSchema<ModuleConfig>, TAdditionalParams extends AnyObject | undefined = undefined> = WithAdditional<BaseParams<{
|
|
103
|
+
account?: AccountInstance | 'random';
|
|
104
|
+
config: TConfig;
|
|
105
|
+
ephemeralQueryAccountEnabled?: boolean;
|
|
106
|
+
wallet?: WalletInstance;
|
|
107
|
+
}>, TAdditionalParams>;
|
|
108
|
+
type ModuleParams<TConfig extends AnyConfigSchema<ModuleConfig> = ModuleConfig, TAdditionalParams extends AnyObject | undefined = undefined> = BasicModuleParams<TConfig, TAdditionalParams>;
|
|
109
|
+
|
|
110
|
+
type ModuleFields<TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>> = {
|
|
111
|
+
address: string;
|
|
112
|
+
config: TParams['config'];
|
|
113
|
+
params: TParams;
|
|
114
|
+
previousHash: () => Promisable<string | undefined>;
|
|
115
|
+
queries: string[];
|
|
116
|
+
query: <T extends QueryBoundWitness = QueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConf) => Promisable<ModuleQueryResult>;
|
|
117
|
+
queryable: <T extends QueryBoundWitness = QueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConf) => Promisable<boolean>;
|
|
118
|
+
start?: () => Promisable<boolean>;
|
|
119
|
+
stop?: () => Promisable<boolean>;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
type Module<TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>, TEventData extends ModuleEventData<object> = ModuleEventData<object>> = ModuleFields<TParams> & EventFunctions<TEventData>;
|
|
123
|
+
|
|
124
|
+
declare const asModule: {
|
|
125
|
+
(obj: any, config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): Module | undefined;
|
|
126
|
+
(obj: any, assert: string | (() => string), config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): Module;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
declare const asModuleObject: {
|
|
130
|
+
(obj: any, config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): Module | undefined;
|
|
131
|
+
(obj: any, assert: string | (() => string), config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): Module;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
declare const requiredModuleQueries: string[];
|
|
135
|
+
declare const isModule: ObjectTypeCheck<Module>;
|
|
136
|
+
|
|
137
|
+
type ModuleTypeCheck<T extends Module = Module> = ObjectTypeCheck<T>;
|
|
138
|
+
declare class IsModuleFactory<T extends Module = Module> {
|
|
139
|
+
create(expectedQueries?: string[], additionalChecks?: ObjectTypeCheck[]): ModuleTypeCheck<T>;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
declare const requiredModuleFunctions: ObjectTypeShape;
|
|
143
|
+
declare const isModuleObject: ObjectTypeCheck<Module>;
|
|
144
|
+
|
|
145
|
+
interface ModuleDescription {
|
|
146
|
+
address: string;
|
|
147
|
+
children?: string[];
|
|
148
|
+
name?: string;
|
|
149
|
+
queries: string[];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
declare const ModuleDescriptionSchema = "network.xyo.module.description";
|
|
153
|
+
type ModuleDescriptionSchema = typeof ModuleDescriptionSchema;
|
|
154
|
+
type ModuleDescriptionPayload = Payload<ModuleDescription, ModuleDescriptionSchema>;
|
|
155
|
+
|
|
156
|
+
type ModuleDescribeQuerySchema = 'network.xyo.query.module.describe';
|
|
157
|
+
declare const ModuleDescribeQuerySchema: ModuleDescribeQuerySchema;
|
|
158
|
+
type ModuleDescribeQuery = Query<{
|
|
159
|
+
schema: ModuleDescribeQuerySchema;
|
|
160
|
+
}>;
|
|
161
|
+
|
|
162
|
+
type ModuleDiscoverQuerySchema = 'network.xyo.query.module.discover';
|
|
163
|
+
declare const ModuleDiscoverQuerySchema: ModuleDiscoverQuerySchema;
|
|
164
|
+
type ModuleDiscoverQuery = Query<{
|
|
165
|
+
schema: ModuleDiscoverQuerySchema;
|
|
166
|
+
}>;
|
|
167
|
+
|
|
168
|
+
type ModuleManifestQuerySchema = 'network.xyo.query.module.manifest';
|
|
169
|
+
declare const ModuleManifestQuerySchema: ModuleManifestQuerySchema;
|
|
170
|
+
type ModuleManifestQuery = Query<{
|
|
171
|
+
schema: ModuleManifestQuerySchema;
|
|
172
|
+
}>;
|
|
173
|
+
|
|
174
|
+
declare const AddressPreviousHashSchema: string;
|
|
175
|
+
type AddressPreviousHashSchema = typeof AddressPreviousHashSchema;
|
|
176
|
+
type AddressPreviousHashPayload = Payload<{
|
|
177
|
+
address: string;
|
|
178
|
+
previousHash?: string;
|
|
179
|
+
schema: AddressPreviousHashSchema;
|
|
180
|
+
}>;
|
|
181
|
+
|
|
182
|
+
type ModuleAddressQuerySchema = 'network.xyo.query.module.address';
|
|
183
|
+
declare const ModuleAddressQuerySchema: ModuleAddressQuerySchema;
|
|
184
|
+
type ModuleAddressQuery = Query<{
|
|
185
|
+
schema: ModuleAddressQuerySchema;
|
|
186
|
+
}>;
|
|
187
|
+
|
|
188
|
+
type ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe';
|
|
189
|
+
declare const ModuleSubscribeQuerySchema: ModuleSubscribeQuerySchema;
|
|
190
|
+
interface ModuleSubscribeFilter {
|
|
191
|
+
/** @field if specified, at least one of the schemas must be present in the boundwtness to generate a notification */
|
|
192
|
+
schema?: string[];
|
|
193
|
+
}
|
|
194
|
+
type ModuleSubscribeQuery = Query<{
|
|
195
|
+
/** @field The address that will receive notifications */
|
|
196
|
+
address: string;
|
|
197
|
+
/** @field A subscribe with a null for filter is an unsubscribe */
|
|
198
|
+
filter?: ModuleSubscribeFilter | null;
|
|
199
|
+
/** @field The maximum events queued per send [may increase frequency] */
|
|
200
|
+
maxQueue?: number;
|
|
201
|
+
schema: ModuleSubscribeQuerySchema;
|
|
202
|
+
}>;
|
|
203
|
+
|
|
204
|
+
type ModuleQueryBase = ModuleDiscoverQuery | ModuleAddressQuery | ModuleSubscribeQuery | ModuleDescribeQuery | ModuleManifestQuery;
|
|
205
|
+
type ModuleQuery<T extends Query | void = void> = T extends Query ? ModuleQueryBase | T : ModuleQueryBase;
|
|
206
|
+
|
|
207
|
+
type ModuleQueryFunctions = {
|
|
208
|
+
describe: () => Promise<ModuleDescription>;
|
|
209
|
+
discover: () => Promisable<Payload[]>;
|
|
210
|
+
manifest: (ignoreAddresses?: string[]) => Promisable<ModuleManifestPayload>;
|
|
211
|
+
moduleAddress: () => Promisable<AddressPreviousHashPayload[]>;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
interface ResolveFunctions {
|
|
215
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
216
|
+
resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
217
|
+
resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddressOrFilter?: ModuleFilter<T> | string, options?: ModuleFilterOptions<T>): Promisable<T | T[] | undefined>;
|
|
218
|
+
}
|
|
219
|
+
interface ModuleResolver extends ResolveFunctions {
|
|
220
|
+
addResolver: (resolver: ModuleResolver) => this;
|
|
221
|
+
isModuleResolver: boolean;
|
|
222
|
+
removeResolver: (resolver: ModuleResolver) => this;
|
|
223
|
+
}
|
|
224
|
+
type ModuleInstance<TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>, TEventData extends ModuleEventData = ModuleEventData> = Module<TParams, TEventData> & ResolveFunctions & ModuleQueryFunctions & {
|
|
225
|
+
readonly downResolver: Omit<ModuleResolver, 'resolve'>;
|
|
226
|
+
readonly upResolver: Omit<ModuleResolver, 'resolve'>;
|
|
227
|
+
};
|
|
228
|
+
type InstanceTypeCheck<T extends ModuleInstance = ModuleInstance> = ObjectTypeCheck<T>;
|
|
229
|
+
declare class IsInstanceFactory<T extends ModuleInstance = ModuleInstance> extends IsObjectFactory<T> {
|
|
230
|
+
}
|
|
231
|
+
interface ModuleFilterOptions<T extends ModuleInstance = ModuleInstance> {
|
|
232
|
+
direction?: 'up' | 'down' | 'all';
|
|
233
|
+
identity?: InstanceTypeCheck<T>;
|
|
234
|
+
maxDepth?: number;
|
|
235
|
+
visibility?: 'public' | 'private' | 'all';
|
|
236
|
+
}
|
|
237
|
+
interface AddressModuleFilter<T extends ModuleInstance = ModuleInstance> extends ModuleFilterOptions<T> {
|
|
238
|
+
address: string[];
|
|
239
|
+
}
|
|
240
|
+
interface NameModuleFilter<T extends ModuleInstance = ModuleInstance> extends ModuleFilterOptions<T> {
|
|
241
|
+
name: string[];
|
|
242
|
+
}
|
|
243
|
+
interface QueryModuleFilter<T extends ModuleInstance = ModuleInstance> extends ModuleFilterOptions<T> {
|
|
244
|
+
query: string[][];
|
|
245
|
+
}
|
|
246
|
+
type AnyModuleFilter<T extends ModuleInstance = ModuleInstance> = Partial<AddressModuleFilter<T>> & Partial<NameModuleFilter<T>> & Partial<QueryModuleFilter<T>>;
|
|
247
|
+
type ModuleFilter<T extends ModuleInstance = ModuleInstance> = ModuleFilterOptions<T> | AddressModuleFilter<T> | NameModuleFilter<T> | QueryModuleFilter<T>;
|
|
248
|
+
|
|
249
|
+
declare const asModuleInstance: {
|
|
250
|
+
(obj: any, config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): ModuleInstance | undefined;
|
|
251
|
+
(obj: any, assert: string | (() => string), config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): ModuleInstance;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
declare const requiredModuleInstanceFunctions: ObjectTypeShape;
|
|
255
|
+
declare const isModuleInstance: ObjectTypeCheck<ModuleInstance>;
|
|
256
|
+
|
|
257
|
+
interface ModuleRepository extends ModuleResolver {
|
|
258
|
+
add(module: Module): this;
|
|
259
|
+
add(module: Module[]): this;
|
|
260
|
+
add(module: Module | Module[]): this;
|
|
261
|
+
remove(address: string | string[]): this;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
interface CreatableModule<T extends ModuleInstance = ModuleInstance> {
|
|
265
|
+
configSchema: string;
|
|
266
|
+
configSchemas: string[];
|
|
267
|
+
defaultLogger?: Logger;
|
|
268
|
+
new (privateConstructorKey: string, params: T['params'], account: AccountInstance): T;
|
|
269
|
+
_noOverride(functionName: string): void;
|
|
270
|
+
create<T extends ModuleInstance>(this: CreatableModule<T>, params?: T['params']): Promise<T>;
|
|
271
|
+
factory<T extends ModuleInstance>(this: CreatableModule<T>, params?: T['params']): CreatableModuleFactory<T>;
|
|
272
|
+
}
|
|
273
|
+
type CreatableModuleFactory<T extends ModuleInstance = ModuleInstance> = Omit<Omit<CreatableModule<T>, 'new'>, 'create'> & {
|
|
274
|
+
create<T extends ModuleInstance>(this: CreatableModuleFactory<T>, params?: T['params']): Promise<T>;
|
|
275
|
+
};
|
|
276
|
+
/**
|
|
277
|
+
* Class annotation to be used to decorate Modules which support
|
|
278
|
+
* an asynchronous creation pattern
|
|
279
|
+
* @returns The decorated Module requiring it implement the members
|
|
280
|
+
* of the CreatableModule as statics properties/methods
|
|
281
|
+
*/
|
|
282
|
+
declare function creatableModule<TModule extends ModuleInstance = ModuleInstance>(): <U extends CreatableModule<TModule>>(constructor: U) => void;
|
|
283
|
+
|
|
284
|
+
interface CreatableModuleDictionary {
|
|
285
|
+
[key: string]: CreatableModuleFactory;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Used to filter duplicates from an array of modules
|
|
290
|
+
* @example: modulesArray.filter(duplicateModules)
|
|
291
|
+
* @param value Current Module
|
|
292
|
+
* @param index Current Module's index
|
|
293
|
+
* @param array Module Array
|
|
294
|
+
* @returns True if the Module's address is the first occurrence of
|
|
295
|
+
* that address in the array, false otherwise
|
|
296
|
+
*/
|
|
297
|
+
declare const duplicateModules: (value: Module, index: number, array: Module[]) => value is Module;
|
|
298
|
+
|
|
299
|
+
declare const serializable: (field: unknown, depth?: number) => boolean | null;
|
|
300
|
+
declare const serializableField: (field: unknown) => boolean;
|
|
301
|
+
|
|
302
|
+
declare class ModuleFactory<TModule extends ModuleInstance> implements CreatableModuleFactory<TModule> {
|
|
303
|
+
configSchemas: CreatableModuleFactory<TModule>['configSchemas'];
|
|
304
|
+
creatableModule: CreatableModule<TModule>;
|
|
305
|
+
defaultLogger?: Logger | undefined;
|
|
306
|
+
defaultParams?: Omit<TModule['params'], 'config'> & {
|
|
307
|
+
config?: TModule['params']['config'];
|
|
308
|
+
};
|
|
309
|
+
constructor(creatableModule: CreatableModule<TModule>, params?: Omit<TModule['params'], 'config'> & {
|
|
310
|
+
config?: TModule['params']['config'];
|
|
311
|
+
});
|
|
312
|
+
get configSchema(): string;
|
|
313
|
+
static withParams<T extends ModuleInstance>(creatableModule: CreatableModule<T>, params?: Omit<T['params'], 'config'> & {
|
|
314
|
+
config?: T['params']['config'];
|
|
315
|
+
}): ModuleFactory<T>;
|
|
316
|
+
_getRootFunction(funcName: string): any;
|
|
317
|
+
_noOverride(functionName: string): void;
|
|
318
|
+
create<T extends ModuleInstance>(this: CreatableModuleFactory<T>, params?: TModule['params'] | undefined): Promise<T>;
|
|
319
|
+
factory<T extends ModuleInstance>(this: CreatableModule<T>, _params?: T['params'] | undefined): CreatableModuleFactory<T>;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
type ModuleQueryHandlerResult = Payload[];
|
|
323
|
+
|
|
324
|
+
declare const WithFactory: {
|
|
325
|
+
create: <T extends object>(typeCheck: ObjectTypeCheck<T>) => <R>(module: any, closure: (module: T) => R) => R | undefined;
|
|
326
|
+
};
|
|
327
|
+
declare const withModule: <R>(module: any, closure: (module: Module) => R) => R | undefined;
|
|
328
|
+
declare const withModuleInstance: <R>(module: any, closure: (module: ModuleInstance) => R) => R | undefined;
|
|
329
|
+
|
|
330
|
+
export { AddressModuleFilter, AddressPreviousHashPayload, AddressPreviousHashSchema, AddressString, AnyConfigSchema, AnyModuleConfig, AnyModuleFilter, ArchivistModuleConfig, BasicModuleParams, CosigningAddressSet, CreatableModule, CreatableModuleDictionary, CreatableModuleFactory, IndividualArchivistConfig, InstanceTypeCheck, IsInstanceFactory, IsModuleFactory, Module, ModuleAddressQuery, ModuleAddressQuerySchema, ModuleBusyEventArgs, ModuleBusyEventData, ModuleConfig, ModuleConfigBase, ModuleConfigSchema, ModuleDescribeQuery, ModuleDescribeQuerySchema, ModuleDescription, ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleDiscoverQuery, ModuleDiscoverQuerySchema, ModuleErrorEventArgs, ModuleErrorEventData, ModuleEventArgs, ModuleEventData, ModuleFactory, ModuleFields, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleManifestQuery, ModuleManifestQuerySchema, ModuleParams, ModuleQueriedEventArgs, ModuleQueriedEventData, ModuleQuery, ModuleQueryBase, ModuleQueryFunctions, ModuleQueryHandlerResult, ModuleQueryResult, ModuleRepository, ModuleResolver, ModuleSubscribeFilter, ModuleSubscribeQuery, ModuleSubscribeQuerySchema, ModuleTypeCheck, NameModuleFilter, NameOrAddress, OptionalConfigSchema, QueryModuleFilter, ResolveFunctions, SchemaString, WithFactory, asModule, asModuleInstance, asModuleObject, creatableModule, duplicateModules, isModule, isModuleInstance, isModuleObject, requiredModuleFunctions, requiredModuleInstanceFunctions, requiredModuleQueries, serializable, serializableField, withModule, withModuleInstance };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { WithAdditional, AnyObject, BaseParams } from '@xyo-network/core';
|
|
2
|
+
import { Payload, ModuleError, Query } from '@xyo-network/payload-model';
|
|
3
|
+
import { AccountInstance } from '@xyo-network/account-model';
|
|
4
|
+
import { Logger } from '@xyo-network/logger';
|
|
5
|
+
import * as _xyo_network_object_identity from '@xyo-network/object-identity';
|
|
6
|
+
import { ObjectTypeCheck, ObjectTypeShape, IsObjectFactory } from '@xyo-network/object-identity';
|
|
7
|
+
import { Promisable } from '@xyo-network/promise';
|
|
8
|
+
import { EventArgs, EventData, EventFunctions } from '@xyo-network/module-events';
|
|
9
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
|
|
10
|
+
import { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
11
|
+
import { WalletInstance } from '@xyo-network/wallet-model';
|
|
12
|
+
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
13
|
+
|
|
14
|
+
type ModuleConfigSchema = 'network.xyo.module.config';
|
|
15
|
+
declare const ModuleConfigSchema: ModuleConfigSchema;
|
|
16
|
+
type AddressString = string;
|
|
17
|
+
type CosigningAddressSet = string[];
|
|
18
|
+
type SchemaString = string;
|
|
19
|
+
type NameOrAddress = string;
|
|
20
|
+
interface IndividualArchivistConfig {
|
|
21
|
+
readonly commit?: NameOrAddress;
|
|
22
|
+
readonly read?: NameOrAddress;
|
|
23
|
+
readonly write?: NameOrAddress;
|
|
24
|
+
}
|
|
25
|
+
type ArchivistModuleConfig = NameOrAddress | IndividualArchivistConfig;
|
|
26
|
+
type ModuleConfigBase<TConfig extends Payload | undefined = undefined> = Payload<WithAdditional<{
|
|
27
|
+
/** @field The path to use when creating the account */
|
|
28
|
+
accountDerivationPath?: string;
|
|
29
|
+
/** @field The name/address of the Archivist to use for this module */
|
|
30
|
+
readonly archivist?: ArchivistModuleConfig;
|
|
31
|
+
/** @field Friendly name of module (not collision resistent). Can be used to resolve module when registered/attached to Node. */
|
|
32
|
+
readonly name?: string;
|
|
33
|
+
/** @field paging settings for queries */
|
|
34
|
+
readonly paging?: Record<string, {
|
|
35
|
+
size?: number;
|
|
36
|
+
}>;
|
|
37
|
+
/** @field The config schema for the module */
|
|
38
|
+
readonly schema: TConfig extends Payload ? TConfig['schema'] : ModuleConfigSchema;
|
|
39
|
+
/** @field The query schemas and allowed/disallowed addresses which are allowed to issue them against the module. If both allowed and disallowed is specified, then disallowed takes priority. */
|
|
40
|
+
readonly security?: {
|
|
41
|
+
/** @field Will the module process queries that have unsigned BoundWitness in query tuples */
|
|
42
|
+
readonly allowAnonymous?: boolean;
|
|
43
|
+
/** @field If schema in record, then only these address sets can access query */
|
|
44
|
+
readonly allowed?: Record<SchemaString, (AddressString | CosigningAddressSet)[]>;
|
|
45
|
+
/** @field If schema in record, then anyone except these addresses can access query */
|
|
46
|
+
readonly disallowed?: Record<SchemaString, AddressString[]>;
|
|
47
|
+
};
|
|
48
|
+
/** @field sign every query */
|
|
49
|
+
readonly sign?: boolean;
|
|
50
|
+
/** @field Store the queries made to the module in an archivist if possible */
|
|
51
|
+
readonly storeQueries?: boolean;
|
|
52
|
+
/** @field add a timestamp payload to every query */
|
|
53
|
+
readonly timestamp?: boolean;
|
|
54
|
+
}, Omit<TConfig, 'schema'>>>;
|
|
55
|
+
type ModuleConfig<TConfig extends Payload | undefined = undefined> = ModuleConfigBase<TConfig>;
|
|
56
|
+
type AnyConfigSchema<TConfig extends Omit<ModuleConfig, 'schema'> & {
|
|
57
|
+
schema: string;
|
|
58
|
+
} = Omit<ModuleConfig, 'schema'> & {
|
|
59
|
+
schema: string;
|
|
60
|
+
}> = ModuleConfig<WithAdditional<Omit<TConfig, 'schema'>, {
|
|
61
|
+
schema: string;
|
|
62
|
+
}>>;
|
|
63
|
+
type OptionalConfigSchema<TConfig extends AnyConfigSchema<ModuleConfig> = AnyConfigSchema<ModuleConfig>> = Omit<TConfig, 'schema'> & {
|
|
64
|
+
schema?: TConfig['schema'];
|
|
65
|
+
};
|
|
66
|
+
type AnyModuleConfig = AnyConfigSchema<ModuleConfig>;
|
|
67
|
+
|
|
68
|
+
type ModuleEventArgs<TModule extends object = object, TArgs extends EventArgs | undefined = undefined> = TArgs extends EventArgs ? {
|
|
69
|
+
module: TModule;
|
|
70
|
+
} & TArgs : {
|
|
71
|
+
module: TModule;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
type ModuleBusyEventArgs<TModule extends object = object> = ModuleEventArgs<TModule, {
|
|
75
|
+
busy: boolean;
|
|
76
|
+
}>;
|
|
77
|
+
interface ModuleBusyEventData<TModule extends object = object> extends EventData {
|
|
78
|
+
moduleBusy: ModuleBusyEventArgs<TModule>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
type ModuleErrorEventArgs<TModule extends object = object> = ModuleEventArgs<TModule, {
|
|
82
|
+
error: Error;
|
|
83
|
+
}>;
|
|
84
|
+
interface ModuleErrorEventData<TModule extends object = object> extends EventData {
|
|
85
|
+
moduleError: ModuleErrorEventArgs<TModule>;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
type ModuleQueryResult = [BoundWitness, Payload[], ModuleError[]];
|
|
89
|
+
|
|
90
|
+
type ModuleQueriedEventArgs<TModule extends object = object> = ModuleEventArgs<TModule, {
|
|
91
|
+
payloads?: Payload[];
|
|
92
|
+
query: QueryBoundWitness;
|
|
93
|
+
result: ModuleQueryResult;
|
|
94
|
+
}>;
|
|
95
|
+
interface ModuleQueriedEventData<TModule extends object = object> extends EventData {
|
|
96
|
+
moduleQueried: ModuleQueriedEventArgs<TModule>;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
interface ModuleEventData<TModule extends object = object> extends ModuleQueriedEventData<TModule>, ModuleBusyEventData<TModule>, ModuleErrorEventData<TModule> {
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
type BasicModuleParams<TConfig extends AnyConfigSchema<ModuleConfig>, TAdditionalParams extends AnyObject | undefined = undefined> = WithAdditional<BaseParams<{
|
|
103
|
+
account?: AccountInstance | 'random';
|
|
104
|
+
config: TConfig;
|
|
105
|
+
ephemeralQueryAccountEnabled?: boolean;
|
|
106
|
+
wallet?: WalletInstance;
|
|
107
|
+
}>, TAdditionalParams>;
|
|
108
|
+
type ModuleParams<TConfig extends AnyConfigSchema<ModuleConfig> = ModuleConfig, TAdditionalParams extends AnyObject | undefined = undefined> = BasicModuleParams<TConfig, TAdditionalParams>;
|
|
109
|
+
|
|
110
|
+
type ModuleFields<TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>> = {
|
|
111
|
+
address: string;
|
|
112
|
+
config: TParams['config'];
|
|
113
|
+
params: TParams;
|
|
114
|
+
previousHash: () => Promisable<string | undefined>;
|
|
115
|
+
queries: string[];
|
|
116
|
+
query: <T extends QueryBoundWitness = QueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConf) => Promisable<ModuleQueryResult>;
|
|
117
|
+
queryable: <T extends QueryBoundWitness = QueryBoundWitness, TConf extends ModuleConfig = ModuleConfig>(query: T, payloads?: Payload[], queryConfig?: TConf) => Promisable<boolean>;
|
|
118
|
+
start?: () => Promisable<boolean>;
|
|
119
|
+
stop?: () => Promisable<boolean>;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
type Module<TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>, TEventData extends ModuleEventData<object> = ModuleEventData<object>> = ModuleFields<TParams> & EventFunctions<TEventData>;
|
|
123
|
+
|
|
124
|
+
declare const asModule: {
|
|
125
|
+
(obj: any, config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): Module | undefined;
|
|
126
|
+
(obj: any, assert: string | (() => string), config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): Module;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
declare const asModuleObject: {
|
|
130
|
+
(obj: any, config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): Module | undefined;
|
|
131
|
+
(obj: any, assert: string | (() => string), config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): Module;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
declare const requiredModuleQueries: string[];
|
|
135
|
+
declare const isModule: ObjectTypeCheck<Module>;
|
|
136
|
+
|
|
137
|
+
type ModuleTypeCheck<T extends Module = Module> = ObjectTypeCheck<T>;
|
|
138
|
+
declare class IsModuleFactory<T extends Module = Module> {
|
|
139
|
+
create(expectedQueries?: string[], additionalChecks?: ObjectTypeCheck[]): ModuleTypeCheck<T>;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
declare const requiredModuleFunctions: ObjectTypeShape;
|
|
143
|
+
declare const isModuleObject: ObjectTypeCheck<Module>;
|
|
144
|
+
|
|
145
|
+
interface ModuleDescription {
|
|
146
|
+
address: string;
|
|
147
|
+
children?: string[];
|
|
148
|
+
name?: string;
|
|
149
|
+
queries: string[];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
declare const ModuleDescriptionSchema = "network.xyo.module.description";
|
|
153
|
+
type ModuleDescriptionSchema = typeof ModuleDescriptionSchema;
|
|
154
|
+
type ModuleDescriptionPayload = Payload<ModuleDescription, ModuleDescriptionSchema>;
|
|
155
|
+
|
|
156
|
+
type ModuleDescribeQuerySchema = 'network.xyo.query.module.describe';
|
|
157
|
+
declare const ModuleDescribeQuerySchema: ModuleDescribeQuerySchema;
|
|
158
|
+
type ModuleDescribeQuery = Query<{
|
|
159
|
+
schema: ModuleDescribeQuerySchema;
|
|
160
|
+
}>;
|
|
161
|
+
|
|
162
|
+
type ModuleDiscoverQuerySchema = 'network.xyo.query.module.discover';
|
|
163
|
+
declare const ModuleDiscoverQuerySchema: ModuleDiscoverQuerySchema;
|
|
164
|
+
type ModuleDiscoverQuery = Query<{
|
|
165
|
+
schema: ModuleDiscoverQuerySchema;
|
|
166
|
+
}>;
|
|
167
|
+
|
|
168
|
+
type ModuleManifestQuerySchema = 'network.xyo.query.module.manifest';
|
|
169
|
+
declare const ModuleManifestQuerySchema: ModuleManifestQuerySchema;
|
|
170
|
+
type ModuleManifestQuery = Query<{
|
|
171
|
+
schema: ModuleManifestQuerySchema;
|
|
172
|
+
}>;
|
|
173
|
+
|
|
174
|
+
declare const AddressPreviousHashSchema: string;
|
|
175
|
+
type AddressPreviousHashSchema = typeof AddressPreviousHashSchema;
|
|
176
|
+
type AddressPreviousHashPayload = Payload<{
|
|
177
|
+
address: string;
|
|
178
|
+
previousHash?: string;
|
|
179
|
+
schema: AddressPreviousHashSchema;
|
|
180
|
+
}>;
|
|
181
|
+
|
|
182
|
+
type ModuleAddressQuerySchema = 'network.xyo.query.module.address';
|
|
183
|
+
declare const ModuleAddressQuerySchema: ModuleAddressQuerySchema;
|
|
184
|
+
type ModuleAddressQuery = Query<{
|
|
185
|
+
schema: ModuleAddressQuerySchema;
|
|
186
|
+
}>;
|
|
187
|
+
|
|
188
|
+
type ModuleSubscribeQuerySchema = 'network.xyo.query.module.subscribe';
|
|
189
|
+
declare const ModuleSubscribeQuerySchema: ModuleSubscribeQuerySchema;
|
|
190
|
+
interface ModuleSubscribeFilter {
|
|
191
|
+
/** @field if specified, at least one of the schemas must be present in the boundwtness to generate a notification */
|
|
192
|
+
schema?: string[];
|
|
193
|
+
}
|
|
194
|
+
type ModuleSubscribeQuery = Query<{
|
|
195
|
+
/** @field The address that will receive notifications */
|
|
196
|
+
address: string;
|
|
197
|
+
/** @field A subscribe with a null for filter is an unsubscribe */
|
|
198
|
+
filter?: ModuleSubscribeFilter | null;
|
|
199
|
+
/** @field The maximum events queued per send [may increase frequency] */
|
|
200
|
+
maxQueue?: number;
|
|
201
|
+
schema: ModuleSubscribeQuerySchema;
|
|
202
|
+
}>;
|
|
203
|
+
|
|
204
|
+
type ModuleQueryBase = ModuleDiscoverQuery | ModuleAddressQuery | ModuleSubscribeQuery | ModuleDescribeQuery | ModuleManifestQuery;
|
|
205
|
+
type ModuleQuery<T extends Query | void = void> = T extends Query ? ModuleQueryBase | T : ModuleQueryBase;
|
|
206
|
+
|
|
207
|
+
type ModuleQueryFunctions = {
|
|
208
|
+
describe: () => Promise<ModuleDescription>;
|
|
209
|
+
discover: () => Promisable<Payload[]>;
|
|
210
|
+
manifest: (ignoreAddresses?: string[]) => Promisable<ModuleManifestPayload>;
|
|
211
|
+
moduleAddress: () => Promisable<AddressPreviousHashPayload[]>;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
interface ResolveFunctions {
|
|
215
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
216
|
+
resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
217
|
+
resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddressOrFilter?: ModuleFilter<T> | string, options?: ModuleFilterOptions<T>): Promisable<T | T[] | undefined>;
|
|
218
|
+
}
|
|
219
|
+
interface ModuleResolver extends ResolveFunctions {
|
|
220
|
+
addResolver: (resolver: ModuleResolver) => this;
|
|
221
|
+
isModuleResolver: boolean;
|
|
222
|
+
removeResolver: (resolver: ModuleResolver) => this;
|
|
223
|
+
}
|
|
224
|
+
type ModuleInstance<TParams extends ModuleParams<AnyConfigSchema<ModuleConfig>> = ModuleParams<AnyConfigSchema<ModuleConfig>>, TEventData extends ModuleEventData = ModuleEventData> = Module<TParams, TEventData> & ResolveFunctions & ModuleQueryFunctions & {
|
|
225
|
+
readonly downResolver: Omit<ModuleResolver, 'resolve'>;
|
|
226
|
+
readonly upResolver: Omit<ModuleResolver, 'resolve'>;
|
|
227
|
+
};
|
|
228
|
+
type InstanceTypeCheck<T extends ModuleInstance = ModuleInstance> = ObjectTypeCheck<T>;
|
|
229
|
+
declare class IsInstanceFactory<T extends ModuleInstance = ModuleInstance> extends IsObjectFactory<T> {
|
|
230
|
+
}
|
|
231
|
+
interface ModuleFilterOptions<T extends ModuleInstance = ModuleInstance> {
|
|
232
|
+
direction?: 'up' | 'down' | 'all';
|
|
233
|
+
identity?: InstanceTypeCheck<T>;
|
|
234
|
+
maxDepth?: number;
|
|
235
|
+
visibility?: 'public' | 'private' | 'all';
|
|
236
|
+
}
|
|
237
|
+
interface AddressModuleFilter<T extends ModuleInstance = ModuleInstance> extends ModuleFilterOptions<T> {
|
|
238
|
+
address: string[];
|
|
239
|
+
}
|
|
240
|
+
interface NameModuleFilter<T extends ModuleInstance = ModuleInstance> extends ModuleFilterOptions<T> {
|
|
241
|
+
name: string[];
|
|
242
|
+
}
|
|
243
|
+
interface QueryModuleFilter<T extends ModuleInstance = ModuleInstance> extends ModuleFilterOptions<T> {
|
|
244
|
+
query: string[][];
|
|
245
|
+
}
|
|
246
|
+
type AnyModuleFilter<T extends ModuleInstance = ModuleInstance> = Partial<AddressModuleFilter<T>> & Partial<NameModuleFilter<T>> & Partial<QueryModuleFilter<T>>;
|
|
247
|
+
type ModuleFilter<T extends ModuleInstance = ModuleInstance> = ModuleFilterOptions<T> | AddressModuleFilter<T> | NameModuleFilter<T> | QueryModuleFilter<T>;
|
|
248
|
+
|
|
249
|
+
declare const asModuleInstance: {
|
|
250
|
+
(obj: any, config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): ModuleInstance | undefined;
|
|
251
|
+
(obj: any, assert: string | (() => string), config?: _xyo_network_object_identity.ObjectTypeConfig | undefined): ModuleInstance;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
declare const requiredModuleInstanceFunctions: ObjectTypeShape;
|
|
255
|
+
declare const isModuleInstance: ObjectTypeCheck<ModuleInstance>;
|
|
256
|
+
|
|
257
|
+
interface ModuleRepository extends ModuleResolver {
|
|
258
|
+
add(module: Module): this;
|
|
259
|
+
add(module: Module[]): this;
|
|
260
|
+
add(module: Module | Module[]): this;
|
|
261
|
+
remove(address: string | string[]): this;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
interface CreatableModule<T extends ModuleInstance = ModuleInstance> {
|
|
265
|
+
configSchema: string;
|
|
266
|
+
configSchemas: string[];
|
|
267
|
+
defaultLogger?: Logger;
|
|
268
|
+
new (privateConstructorKey: string, params: T['params'], account: AccountInstance): T;
|
|
269
|
+
_noOverride(functionName: string): void;
|
|
270
|
+
create<T extends ModuleInstance>(this: CreatableModule<T>, params?: T['params']): Promise<T>;
|
|
271
|
+
factory<T extends ModuleInstance>(this: CreatableModule<T>, params?: T['params']): CreatableModuleFactory<T>;
|
|
272
|
+
}
|
|
273
|
+
type CreatableModuleFactory<T extends ModuleInstance = ModuleInstance> = Omit<Omit<CreatableModule<T>, 'new'>, 'create'> & {
|
|
274
|
+
create<T extends ModuleInstance>(this: CreatableModuleFactory<T>, params?: T['params']): Promise<T>;
|
|
275
|
+
};
|
|
276
|
+
/**
|
|
277
|
+
* Class annotation to be used to decorate Modules which support
|
|
278
|
+
* an asynchronous creation pattern
|
|
279
|
+
* @returns The decorated Module requiring it implement the members
|
|
280
|
+
* of the CreatableModule as statics properties/methods
|
|
281
|
+
*/
|
|
282
|
+
declare function creatableModule<TModule extends ModuleInstance = ModuleInstance>(): <U extends CreatableModule<TModule>>(constructor: U) => void;
|
|
283
|
+
|
|
284
|
+
interface CreatableModuleDictionary {
|
|
285
|
+
[key: string]: CreatableModuleFactory;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Used to filter duplicates from an array of modules
|
|
290
|
+
* @example: modulesArray.filter(duplicateModules)
|
|
291
|
+
* @param value Current Module
|
|
292
|
+
* @param index Current Module's index
|
|
293
|
+
* @param array Module Array
|
|
294
|
+
* @returns True if the Module's address is the first occurrence of
|
|
295
|
+
* that address in the array, false otherwise
|
|
296
|
+
*/
|
|
297
|
+
declare const duplicateModules: (value: Module, index: number, array: Module[]) => value is Module;
|
|
298
|
+
|
|
299
|
+
declare const serializable: (field: unknown, depth?: number) => boolean | null;
|
|
300
|
+
declare const serializableField: (field: unknown) => boolean;
|
|
301
|
+
|
|
302
|
+
declare class ModuleFactory<TModule extends ModuleInstance> implements CreatableModuleFactory<TModule> {
|
|
303
|
+
configSchemas: CreatableModuleFactory<TModule>['configSchemas'];
|
|
304
|
+
creatableModule: CreatableModule<TModule>;
|
|
305
|
+
defaultLogger?: Logger | undefined;
|
|
306
|
+
defaultParams?: Omit<TModule['params'], 'config'> & {
|
|
307
|
+
config?: TModule['params']['config'];
|
|
308
|
+
};
|
|
309
|
+
constructor(creatableModule: CreatableModule<TModule>, params?: Omit<TModule['params'], 'config'> & {
|
|
310
|
+
config?: TModule['params']['config'];
|
|
311
|
+
});
|
|
312
|
+
get configSchema(): string;
|
|
313
|
+
static withParams<T extends ModuleInstance>(creatableModule: CreatableModule<T>, params?: Omit<T['params'], 'config'> & {
|
|
314
|
+
config?: T['params']['config'];
|
|
315
|
+
}): ModuleFactory<T>;
|
|
316
|
+
_getRootFunction(funcName: string): any;
|
|
317
|
+
_noOverride(functionName: string): void;
|
|
318
|
+
create<T extends ModuleInstance>(this: CreatableModuleFactory<T>, params?: TModule['params'] | undefined): Promise<T>;
|
|
319
|
+
factory<T extends ModuleInstance>(this: CreatableModule<T>, _params?: T['params'] | undefined): CreatableModuleFactory<T>;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
type ModuleQueryHandlerResult = Payload[];
|
|
323
|
+
|
|
324
|
+
declare const WithFactory: {
|
|
325
|
+
create: <T extends object>(typeCheck: ObjectTypeCheck<T>) => <R>(module: any, closure: (module: T) => R) => R | undefined;
|
|
326
|
+
};
|
|
327
|
+
declare const withModule: <R>(module: any, closure: (module: Module) => R) => R | undefined;
|
|
328
|
+
declare const withModuleInstance: <R>(module: any, closure: (module: ModuleInstance) => R) => R | undefined;
|
|
329
|
+
|
|
330
|
+
export { AddressModuleFilter, AddressPreviousHashPayload, AddressPreviousHashSchema, AddressString, AnyConfigSchema, AnyModuleConfig, AnyModuleFilter, ArchivistModuleConfig, BasicModuleParams, CosigningAddressSet, CreatableModule, CreatableModuleDictionary, CreatableModuleFactory, IndividualArchivistConfig, InstanceTypeCheck, IsInstanceFactory, IsModuleFactory, Module, ModuleAddressQuery, ModuleAddressQuerySchema, ModuleBusyEventArgs, ModuleBusyEventData, ModuleConfig, ModuleConfigBase, ModuleConfigSchema, ModuleDescribeQuery, ModuleDescribeQuerySchema, ModuleDescription, ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleDiscoverQuery, ModuleDiscoverQuerySchema, ModuleErrorEventArgs, ModuleErrorEventData, ModuleEventArgs, ModuleEventData, ModuleFactory, ModuleFields, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleManifestQuery, ModuleManifestQuerySchema, ModuleParams, ModuleQueriedEventArgs, ModuleQueriedEventData, ModuleQuery, ModuleQueryBase, ModuleQueryFunctions, ModuleQueryHandlerResult, ModuleQueryResult, ModuleRepository, ModuleResolver, ModuleSubscribeFilter, ModuleSubscribeQuery, ModuleSubscribeQuerySchema, ModuleTypeCheck, NameModuleFilter, NameOrAddress, OptionalConfigSchema, QueryModuleFilter, ResolveFunctions, SchemaString, WithFactory, asModule, asModuleInstance, asModuleObject, creatableModule, duplicateModules, isModule, isModuleInstance, isModuleObject, requiredModuleFunctions, requiredModuleInstanceFunctions, requiredModuleQueries, serializable, serializableField, withModule, withModuleInstance };
|