@bsv/overlay-discovery-services 1.4.1 → 1.4.2
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/cjs/package.json +4 -4
- package/dist/cjs/src/SHIP/SHIPLookupService.js +43 -11
- package/dist/cjs/src/SHIP/SHIPLookupService.js.map +1 -1
- package/dist/cjs/src/SHIP/SHIPStorage.js +33 -10
- package/dist/cjs/src/SHIP/SHIPStorage.js.map +1 -1
- package/dist/cjs/src/SHIP/SHIPTopicManager.js.map +1 -1
- package/dist/cjs/src/SLAP/SLAPLookupService.js +57 -22
- package/dist/cjs/src/SLAP/SLAPLookupService.js.map +1 -1
- package/dist/cjs/src/SLAP/SLAPStorage.js +29 -6
- package/dist/cjs/src/SLAP/SLAPStorage.js.map +1 -1
- package/dist/cjs/src/utils/isAdvertisableURI.js +21 -21
- package/dist/cjs/src/utils/isAdvertisableURI.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/SHIP/SHIPLookupService.js +43 -11
- package/dist/esm/src/SHIP/SHIPLookupService.js.map +1 -1
- package/dist/esm/src/SHIP/SHIPStorage.js +32 -10
- package/dist/esm/src/SHIP/SHIPStorage.js.map +1 -1
- package/dist/esm/src/SHIP/SHIPTopicManager.js.map +1 -1
- package/dist/esm/src/SLAP/SLAPLookupService.js +57 -22
- package/dist/esm/src/SLAP/SLAPLookupService.js.map +1 -1
- package/dist/esm/src/SLAP/SLAPStorage.js +28 -6
- package/dist/esm/src/SLAP/SLAPStorage.js.map +1 -1
- package/dist/esm/src/utils/isAdvertisableURI.js +21 -21
- package/dist/esm/src/utils/isAdvertisableURI.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/SHIP/SHIPLookupService.d.ts.map +1 -1
- package/dist/types/src/SHIP/SHIPStorage.d.ts +8 -5
- package/dist/types/src/SHIP/SHIPStorage.d.ts.map +1 -1
- package/dist/types/src/SHIP/SHIPTopicManager.d.ts.map +1 -1
- package/dist/types/src/SLAP/SLAPLookupService.d.ts.map +1 -1
- package/dist/types/src/SLAP/SLAPStorage.d.ts +4 -1
- package/dist/types/src/SLAP/SLAPStorage.d.ts.map +1 -1
- package/dist/types/src/SLAP/SLAPTopicManager.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +8 -0
- package/dist/types/src/types.d.ts.map +1 -1
- package/dist/types/src/utils/isAdvertisableURI.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/SHIP/SHIPLookupService.ts +57 -17
- package/src/SHIP/SHIPStorage.ts +45 -15
- package/src/SHIP/SHIPTopicManager.ts +3 -3
- package/src/SLAP/SLAPLookup.docs.ts +1 -1
- package/src/SLAP/SLAPLookupService.ts +64 -26
- package/src/SLAP/SLAPStorage.ts +41 -11
- package/src/SLAP/SLAPTopicManager.ts +3 -3
- package/src/types.ts +8 -0
- package/src/utils/isAdvertisableURI.ts +50 -50
package/dist/cjs/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bsv/overlay-discovery-services",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"description": "BSV Blockchain Overlay Services Engine",
|
|
6
6
|
"files": [
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
"typescript": "^5.2.2"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@bsv/overlay": "^0.4.
|
|
51
|
-
"@bsv/sdk": "^1.6.
|
|
52
|
-
"@bsv/wallet-toolbox-client": "^1.5.
|
|
50
|
+
"@bsv/overlay": "^0.4.4",
|
|
51
|
+
"@bsv/sdk": "^1.6.19",
|
|
52
|
+
"@bsv/wallet-toolbox-client": "^1.5.18",
|
|
53
53
|
"mongodb": "^6.11.0"
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -51,21 +51,53 @@ class SHIPLookupService {
|
|
|
51
51
|
if (question.service !== 'ls_ship') {
|
|
52
52
|
throw new Error('Lookup service not supported!');
|
|
53
53
|
}
|
|
54
|
+
// Handle legacy "findAll" string query
|
|
54
55
|
if (question.query === 'findAll') {
|
|
55
56
|
return await this.storage.findAll();
|
|
56
57
|
}
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
// Handle object-based query
|
|
59
|
+
if (typeof question.query === 'object') {
|
|
60
|
+
const query = question.query;
|
|
61
|
+
// Handle new findAll mode with pagination
|
|
62
|
+
if (query.findAll) {
|
|
63
|
+
const { limit, skip, sortOrder } = query;
|
|
64
|
+
// Validate pagination parameters
|
|
65
|
+
if (typeof limit !== 'undefined' && (typeof limit !== 'number' || limit < 0)) {
|
|
66
|
+
throw new Error('query.limit must be a positive number if provided');
|
|
67
|
+
}
|
|
68
|
+
if (typeof skip !== 'undefined' && (typeof skip !== 'number' || skip < 0)) {
|
|
69
|
+
throw new Error('query.skip must be a non-negative number if provided');
|
|
70
|
+
}
|
|
71
|
+
if (typeof sortOrder !== 'undefined' && sortOrder !== 'asc' && sortOrder !== 'desc') {
|
|
72
|
+
throw new Error('query.sortOrder must be "asc" or "desc" if provided');
|
|
73
|
+
}
|
|
74
|
+
return await this.storage.findAll(limit, skip, sortOrder);
|
|
75
|
+
}
|
|
76
|
+
// Handle specific query with domain, topics, identityKey
|
|
77
|
+
const { domain, topics, identityKey, limit, skip, sortOrder } = query;
|
|
78
|
+
// Validate query parameters
|
|
79
|
+
if (typeof domain !== 'string' && typeof domain !== 'undefined') {
|
|
80
|
+
throw new Error('query.domain must be a string if provided');
|
|
81
|
+
}
|
|
82
|
+
if (!Array.isArray(topics) && typeof topics !== 'undefined') {
|
|
83
|
+
throw new Error('query.topics must be an array of strings if provided');
|
|
84
|
+
}
|
|
85
|
+
if (typeof identityKey !== 'string' && typeof identityKey !== 'undefined') {
|
|
86
|
+
throw new Error('query.identityKey must be a string if provided');
|
|
87
|
+
}
|
|
88
|
+
// Validate pagination parameters
|
|
89
|
+
if (typeof limit !== 'undefined' && (typeof limit !== 'number' || limit < 0)) {
|
|
90
|
+
throw new Error('query.limit must be a positive number if provided');
|
|
91
|
+
}
|
|
92
|
+
if (typeof skip !== 'undefined' && (typeof skip !== 'number' || skip < 0)) {
|
|
93
|
+
throw new Error('query.skip must be a non-negative number if provided');
|
|
94
|
+
}
|
|
95
|
+
if (typeof sortOrder !== 'undefined' && sortOrder !== 'asc' && sortOrder !== 'desc') {
|
|
96
|
+
throw new Error('query.sortOrder must be "asc" or "desc" if provided');
|
|
97
|
+
}
|
|
98
|
+
return await this.storage.findRecord({ domain, topics, identityKey, limit, skip, sortOrder });
|
|
61
99
|
}
|
|
62
|
-
|
|
63
|
-
throw new Error('query.topics must be an array of strings if provided');
|
|
64
|
-
}
|
|
65
|
-
if (typeof identityKey !== 'string' && typeof identityKey !== 'undefined') {
|
|
66
|
-
throw new Error('query.identityKey must be a string if provided');
|
|
67
|
-
}
|
|
68
|
-
return await this.storage.findRecord({ domain, topics, identityKey });
|
|
100
|
+
throw new Error('Invalid query format. Query must be "findAll" string or an object with valid parameters.');
|
|
69
101
|
}
|
|
70
102
|
async getDocumentation() {
|
|
71
103
|
return SHIPLookup_docs_js_1.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SHIPLookupService.js","sourceRoot":"","sources":["../../../../src/SHIP/SHIPLookupService.ts"],"names":[],"mappings":";;;;;;AAEA,kCAA0C;AAE1C,8EAAiD;AAEjD;;;;;GAKG;AACH,MAAa,iBAAiB;IAG5B,
|
|
1
|
+
{"version":3,"file":"SHIPLookupService.js","sourceRoot":"","sources":["../../../../src/SHIP/SHIPLookupService.ts"],"names":[],"mappings":";;;;;;AAEA,kCAA0C;AAE1C,8EAAiD;AAEjD;;;;;GAKG;AACH,MAAa,iBAAiB;IAG5B,YAAoB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QAFxC,kBAAa,GAAkB,gBAAgB,CAAA;QAC/C,0BAAqB,GAA0B,MAAM,CAAA;IACT,CAAC;IAE7C,KAAK,CAAC,qBAAqB,CAAE,OAA8B;QACzD,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QACzE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;QAC3D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM;QAC/B,MAAM,MAAM,GAAG,cAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC7C,MAAM,cAAc,GAAG,WAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,MAAM,WAAW,GAAG,WAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,WAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7C,MAAM,cAAc,GAAG,WAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,cAAc,KAAK,MAAM;YAAE,OAAM;QACrC,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;IAC5F,CAAC;IAED,KAAK,CAAC,WAAW,CAAE,OAAoB;QACrC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;QAC/D,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;QAC5C,IAAI,KAAK,KAAK,SAAS;YAAE,OAAM;QAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,aAAa,CAAE,IAAY,EAAE,WAAmB;QACpD,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,QAAwB;QACpC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,CAAC;QAED,uCAAuC;QACvC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QACrC,CAAC;QAED,4BAA4B;QAC5B,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAkB,CAAA;YAEzC,0CAA0C;YAC1C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;gBAExC,iCAAiC;gBACjC,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC7E,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;gBACtE,CAAC;gBACD,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC1E,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;gBACzE,CAAC;gBACD,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;oBACpF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;gBACxE,CAAC;gBAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;YAC3D,CAAC;YAED,yDAAyD;YACzD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;YAErE,4BAA4B;YAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC9D,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;YACzE,CAAC;YACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;YACnE,CAAC;YAED,iCAAiC;YACjC,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;YACtE,CAAC;YACD,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;YACzE,CAAC;YACD,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACpF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;YACxE,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QAC/F,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAA;IAC7G,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,4BAAc,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,WAAW;QAOf,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,gBAAgB,EAAE,+CAA+C;SAClE,CAAA;IACH,CAAC;CACF;AA/GD,8CA+GC"}
|
|
@@ -47,10 +47,11 @@ class SHIPStorage {
|
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Finds SHIP records based on a given query object.
|
|
50
|
-
* @param {Object} query The query object which may contain properties for domain, topics, and
|
|
50
|
+
* @param {Object} query The query object which may contain properties for domain, topics, identityKey, limit, and skip.
|
|
51
51
|
* @returns {Promise<UTXOReference[]>} Returns matching UTXO references.
|
|
52
52
|
*/
|
|
53
53
|
async findRecord(query) {
|
|
54
|
+
var _a;
|
|
54
55
|
const mongoQuery = {};
|
|
55
56
|
// Add domain to the query if provided
|
|
56
57
|
if (typeof query.domain === 'string') {
|
|
@@ -64,22 +65,44 @@ class SHIPStorage {
|
|
|
64
65
|
if (typeof query.identityKey === 'string') {
|
|
65
66
|
mongoQuery.identityKey = query.identityKey;
|
|
66
67
|
}
|
|
67
|
-
|
|
68
|
+
// Build the query with pagination
|
|
69
|
+
let cursor = this.shipRecords
|
|
68
70
|
.find(mongoQuery)
|
|
69
|
-
.project({ txid: 1, outputIndex: 1 })
|
|
71
|
+
.project({ txid: 1, outputIndex: 1, createdAt: 1 });
|
|
72
|
+
cursor.sort({ createdAt: (_a = query.sortOrder) !== null && _a !== void 0 ? _a : -1 });
|
|
73
|
+
// Apply pagination if provided
|
|
74
|
+
if (typeof query.skip === 'number' && query.skip > 0) {
|
|
75
|
+
cursor = cursor.skip(query.skip);
|
|
76
|
+
}
|
|
77
|
+
if (typeof query.limit === 'number' && query.limit > 0) {
|
|
78
|
+
cursor = cursor.limit(query.limit);
|
|
79
|
+
}
|
|
80
|
+
return await cursor
|
|
70
81
|
.toArray()
|
|
71
82
|
.then((results) => results.map((record) => ({
|
|
72
83
|
txid: record.txid,
|
|
73
|
-
outputIndex: record.outputIndex
|
|
84
|
+
outputIndex: record.outputIndex
|
|
74
85
|
})));
|
|
75
86
|
}
|
|
76
87
|
/**
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
88
|
+
* Returns all results tracked by the overlay
|
|
89
|
+
* @param {number} limit Optional limit for pagination
|
|
90
|
+
* @param {number} skip Optional skip for pagination
|
|
91
|
+
* @param {string} sortOrder Optional sort order
|
|
92
|
+
* @returns {Promise<UTXOReference[]>} returns matching UTXO references
|
|
93
|
+
*/
|
|
94
|
+
async findAll(limit, skip, sortOrder) {
|
|
95
|
+
let cursor = this.shipRecords.find({})
|
|
96
|
+
.project({ txid: 1, outputIndex: 1, createdAt: 1 });
|
|
97
|
+
// Apply pagination if provided
|
|
98
|
+
cursor.sort({ createdAt: sortOrder !== null && sortOrder !== void 0 ? sortOrder : -1 });
|
|
99
|
+
if (typeof skip === 'number' && skip > 0) {
|
|
100
|
+
cursor = cursor.skip(skip);
|
|
101
|
+
}
|
|
102
|
+
if (typeof limit === 'number' && limit > 0) {
|
|
103
|
+
cursor = cursor.limit(limit);
|
|
104
|
+
}
|
|
105
|
+
return await cursor
|
|
83
106
|
.toArray()
|
|
84
107
|
.then(results => results.map(shipRecords => ({
|
|
85
108
|
txid: shipRecords.txid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SHIPStorage.js","sourceRoot":"","sources":["../../../../src/SHIP/SHIPStorage.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,WAAW;IAGtB;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"SHIPStorage.js","sourceRoot":"","sources":["../../../../src/SHIP/SHIPStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SHIPTopicManager.js","sourceRoot":"","sources":["../../../../src/SHIP/SHIPTopicManager.ts"],"names":[],"mappings":";;;;;;AACA,kCAAuD;AACvD,oGAA6F;AAC7F,wEAAiE;AACjE,4EAA+C;AAC/C,wFAAiF;AAEjF;;;;;;GAMG;AACH,MAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"SHIPTopicManager.js","sourceRoot":"","sources":["../../../../src/SHIP/SHIPTopicManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,32 +52,67 @@ class SLAPLookupService {
|
|
|
52
52
|
if (question.service !== 'ls_slap') {
|
|
53
53
|
throw new Error('Lookup service not supported!');
|
|
54
54
|
}
|
|
55
|
+
// Handle legacy "findAll" string query
|
|
55
56
|
if (question.query === 'findAll') {
|
|
56
57
|
return await this.storage.findAll();
|
|
57
58
|
}
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
// Handle object-based query
|
|
60
|
+
if (typeof question.query === 'object') {
|
|
61
|
+
const query = question.query;
|
|
62
|
+
// Handle new findAll mode with pagination
|
|
63
|
+
if (query.findAll) {
|
|
64
|
+
const { limit, skip, sortOrder } = query;
|
|
65
|
+
// Validate pagination parameters
|
|
66
|
+
if (typeof limit !== 'undefined' && (typeof limit !== 'number' || limit < 0)) {
|
|
67
|
+
throw new Error('query.limit must be a positive number if provided');
|
|
68
|
+
}
|
|
69
|
+
if (typeof skip !== 'undefined' && (typeof skip !== 'number' || skip < 0)) {
|
|
70
|
+
throw new Error('query.skip must be a non-negative number if provided');
|
|
71
|
+
}
|
|
72
|
+
if (typeof sortOrder !== 'undefined' && sortOrder !== 'asc' && sortOrder !== 'desc') {
|
|
73
|
+
throw new Error('query.sortOrder must be "asc" or "desc" if provided');
|
|
74
|
+
}
|
|
75
|
+
return await this.storage.findAll(limit, skip, sortOrder);
|
|
76
|
+
}
|
|
77
|
+
// Handle specific query with domain, service, identityKey
|
|
78
|
+
const { domain, service, identityKey, limit, skip, sortOrder } = query;
|
|
79
|
+
// Validate query parameters
|
|
80
|
+
if (typeof domain !== 'undefined' && typeof domain !== 'string') {
|
|
81
|
+
throw new Error('query.domain must be a string if provided');
|
|
82
|
+
}
|
|
83
|
+
if (typeof service !== 'undefined' && typeof service !== 'string') {
|
|
84
|
+
throw new Error('query.service must be a string if provided');
|
|
85
|
+
}
|
|
86
|
+
if (typeof identityKey !== 'undefined' && typeof identityKey !== 'string') {
|
|
87
|
+
throw new Error('query.identityKey must be a string if provided');
|
|
88
|
+
}
|
|
89
|
+
// Validate pagination parameters
|
|
90
|
+
if (typeof limit !== 'undefined' && (typeof limit !== 'number' || limit < 0)) {
|
|
91
|
+
throw new Error('query.limit must be a positive number if provided');
|
|
92
|
+
}
|
|
93
|
+
if (typeof skip !== 'undefined' && (typeof skip !== 'number' || skip < 0)) {
|
|
94
|
+
throw new Error('query.skip must be a non-negative number if provided');
|
|
95
|
+
}
|
|
96
|
+
if (typeof sortOrder !== 'undefined' && sortOrder !== 'asc' && sortOrder !== 'desc') {
|
|
97
|
+
throw new Error('query.sortOrder must be "asc" or "desc" if provided');
|
|
98
|
+
}
|
|
99
|
+
// Build the query object dynamically to omit any undefined values
|
|
100
|
+
const queryParams = {};
|
|
101
|
+
if (domain !== undefined)
|
|
102
|
+
queryParams.domain = domain;
|
|
103
|
+
if (service !== undefined)
|
|
104
|
+
queryParams.service = service;
|
|
105
|
+
if (identityKey !== undefined)
|
|
106
|
+
queryParams.identityKey = identityKey;
|
|
107
|
+
if (limit !== undefined)
|
|
108
|
+
queryParams.limit = limit;
|
|
109
|
+
if (skip !== undefined)
|
|
110
|
+
queryParams.skip = skip;
|
|
111
|
+
if (sortOrder !== undefined)
|
|
112
|
+
queryParams.sortOrder = sortOrder;
|
|
113
|
+
return await this.storage.findRecord(queryParams);
|
|
63
114
|
}
|
|
64
|
-
|
|
65
|
-
throw new Error('query.service must be a string if provided');
|
|
66
|
-
}
|
|
67
|
-
if (identityKey !== undefined && typeof identityKey !== 'string') {
|
|
68
|
-
throw new Error('query.identityKey must be a string if provided');
|
|
69
|
-
}
|
|
70
|
-
// Build the query object dynamically to omit any undefined values.
|
|
71
|
-
const query = {};
|
|
72
|
-
if (domain !== undefined)
|
|
73
|
-
query.domain = domain;
|
|
74
|
-
if (service !== undefined)
|
|
75
|
-
query.service = service;
|
|
76
|
-
if (identityKey !== undefined)
|
|
77
|
-
query.identityKey = identityKey;
|
|
78
|
-
const result = await this.storage.findRecord(query);
|
|
79
|
-
console.log('LOOKUP RESULT', result);
|
|
80
|
-
return result;
|
|
115
|
+
throw new Error('Invalid query format. Query must be "findAll" string or an object with valid parameters.');
|
|
81
116
|
}
|
|
82
117
|
async getDocumentation() {
|
|
83
118
|
return SLAPLookup_docs_js_1.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SLAPLookupService.js","sourceRoot":"","sources":["../../../../src/SLAP/SLAPLookupService.ts"],"names":[],"mappings":";;;;;;AACA,kCAA0C;AAG1C,8EAAiD;AAEjD;;;;;;GAMG;AACH,MAAa,iBAAiB;IAG5B,
|
|
1
|
+
{"version":3,"file":"SLAPLookupService.js","sourceRoot":"","sources":["../../../../src/SLAP/SLAPLookupService.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,7 @@ class SLAPStorage {
|
|
|
51
51
|
* @returns {Promise<UTXOReference[]>} returns matching UTXO references
|
|
52
52
|
*/
|
|
53
53
|
async findRecord(query) {
|
|
54
|
+
var _a;
|
|
54
55
|
const mongoQuery = {};
|
|
55
56
|
// Add domain to the query if provided
|
|
56
57
|
if (typeof query.domain === 'string') {
|
|
@@ -64,9 +65,19 @@ class SLAPStorage {
|
|
|
64
65
|
if (typeof query.identityKey === 'string') {
|
|
65
66
|
mongoQuery.identityKey = query.identityKey;
|
|
66
67
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
.
|
|
68
|
+
// Build the query with pagination
|
|
69
|
+
let cursor = this.slapRecords
|
|
70
|
+
.find(mongoQuery)
|
|
71
|
+
.project({ txid: 1, outputIndex: 1, createdAt: 1 });
|
|
72
|
+
cursor.sort({ createdAt: (_a = query.sortOrder) !== null && _a !== void 0 ? _a : -1 });
|
|
73
|
+
// Apply pagination if provided
|
|
74
|
+
if (typeof query.skip === 'number' && query.skip > 0) {
|
|
75
|
+
cursor = cursor.skip(query.skip);
|
|
76
|
+
}
|
|
77
|
+
if (typeof query.limit === 'number' && query.limit > 0) {
|
|
78
|
+
cursor = cursor.limit(query.limit);
|
|
79
|
+
}
|
|
80
|
+
return await cursor
|
|
70
81
|
.toArray()
|
|
71
82
|
.then(results => results.map(record => ({
|
|
72
83
|
txid: record.txid,
|
|
@@ -75,11 +86,23 @@ class SLAPStorage {
|
|
|
75
86
|
}
|
|
76
87
|
/**
|
|
77
88
|
* Returns all results tracked by the overlay
|
|
89
|
+
* @param {number} limit Optional limit for pagination
|
|
90
|
+
* @param {number} skip Optional skip for pagination
|
|
91
|
+
* @param {string} sortOrder Optional sort order
|
|
78
92
|
* @returns {Promise<UTXOReference[]>} returns matching UTXO references
|
|
79
93
|
*/
|
|
80
|
-
async findAll() {
|
|
81
|
-
|
|
82
|
-
.project({ txid: 1, outputIndex: 1 })
|
|
94
|
+
async findAll(limit, skip, sortOrder) {
|
|
95
|
+
let cursor = this.slapRecords.find({})
|
|
96
|
+
.project({ txid: 1, outputIndex: 1, createdAt: 1 });
|
|
97
|
+
// Apply pagination if provided
|
|
98
|
+
cursor.sort({ createdAt: sortOrder !== null && sortOrder !== void 0 ? sortOrder : -1 });
|
|
99
|
+
if (typeof skip === 'number' && skip > 0) {
|
|
100
|
+
cursor = cursor.skip(skip);
|
|
101
|
+
}
|
|
102
|
+
if (typeof limit === 'number' && limit > 0) {
|
|
103
|
+
cursor = cursor.limit(limit);
|
|
104
|
+
}
|
|
105
|
+
return await cursor
|
|
83
106
|
.toArray()
|
|
84
107
|
.then(results => results.map(slapRecords => ({
|
|
85
108
|
txid: slapRecords.txid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SLAPStorage.js","sourceRoot":"","sources":["../../../../src/SLAP/SLAPStorage.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,WAAW;IAGtB;;;OAGG;IACH,
|
|
1
|
+
{"version":3,"file":"SLAPStorage.js","sourceRoot":"","sources":["../../../../src/SLAP/SLAPStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,9 +24,9 @@ const isAdvertisableURI = (uri) => {
|
|
|
24
24
|
// Helper function: validate a URL by substituting its scheme if needed.
|
|
25
25
|
const validateCustomHttpsURI = (uri, prefix) => {
|
|
26
26
|
try {
|
|
27
|
-
const modifiedURI = uri.replace(prefix,
|
|
27
|
+
const modifiedURI = uri.replace(prefix, 'https://');
|
|
28
28
|
const parsed = new URL(modifiedURI);
|
|
29
|
-
if (parsed.hostname.toLowerCase() ===
|
|
29
|
+
if (parsed.hostname.toLowerCase() === 'localhost')
|
|
30
30
|
return false;
|
|
31
31
|
if (parsed.pathname !== '/')
|
|
32
32
|
return false;
|
|
@@ -37,32 +37,32 @@ const isAdvertisableURI = (uri) => {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
// HTTPS-based schemes – disallow localhost.
|
|
40
|
-
if (uri.startsWith(
|
|
41
|
-
return validateCustomHttpsURI(uri,
|
|
40
|
+
if (uri.startsWith('https://')) {
|
|
41
|
+
return validateCustomHttpsURI(uri, 'https://');
|
|
42
42
|
}
|
|
43
43
|
// Plain auth over HTTPS, but no payment can be collected
|
|
44
|
-
else if (uri.startsWith(
|
|
45
|
-
return validateCustomHttpsURI(uri,
|
|
44
|
+
else if (uri.startsWith('https+bsvauth://')) {
|
|
45
|
+
return validateCustomHttpsURI(uri, 'https+bsvauth://');
|
|
46
46
|
}
|
|
47
47
|
// Auth and payment over HTTPS
|
|
48
|
-
else if (uri.startsWith(
|
|
49
|
-
return validateCustomHttpsURI(uri,
|
|
48
|
+
else if (uri.startsWith('https+bsvauth+smf://')) {
|
|
49
|
+
return validateCustomHttpsURI(uri, 'https+bsvauth+smf://');
|
|
50
50
|
}
|
|
51
51
|
// A protocol allowing you to also supply sCrypt off-chain values to the topical admissibility checking context
|
|
52
|
-
else if (uri.startsWith(
|
|
53
|
-
return validateCustomHttpsURI(uri,
|
|
52
|
+
else if (uri.startsWith('https+bsvauth+scrypt-offchain://')) {
|
|
53
|
+
return validateCustomHttpsURI(uri, 'https+bsvauth+scrypt-offchain://');
|
|
54
54
|
}
|
|
55
55
|
// A protocol allowing overlays that deal with real-time transactions (non-finals)
|
|
56
|
-
else if (uri.startsWith(
|
|
57
|
-
return validateCustomHttpsURI(uri,
|
|
56
|
+
else if (uri.startsWith('https+rtt://')) {
|
|
57
|
+
return validateCustomHttpsURI(uri, 'https+rtt://');
|
|
58
58
|
}
|
|
59
59
|
// WSS for real-time event-listening lookups.
|
|
60
|
-
else if (uri.startsWith(
|
|
60
|
+
else if (uri.startsWith('wss://')) {
|
|
61
61
|
try {
|
|
62
62
|
const parsed = new URL(uri);
|
|
63
|
-
if (parsed.protocol !==
|
|
63
|
+
if (parsed.protocol !== 'wss:')
|
|
64
64
|
return false;
|
|
65
|
-
if (parsed.hostname.toLowerCase() ===
|
|
65
|
+
if (parsed.hostname.toLowerCase() === 'localhost')
|
|
66
66
|
return false;
|
|
67
67
|
return true;
|
|
68
68
|
}
|
|
@@ -71,18 +71,18 @@ const isAdvertisableURI = (uri) => {
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
// JS8 Call–based advertisement.
|
|
74
|
-
else if (uri.startsWith(
|
|
74
|
+
else if (uri.startsWith('js8c+bsvauth+smf:')) {
|
|
75
75
|
// Expect a query string with parameters.
|
|
76
|
-
const queryIndex = uri.indexOf(
|
|
76
|
+
const queryIndex = uri.indexOf('?');
|
|
77
77
|
if (queryIndex === -1)
|
|
78
78
|
return false;
|
|
79
79
|
const queryStr = uri.substring(queryIndex);
|
|
80
80
|
const params = new URLSearchParams(queryStr);
|
|
81
81
|
// Required parameters: lat, long, freq, and radius.
|
|
82
|
-
const latStr = params.get(
|
|
83
|
-
const longStr = params.get(
|
|
84
|
-
const freqStr = params.get(
|
|
85
|
-
const radiusStr = params.get(
|
|
82
|
+
const latStr = params.get('lat');
|
|
83
|
+
const longStr = params.get('long');
|
|
84
|
+
const freqStr = params.get('freq');
|
|
85
|
+
const radiusStr = params.get('radius');
|
|
86
86
|
if (!latStr || !longStr || !freqStr || !radiusStr)
|
|
87
87
|
return false;
|
|
88
88
|
// Validate latitude and longitude ranges.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isAdvertisableURI.js","sourceRoot":"","sources":["../../../../src/utils/isAdvertisableURI.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;GAgBG;AACI,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAW,EAAE;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"isAdvertisableURI.js","sourceRoot":"","sources":["../../../../src/utils/isAdvertisableURI.ts"],"names":[],"mappings":"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"}
|