@keetanetwork/anchor 0.0.1

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.
Files changed (76) hide show
  1. package/.done +0 -0
  2. package/LICENSE +35 -0
  3. package/client/index.d.ts +10 -0
  4. package/client/index.d.ts.map +1 -0
  5. package/client/index.js +11 -0
  6. package/client/index.js.map +1 -0
  7. package/config.d.ts +10 -0
  8. package/config.d.ts.map +1 -0
  9. package/config.js +36 -0
  10. package/config.js.map +1 -0
  11. package/lib/certificates.d.ts +106 -0
  12. package/lib/certificates.d.ts.map +1 -0
  13. package/lib/certificates.js +463 -0
  14. package/lib/certificates.js.map +1 -0
  15. package/lib/encrypted-container.d.ts +106 -0
  16. package/lib/encrypted-container.d.ts.map +1 -0
  17. package/lib/encrypted-container.js +594 -0
  18. package/lib/encrypted-container.js.map +1 -0
  19. package/lib/index.d.ts +5 -0
  20. package/lib/index.d.ts.map +1 -0
  21. package/lib/index.js +5 -0
  22. package/lib/index.js.map +1 -0
  23. package/lib/log/common.d.ts +35 -0
  24. package/lib/log/common.d.ts.map +1 -0
  25. package/lib/log/common.js +19 -0
  26. package/lib/log/common.js.map +1 -0
  27. package/lib/log/index.d.ts +59 -0
  28. package/lib/log/index.d.ts.map +1 -0
  29. package/lib/log/index.js +207 -0
  30. package/lib/log/index.js.map +1 -0
  31. package/lib/log/target_console.d.ts +13 -0
  32. package/lib/log/target_console.d.ts.map +1 -0
  33. package/lib/log/target_console.js +44 -0
  34. package/lib/log/target_console.js.map +1 -0
  35. package/lib/resolver.d.ts +308 -0
  36. package/lib/resolver.d.ts.map +1 -0
  37. package/lib/resolver.js +1429 -0
  38. package/lib/resolver.js.map +1 -0
  39. package/lib/utils/array.d.ts +10 -0
  40. package/lib/utils/array.d.ts.map +1 -0
  41. package/lib/utils/array.js +12 -0
  42. package/lib/utils/array.js.map +1 -0
  43. package/lib/utils/asn1.d.ts +13 -0
  44. package/lib/utils/asn1.d.ts.map +1 -0
  45. package/lib/utils/asn1.js +8 -0
  46. package/lib/utils/asn1.js.map +1 -0
  47. package/lib/utils/buffer.d.ts +4 -0
  48. package/lib/utils/buffer.d.ts.map +1 -0
  49. package/lib/utils/buffer.js +3 -0
  50. package/lib/utils/buffer.js.map +1 -0
  51. package/lib/utils/crypto.d.ts +4 -0
  52. package/lib/utils/crypto.d.ts.map +1 -0
  53. package/lib/utils/crypto.js +4 -0
  54. package/lib/utils/crypto.js.map +1 -0
  55. package/lib/utils/index.d.ts +5 -0
  56. package/lib/utils/index.d.ts.map +1 -0
  57. package/lib/utils/index.js +5 -0
  58. package/lib/utils/index.js.map +1 -0
  59. package/lib/utils/json.d.ts +8 -0
  60. package/lib/utils/json.d.ts.map +1 -0
  61. package/lib/utils/json.js +164 -0
  62. package/lib/utils/json.js.map +1 -0
  63. package/lib/utils/never.d.ts +8 -0
  64. package/lib/utils/never.d.ts.map +1 -0
  65. package/lib/utils/never.js +14 -0
  66. package/lib/utils/never.js.map +1 -0
  67. package/npm-shrinkwrap.json +16517 -0
  68. package/package.json +42 -0
  69. package/services/kyc/client.d.ts +139 -0
  70. package/services/kyc/client.d.ts.map +1 -0
  71. package/services/kyc/client.js +390 -0
  72. package/services/kyc/client.js.map +1 -0
  73. package/services/kyc/common.d.ts +65 -0
  74. package/services/kyc/common.d.ts.map +1 -0
  75. package/services/kyc/common.js +2 -0
  76. package/services/kyc/common.js.map +1 -0
