@positronic/cloudflare 0.0.39 → 0.0.40
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/src/api.js +77 -12
- package/dist/types/api.d.ts.map +1 -1
- package/package.json +5 -4
package/dist/src/api.js
CHANGED
|
@@ -227,6 +227,7 @@ import { Hono } from 'hono';
|
|
|
227
227
|
import { v4 as uuidv4 } from 'uuid';
|
|
228
228
|
import { AwsClient } from 'aws4fetch';
|
|
229
229
|
import { parseCronExpression } from 'cron-schedule';
|
|
230
|
+
import Fuse from 'fuse.js';
|
|
230
231
|
import { getManifest, getWebhookManifest } from './brain-runner-do.js';
|
|
231
232
|
import { RESOURCE_TYPES } from '@positronic/core';
|
|
232
233
|
/**
|
|
@@ -700,7 +701,7 @@ app.get('/brains/watch', function(context) {
|
|
|
700
701
|
});
|
|
701
702
|
app.get('/brains', function(context) {
|
|
702
703
|
return _async_to_generator(function() {
|
|
703
|
-
var _context_req_query, manifest, query, brainFilenames, brains, validBrains;
|
|
704
|
+
var _context_req_query, manifest, query, brainFilenames, brains, validBrains, queryLower, exactMatch, fuse, results;
|
|
704
705
|
return _ts_generator(this, function(_state) {
|
|
705
706
|
switch(_state.label){
|
|
706
707
|
case 0:
|
|
@@ -713,7 +714,7 @@ app.get('/brains', function(context) {
|
|
|
713
714
|
}, 500)
|
|
714
715
|
];
|
|
715
716
|
}
|
|
716
|
-
query = (_context_req_query = context.req.query('q')) === null || _context_req_query === void 0 ? void 0 : _context_req_query.
|
|
717
|
+
query = (_context_req_query = context.req.query('q')) === null || _context_req_query === void 0 ? void 0 : _context_req_query.trim();
|
|
717
718
|
brainFilenames = manifest.list();
|
|
718
719
|
return [
|
|
719
720
|
4,
|
|
@@ -755,20 +756,84 @@ app.get('/brains', function(context) {
|
|
|
755
756
|
validBrains = brains.filter(function(brain) {
|
|
756
757
|
return brain !== null;
|
|
757
758
|
});
|
|
758
|
-
// If query
|
|
759
|
-
if (query) {
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
759
|
+
// If no query, return all brains
|
|
760
|
+
if (!query) {
|
|
761
|
+
return [
|
|
762
|
+
2,
|
|
763
|
+
context.json({
|
|
764
|
+
brains: validBrains,
|
|
765
|
+
count: validBrains.length
|
|
766
|
+
})
|
|
767
|
+
];
|
|
768
|
+
}
|
|
769
|
+
// Check for exact match on title or filename first
|
|
770
|
+
queryLower = query.toLowerCase();
|
|
771
|
+
exactMatch = validBrains.find(function(brain) {
|
|
772
|
+
return brain.title.toLowerCase() === queryLower || brain.filename.toLowerCase() === queryLower;
|
|
773
|
+
});
|
|
774
|
+
if (exactMatch) {
|
|
775
|
+
return [
|
|
776
|
+
2,
|
|
777
|
+
context.json({
|
|
778
|
+
brains: [
|
|
779
|
+
exactMatch
|
|
780
|
+
],
|
|
781
|
+
count: 1
|
|
782
|
+
})
|
|
783
|
+
];
|
|
784
|
+
}
|
|
785
|
+
// Use fuse.js for fuzzy matching with weighted keys
|
|
786
|
+
fuse = new Fuse(validBrains, {
|
|
787
|
+
keys: [
|
|
788
|
+
{
|
|
789
|
+
name: 'title',
|
|
790
|
+
weight: 2
|
|
791
|
+
},
|
|
792
|
+
{
|
|
793
|
+
name: 'filename',
|
|
794
|
+
weight: 2
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
name: 'description',
|
|
798
|
+
weight: 0.5
|
|
799
|
+
}
|
|
800
|
+
],
|
|
801
|
+
includeScore: true,
|
|
802
|
+
threshold: 0.4,
|
|
803
|
+
ignoreLocation: true
|
|
804
|
+
});
|
|
805
|
+
results = fuse.search(query);
|
|
806
|
+
// If no results, return empty
|
|
807
|
+
if (results.length === 0) {
|
|
808
|
+
return [
|
|
809
|
+
2,
|
|
810
|
+
context.json({
|
|
811
|
+
brains: [],
|
|
812
|
+
count: 0
|
|
813
|
+
})
|
|
814
|
+
];
|
|
815
|
+
}
|
|
816
|
+
// If top result is significantly better than others (score difference > 0.2),
|
|
817
|
+
// or there's only one result, return just that one
|
|
818
|
+
if (results.length === 1 || results.length > 1 && results[1].score - results[0].score > 0.2) {
|
|
819
|
+
return [
|
|
820
|
+
2,
|
|
821
|
+
context.json({
|
|
822
|
+
brains: [
|
|
823
|
+
results[0].item
|
|
824
|
+
],
|
|
825
|
+
count: 1
|
|
826
|
+
})
|
|
827
|
+
];
|
|
766
828
|
}
|
|
829
|
+
// Return all matching results, sorted by score (best first)
|
|
767
830
|
return [
|
|
768
831
|
2,
|
|
769
832
|
context.json({
|
|
770
|
-
brains:
|
|
771
|
-
|
|
833
|
+
brains: results.map(function(r) {
|
|
834
|
+
return r.item;
|
|
835
|
+
}),
|
|
836
|
+
count: results.length
|
|
772
837
|
})
|
|
773
838
|
];
|
|
774
839
|
}
|
package/dist/types/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAK1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,2BAA2B,CAAC;AAGpE,KAAK,QAAQ,GAAG;IACd,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AA+BF,QAAA,MAAM,GAAG;cAAwB,QAAQ;yCAAK,CAAC;AAi8C/C,eAAe,GAAG,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@positronic/cloudflare",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.40",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -31,13 +31,14 @@
|
|
|
31
31
|
"clean": "rm -rf tsconfig.tsbuildinfo dist"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@positronic/core": "^0.0.
|
|
35
|
-
"@positronic/spec": "^0.0.
|
|
36
|
-
"@positronic/template-new-project": "^0.0.
|
|
34
|
+
"@positronic/core": "^0.0.40",
|
|
35
|
+
"@positronic/spec": "^0.0.40",
|
|
36
|
+
"@positronic/template-new-project": "^0.0.40",
|
|
37
37
|
"aws4fetch": "^1.0.18",
|
|
38
38
|
"caz": "^2.0.0",
|
|
39
39
|
"cron-schedule": "^5.0.4",
|
|
40
40
|
"dotenv": "^16.0.3",
|
|
41
|
+
"fuse.js": "^7.1.0",
|
|
41
42
|
"hono": "^4.2.3",
|
|
42
43
|
"uuid": "^9.0.1"
|
|
43
44
|
},
|