raggrep 0.7.0 → 0.8.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 +1 -0
- package/dist/cli/main.js +656 -4
- package/dist/cli/main.js.map +10 -8
- package/dist/domain/entities/index.d.ts +2 -0
- package/dist/domain/entities/lexicon.d.ts +99 -0
- package/dist/domain/services/index.d.ts +1 -0
- package/dist/domain/services/lexicon.d.ts +45 -0
- package/dist/domain/services/lexicon.test.d.ts +6 -0
- package/dist/index.js +655 -3
- package/dist/index.js.map +10 -8
- package/dist/infrastructure/storage/literalIndex.d.ts +8 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -133,11 +133,28 @@ var init_config = __esm(() => {
|
|
|
133
133
|
// src/domain/entities/literal.ts
|
|
134
134
|
var init_literal = () => {};
|
|
135
135
|
|
|
136
|
+
// src/domain/entities/lexicon.ts
|
|
137
|
+
var DEFAULT_EXPANSION_OPTIONS, EXPANSION_WEIGHTS;
|
|
138
|
+
var init_lexicon = __esm(() => {
|
|
139
|
+
DEFAULT_EXPANSION_OPTIONS = {
|
|
140
|
+
maxDepth: 1,
|
|
141
|
+
includeWeak: true,
|
|
142
|
+
maxTerms: 20,
|
|
143
|
+
minTermLength: 2
|
|
144
|
+
};
|
|
145
|
+
EXPANSION_WEIGHTS = {
|
|
146
|
+
strong: 0.9,
|
|
147
|
+
moderate: 0.6,
|
|
148
|
+
weak: 0.3
|
|
149
|
+
};
|
|
150
|
+
});
|
|
151
|
+
|
|
136
152
|
// src/domain/entities/index.ts
|
|
137
153
|
var init_entities = __esm(() => {
|
|
138
154
|
init_searchResult();
|
|
139
155
|
init_config();
|
|
140
156
|
init_literal();
|
|
157
|
+
init_lexicon();
|
|
141
158
|
});
|
|
142
159
|
|
|
143
160
|
// src/infrastructure/config/configLoader.ts
|
|
@@ -2856,6 +2873,586 @@ var init_literalScorer = __esm(() => {
|
|
|
2856
2873
|
};
|
|
2857
2874
|
});
|
|
2858
2875
|
|
|
2876
|
+
// src/domain/services/lexicon.ts
|
|
2877
|
+
function buildLookupMap(lexicon) {
|
|
2878
|
+
const map = new Map;
|
|
2879
|
+
for (const entry of lexicon.entries) {
|
|
2880
|
+
map.set(entry.term.toLowerCase(), entry);
|
|
2881
|
+
}
|
|
2882
|
+
return map;
|
|
2883
|
+
}
|
|
2884
|
+
function getSynonyms(term, lexicon = DEFAULT_LEXICON) {
|
|
2885
|
+
const lookupMap = lexicon === DEFAULT_LEXICON ? defaultLookupMap : buildLookupMap(lexicon);
|
|
2886
|
+
const entry = lookupMap.get(term.toLowerCase());
|
|
2887
|
+
return entry ? entry.synonyms : [];
|
|
2888
|
+
}
|
|
2889
|
+
function tokenizeQuery(query) {
|
|
2890
|
+
const stopWords = new Set([
|
|
2891
|
+
"the",
|
|
2892
|
+
"a",
|
|
2893
|
+
"an",
|
|
2894
|
+
"is",
|
|
2895
|
+
"are",
|
|
2896
|
+
"was",
|
|
2897
|
+
"were",
|
|
2898
|
+
"be",
|
|
2899
|
+
"been",
|
|
2900
|
+
"being",
|
|
2901
|
+
"have",
|
|
2902
|
+
"has",
|
|
2903
|
+
"had",
|
|
2904
|
+
"do",
|
|
2905
|
+
"does",
|
|
2906
|
+
"did",
|
|
2907
|
+
"will",
|
|
2908
|
+
"would",
|
|
2909
|
+
"could",
|
|
2910
|
+
"should",
|
|
2911
|
+
"may",
|
|
2912
|
+
"might",
|
|
2913
|
+
"must",
|
|
2914
|
+
"shall",
|
|
2915
|
+
"can",
|
|
2916
|
+
"need",
|
|
2917
|
+
"dare",
|
|
2918
|
+
"ought",
|
|
2919
|
+
"used",
|
|
2920
|
+
"to",
|
|
2921
|
+
"of",
|
|
2922
|
+
"in",
|
|
2923
|
+
"for",
|
|
2924
|
+
"on",
|
|
2925
|
+
"with",
|
|
2926
|
+
"at",
|
|
2927
|
+
"by",
|
|
2928
|
+
"from",
|
|
2929
|
+
"as",
|
|
2930
|
+
"into",
|
|
2931
|
+
"through",
|
|
2932
|
+
"during",
|
|
2933
|
+
"before",
|
|
2934
|
+
"after",
|
|
2935
|
+
"above",
|
|
2936
|
+
"below",
|
|
2937
|
+
"between",
|
|
2938
|
+
"under",
|
|
2939
|
+
"again",
|
|
2940
|
+
"further",
|
|
2941
|
+
"then",
|
|
2942
|
+
"once",
|
|
2943
|
+
"here",
|
|
2944
|
+
"there",
|
|
2945
|
+
"when",
|
|
2946
|
+
"where",
|
|
2947
|
+
"why",
|
|
2948
|
+
"how",
|
|
2949
|
+
"all",
|
|
2950
|
+
"each",
|
|
2951
|
+
"few",
|
|
2952
|
+
"more",
|
|
2953
|
+
"most",
|
|
2954
|
+
"other",
|
|
2955
|
+
"some",
|
|
2956
|
+
"such",
|
|
2957
|
+
"no",
|
|
2958
|
+
"nor",
|
|
2959
|
+
"not",
|
|
2960
|
+
"only",
|
|
2961
|
+
"own",
|
|
2962
|
+
"same",
|
|
2963
|
+
"so",
|
|
2964
|
+
"than",
|
|
2965
|
+
"too",
|
|
2966
|
+
"very",
|
|
2967
|
+
"just",
|
|
2968
|
+
"and",
|
|
2969
|
+
"but",
|
|
2970
|
+
"if",
|
|
2971
|
+
"or",
|
|
2972
|
+
"because",
|
|
2973
|
+
"until",
|
|
2974
|
+
"while",
|
|
2975
|
+
"this",
|
|
2976
|
+
"that",
|
|
2977
|
+
"these",
|
|
2978
|
+
"those",
|
|
2979
|
+
"what",
|
|
2980
|
+
"which",
|
|
2981
|
+
"who",
|
|
2982
|
+
"whom",
|
|
2983
|
+
"i",
|
|
2984
|
+
"me",
|
|
2985
|
+
"my",
|
|
2986
|
+
"we",
|
|
2987
|
+
"our",
|
|
2988
|
+
"you",
|
|
2989
|
+
"your",
|
|
2990
|
+
"he",
|
|
2991
|
+
"him",
|
|
2992
|
+
"his",
|
|
2993
|
+
"she",
|
|
2994
|
+
"her",
|
|
2995
|
+
"it",
|
|
2996
|
+
"its",
|
|
2997
|
+
"they",
|
|
2998
|
+
"them",
|
|
2999
|
+
"their"
|
|
3000
|
+
]);
|
|
3001
|
+
return query.toLowerCase().split(/\s+/).filter((term) => term.length > 0 && !stopWords.has(term));
|
|
3002
|
+
}
|
|
3003
|
+
function expandQuery(query, lexicon = DEFAULT_LEXICON, options = {}) {
|
|
3004
|
+
const opts = { ...DEFAULT_EXPANSION_OPTIONS, ...options };
|
|
3005
|
+
const originalTerms = tokenizeQuery(query);
|
|
3006
|
+
const expandedTerms = [];
|
|
3007
|
+
const seenTerms = new Set;
|
|
3008
|
+
for (const term of originalTerms) {
|
|
3009
|
+
if (term.length >= opts.minTermLength && !seenTerms.has(term)) {
|
|
3010
|
+
expandedTerms.push({
|
|
3011
|
+
term,
|
|
3012
|
+
weight: 1,
|
|
3013
|
+
source: "original"
|
|
3014
|
+
});
|
|
3015
|
+
seenTerms.add(term);
|
|
3016
|
+
}
|
|
3017
|
+
}
|
|
3018
|
+
if (opts.maxDepth >= 1) {
|
|
3019
|
+
for (const term of originalTerms) {
|
|
3020
|
+
if (term.length < opts.minTermLength)
|
|
3021
|
+
continue;
|
|
3022
|
+
const synonyms = getSynonyms(term, lexicon);
|
|
3023
|
+
for (const syn of synonyms) {
|
|
3024
|
+
if (syn.grade === "weak" && !opts.includeWeak)
|
|
3025
|
+
continue;
|
|
3026
|
+
const synLower = syn.term.toLowerCase();
|
|
3027
|
+
if (seenTerms.has(synLower))
|
|
3028
|
+
continue;
|
|
3029
|
+
if (expandedTerms.length >= opts.maxTerms)
|
|
3030
|
+
break;
|
|
3031
|
+
expandedTerms.push({
|
|
3032
|
+
term: syn.term,
|
|
3033
|
+
weight: EXPANSION_WEIGHTS[syn.grade],
|
|
3034
|
+
source: syn.grade,
|
|
3035
|
+
expandedFrom: term
|
|
3036
|
+
});
|
|
3037
|
+
seenTerms.add(synLower);
|
|
3038
|
+
}
|
|
3039
|
+
if (expandedTerms.length >= opts.maxTerms)
|
|
3040
|
+
break;
|
|
3041
|
+
}
|
|
3042
|
+
}
|
|
3043
|
+
const originalPart = originalTerms.join(" ");
|
|
3044
|
+
const synonymPart = expandedTerms.filter((t) => t.source !== "original").map((t) => t.term).join(" ");
|
|
3045
|
+
const expandedQueryString = synonymPart ? `${originalPart} ${synonymPart}` : originalPart;
|
|
3046
|
+
return {
|
|
3047
|
+
originalQuery: query,
|
|
3048
|
+
originalTerms,
|
|
3049
|
+
expandedTerms,
|
|
3050
|
+
expandedQueryString,
|
|
3051
|
+
wasExpanded: expandedTerms.some((t) => t.source !== "original")
|
|
3052
|
+
};
|
|
3053
|
+
}
|
|
3054
|
+
var DEFAULT_LEXICON, defaultLookupMap;
|
|
3055
|
+
var init_lexicon2 = __esm(() => {
|
|
3056
|
+
init_lexicon();
|
|
3057
|
+
DEFAULT_LEXICON = {
|
|
3058
|
+
version: "1.0.0",
|
|
3059
|
+
entries: [
|
|
3060
|
+
{
|
|
3061
|
+
term: "function",
|
|
3062
|
+
synonyms: [
|
|
3063
|
+
{ term: "method", grade: "strong" },
|
|
3064
|
+
{ term: "func", grade: "strong" },
|
|
3065
|
+
{ term: "handler", grade: "moderate" },
|
|
3066
|
+
{ term: "callback", grade: "moderate" },
|
|
3067
|
+
{ term: "procedure", grade: "weak" },
|
|
3068
|
+
{ term: "routine", grade: "weak" }
|
|
3069
|
+
]
|
|
3070
|
+
},
|
|
3071
|
+
{
|
|
3072
|
+
term: "method",
|
|
3073
|
+
synonyms: [
|
|
3074
|
+
{ term: "function", grade: "strong" },
|
|
3075
|
+
{ term: "func", grade: "strong" },
|
|
3076
|
+
{ term: "handler", grade: "moderate" }
|
|
3077
|
+
]
|
|
3078
|
+
},
|
|
3079
|
+
{
|
|
3080
|
+
term: "class",
|
|
3081
|
+
synonyms: [
|
|
3082
|
+
{ term: "type", grade: "moderate" },
|
|
3083
|
+
{ term: "interface", grade: "moderate" },
|
|
3084
|
+
{ term: "struct", grade: "moderate" },
|
|
3085
|
+
{ term: "model", grade: "weak" },
|
|
3086
|
+
{ term: "entity", grade: "weak" }
|
|
3087
|
+
]
|
|
3088
|
+
},
|
|
3089
|
+
{
|
|
3090
|
+
term: "interface",
|
|
3091
|
+
synonyms: [
|
|
3092
|
+
{ term: "type", grade: "strong" },
|
|
3093
|
+
{ term: "contract", grade: "moderate" },
|
|
3094
|
+
{ term: "protocol", grade: "weak" }
|
|
3095
|
+
]
|
|
3096
|
+
},
|
|
3097
|
+
{
|
|
3098
|
+
term: "type",
|
|
3099
|
+
synonyms: [
|
|
3100
|
+
{ term: "interface", grade: "strong" },
|
|
3101
|
+
{ term: "typedef", grade: "strong" },
|
|
3102
|
+
{ term: "schema", grade: "moderate" }
|
|
3103
|
+
]
|
|
3104
|
+
},
|
|
3105
|
+
{
|
|
3106
|
+
term: "variable",
|
|
3107
|
+
synonyms: [
|
|
3108
|
+
{ term: "var", grade: "strong" },
|
|
3109
|
+
{ term: "const", grade: "strong" },
|
|
3110
|
+
{ term: "constant", grade: "strong" },
|
|
3111
|
+
{ term: "property", grade: "moderate" },
|
|
3112
|
+
{ term: "field", grade: "moderate" }
|
|
3113
|
+
]
|
|
3114
|
+
},
|
|
3115
|
+
{
|
|
3116
|
+
term: "constant",
|
|
3117
|
+
synonyms: [
|
|
3118
|
+
{ term: "const", grade: "strong" },
|
|
3119
|
+
{ term: "variable", grade: "moderate" },
|
|
3120
|
+
{ term: "config", grade: "weak" }
|
|
3121
|
+
]
|
|
3122
|
+
},
|
|
3123
|
+
{
|
|
3124
|
+
term: "auth",
|
|
3125
|
+
synonyms: [
|
|
3126
|
+
{ term: "authentication", grade: "strong" },
|
|
3127
|
+
{ term: "authorization", grade: "strong" },
|
|
3128
|
+
{ term: "login", grade: "moderate" },
|
|
3129
|
+
{ term: "signin", grade: "moderate" },
|
|
3130
|
+
{ term: "session", grade: "weak" },
|
|
3131
|
+
{ term: "security", grade: "weak" }
|
|
3132
|
+
]
|
|
3133
|
+
},
|
|
3134
|
+
{
|
|
3135
|
+
term: "authentication",
|
|
3136
|
+
synonyms: [
|
|
3137
|
+
{ term: "auth", grade: "strong" },
|
|
3138
|
+
{ term: "login", grade: "moderate" },
|
|
3139
|
+
{ term: "signin", grade: "moderate" },
|
|
3140
|
+
{ term: "identity", grade: "weak" }
|
|
3141
|
+
]
|
|
3142
|
+
},
|
|
3143
|
+
{
|
|
3144
|
+
term: "authorization",
|
|
3145
|
+
synonyms: [
|
|
3146
|
+
{ term: "auth", grade: "strong" },
|
|
3147
|
+
{ term: "permission", grade: "moderate" },
|
|
3148
|
+
{ term: "access", grade: "moderate" },
|
|
3149
|
+
{ term: "role", grade: "weak" }
|
|
3150
|
+
]
|
|
3151
|
+
},
|
|
3152
|
+
{
|
|
3153
|
+
term: "login",
|
|
3154
|
+
synonyms: [
|
|
3155
|
+
{ term: "signin", grade: "strong" },
|
|
3156
|
+
{ term: "auth", grade: "moderate" },
|
|
3157
|
+
{ term: "authenticate", grade: "moderate" }
|
|
3158
|
+
]
|
|
3159
|
+
},
|
|
3160
|
+
{
|
|
3161
|
+
term: "logout",
|
|
3162
|
+
synonyms: [
|
|
3163
|
+
{ term: "signout", grade: "strong" },
|
|
3164
|
+
{ term: "logoff", grade: "strong" }
|
|
3165
|
+
]
|
|
3166
|
+
},
|
|
3167
|
+
{
|
|
3168
|
+
term: "password",
|
|
3169
|
+
synonyms: [
|
|
3170
|
+
{ term: "pwd", grade: "strong" },
|
|
3171
|
+
{ term: "pass", grade: "strong" },
|
|
3172
|
+
{ term: "credential", grade: "moderate" },
|
|
3173
|
+
{ term: "secret", grade: "weak" }
|
|
3174
|
+
]
|
|
3175
|
+
},
|
|
3176
|
+
{
|
|
3177
|
+
term: "token",
|
|
3178
|
+
synonyms: [
|
|
3179
|
+
{ term: "jwt", grade: "strong" },
|
|
3180
|
+
{ term: "bearer", grade: "moderate" },
|
|
3181
|
+
{ term: "credential", grade: "weak" }
|
|
3182
|
+
]
|
|
3183
|
+
},
|
|
3184
|
+
{
|
|
3185
|
+
term: "database",
|
|
3186
|
+
synonyms: [
|
|
3187
|
+
{ term: "db", grade: "strong" },
|
|
3188
|
+
{ term: "datastore", grade: "strong" },
|
|
3189
|
+
{ term: "storage", grade: "moderate" },
|
|
3190
|
+
{ term: "repository", grade: "weak" }
|
|
3191
|
+
]
|
|
3192
|
+
},
|
|
3193
|
+
{
|
|
3194
|
+
term: "query",
|
|
3195
|
+
synonyms: [
|
|
3196
|
+
{ term: "select", grade: "moderate" },
|
|
3197
|
+
{ term: "find", grade: "moderate" },
|
|
3198
|
+
{ term: "fetch", grade: "moderate" },
|
|
3199
|
+
{ term: "search", grade: "weak" }
|
|
3200
|
+
]
|
|
3201
|
+
},
|
|
3202
|
+
{
|
|
3203
|
+
term: "insert",
|
|
3204
|
+
synonyms: [
|
|
3205
|
+
{ term: "create", grade: "strong" },
|
|
3206
|
+
{ term: "add", grade: "strong" },
|
|
3207
|
+
{ term: "save", grade: "moderate" },
|
|
3208
|
+
{ term: "store", grade: "moderate" }
|
|
3209
|
+
]
|
|
3210
|
+
},
|
|
3211
|
+
{
|
|
3212
|
+
term: "update",
|
|
3213
|
+
synonyms: [
|
|
3214
|
+
{ term: "modify", grade: "strong" },
|
|
3215
|
+
{ term: "edit", grade: "strong" },
|
|
3216
|
+
{ term: "patch", grade: "moderate" },
|
|
3217
|
+
{ term: "change", grade: "moderate" }
|
|
3218
|
+
]
|
|
3219
|
+
},
|
|
3220
|
+
{
|
|
3221
|
+
term: "delete",
|
|
3222
|
+
synonyms: [
|
|
3223
|
+
{ term: "remove", grade: "strong" },
|
|
3224
|
+
{ term: "destroy", grade: "strong" },
|
|
3225
|
+
{ term: "drop", grade: "moderate" },
|
|
3226
|
+
{ term: "erase", grade: "weak" }
|
|
3227
|
+
]
|
|
3228
|
+
},
|
|
3229
|
+
{
|
|
3230
|
+
term: "cache",
|
|
3231
|
+
synonyms: [
|
|
3232
|
+
{ term: "redis", grade: "moderate" },
|
|
3233
|
+
{ term: "memcache", grade: "moderate" },
|
|
3234
|
+
{ term: "store", grade: "weak" },
|
|
3235
|
+
{ term: "buffer", grade: "weak" }
|
|
3236
|
+
]
|
|
3237
|
+
},
|
|
3238
|
+
{
|
|
3239
|
+
term: "api",
|
|
3240
|
+
synonyms: [
|
|
3241
|
+
{ term: "endpoint", grade: "strong" },
|
|
3242
|
+
{ term: "route", grade: "moderate" },
|
|
3243
|
+
{ term: "rest", grade: "moderate" },
|
|
3244
|
+
{ term: "service", grade: "weak" }
|
|
3245
|
+
]
|
|
3246
|
+
},
|
|
3247
|
+
{
|
|
3248
|
+
term: "endpoint",
|
|
3249
|
+
synonyms: [
|
|
3250
|
+
{ term: "api", grade: "strong" },
|
|
3251
|
+
{ term: "route", grade: "strong" },
|
|
3252
|
+
{ term: "path", grade: "moderate" }
|
|
3253
|
+
]
|
|
3254
|
+
},
|
|
3255
|
+
{
|
|
3256
|
+
term: "request",
|
|
3257
|
+
synonyms: [
|
|
3258
|
+
{ term: "req", grade: "strong" },
|
|
3259
|
+
{ term: "call", grade: "moderate" },
|
|
3260
|
+
{ term: "fetch", grade: "moderate" }
|
|
3261
|
+
]
|
|
3262
|
+
},
|
|
3263
|
+
{
|
|
3264
|
+
term: "response",
|
|
3265
|
+
synonyms: [
|
|
3266
|
+
{ term: "res", grade: "strong" },
|
|
3267
|
+
{ term: "reply", grade: "moderate" },
|
|
3268
|
+
{ term: "result", grade: "weak" }
|
|
3269
|
+
]
|
|
3270
|
+
},
|
|
3271
|
+
{
|
|
3272
|
+
term: "middleware",
|
|
3273
|
+
synonyms: [
|
|
3274
|
+
{ term: "interceptor", grade: "moderate" },
|
|
3275
|
+
{ term: "filter", grade: "moderate" },
|
|
3276
|
+
{ term: "handler", grade: "weak" }
|
|
3277
|
+
]
|
|
3278
|
+
},
|
|
3279
|
+
{
|
|
3280
|
+
term: "error",
|
|
3281
|
+
synonyms: [
|
|
3282
|
+
{ term: "exception", grade: "strong" },
|
|
3283
|
+
{ term: "err", grade: "strong" },
|
|
3284
|
+
{ term: "failure", grade: "moderate" },
|
|
3285
|
+
{ term: "fault", grade: "weak" }
|
|
3286
|
+
]
|
|
3287
|
+
},
|
|
3288
|
+
{
|
|
3289
|
+
term: "exception",
|
|
3290
|
+
synonyms: [
|
|
3291
|
+
{ term: "error", grade: "strong" },
|
|
3292
|
+
{ term: "throw", grade: "moderate" },
|
|
3293
|
+
{ term: "catch", grade: "moderate" }
|
|
3294
|
+
]
|
|
3295
|
+
},
|
|
3296
|
+
{
|
|
3297
|
+
term: "validate",
|
|
3298
|
+
synonyms: [
|
|
3299
|
+
{ term: "verify", grade: "strong" },
|
|
3300
|
+
{ term: "check", grade: "strong" },
|
|
3301
|
+
{ term: "assert", grade: "moderate" },
|
|
3302
|
+
{ term: "ensure", grade: "moderate" }
|
|
3303
|
+
]
|
|
3304
|
+
},
|
|
3305
|
+
{
|
|
3306
|
+
term: "config",
|
|
3307
|
+
synonyms: [
|
|
3308
|
+
{ term: "configuration", grade: "strong" },
|
|
3309
|
+
{ term: "settings", grade: "strong" },
|
|
3310
|
+
{ term: "options", grade: "moderate" },
|
|
3311
|
+
{ term: "env", grade: "weak" },
|
|
3312
|
+
{ term: "environment", grade: "weak" }
|
|
3313
|
+
]
|
|
3314
|
+
},
|
|
3315
|
+
{
|
|
3316
|
+
term: "environment",
|
|
3317
|
+
synonyms: [
|
|
3318
|
+
{ term: "env", grade: "strong" },
|
|
3319
|
+
{ term: "config", grade: "moderate" },
|
|
3320
|
+
{ term: "settings", grade: "weak" }
|
|
3321
|
+
]
|
|
3322
|
+
},
|
|
3323
|
+
{
|
|
3324
|
+
term: "test",
|
|
3325
|
+
synonyms: [
|
|
3326
|
+
{ term: "spec", grade: "strong" },
|
|
3327
|
+
{ term: "unittest", grade: "strong" },
|
|
3328
|
+
{ term: "check", grade: "moderate" },
|
|
3329
|
+
{ term: "verify", grade: "weak" }
|
|
3330
|
+
]
|
|
3331
|
+
},
|
|
3332
|
+
{
|
|
3333
|
+
term: "mock",
|
|
3334
|
+
synonyms: [
|
|
3335
|
+
{ term: "stub", grade: "strong" },
|
|
3336
|
+
{ term: "fake", grade: "strong" },
|
|
3337
|
+
{ term: "spy", grade: "moderate" },
|
|
3338
|
+
{ term: "double", grade: "weak" }
|
|
3339
|
+
]
|
|
3340
|
+
},
|
|
3341
|
+
{
|
|
3342
|
+
term: "async",
|
|
3343
|
+
synonyms: [
|
|
3344
|
+
{ term: "asynchronous", grade: "strong" },
|
|
3345
|
+
{ term: "await", grade: "moderate" },
|
|
3346
|
+
{ term: "promise", grade: "moderate" }
|
|
3347
|
+
]
|
|
3348
|
+
},
|
|
3349
|
+
{
|
|
3350
|
+
term: "callback",
|
|
3351
|
+
synonyms: [
|
|
3352
|
+
{ term: "handler", grade: "strong" },
|
|
3353
|
+
{ term: "listener", grade: "moderate" },
|
|
3354
|
+
{ term: "hook", grade: "moderate" }
|
|
3355
|
+
]
|
|
3356
|
+
},
|
|
3357
|
+
{
|
|
3358
|
+
term: "event",
|
|
3359
|
+
synonyms: [
|
|
3360
|
+
{ term: "emit", grade: "moderate" },
|
|
3361
|
+
{ term: "trigger", grade: "moderate" },
|
|
3362
|
+
{ term: "signal", grade: "weak" },
|
|
3363
|
+
{ term: "message", grade: "weak" }
|
|
3364
|
+
]
|
|
3365
|
+
},
|
|
3366
|
+
{
|
|
3367
|
+
term: "util",
|
|
3368
|
+
synonyms: [
|
|
3369
|
+
{ term: "utility", grade: "strong" },
|
|
3370
|
+
{ term: "utils", grade: "strong" },
|
|
3371
|
+
{ term: "helper", grade: "strong" },
|
|
3372
|
+
{ term: "common", grade: "weak" }
|
|
3373
|
+
]
|
|
3374
|
+
},
|
|
3375
|
+
{
|
|
3376
|
+
term: "helper",
|
|
3377
|
+
synonyms: [
|
|
3378
|
+
{ term: "util", grade: "strong" },
|
|
3379
|
+
{ term: "utility", grade: "strong" },
|
|
3380
|
+
{ term: "support", grade: "weak" }
|
|
3381
|
+
]
|
|
3382
|
+
},
|
|
3383
|
+
{
|
|
3384
|
+
term: "parse",
|
|
3385
|
+
synonyms: [
|
|
3386
|
+
{ term: "decode", grade: "moderate" },
|
|
3387
|
+
{ term: "deserialize", grade: "moderate" },
|
|
3388
|
+
{ term: "extract", grade: "weak" }
|
|
3389
|
+
]
|
|
3390
|
+
},
|
|
3391
|
+
{
|
|
3392
|
+
term: "serialize",
|
|
3393
|
+
synonyms: [
|
|
3394
|
+
{ term: "encode", grade: "moderate" },
|
|
3395
|
+
{ term: "stringify", grade: "moderate" },
|
|
3396
|
+
{ term: "convert", grade: "weak" }
|
|
3397
|
+
]
|
|
3398
|
+
},
|
|
3399
|
+
{
|
|
3400
|
+
term: "get",
|
|
3401
|
+
synonyms: [
|
|
3402
|
+
{ term: "fetch", grade: "strong" },
|
|
3403
|
+
{ term: "retrieve", grade: "strong" },
|
|
3404
|
+
{ term: "find", grade: "moderate" },
|
|
3405
|
+
{ term: "load", grade: "moderate" }
|
|
3406
|
+
]
|
|
3407
|
+
},
|
|
3408
|
+
{
|
|
3409
|
+
term: "set",
|
|
3410
|
+
synonyms: [
|
|
3411
|
+
{ term: "assign", grade: "strong" },
|
|
3412
|
+
{ term: "store", grade: "moderate" },
|
|
3413
|
+
{ term: "save", grade: "moderate" }
|
|
3414
|
+
]
|
|
3415
|
+
},
|
|
3416
|
+
{
|
|
3417
|
+
term: "find",
|
|
3418
|
+
synonyms: [
|
|
3419
|
+
{ term: "search", grade: "strong" },
|
|
3420
|
+
{ term: "locate", grade: "strong" },
|
|
3421
|
+
{ term: "lookup", grade: "moderate" },
|
|
3422
|
+
{ term: "get", grade: "moderate" }
|
|
3423
|
+
]
|
|
3424
|
+
},
|
|
3425
|
+
{
|
|
3426
|
+
term: "create",
|
|
3427
|
+
synonyms: [
|
|
3428
|
+
{ term: "make", grade: "strong" },
|
|
3429
|
+
{ term: "build", grade: "strong" },
|
|
3430
|
+
{ term: "new", grade: "moderate" },
|
|
3431
|
+
{ term: "generate", grade: "moderate" }
|
|
3432
|
+
]
|
|
3433
|
+
},
|
|
3434
|
+
{
|
|
3435
|
+
term: "send",
|
|
3436
|
+
synonyms: [
|
|
3437
|
+
{ term: "emit", grade: "moderate" },
|
|
3438
|
+
{ term: "dispatch", grade: "moderate" },
|
|
3439
|
+
{ term: "post", grade: "moderate" },
|
|
3440
|
+
{ term: "transmit", grade: "weak" }
|
|
3441
|
+
]
|
|
3442
|
+
},
|
|
3443
|
+
{
|
|
3444
|
+
term: "receive",
|
|
3445
|
+
synonyms: [
|
|
3446
|
+
{ term: "accept", grade: "moderate" },
|
|
3447
|
+
{ term: "handle", grade: "moderate" },
|
|
3448
|
+
{ term: "process", grade: "weak" }
|
|
3449
|
+
]
|
|
3450
|
+
}
|
|
3451
|
+
]
|
|
3452
|
+
};
|
|
3453
|
+
defaultLookupMap = buildLookupMap(DEFAULT_LEXICON);
|
|
3454
|
+
});
|
|
3455
|
+
|
|
2859
3456
|
// src/domain/services/index.ts
|
|
2860
3457
|
var init_services = __esm(() => {
|
|
2861
3458
|
init_keywords();
|
|
@@ -2863,6 +3460,7 @@ var init_services = __esm(() => {
|
|
|
2863
3460
|
init_queryLiteralParser();
|
|
2864
3461
|
init_literalExtractor();
|
|
2865
3462
|
init_literalScorer();
|
|
3463
|
+
init_lexicon2();
|
|
2866
3464
|
});
|
|
2867
3465
|
|
|
2868
3466
|
// src/modules/language/typescript/parseCode.ts
|
|
@@ -3183,6 +3781,11 @@ var init_symbolicIndex = __esm(() => {
|
|
|
3183
3781
|
});
|
|
3184
3782
|
|
|
3185
3783
|
// src/infrastructure/storage/literalIndex.ts
|
|
3784
|
+
var exports_literalIndex = {};
|
|
3785
|
+
__export(exports_literalIndex, {
|
|
3786
|
+
getLiteralIndexPath: () => getLiteralIndexPath,
|
|
3787
|
+
LiteralIndex: () => LiteralIndex
|
|
3788
|
+
});
|
|
3186
3789
|
import * as fs4 from "fs/promises";
|
|
3187
3790
|
import * as path9 from "path";
|
|
3188
3791
|
|
|
@@ -3235,6 +3838,22 @@ class LiteralIndex {
|
|
|
3235
3838
|
}
|
|
3236
3839
|
}
|
|
3237
3840
|
}
|
|
3841
|
+
removeFile(filepath) {
|
|
3842
|
+
let removed = 0;
|
|
3843
|
+
for (const [key, entries] of this.entries) {
|
|
3844
|
+
const filtered = entries.filter((e) => e.filepath !== filepath);
|
|
3845
|
+
const removedCount = entries.length - filtered.length;
|
|
3846
|
+
if (removedCount > 0) {
|
|
3847
|
+
removed += removedCount;
|
|
3848
|
+
if (filtered.length === 0) {
|
|
3849
|
+
this.entries.delete(key);
|
|
3850
|
+
} else {
|
|
3851
|
+
this.entries.set(key, filtered);
|
|
3852
|
+
}
|
|
3853
|
+
}
|
|
3854
|
+
}
|
|
3855
|
+
return removed;
|
|
3856
|
+
}
|
|
3238
3857
|
findMatches(queryLiterals) {
|
|
3239
3858
|
const matches = [];
|
|
3240
3859
|
for (const queryLiteral of queryLiterals) {
|
|
@@ -3327,6 +3946,9 @@ function shouldReplaceMatchType(existing, incoming) {
|
|
|
3327
3946
|
};
|
|
3328
3947
|
return priority[incoming] > priority[existing];
|
|
3329
3948
|
}
|
|
3949
|
+
function getLiteralIndexPath(rootDir, moduleId, indexDir = ".raggrep") {
|
|
3950
|
+
return path9.join(rootDir, indexDir, "index", moduleId, "literals");
|
|
3951
|
+
}
|
|
3330
3952
|
var init_literalIndex = () => {};
|
|
3331
3953
|
|
|
3332
3954
|
// src/infrastructure/storage/index.ts
|
|
@@ -3489,6 +4111,16 @@ class TypeScriptModule {
|
|
|
3489
4111
|
await this.symbolicIndex.save();
|
|
3490
4112
|
this.literalIndex = new LiteralIndex(indexDir, this.id);
|
|
3491
4113
|
await this.literalIndex.initialize();
|
|
4114
|
+
const indexedFilepaths = new Set;
|
|
4115
|
+
for (const filepath of this.pendingSummaries.keys()) {
|
|
4116
|
+
indexedFilepaths.add(filepath);
|
|
4117
|
+
}
|
|
4118
|
+
for (const { filepath } of this.pendingLiterals.values()) {
|
|
4119
|
+
indexedFilepaths.add(filepath);
|
|
4120
|
+
}
|
|
4121
|
+
for (const filepath of indexedFilepaths) {
|
|
4122
|
+
this.literalIndex.removeFile(filepath);
|
|
4123
|
+
}
|
|
3492
4124
|
for (const [chunkId, { filepath, literals }] of this.pendingLiterals) {
|
|
3493
4125
|
this.literalIndex.addLiterals(chunkId, filepath, literals);
|
|
3494
4126
|
}
|
|
@@ -3531,7 +4163,12 @@ class TypeScriptModule {
|
|
|
3531
4163
|
});
|
|
3532
4164
|
}
|
|
3533
4165
|
const semanticQuery = remainingQuery.trim() || query;
|
|
3534
|
-
const
|
|
4166
|
+
const expandedQuery = expandQuery(semanticQuery, undefined, {
|
|
4167
|
+
maxDepth: 1,
|
|
4168
|
+
includeWeak: false,
|
|
4169
|
+
maxTerms: 10
|
|
4170
|
+
});
|
|
4171
|
+
const queryEmbedding = await getEmbedding(expandedQuery.expandedQueryString);
|
|
3535
4172
|
const bm25Index = new BM25Index;
|
|
3536
4173
|
const allChunksData = [];
|
|
3537
4174
|
for (const filepath of filesToSearch) {
|
|
@@ -3611,7 +4248,8 @@ class TypeScriptModule {
|
|
|
3611
4248
|
literalMultiplier: literalContribution.multiplier,
|
|
3612
4249
|
literalMatchType: literalContribution.bestMatchType,
|
|
3613
4250
|
literalConfidence: literalContribution.bestConfidence,
|
|
3614
|
-
literalMatchCount: literalContribution.matchCount
|
|
4251
|
+
literalMatchCount: literalContribution.matchCount,
|
|
4252
|
+
synonymsUsed: expandedQuery.wasExpanded ? expandedQuery.expandedTerms.filter((t) => t.source !== "original").map((t) => t.term) : undefined
|
|
3615
4253
|
}
|
|
3616
4254
|
});
|
|
3617
4255
|
}
|
|
@@ -4846,6 +5484,7 @@ async function ensureIndexFresh(rootDir, options = {}) {
|
|
|
4846
5484
|
filesToRemove.push(filepath);
|
|
4847
5485
|
}
|
|
4848
5486
|
}
|
|
5487
|
+
const removedFilepaths = [];
|
|
4849
5488
|
for (const filepath of filesToRemove) {
|
|
4850
5489
|
logger.debug(` Removing stale: ${filepath}`);
|
|
4851
5490
|
const indexFilePath = path15.join(indexPath, filepath.replace(/\.[^.]+$/, ".json"));
|
|
@@ -4857,8 +5496,21 @@ async function ensureIndexFresh(rootDir, options = {}) {
|
|
|
4857
5496
|
await fs7.unlink(symbolicFilePath);
|
|
4858
5497
|
} catch {}
|
|
4859
5498
|
delete manifest.files[filepath];
|
|
5499
|
+
removedFilepaths.push(filepath);
|
|
4860
5500
|
totalRemoved++;
|
|
4861
5501
|
}
|
|
5502
|
+
if (removedFilepaths.length > 0) {
|
|
5503
|
+
try {
|
|
5504
|
+
const { LiteralIndex: LiteralIndex2 } = await Promise.resolve().then(() => (init_literalIndex(), exports_literalIndex));
|
|
5505
|
+
const raggrepDir = getRaggrepDir(rootDir, config);
|
|
5506
|
+
const literalIndex = new LiteralIndex2(raggrepDir, module.id);
|
|
5507
|
+
await literalIndex.initialize();
|
|
5508
|
+
for (const filepath of removedFilepaths) {
|
|
5509
|
+
literalIndex.removeFile(filepath);
|
|
5510
|
+
}
|
|
5511
|
+
await literalIndex.save();
|
|
5512
|
+
} catch {}
|
|
5513
|
+
}
|
|
4862
5514
|
const ctx = {
|
|
4863
5515
|
rootDir,
|
|
4864
5516
|
config,
|
|
@@ -5406,4 +6058,4 @@ export {
|
|
|
5406
6058
|
ConsoleLogger
|
|
5407
6059
|
};
|
|
5408
6060
|
|
|
5409
|
-
//# debugId=
|
|
6061
|
+
//# debugId=59B4DA12592C31BA64756E2164756E21
|