package/.done ADDED
File without changes
package/LICENSE ADDED
@@ -0,0 +1,35 @@
1
+ Keeta Token Network Community License (v1.0)
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+
22
+
23
 
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
@@ -0,0 +1,10 @@
1
+ import type { KeetaKYCAnchorClientConfig } from '../services/kyc/client.ts';
2
+ import KeetaKYCAnchorClient from '../services/kyc/client.js';
3
+ import * as lib from '../lib/index.js';
4
+ import * as KeetaNet from '@keetanetwork/keetanet-client';
5
+ export declare namespace KYC {
6
+ type ClientConfig = KeetaKYCAnchorClientConfig;
7
+ const Client: typeof KeetaKYCAnchorClient;
8
+ }
9
+ export { lib, KeetaNet };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,0BAA0B,EAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAC;AAI1D,yBAAiB,GAAG,CAAC;IACpB,KAAY,YAAY,GAAG,0BAA0B,CAAC;IAC/C,MAAM,MAAM,EAAE,OAAO,oBAA2C,CAAC;CACxE;AAED,OAAO,EACN,GAAG,EACH,QAAQ,EACR,CAAC"}
@@ -0,0 +1,11 @@
1
+ import KeetaKYCAnchorClient from '../services/kyc/client.js';
2
+ import * as lib from '../lib/index.js';
3
+ import * as KeetaNet from '@keetanetwork/keetanet-client';
4
+ // TODO: Determine how we want to export the client
5
+ // eslint-disable-next-line @typescript-eslint/no-namespace
6
+ export var KYC;
7
+ (function (KYC) {
8
+ KYC.Client = KeetaKYCAnchorClient;
9
+ })(KYC || (KYC = {}));
10
+ export { lib, KeetaNet };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,oBAAoB,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAC;AAE1D,mDAAmD;AACnD,2DAA2D;AAC3D,MAAM,KAAW,GAAG,CAGnB;AAHD,WAAiB,GAAG;IAEN,UAAM,GAAgC,oBAAoB,CAAC;AACzE,CAAC,EAHgB,GAAG,KAAH,GAAG,QAGnB;AAED,OAAO,EACN,GAAG,EACH,QAAQ,EACR,CAAC","sourcesContent":["import type {\n\tKeetaKYCAnchorClientConfig\n} from '../services/kyc/client.ts';\nimport KeetaKYCAnchorClient from '../services/kyc/client.js';\nimport * as lib from '../lib/index.js';\nimport * as KeetaNet from '@keetanetwork/keetanet-client';\n\n// TODO: Determine how we want to export the client\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace KYC {\n\texport type ClientConfig = KeetaKYCAnchorClientConfig;\n\texport const Client: typeof KeetaKYCAnchorClient = KeetaKYCAnchorClient;\n}\n\nexport {\n\tlib,\n\tKeetaNet\n};\n"]}
package/config.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import Resolver from './lib/resolver.js';
2
+ import type { Client as KeetaNetClient, UserClient as KeetaNetUserClient } from '@keetanetwork/keetanet-client';
3
+ import KeetaNet from '@keetanetwork/keetanet-client';
4
+ type KeetaNetNetworks = typeof KeetaNet.Client.Config.networksArray[number];
5
+ type ResolverOptions = Partial<Omit<ConstructorParameters<typeof Resolver>[0], 'client'>> & {
6
+ network?: bigint | KeetaNetNetworks | string | undefined;
7
+ };
8
+ export declare function getDefaultResolver(client: KeetaNetClient | KeetaNetUserClient, options?: ResolverOptions): Resolver;
9
+ export {};
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,KAAK,EACX,MAAM,IAAI,cAAc,EACxB,UAAU,IAAI,kBAAkB,EAChC,MAAM,+BAA+B,CAAC;AACvC,OAAO,QAAQ,MAAM,+BAA+B,CAAC;AAErD,KAAK,gBAAgB,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC5E,KAAK,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG;IAE3F,OAAO,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,CAkCvH"}
package/config.js ADDED
@@ -0,0 +1,36 @@
1
+ import Resolver from './lib/resolver.js';
2
+ import KeetaNet from '@keetanetwork/keetanet-client';
3
+ export function getDefaultResolver(client, options = {}) {
4
+ /**
5
+ * The default Root account for the resolver is the network account, so
6
+ * we need to look it up from what the user provided.
7
+ */
8
+ if (options.network === undefined) {
9
+ if ('network' in client && client.network !== undefined) {
10
+ options.network = client.network;
11
+ }
12
+ }
13
+ if (options.network === undefined) {
14
+ throw (new Error('Network must be specified in options or a UserClient must be provided with a network'));
15
+ }
16
+ let networkID;
17
+ if (typeof options.network === 'string') {
18
+ if (!KeetaNet.Client.Config.isNetwork(options.network)) {
19
+ throw (new Error(`Invalid network: ${options.network}`));
20
+ }
21
+ const networkAlias = KeetaNet.Client.Config.getNetworkAlias(options.network);
22
+ const defaultConfig = KeetaNet.Client.Config.getDefaultConfig(networkAlias);
23
+ networkID = defaultConfig.network;
24
+ }
25
+ else {
26
+ networkID = options.network;
27
+ }
28
+ const networkAccount = KeetaNet.lib.Account.generateNetworkAddress(networkID);
29
+ return (new Resolver({
30
+ client: client,
31
+ root: networkAccount,
32
+ trustedCAs: [],
33
+ ...options
34
+ }));
35
+ }
36
+ //# sourceMappingURL=config.js.map
package/config.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAKzC,OAAO,QAAQ,MAAM,+BAA+B,CAAC;AAQrD,MAAM,UAAU,kBAAkB,CAAC,MAA2C,EAAE,UAA2B,EAAE;IAC5G;;;OAGG;IACH,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,MAAK,CAAC,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC,CAAC;IAC1G,CAAC;IAED,IAAI,SAAiB,CAAC;IACtB,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACxD,MAAK,CAAC,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC5E,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC;IACnC,CAAC;SAAM,CAAC;QACP,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAC7B,CAAC;IACD,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAE9E,OAAM,CAAC,IAAI,QAAQ,CAAC;QACnB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,cAAc;QACpB,UAAU,EAAE,EAAE;QACd,GAAG,OAAO;KACV,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import Resolver from './lib/resolver.js';\nimport type {\n\tClient as KeetaNetClient,\n\tUserClient as KeetaNetUserClient\n} from '@keetanetwork/keetanet-client';\nimport KeetaNet from '@keetanetwork/keetanet-client';\n\ntype KeetaNetNetworks = typeof KeetaNet.Client.Config.networksArray[number];\ntype ResolverOptions = Partial<Omit<ConstructorParameters<typeof Resolver>[0], 'client'>> & {\n\t// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n\tnetwork?: bigint | KeetaNetNetworks | string | undefined;\n};\n\nexport function getDefaultResolver(client: KeetaNetClient | KeetaNetUserClient, options: ResolverOptions = {}): Resolver {\n\t/**\n\t * The default Root account for the resolver is the network account, so\n\t * we need to look it up from what the user provided.\n\t */\n\tif (options.network === undefined) {\n\t\tif ('network' in client && client.network !== undefined) {\n\t\t\toptions.network = client.network;\n\t\t}\n\t}\n\n\tif (options.network === undefined) {\n\t\tthrow(new Error('Network must be specified in options or a UserClient must be provided with a network'));\n\t}\n\n\tlet networkID: bigint;\n\tif (typeof options.network === 'string') {\n\t\tif (!KeetaNet.Client.Config.isNetwork(options.network)) {\n\t\t\tthrow(new Error(`Invalid network: ${options.network}`));\n\t\t}\n\t\tconst networkAlias = KeetaNet.Client.Config.getNetworkAlias(options.network);\n\t\tconst defaultConfig = KeetaNet.Client.Config.getDefaultConfig(networkAlias);\n\t\tnetworkID = defaultConfig.network;\n\t} else {\n\t\tnetworkID = options.network;\n\t}\n\tconst networkAccount = KeetaNet.lib.Account.generateNetworkAddress(networkID);\n\n\treturn(new Resolver({\n\t\tclient: client,\n\t\troot: networkAccount,\n\t\ttrustedCAs: [],\n\t\t...options\n\t}));\n}\n"]}
@@ -0,0 +1,106 @@
1
+ import * as KeetaNetClient from '@keetanetwork/keetanet-client';
2
+ import { Buffer } from './utils/buffer.js';
3
+ type AccountKeyAlgorithm = InstanceType<typeof KeetaNetClient.lib.Account>['keyType'];
4
+ /**
5
+ * An alias for the KeetaNetAccount type
6
+ */
7
+ type KeetaNetAccount = ReturnType<typeof KeetaNetClient.lib.Account.fromSeed<AccountKeyAlgorithm>>;
8
+ declare class SensitiveAttribute {
9
+ #private;
10
+ constructor(account: KeetaNetAccount, data: Buffer | ArrayBuffer);
11
+ private decode;
12
+ /**
13
+ * Get the value of the sensitive attribute
14
+ *
15
+ * This will decrypt the value using the account's private key
16
+ * and return the value as an ArrayBuffer
17
+ *
18
+ * Since sensitive attributes are binary blobs, this returns an
19
+ * ArrayBuffer
20
+ */
21
+ get(): Promise<ArrayBuffer>;
22
+ /**
23
+ * Get the value of the sensitive attribute as a string after being
24
+ * interpreted as UTF-8 ( @see SensitiveAttribute.get for more information)
25
+ */
26
+ getString(): Promise<string>;
27
+ /**
28
+ * Generate a proof that a sensitive attribute is a given value,
29
+ * which can be validated by a third party using the certificate
30
+ * and the `validateProof` method
31
+ */
32
+ proove(): Promise<{
33
+ value: string;
34
+ hash: {
35
+ salt: string;
36
+ };
37
+ }>;
38
+ /**
39
+ * Validate the proof that a sensitive attribute is a given value
40
+ */
41
+ validateProof(proof: Awaited<ReturnType<this['proove']>>): Promise<boolean>;
42
+ toJSON(): unknown;
43
+ }
44
+ /**
45
+ * Database of attributes
46
+ */
47
+ declare const CertificateAttributeOIDDB: {
48
+ fullName: string;
49
+ dateOfBirth: string;
50
+ address: string;
51
+ email: string;
52
+ phoneNumber: string;
53
+ };
54
+ type CertificateAttributeNames = keyof typeof CertificateAttributeOIDDB;
55
+ type BaseCertificateBuilderParams = NonNullable<ConstructorParameters<typeof KeetaNetClient.lib.Utils.Certificate.CertificateBuilder>[0]>;
56
+ type CertificateBuilderParams = Required<Pick<BaseCertificateBuilderParams, 'issuer' | 'validFrom' | 'validTo' | 'serial' | 'hashLib' | 'issuerDN' | 'subjectDN' | 'isCA'> & {
57
+ /**
58
+ * The key of the subject -- used for Sensitive Attributes as well
59
+ * as the certificate Subject
60
+ */
61
+ subject: BaseCertificateBuilderParams['subjectPublicKey'];
62
+ }>;
63
+ export declare class CertificateBuilder extends KeetaNetClient.lib.Utils.Certificate.CertificateBuilder {
64
+ #private;
65
+ /**
66
+ * Map the parameters from the public interface to the internal
67
+ * (Certificate library) interface
68
+ */
69
+ private static mapParams;
70
+ constructor(params?: Partial<CertificateBuilderParams>);
71
+ /**
72
+ * Set a KYC Attribute to a given value
73
+ */
74
+ setAttribute(name: CertificateAttributeNames, sensitive: boolean, value: ArrayBuffer | string): void;
75
+ protected addExtensions(...args: Parameters<InstanceType<typeof KeetaNetClient.lib.Utils.Certificate.CertificateBuilder>['addExtensions']>): ReturnType<InstanceType<typeof KeetaNetClient.lib.Utils.Certificate.CertificateBuilder>['addExtensions']>;
76
+ /**
77
+ * Create a Certificate object from the builder
78
+ *
79
+ * The parameters passed in are merged with the parameters passed in
80
+ * when constructing the builder
81
+ */
82
+ build(params?: Partial<CertificateBuilderParams>): Promise<Certificate>;
83
+ }
84
+ export declare class Certificate extends KeetaNetClient.lib.Utils.Certificate.Certificate {
85
+ private readonly subjectKey;
86
+ static readonly Builder: typeof CertificateBuilder;
87
+ /**
88
+ * User KYC Attributes
89
+ */
90
+ readonly attributes: {
91
+ [name: string]: {
92
+ sensitive: true;
93
+ value: SensitiveAttribute;
94
+ } | {
95
+ sensitive: false;
96
+ value: ArrayBuffer;
97
+ };
98
+ };
99
+ constructor(input: ConstructorParameters<typeof KeetaNetClient.lib.Utils.Certificate.Certificate>[0], options?: ConstructorParameters<typeof KeetaNetClient.lib.Utils.Certificate.Certificate>[1] & {
100
+ subjectKey?: KeetaNetAccount;
101
+ });
102
+ protected finalizeConstruction(): void;
103
+ protected processExtension(id: string, value: ArrayBuffer): boolean;
104
+ }
105
+ export {};
106
+ //# sourceMappingURL=certificates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificates.d.ts","sourceRoot":"","sources":["../../src/lib/certificates.ts"],"names":[],"mappings":"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"}