@subsquid/solana-stream 0.0.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/README.md +4 -0
- package/lib/archive/schema.d.ts +167 -0
- package/lib/archive/schema.d.ts.map +1 -0
- package/lib/archive/schema.js +117 -0
- package/lib/archive/schema.js.map +1 -0
- package/lib/archive/source.d.ts +15 -0
- package/lib/archive/source.d.ts.map +1 -0
- package/lib/archive/source.js +98 -0
- package/lib/archive/source.js.map +1 -0
- package/lib/data/fields.d.ts +8 -0
- package/lib/data/fields.d.ts.map +1 -0
- package/lib/data/fields.js +47 -0
- package/lib/data/fields.js.map +1 -0
- package/lib/data/model.d.ts +79 -0
- package/lib/data/model.d.ts.map +1 -0
- package/lib/data/model.js +44 -0
- package/lib/data/model.js.map +1 -0
- package/lib/data/partial.d.ts +26 -0
- package/lib/data/partial.d.ts.map +1 -0
- package/lib/data/partial.js +3 -0
- package/lib/data/partial.js.map +1 -0
- package/lib/data/request.d.ts +104 -0
- package/lib/data/request.d.ts.map +1 -0
- package/lib/data/request.js +3 -0
- package/lib/data/request.js.map +1 -0
- package/lib/data/type-util.d.ts +20 -0
- package/lib/data/type-util.d.ts.map +1 -0
- package/lib/data/type-util.js +3 -0
- package/lib/data/type-util.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +21 -0
- package/lib/index.js.map +1 -0
- package/lib/instruction.d.ts +13 -0
- package/lib/instruction.d.ts.map +1 -0
- package/lib/instruction.js +24 -0
- package/lib/instruction.js.map +1 -0
- package/lib/rpc/client.d.ts +17 -0
- package/lib/rpc/client.d.ts.map +1 -0
- package/lib/rpc/client.js +15 -0
- package/lib/rpc/client.js.map +1 -0
- package/lib/rpc/filter.d.ts +4 -0
- package/lib/rpc/filter.d.ts.map +1 -0
- package/lib/rpc/filter.js +337 -0
- package/lib/rpc/filter.js.map +1 -0
- package/lib/rpc/mapping.d.ts +5 -0
- package/lib/rpc/mapping.d.ts.map +1 -0
- package/lib/rpc/mapping.js +13 -0
- package/lib/rpc/mapping.js.map +1 -0
- package/lib/rpc/project.d.ts +5 -0
- package/lib/rpc/project.d.ts.map +1 -0
- package/lib/rpc/project.js +61 -0
- package/lib/rpc/project.js.map +1 -0
- package/lib/rpc/source.d.ts +15 -0
- package/lib/rpc/source.d.ts.map +1 -0
- package/lib/rpc/source.js +82 -0
- package/lib/rpc/source.js.map +1 -0
- package/lib/source.d.ts +107 -0
- package/lib/source.d.ts.map +1 -0
- package/lib/source.js +280 -0
- package/lib/source.js.map +1 -0
- package/package.json +38 -0
- package/src/archive/schema.ts +137 -0
- package/src/archive/source.ts +105 -0
- package/src/data/fields.ts +50 -0
- package/src/data/model.ts +154 -0
- package/src/data/partial.ts +31 -0
- package/src/data/request.ts +138 -0
- package/src/data/type-util.ts +42 -0
- package/src/index.ts +4 -0
- package/src/instruction.ts +28 -0
- package/src/rpc/client.ts +26 -0
- package/src/rpc/filter.ts +351 -0
- package/src/rpc/mapping.ts +13 -0
- package/src/rpc/project.ts +61 -0
- package/src/rpc/source.ts +90 -0
- package/src/source.ts +392 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partial.d.ts","sourceRoot":"","sources":["../../src/data/partial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAA;AAG5C,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,CAAA;AAClE,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,CAAA;AAC1D,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GAAG,oBAAoB,CAAA;AACjF,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG,UAAU,GAAG,oBAAoB,CAAA;AACtF,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,GAAG,SAAS,CAAA;AAClE,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,GAAG,SAAS,CAAA;AACvE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAA;AAG3C,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAA;AACnF,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAA;AACzF,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAA;AACzF,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;AAC/E,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;AAC7E,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,IAAI,CAAC,mBAAmB,EAAE,0BAA0B,CAAC,CAAA;AACnG,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;AAG1E,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,kBAAkB,CAAA;IAC1B,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAClC,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAClC,IAAI,EAAE,iBAAiB,EAAE,CAAA;IACzB,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,aAAa,EAAE,mBAAmB,EAAE,CAAA;IACpC,OAAO,EAAE,aAAa,EAAE,CAAA;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partial.js","sourceRoot":"","sources":["../../src/data/partial.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Base58Bytes } from '@subsquid/solana-rpc';
|
|
2
|
+
import { LogMessage } from '@subsquid/solana-normalization';
|
|
3
|
+
import { FieldSelection } from './model';
|
|
4
|
+
export interface DataRequest {
|
|
5
|
+
fields?: FieldSelection;
|
|
6
|
+
includeAllBlocks?: boolean;
|
|
7
|
+
transactions?: TransactionRequest[];
|
|
8
|
+
instructions?: InstructionRequest[];
|
|
9
|
+
logs?: LogRequest[];
|
|
10
|
+
balances?: BalanceRequest[];
|
|
11
|
+
tokenBalances?: TokenBalanceRequest[];
|
|
12
|
+
rewards?: RewardRequest[];
|
|
13
|
+
}
|
|
14
|
+
export interface TransactionRequest {
|
|
15
|
+
where?: TransactionRequestWhere;
|
|
16
|
+
include?: TransactionRequestRelations;
|
|
17
|
+
}
|
|
18
|
+
export interface TransactionRequestWhere {
|
|
19
|
+
feePayer?: Base58Bytes[];
|
|
20
|
+
}
|
|
21
|
+
export interface TransactionRequestRelations {
|
|
22
|
+
instructions?: boolean;
|
|
23
|
+
logs?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Hex encoded prefix of instruction data
|
|
27
|
+
*/
|
|
28
|
+
export type Discriminator = string;
|
|
29
|
+
export interface InstructionRequest {
|
|
30
|
+
where?: InstructionRequestWhere;
|
|
31
|
+
include?: InstructionRequestRelations;
|
|
32
|
+
}
|
|
33
|
+
export interface InstructionRequestWhere {
|
|
34
|
+
programId?: Base58Bytes[];
|
|
35
|
+
d1?: Discriminator[];
|
|
36
|
+
d2?: Discriminator[];
|
|
37
|
+
d3?: Discriminator[];
|
|
38
|
+
d4?: Discriminator[];
|
|
39
|
+
d8?: Discriminator[];
|
|
40
|
+
a0?: Base58Bytes[];
|
|
41
|
+
a1?: Base58Bytes[];
|
|
42
|
+
a2?: Base58Bytes[];
|
|
43
|
+
a3?: Base58Bytes[];
|
|
44
|
+
a4?: Base58Bytes[];
|
|
45
|
+
a5?: Base58Bytes[];
|
|
46
|
+
a6?: Base58Bytes[];
|
|
47
|
+
a7?: Base58Bytes[];
|
|
48
|
+
a8?: Base58Bytes[];
|
|
49
|
+
a9?: Base58Bytes[];
|
|
50
|
+
isCommitted?: boolean;
|
|
51
|
+
}
|
|
52
|
+
export interface InstructionRequestRelations {
|
|
53
|
+
transaction?: boolean;
|
|
54
|
+
transactionTokenBalances?: boolean;
|
|
55
|
+
logs?: boolean;
|
|
56
|
+
innerInstructions?: boolean;
|
|
57
|
+
}
|
|
58
|
+
export interface LogRequest {
|
|
59
|
+
where?: LogRequestWhere;
|
|
60
|
+
include?: LogRequestRelations;
|
|
61
|
+
}
|
|
62
|
+
export interface LogRequestWhere {
|
|
63
|
+
programId?: Base58Bytes[];
|
|
64
|
+
kind?: LogMessage['kind'][];
|
|
65
|
+
}
|
|
66
|
+
export interface LogRequestRelations {
|
|
67
|
+
transaction?: boolean;
|
|
68
|
+
instruction?: boolean;
|
|
69
|
+
}
|
|
70
|
+
export interface BalanceRequest {
|
|
71
|
+
where?: BalanceRequestWhere;
|
|
72
|
+
include?: BalanceRequestRelations;
|
|
73
|
+
}
|
|
74
|
+
export interface BalanceRequestWhere {
|
|
75
|
+
account?: Base58Bytes[];
|
|
76
|
+
}
|
|
77
|
+
export interface BalanceRequestRelations {
|
|
78
|
+
transaction?: boolean;
|
|
79
|
+
transactionInstructions?: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface TokenBalanceRequest {
|
|
82
|
+
where?: TokenBalanceRequestWhere;
|
|
83
|
+
include?: TokenBalanceRequestRelations;
|
|
84
|
+
}
|
|
85
|
+
export interface TokenBalanceRequestWhere {
|
|
86
|
+
account?: Base58Bytes[];
|
|
87
|
+
preProgramId?: Base58Bytes[];
|
|
88
|
+
postProgramId?: Base58Bytes[];
|
|
89
|
+
preMint?: Base58Bytes[];
|
|
90
|
+
postMint?: Base58Bytes[];
|
|
91
|
+
preOwner?: Base58Bytes[];
|
|
92
|
+
postOwner?: Base58Bytes[];
|
|
93
|
+
}
|
|
94
|
+
export interface TokenBalanceRequestRelations {
|
|
95
|
+
transaction?: boolean;
|
|
96
|
+
transactionInstructions?: boolean;
|
|
97
|
+
}
|
|
98
|
+
export interface RewardRequest {
|
|
99
|
+
where?: {
|
|
100
|
+
pubkey?: Base58Bytes[];
|
|
101
|
+
};
|
|
102
|
+
include?: undefined;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/data/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/data/request.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type Simplify<T> = {
|
|
2
|
+
[K in keyof T]: T[K];
|
|
3
|
+
} & {};
|
|
4
|
+
export type ExcludeUndefined<T> = {
|
|
5
|
+
[K in keyof T as undefined extends T[K] ? never : K]: T[K];
|
|
6
|
+
} & {};
|
|
7
|
+
export type GetFields<FieldSelectionType, Defaults extends FieldSelectionType, Selection extends FieldSelectionType, K extends keyof FieldSelectionType> = TrueFields<MergeDefault<Selection[K], Defaults[K]>>;
|
|
8
|
+
type MergeDefault<T, D> = Simplify<undefined extends T ? D : Omit<D, keyof ExcludeUndefined<T>> & ExcludeUndefined<T>>;
|
|
9
|
+
type TrueFields<F> = keyof {
|
|
10
|
+
[K in keyof F as true extends F[K] ? K : never]: true;
|
|
11
|
+
};
|
|
12
|
+
export type Select<T, Fields> = T extends any ? Simplify<Pick<T, Extract<keyof T, Fields>>> : never;
|
|
13
|
+
export type Selector<Fields extends string | number | symbol> = {
|
|
14
|
+
[P in Fields]?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type MakePartial<T, Required extends keyof T> = Simplify<Pick<T, Required> & {
|
|
17
|
+
[K in keyof T as K extends Required ? never : K]+?: T[K];
|
|
18
|
+
}>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=type-util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-util.d.ts","sourceRoot":"","sources":["../../src/data/type-util.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACrB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvB,GAAG,EAAE,CAAA;AAGN,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;KAC7B,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7D,GAAG,EAAE,CAAA;AAGN,MAAM,MAAM,SAAS,CACjB,kBAAkB,EAClB,QAAQ,SAAS,kBAAkB,EACnC,SAAS,SAAS,kBAAkB,EACpC,CAAC,SAAS,MAAM,kBAAkB,IAClC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAGvD,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAC9B,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CACrF,CAAA;AAGD,KAAK,UAAU,CAAC,CAAC,IAAI,MAAM;KACtB,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI;CACxD,CAAA;AAGD,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAGnG,MAAM,MAAM,QAAQ,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;KAC3D,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO;CAC1B,CAAA;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,QAAQ,SAAS,MAAM,CAAC,IAAI,QAAQ,CAC3D,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,GACjB;KACK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC3D,CACJ,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-util.js","sourceRoot":"","sources":["../../src/data/type-util.ts"],"names":[],"mappings":""}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./data/model"), exports);
|
|
18
|
+
__exportStar(require("./rpc/client"), exports);
|
|
19
|
+
__exportStar(require("./instruction"), exports);
|
|
20
|
+
__exportStar(require("./source"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,+CAA4B;AAC5B,gDAA6B;AAC7B,2CAAwB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Base58Bytes } from '@subsquid/solana-rpc-data';
|
|
2
|
+
import { Bytes } from './data/model';
|
|
3
|
+
export declare const DATA_SYM: unique symbol;
|
|
4
|
+
export declare const D8_SYM: unique symbol;
|
|
5
|
+
interface Instruction {
|
|
6
|
+
data: Base58Bytes;
|
|
7
|
+
[DATA_SYM]?: Uint8Array;
|
|
8
|
+
[D8_SYM]?: Bytes;
|
|
9
|
+
}
|
|
10
|
+
export declare function getInstructionData(i: Instruction): Uint8Array;
|
|
11
|
+
export declare function getInstructionDescriptor(i: Instruction): string;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=instruction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction.d.ts","sourceRoot":"","sources":["../src/instruction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAGrD,OAAO,EAAC,KAAK,EAAC,MAAM,cAAc,CAAA;AAGlC,eAAO,MAAM,QAAQ,eAAiB,CAAA;AACtC,eAAO,MAAM,MAAM,eAAe,CAAA;AAGlC,UAAU,WAAW;IACjB,IAAI,EAAE,WAAW,CAAA;IACjB,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAA;IACvB,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAA;CACnB;AAGD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAG7D;AAGD,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAI/D"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getInstructionDescriptor = exports.getInstructionData = exports.D8_SYM = exports.DATA_SYM = void 0;
|
|
7
|
+
const util_internal_hex_1 = require("@subsquid/util-internal-hex");
|
|
8
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
9
|
+
exports.DATA_SYM = Symbol('DATA');
|
|
10
|
+
exports.D8_SYM = Symbol('D8');
|
|
11
|
+
function getInstructionData(i) {
|
|
12
|
+
if (i[exports.DATA_SYM])
|
|
13
|
+
return i[exports.DATA_SYM];
|
|
14
|
+
return i[exports.DATA_SYM] = bs58_1.default.decode(i.data);
|
|
15
|
+
}
|
|
16
|
+
exports.getInstructionData = getInstructionData;
|
|
17
|
+
function getInstructionDescriptor(i) {
|
|
18
|
+
if (i[exports.D8_SYM])
|
|
19
|
+
return i[exports.D8_SYM];
|
|
20
|
+
let bytes = (0, util_internal_hex_1.toHex)(getInstructionData(i));
|
|
21
|
+
return i[exports.D8_SYM] = bytes.slice(0, 18);
|
|
22
|
+
}
|
|
23
|
+
exports.getInstructionDescriptor = getInstructionDescriptor;
|
|
24
|
+
//# sourceMappingURL=instruction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruction.js","sourceRoot":"","sources":["../src/instruction.ts"],"names":[],"mappings":";;;;;;AACA,mEAAiD;AACjD,gDAAuB;AAIV,QAAA,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;AACzB,QAAA,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;AAUlC,SAAgB,kBAAkB,CAAC,CAAc;IAC7C,IAAI,CAAC,CAAC,gBAAQ,CAAC;QAAE,OAAO,CAAC,CAAC,gBAAQ,CAAC,CAAA;IACnC,OAAO,CAAC,CAAC,gBAAQ,CAAC,GAAG,cAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC5C,CAAC;AAHD,gDAGC;AAGD,SAAgB,wBAAwB,CAAC,CAAc;IACnD,IAAI,CAAC,CAAC,cAAM,CAAC;QAAE,OAAO,CAAC,CAAC,cAAM,CAAC,CAAA;IAC/B,IAAI,KAAK,GAAG,IAAA,yBAAK,EAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,OAAO,CAAC,CAAC,cAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACzC,CAAC;AAJD,4DAIC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { RpcClient, RpcClientOptions } from '@subsquid/rpc-client';
|
|
2
|
+
export interface SolanaRpcClientOptions extends RpcClientOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Retry on connection error.
|
|
5
|
+
*
|
|
6
|
+
* By default, retries indefinitely.
|
|
7
|
+
*/
|
|
8
|
+
retryAttempts?: number;
|
|
9
|
+
/**
|
|
10
|
+
* Unsafe integer check must be always enabled
|
|
11
|
+
*/
|
|
12
|
+
fixUnsafeIntegers?: true;
|
|
13
|
+
}
|
|
14
|
+
export declare class SolanaRpcClient extends RpcClient {
|
|
15
|
+
constructor(options: SolanaRpcClientOptions);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,gBAAgB,EAAC,MAAM,sBAAsB,CAAA;AAGhE,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;OAEG;IACH,iBAAiB,CAAC,EAAE,IAAI,CAAA;CAC3B;AAGD,qBAAa,eAAgB,SAAQ,SAAS;gBAC9B,OAAO,EAAE,sBAAsB;CAO9C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SolanaRpcClient = void 0;
|
|
4
|
+
const rpc_client_1 = require("@subsquid/rpc-client");
|
|
5
|
+
class SolanaRpcClient extends rpc_client_1.RpcClient {
|
|
6
|
+
constructor(options) {
|
|
7
|
+
super({
|
|
8
|
+
retryAttempts: Number.MAX_SAFE_INTEGER,
|
|
9
|
+
...options,
|
|
10
|
+
fixUnsafeIntegers: true
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.SolanaRpcClient = SolanaRpcClient;
|
|
15
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/rpc/client.ts"],"names":[],"mappings":";;;AAAA,qDAAgE;AAiBhE,MAAa,eAAgB,SAAQ,sBAAS;IAC1C,YAAY,OAA+B;QACvC,KAAK,CAAC;YACF,aAAa,EAAE,MAAM,CAAC,gBAAgB;YACtC,GAAG,OAAO;YACV,iBAAiB,EAAE,IAAI;SAC1B,CAAC,CAAA;IACN,CAAC;CACJ;AARD,0CAQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/rpc/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,EAMR,MAAM,gCAAgC,CAAA;AAIvC,OAAO,EAEH,WAAW,EAKd,MAAM,iBAAiB,CAAA;AA0HxB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAErE"}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.filterBlockItems = void 0;
|
|
16
|
+
const util_internal_1 = require("@subsquid/util-internal");
|
|
17
|
+
const util_internal_processor_tools_1 = require("@subsquid/util-internal-processor-tools");
|
|
18
|
+
const assert_1 = __importDefault(require("assert"));
|
|
19
|
+
const instruction_1 = require("../instruction");
|
|
20
|
+
function buildTransactionFilter(dataRequest) {
|
|
21
|
+
let items = new util_internal_processor_tools_1.EntityFilter();
|
|
22
|
+
for (let req of dataRequest.transactions ?? []) {
|
|
23
|
+
let filter = new util_internal_processor_tools_1.FilterBuilder();
|
|
24
|
+
let where = req.where || {};
|
|
25
|
+
filter.getIn(tx => tx.accountKeys[0], where.feePayer);
|
|
26
|
+
items.add(filter, req.include || {});
|
|
27
|
+
}
|
|
28
|
+
return items;
|
|
29
|
+
}
|
|
30
|
+
function buildInstructionFilter(dataRequest) {
|
|
31
|
+
let items = new util_internal_processor_tools_1.EntityFilter();
|
|
32
|
+
for (let req of dataRequest.instructions ?? []) {
|
|
33
|
+
let filter = new util_internal_processor_tools_1.FilterBuilder();
|
|
34
|
+
let where = req.where || {};
|
|
35
|
+
filter.propIn('programId', where.programId);
|
|
36
|
+
filter.matchAny((i, d) => (0, instruction_1.getInstructionDescriptor)(i).startsWith(d), where.d1);
|
|
37
|
+
filter.matchAny((i, d) => (0, instruction_1.getInstructionDescriptor)(i).startsWith(d), where.d2);
|
|
38
|
+
filter.matchAny((i, d) => (0, instruction_1.getInstructionDescriptor)(i).startsWith(d), where.d4);
|
|
39
|
+
filter.getIn(instruction_1.getInstructionDescriptor, where.d8);
|
|
40
|
+
filter.getIn(i => i.accounts[0], where.a0);
|
|
41
|
+
filter.getIn(i => i.accounts[1], where.a1);
|
|
42
|
+
filter.getIn(i => i.accounts[2], where.a2);
|
|
43
|
+
filter.getIn(i => i.accounts[3], where.a3);
|
|
44
|
+
filter.getIn(i => i.accounts[4], where.a4);
|
|
45
|
+
filter.getIn(i => i.accounts[5], where.a5);
|
|
46
|
+
filter.getIn(i => i.accounts[6], where.a6);
|
|
47
|
+
filter.getIn(i => i.accounts[7], where.a7);
|
|
48
|
+
filter.getIn(i => i.accounts[8], where.a8);
|
|
49
|
+
filter.getIn(i => i.accounts[9], where.a9);
|
|
50
|
+
if (where.isCommitted != null) {
|
|
51
|
+
filter.propIn('isCommitted', [where.isCommitted]);
|
|
52
|
+
}
|
|
53
|
+
items.add(filter, req.include ?? {});
|
|
54
|
+
}
|
|
55
|
+
return items;
|
|
56
|
+
}
|
|
57
|
+
function buildLogFilter(dataRequest) {
|
|
58
|
+
let items = new util_internal_processor_tools_1.EntityFilter();
|
|
59
|
+
for (let req of dataRequest.logs ?? []) {
|
|
60
|
+
let filter = new util_internal_processor_tools_1.FilterBuilder();
|
|
61
|
+
let where = req.where ?? {};
|
|
62
|
+
filter.propIn('programId', where.programId);
|
|
63
|
+
filter.propIn('kind', where.kind);
|
|
64
|
+
items.add(filter, req.include ?? {});
|
|
65
|
+
}
|
|
66
|
+
return items;
|
|
67
|
+
}
|
|
68
|
+
function buildBalanceFilter(dataRequest) {
|
|
69
|
+
let items = new util_internal_processor_tools_1.EntityFilter();
|
|
70
|
+
for (let req of dataRequest.balances ?? []) {
|
|
71
|
+
let filter = new util_internal_processor_tools_1.FilterBuilder();
|
|
72
|
+
let where = req.where || {};
|
|
73
|
+
filter.propIn('account', where.account);
|
|
74
|
+
items.add(filter, req.include || {});
|
|
75
|
+
}
|
|
76
|
+
return items;
|
|
77
|
+
}
|
|
78
|
+
function buildTokenBalanceFilter(dataRequest) {
|
|
79
|
+
let items = new util_internal_processor_tools_1.EntityFilter();
|
|
80
|
+
for (let req of dataRequest.tokenBalances ?? []) {
|
|
81
|
+
let filter = new util_internal_processor_tools_1.FilterBuilder();
|
|
82
|
+
let where = req.where || {};
|
|
83
|
+
filter.propIn('account', where.account);
|
|
84
|
+
filter.propIn('preProgramId', where.preProgramId);
|
|
85
|
+
filter.propIn('postProgramId', where.postProgramId);
|
|
86
|
+
filter.propIn('preMint', where.preMint);
|
|
87
|
+
filter.propIn('postMint', where.postMint);
|
|
88
|
+
filter.propIn('preOwner', where.preOwner);
|
|
89
|
+
filter.propIn('postOwner', where.postOwner);
|
|
90
|
+
items.add(filter, req.include || {});
|
|
91
|
+
}
|
|
92
|
+
return items;
|
|
93
|
+
}
|
|
94
|
+
function buildRewardsFilter(dataRequest) {
|
|
95
|
+
let items = new util_internal_processor_tools_1.EntityFilter();
|
|
96
|
+
for (let req of dataRequest.rewards ?? []) {
|
|
97
|
+
let filter = new util_internal_processor_tools_1.FilterBuilder();
|
|
98
|
+
let where = req.where || {};
|
|
99
|
+
filter.propIn('pubkey', where.pubkey);
|
|
100
|
+
items.add(filter, {});
|
|
101
|
+
}
|
|
102
|
+
return items;
|
|
103
|
+
}
|
|
104
|
+
const getItemFilters = (0, util_internal_1.weakMemo)((req) => {
|
|
105
|
+
return {
|
|
106
|
+
transactions: buildTransactionFilter(req),
|
|
107
|
+
instructions: buildInstructionFilter(req),
|
|
108
|
+
logs: buildLogFilter(req),
|
|
109
|
+
balances: buildBalanceFilter(req),
|
|
110
|
+
tokenBalances: buildTokenBalanceFilter(req),
|
|
111
|
+
rewards: buildRewardsFilter(req)
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
class IncludeSet {
|
|
115
|
+
constructor() {
|
|
116
|
+
this.transactions = new Set;
|
|
117
|
+
this.instructions = new Set;
|
|
118
|
+
this.logs = new Set;
|
|
119
|
+
this.balances = new Set;
|
|
120
|
+
this.tokenBalances = new Set;
|
|
121
|
+
this.rewards = new Set;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function filterBlockItems(block, req) {
|
|
125
|
+
new BlockFilter(block, req).apply();
|
|
126
|
+
}
|
|
127
|
+
exports.filterBlockItems = filterBlockItems;
|
|
128
|
+
class BlockFilter {
|
|
129
|
+
constructor(block, req) {
|
|
130
|
+
this.block = block;
|
|
131
|
+
this.include = new IncludeSet();
|
|
132
|
+
this.items = getItemFilters(req);
|
|
133
|
+
}
|
|
134
|
+
transactions() {
|
|
135
|
+
return new Map(this.block.transactions.map(tx => [tx.transactionIndex, tx]));
|
|
136
|
+
}
|
|
137
|
+
getTransaction(idx) {
|
|
138
|
+
let tx = this.transactions().get(idx);
|
|
139
|
+
(0, assert_1.default)(tx);
|
|
140
|
+
return tx;
|
|
141
|
+
}
|
|
142
|
+
logsByTx() {
|
|
143
|
+
return (0, util_internal_1.groupBy)(this.block.logs, log => log.transactionIndex);
|
|
144
|
+
}
|
|
145
|
+
instructionsByTx() {
|
|
146
|
+
return (0, util_internal_1.groupBy)(this.block.instructions, i => i.transactionIndex);
|
|
147
|
+
}
|
|
148
|
+
tokenBalancesByTx() {
|
|
149
|
+
return (0, util_internal_1.groupBy)(this.block.tokenBalances, b => b.transactionIndex);
|
|
150
|
+
}
|
|
151
|
+
filterTransactions() {
|
|
152
|
+
if (!this.items.transactions.present())
|
|
153
|
+
return;
|
|
154
|
+
for (let tx of this.block.transactions) {
|
|
155
|
+
let rel = this.items.transactions.match(tx);
|
|
156
|
+
if (rel == null)
|
|
157
|
+
continue;
|
|
158
|
+
this.include.transactions.add(tx);
|
|
159
|
+
if (rel.logs) {
|
|
160
|
+
include(this.include.logs, this.logsByTx().get(tx.transactionIndex));
|
|
161
|
+
}
|
|
162
|
+
if (rel.instructions) {
|
|
163
|
+
include(this.include.instructions, this.instructionsByTx().get(tx.transactionIndex));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
filterInstructions() {
|
|
168
|
+
if (!this.items.instructions.present())
|
|
169
|
+
return;
|
|
170
|
+
for (let i = 0; i < this.block.instructions.length; i++) {
|
|
171
|
+
let ins = this.block.instructions[i];
|
|
172
|
+
let rel = this.items.instructions.match(ins);
|
|
173
|
+
if (rel == null)
|
|
174
|
+
continue;
|
|
175
|
+
this.include.instructions.add(ins);
|
|
176
|
+
if (rel.innerInstructions) {
|
|
177
|
+
for (let j = i + 1; j < this.block.instructions.length; j++) {
|
|
178
|
+
let child = this.block.instructions[j];
|
|
179
|
+
if (ins.transactionIndex == child.transactionIndex &&
|
|
180
|
+
isChildAddress(ins.instructionAddress, child.instructionAddress)) {
|
|
181
|
+
this.include.instructions.add(child);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (rel.logs) {
|
|
189
|
+
let logs = this.logsByTx().get(ins.transactionIndex) ?? [];
|
|
190
|
+
include(this.include.logs, findInstructionChildren(logs, ins.instructionAddress));
|
|
191
|
+
}
|
|
192
|
+
if (rel.transaction) {
|
|
193
|
+
this.include.transactions.add(this.getTransaction(ins.transactionIndex));
|
|
194
|
+
}
|
|
195
|
+
if (rel.transactionTokenBalances) {
|
|
196
|
+
include(this.include.tokenBalances, this.tokenBalancesByTx().get(ins.transactionIndex));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
filterLogs() {
|
|
201
|
+
if (!this.items.logs.present())
|
|
202
|
+
return;
|
|
203
|
+
for (let log of this.block.logs) {
|
|
204
|
+
let rel = this.items.logs.match(log);
|
|
205
|
+
if (rel == null)
|
|
206
|
+
continue;
|
|
207
|
+
this.include.logs.add(log);
|
|
208
|
+
if (rel.transaction) {
|
|
209
|
+
this.include.transactions.add(this.getTransaction(log.transactionIndex));
|
|
210
|
+
}
|
|
211
|
+
if (rel.instruction) {
|
|
212
|
+
this.include.instructions.add(this.getInstruction(log.transactionIndex, log.instructionAddress));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
getInstruction(transactionIdx, address) {
|
|
217
|
+
let pos = (0, util_internal_1.bisect)(this.block.instructions, null, ins => ins.transactionIndex - transactionIdx || addressCompare(ins.instructionAddress, address));
|
|
218
|
+
let ins = this.block.instructions[pos];
|
|
219
|
+
(0, assert_1.default)(ins &&
|
|
220
|
+
ins.transactionIndex == transactionIdx &&
|
|
221
|
+
addressCompare(ins.instructionAddress, address) == 0);
|
|
222
|
+
return ins;
|
|
223
|
+
}
|
|
224
|
+
filterTokenBalances() {
|
|
225
|
+
if (!this.items.tokenBalances.present())
|
|
226
|
+
return;
|
|
227
|
+
for (let balance of this.block.tokenBalances) {
|
|
228
|
+
let rel = this.items.tokenBalances.match(balance);
|
|
229
|
+
if (rel == null)
|
|
230
|
+
continue;
|
|
231
|
+
this.include.tokenBalances.add(balance);
|
|
232
|
+
if (rel.transaction) {
|
|
233
|
+
this.include.transactions.add(this.getTransaction(balance.transactionIndex));
|
|
234
|
+
}
|
|
235
|
+
if (rel.transactionInstructions) {
|
|
236
|
+
include(this.include.instructions, this.instructionsByTx().get(balance.transactionIndex));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
filterBalances() {
|
|
241
|
+
if (!this.items.balances.present())
|
|
242
|
+
return;
|
|
243
|
+
for (let balance of this.block.balances) {
|
|
244
|
+
let rel = this.items.balances.match(balance);
|
|
245
|
+
if (rel == null)
|
|
246
|
+
continue;
|
|
247
|
+
this.include.balances.add(balance);
|
|
248
|
+
if (rel.transaction) {
|
|
249
|
+
this.include.transactions.add(this.getTransaction(balance.transactionIndex));
|
|
250
|
+
}
|
|
251
|
+
if (rel.transactionInstructions) {
|
|
252
|
+
include(this.include.instructions, this.instructionsByTx().get(balance.transactionIndex));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
filterRewards() {
|
|
257
|
+
if (!this.items.rewards.present() || this.block.rewards == null)
|
|
258
|
+
return;
|
|
259
|
+
for (let reward of this.block.rewards) {
|
|
260
|
+
if (this.items.rewards.match(reward)) {
|
|
261
|
+
this.include.rewards.add(reward);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
apply() {
|
|
266
|
+
this.filterTransactions();
|
|
267
|
+
this.filterInstructions();
|
|
268
|
+
this.filterLogs();
|
|
269
|
+
this.filterBalances();
|
|
270
|
+
this.filterTokenBalances();
|
|
271
|
+
this.filterRewards();
|
|
272
|
+
this.block.transactions = this.block.transactions.filter(i => this.include.transactions.has(i));
|
|
273
|
+
this.block.instructions = this.block.instructions.filter(i => this.include.instructions.has(i));
|
|
274
|
+
this.block.logs = this.block.logs.filter(i => this.include.logs.has(i));
|
|
275
|
+
this.block.balances = this.block.balances.filter(i => this.include.balances.has(i));
|
|
276
|
+
this.block.tokenBalances = this.block.tokenBalances.filter(i => this.include.tokenBalances.has(i));
|
|
277
|
+
this.block.rewards = this.block.rewards.filter(i => this.include.rewards.has(i));
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
__decorate([
|
|
281
|
+
util_internal_1.def,
|
|
282
|
+
__metadata("design:type", Function),
|
|
283
|
+
__metadata("design:paramtypes", []),
|
|
284
|
+
__metadata("design:returntype", Map)
|
|
285
|
+
], BlockFilter.prototype, "transactions", null);
|
|
286
|
+
__decorate([
|
|
287
|
+
util_internal_1.def,
|
|
288
|
+
__metadata("design:type", Function),
|
|
289
|
+
__metadata("design:paramtypes", []),
|
|
290
|
+
__metadata("design:returntype", Map)
|
|
291
|
+
], BlockFilter.prototype, "logsByTx", null);
|
|
292
|
+
__decorate([
|
|
293
|
+
util_internal_1.def,
|
|
294
|
+
__metadata("design:type", Function),
|
|
295
|
+
__metadata("design:paramtypes", []),
|
|
296
|
+
__metadata("design:returntype", Map)
|
|
297
|
+
], BlockFilter.prototype, "instructionsByTx", null);
|
|
298
|
+
__decorate([
|
|
299
|
+
util_internal_1.def,
|
|
300
|
+
__metadata("design:type", Function),
|
|
301
|
+
__metadata("design:paramtypes", []),
|
|
302
|
+
__metadata("design:returntype", Map)
|
|
303
|
+
], BlockFilter.prototype, "tokenBalancesByTx", null);
|
|
304
|
+
function include(set, items) {
|
|
305
|
+
if (items == null)
|
|
306
|
+
return;
|
|
307
|
+
for (let it of items) {
|
|
308
|
+
set.add(it);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
function* findInstructionChildren(items, addr) {
|
|
312
|
+
if (items.length == 0)
|
|
313
|
+
return;
|
|
314
|
+
let beg = (0, util_internal_1.bisect)(items, addr, (ins, addr) => addressCompare(ins.instructionAddress, addr));
|
|
315
|
+
while (beg < items.length && isChildAddress(items[beg].instructionAddress, addr)) {
|
|
316
|
+
yield items[beg];
|
|
317
|
+
beg += 1;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
function isChildAddress(parent, addr) {
|
|
321
|
+
if (parent.length > addr.length)
|
|
322
|
+
return false;
|
|
323
|
+
for (let i = 0; i < parent.length; i++) {
|
|
324
|
+
if (parent[i] !== addr[i])
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
return true;
|
|
328
|
+
}
|
|
329
|
+
function addressCompare(a, b) {
|
|
330
|
+
for (let i = 0; i < Math.min(a.length, b.length); i++) {
|
|
331
|
+
let order = a[i] - b[i];
|
|
332
|
+
if (order)
|
|
333
|
+
return order;
|
|
334
|
+
}
|
|
335
|
+
return a.length - b.length;
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=filter.js.map
|