@bridgetek/eveapps-pre82x-core 1.1.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 +138 -0
- package/data/build_matrix.json +226 -0
- package/data/commands.json +10755 -0
- package/data/feature_graph.json +4979 -0
- package/data/graphics.json +169 -0
- package/data/modules.json +331 -0
- package/data/registers.json +5163 -0
- package/data/samples.json +765 -0
- package/dist/context.d.ts +7 -0
- package/dist/context.js +32 -0
- package/dist/context.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/confidence.d.ts +6 -0
- package/dist/lib/confidence.js +18 -0
- package/dist/lib/confidence.js.map +1 -0
- package/dist/lib/eveSymbolAliases.d.ts +10 -0
- package/dist/lib/eveSymbolAliases.js +58 -0
- package/dist/lib/eveSymbolAliases.js.map +1 -0
- package/dist/lib/loadIndex.d.ts +26 -0
- package/dist/lib/loadIndex.js +33 -0
- package/dist/lib/loadIndex.js.map +1 -0
- package/dist/lib/moduleGraphicsLookup.d.ts +18 -0
- package/dist/lib/moduleGraphicsLookup.js +66 -0
- package/dist/lib/moduleGraphicsLookup.js.map +1 -0
- package/dist/lib/normalize.d.ts +3 -0
- package/dist/lib/normalize.js +21 -0
- package/dist/lib/normalize.js.map +1 -0
- package/dist/lib/rank.d.ts +6 -0
- package/dist/lib/rank.js +51 -0
- package/dist/lib/rank.js.map +1 -0
- package/dist/lib/registerVariants.d.ts +13 -0
- package/dist/lib/registerVariants.js +77 -0
- package/dist/lib/registerVariants.js.map +1 -0
- package/dist/lib/workspace.d.ts +4 -0
- package/dist/lib/workspace.js +5 -0
- package/dist/lib/workspace.js.map +1 -0
- package/dist/router/analyzeQuery.d.ts +9 -0
- package/dist/router/analyzeQuery.js +12 -0
- package/dist/router/analyzeQuery.js.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.js +6 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/mergeResults.d.ts +2 -0
- package/dist/router/mergeResults.js +25 -0
- package/dist/router/mergeResults.js.map +1 -0
- package/dist/router/retrieveAnswer.d.ts +3 -0
- package/dist/router/retrieveAnswer.js +51 -0
- package/dist/router/retrieveAnswer.js.map +1 -0
- package/dist/router/routeQuery.d.ts +3 -0
- package/dist/router/routeQuery.js +33 -0
- package/dist/router/routeQuery.js.map +1 -0
- package/dist/router/types.d.ts +13 -0
- package/dist/router/types.js +2 -0
- package/dist/router/types.js.map +1 -0
- package/dist/search/searchCore.d.ts +3 -0
- package/dist/search/searchCore.js +103 -0
- package/dist/search/searchCore.js.map +1 -0
- package/dist/search/searchEveApps.d.ts +2 -0
- package/dist/search/searchEveApps.js +111 -0
- package/dist/search/searchEveApps.js.map +1 -0
- package/dist/search/searchSourceFiles.d.ts +7 -0
- package/dist/search/searchSourceFiles.js +71 -0
- package/dist/search/searchSourceFiles.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +217 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/explainEveSymbol.d.ts +84 -0
- package/dist/tools/explainEveSymbol.js +81 -0
- package/dist/tools/explainEveSymbol.js.map +1 -0
- package/dist/tools/findRelevantSample.d.ts +34 -0
- package/dist/tools/findRelevantSample.js +33 -0
- package/dist/tools/findRelevantSample.js.map +1 -0
- package/dist/tools/generateBuildCommand.d.ts +62 -0
- package/dist/tools/generateBuildCommand.js +103 -0
- package/dist/tools/generateBuildCommand.js.map +1 -0
- package/dist/tools/generateScreenScaffold.d.ts +34 -0
- package/dist/tools/generateScreenScaffold.js +118 -0
- package/dist/tools/generateScreenScaffold.js.map +1 -0
- package/dist/tools/lookupModuleGraphics.d.ts +29 -0
- package/dist/tools/lookupModuleGraphics.js +25 -0
- package/dist/tools/lookupModuleGraphics.js.map +1 -0
- package/dist/tools/readSourceFile.d.ts +15 -0
- package/dist/tools/readSourceFile.js +39 -0
- package/dist/tools/readSourceFile.js.map +1 -0
- package/dist/tools/traceFeatureToCommands.d.ts +38 -0
- package/dist/tools/traceFeatureToCommands.js +90 -0
- package/dist/tools/traceFeatureToCommands.js.map +1 -0
- package/dist/tools/validatePre820Code.d.ts +37 -0
- package/dist/tools/validatePre820Code.js +88 -0
- package/dist/tools/validatePre820Code.js.map +1 -0
- package/dist/types.d.ts +72 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +30 -0
package/dist/context.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
export function createWorkspaceContext(eveappsRootOption) {
|
|
4
|
+
const givenRoot = (typeof eveappsRootOption === "string" && eveappsRootOption.length > 0)
|
|
5
|
+
? eveappsRootOption
|
|
6
|
+
: process.cwd();
|
|
7
|
+
const eveappsRoot = path.resolve(givenRoot);
|
|
8
|
+
const dataRoot = path.join(eveappsRoot, "data");
|
|
9
|
+
function resolveDataPath(file) {
|
|
10
|
+
const candidates = [
|
|
11
|
+
path.join(eveappsRoot, "data", file),
|
|
12
|
+
path.join(eveappsRoot, "dist", "data", file)
|
|
13
|
+
];
|
|
14
|
+
for (const p of candidates) {
|
|
15
|
+
if (fs.existsSync(p))
|
|
16
|
+
return p;
|
|
17
|
+
}
|
|
18
|
+
throw new Error(`Missing data file: ${file}\nChecked:\n${candidates.join("\n")}`);
|
|
19
|
+
}
|
|
20
|
+
function readJsonFile(file) {
|
|
21
|
+
const fullPath = resolveDataPath(file);
|
|
22
|
+
const content = fs.readFileSync(fullPath, "utf-8");
|
|
23
|
+
return JSON.parse(content);
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
eveappsRoot,
|
|
27
|
+
dataRoot,
|
|
28
|
+
resolveDataPath,
|
|
29
|
+
readJsonFile,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAYxB,MAAM,UAAU,sBAAsB,CAAC,iBAA0B;IAE7D,MAAM,SAAS,GAAW,CAAC,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7F,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEhD,SAAS,eAAe,CAAC,IAAY;QACjC,MAAM,UAAU,GAAG;YACf,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;SAC/C,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YACzB,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,KAAK,CACX,sBAAsB,IAAI,eAAe,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnE,CAAC;IACN,CAAC;IAED,SAAS,YAAY,CAAI,IAAY;QACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;IACpC,CAAC;IAED,OAAO;QACH,WAAW;QACX,QAAQ;QACR,eAAe;QACf,YAAY;KACf,CAAC;AACN,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./tools/generateBuildCommand.js";
|
|
2
|
+
export * from "./tools/findRelevantSample.js";
|
|
3
|
+
export * from "./tools/explainEveSymbol.js";
|
|
4
|
+
export * from "./tools/generateScreenScaffold.js";
|
|
5
|
+
export * from "./tools/validatePre820Code.js";
|
|
6
|
+
export * from "./tools/traceFeatureToCommands.js";
|
|
7
|
+
export * from "./tools/readSourceFile.js";
|
|
8
|
+
export * from "./tools/lookupModuleGraphics.js";
|
|
9
|
+
export * from "./lib/loadIndex.js";
|
|
10
|
+
export * from "./lib/eveSymbolAliases.js";
|
|
11
|
+
export * from "./lib/confidence.js";
|
|
12
|
+
export * from "./types.js";
|
|
13
|
+
export * from "./context.js";
|
|
14
|
+
export * from "./router/index.js";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from "./tools/generateBuildCommand.js";
|
|
2
|
+
export * from "./tools/findRelevantSample.js";
|
|
3
|
+
export * from "./tools/explainEveSymbol.js";
|
|
4
|
+
export * from "./tools/generateScreenScaffold.js";
|
|
5
|
+
export * from "./tools/validatePre820Code.js";
|
|
6
|
+
export * from "./tools/traceFeatureToCommands.js";
|
|
7
|
+
export * from "./tools/readSourceFile.js";
|
|
8
|
+
export * from "./tools/lookupModuleGraphics.js";
|
|
9
|
+
export * from "./lib/loadIndex.js";
|
|
10
|
+
export * from "./lib/eveSymbolAliases.js";
|
|
11
|
+
export * from "./lib/confidence.js";
|
|
12
|
+
export * from "./types.js";
|
|
13
|
+
export * from "./context.js";
|
|
14
|
+
export * from "./router/index.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAEhD,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function clampConfidence(value: number): number;
|
|
2
|
+
/**
|
|
3
|
+
* Convert an unbounded positive ranking score to a 0-1 confidence value.
|
|
4
|
+
* A score equal to `scale` maps to 0.5, with diminishing returns above it.
|
|
5
|
+
*/
|
|
6
|
+
export declare function rankingScoreToConfidence(score: number, scale?: number): number;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function clampConfidence(value) {
|
|
2
|
+
if (!Number.isFinite(value))
|
|
3
|
+
return 0;
|
|
4
|
+
return Math.min(1, Math.max(0, value));
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Convert an unbounded positive ranking score to a 0-1 confidence value.
|
|
8
|
+
* A score equal to `scale` maps to 0.5, with diminishing returns above it.
|
|
9
|
+
*/
|
|
10
|
+
export function rankingScoreToConfidence(score, scale = 5) {
|
|
11
|
+
if (!Number.isFinite(score) || score <= 0)
|
|
12
|
+
return 0;
|
|
13
|
+
if (!Number.isFinite(scale) || scale <= 0) {
|
|
14
|
+
throw new Error("Confidence scale must be greater than zero.");
|
|
15
|
+
}
|
|
16
|
+
return clampConfidence(score / (score + scale));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=confidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidence.js","sourceRoot":"","sources":["../../src/lib/confidence.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,KAAa;IACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAa,EAAE,KAAK,GAAG,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,eAAe,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Convert an EVE_CoDl helper name to the display-list macro it writes. */
|
|
2
|
+
export declare function coDlFunctionToMacro(symbol: string): string | undefined;
|
|
3
|
+
/** Convert an EVE_CoCmd helper name to its CMD_* command token. */
|
|
4
|
+
export declare function coCmdFunctionToMacro(symbol: string): string | undefined;
|
|
5
|
+
export declare function eveFunctionToGpuMacro(symbol: string): string | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* Expand display-list/coprocessor helpers and EVE_GpuDefs.h macros to equivalent
|
|
8
|
+
* spellings. knownCommands makes the reverse (macro -> helper) mapping exact.
|
|
9
|
+
*/
|
|
10
|
+
export declare function expandEveSymbolAliases(input: string, knownCommands: Iterable<string>, knownGpuMacros?: ReadonlySet<string>): string[];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const CODL_PREFIX = "EVE_CoDl_";
|
|
2
|
+
const COCMD_PREFIX = "EVE_CoCmd_";
|
|
3
|
+
/** Convert an EVE_CoDl helper name to the display-list macro it writes. */
|
|
4
|
+
export function coDlFunctionToMacro(symbol) {
|
|
5
|
+
if (!symbol.toLowerCase().startsWith(CODL_PREFIX.toLowerCase())) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
const suffix = symbol.slice(CODL_PREFIX.length);
|
|
9
|
+
if (!suffix)
|
|
10
|
+
return undefined;
|
|
11
|
+
return suffix
|
|
12
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1_$2")
|
|
13
|
+
.toUpperCase();
|
|
14
|
+
}
|
|
15
|
+
/** Convert an EVE_CoCmd helper name to its CMD_* command token. */
|
|
16
|
+
export function coCmdFunctionToMacro(symbol) {
|
|
17
|
+
if (!symbol.toLowerCase().startsWith(COCMD_PREFIX.toLowerCase())) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const suffix = symbol.slice(COCMD_PREFIX.length);
|
|
21
|
+
if (!suffix)
|
|
22
|
+
return undefined;
|
|
23
|
+
// EVE coprocessor tokens concatenate camel-case words: setBitmap -> CMD_SETBITMAP.
|
|
24
|
+
return `CMD_${suffix.toUpperCase()}`;
|
|
25
|
+
}
|
|
26
|
+
export function eveFunctionToGpuMacro(symbol) {
|
|
27
|
+
return coDlFunctionToMacro(symbol) ?? coCmdFunctionToMacro(symbol);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Expand display-list/coprocessor helpers and EVE_GpuDefs.h macros to equivalent
|
|
31
|
+
* spellings. knownCommands makes the reverse (macro -> helper) mapping exact.
|
|
32
|
+
*/
|
|
33
|
+
export function expandEveSymbolAliases(input, knownCommands, knownGpuMacros) {
|
|
34
|
+
const aliases = new Set();
|
|
35
|
+
const identifiers = input.match(/\b[A-Za-z_][A-Za-z0-9_]*\b/g) ?? [];
|
|
36
|
+
const commands = [...knownCommands];
|
|
37
|
+
for (const identifier of identifiers) {
|
|
38
|
+
const directCommand = commands.find(command => command.toLowerCase() === identifier.toLowerCase());
|
|
39
|
+
if (directCommand) {
|
|
40
|
+
aliases.add(directCommand);
|
|
41
|
+
const macro = eveFunctionToGpuMacro(directCommand);
|
|
42
|
+
if (macro && (!knownGpuMacros || knownGpuMacros.size === 0 || knownGpuMacros.has(macro))) {
|
|
43
|
+
aliases.add(macro);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const macroName = identifier.toUpperCase();
|
|
47
|
+
if (!knownGpuMacros || knownGpuMacros.size === 0 || knownGpuMacros.has(macroName)) {
|
|
48
|
+
for (const command of commands) {
|
|
49
|
+
if (eveFunctionToGpuMacro(command) === macroName) {
|
|
50
|
+
aliases.add(command);
|
|
51
|
+
aliases.add(macroName);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return [...aliases];
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=eveSymbolAliases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eveSymbolAliases.js","sourceRoot":"","sources":["../../src/lib/eveSymbolAliases.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,YAAY,GAAG,YAAY,CAAC;AAElC,2EAA2E;AAC3E,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAC9C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC9D,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,OAAO,MAAM;SACR,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,WAAW,EAAE,CAAC;AACvB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,oBAAoB,CAAC,MAAc;IAC/C,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,mFAAmF;IACnF,OAAO,OAAO,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAChD,OAAO,mBAAmB,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAClC,KAAa,EACb,aAA+B,EAC/B,cAAoC;IAEpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;IAEpC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAC/B,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAChE,CAAC;QAEF,IAAI,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;YACnD,IAAI,KAAK,IAAI,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAChF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC7B,IAAI,qBAAqB,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC3B,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { BuildMatrix, CommandIndexItem, FeatureGraphItem, GraphicsIndexItem, ModuleIndexItem, SampleIndexItem } from "../types.js";
|
|
2
|
+
export interface RegisterSupportCondition {
|
|
3
|
+
family?: string[];
|
|
4
|
+
graphics?: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface RegisterVariant {
|
|
7
|
+
value: string;
|
|
8
|
+
supportedWhen: RegisterSupportCondition;
|
|
9
|
+
}
|
|
10
|
+
export interface RegisterIndexItem {
|
|
11
|
+
name: string;
|
|
12
|
+
kind: string;
|
|
13
|
+
value?: string;
|
|
14
|
+
variants?: RegisterVariant[];
|
|
15
|
+
summary: string;
|
|
16
|
+
source_file: string;
|
|
17
|
+
related_features?: string[];
|
|
18
|
+
supportedWhen?: RegisterSupportCondition;
|
|
19
|
+
}
|
|
20
|
+
export declare function loadCommands(): CommandIndexItem[];
|
|
21
|
+
export declare function loadSamples(): SampleIndexItem[];
|
|
22
|
+
export declare function loadBuildMatrix(): BuildMatrix;
|
|
23
|
+
export declare function loadFeatureGraph(): Record<string, FeatureGraphItem>;
|
|
24
|
+
export declare function loadRegisters(): RegisterIndexItem[];
|
|
25
|
+
export declare function loadModules(): Record<string, ModuleIndexItem>;
|
|
26
|
+
export declare function loadGraphics(): Record<string, GraphicsIndexItem>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = path.dirname(__filename);
|
|
6
|
+
const dataDir = path.resolve(__dirname, "../../data");
|
|
7
|
+
function readJsonFile(filename) {
|
|
8
|
+
const fullPath = path.join(dataDir, filename);
|
|
9
|
+
const raw = fs.readFileSync(fullPath, "utf-8");
|
|
10
|
+
return JSON.parse(raw);
|
|
11
|
+
}
|
|
12
|
+
export function loadCommands() {
|
|
13
|
+
return readJsonFile("commands.json");
|
|
14
|
+
}
|
|
15
|
+
export function loadSamples() {
|
|
16
|
+
return readJsonFile("samples.json");
|
|
17
|
+
}
|
|
18
|
+
export function loadBuildMatrix() {
|
|
19
|
+
return readJsonFile("build_matrix.json");
|
|
20
|
+
}
|
|
21
|
+
export function loadFeatureGraph() {
|
|
22
|
+
return readJsonFile("feature_graph.json");
|
|
23
|
+
}
|
|
24
|
+
export function loadRegisters() {
|
|
25
|
+
return readJsonFile("registers.json");
|
|
26
|
+
}
|
|
27
|
+
export function loadModules() {
|
|
28
|
+
return readJsonFile("modules.json");
|
|
29
|
+
}
|
|
30
|
+
export function loadGraphics() {
|
|
31
|
+
return readJsonFile("graphics.json");
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=loadIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadIndex.js","sourceRoot":"","sources":["../../src/lib/loadIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA+BzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAEtD,SAAS,YAAY,CAAI,QAAgB;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,YAAY;IACxB,OAAO,YAAY,CAAqB,eAAe,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,OAAO,YAAY,CAAoB,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe;IAC3B,OAAO,YAAY,CAAc,mBAAmB,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC5B,OAAO,YAAY,CAAmC,oBAAoB,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,aAAa;IACzB,OAAO,YAAY,CAAsB,gBAAgB,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,WAAW;IACvB,OAAO,YAAY,CAAkC,cAAc,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,YAAY;IACxB,OAAO,YAAY,CAAoC,eAAe,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GraphicsIndexItem, ModuleIndexItem } from "../types.js";
|
|
2
|
+
export interface ModuleGraphicsMatch {
|
|
3
|
+
module: string;
|
|
4
|
+
alias: string;
|
|
5
|
+
details: ModuleIndexItem;
|
|
6
|
+
}
|
|
7
|
+
export interface ModuleGraphicsResolution {
|
|
8
|
+
query: string;
|
|
9
|
+
matchType: "module" | "graphics";
|
|
10
|
+
module: string | null;
|
|
11
|
+
graphic: string;
|
|
12
|
+
moduleDetails: ModuleIndexItem | null;
|
|
13
|
+
matchingModules: ModuleGraphicsMatch[];
|
|
14
|
+
graphicsDetails: GraphicsIndexItem | null;
|
|
15
|
+
graphicsFamily: string | null;
|
|
16
|
+
graphicsFeatures: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function resolveModuleGraphics(query: string, modules: Record<string, ModuleIndexItem>, graphics: Record<string, GraphicsIndexItem>): ModuleGraphicsResolution | undefined;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
function normalize(value) {
|
|
2
|
+
return value.trim().toUpperCase();
|
|
3
|
+
}
|
|
4
|
+
function shortModuleName(value) {
|
|
5
|
+
return value.replace(/^EVE_GRAPHICS_/i, "");
|
|
6
|
+
}
|
|
7
|
+
function identifierAppearsIn(query, identifier) {
|
|
8
|
+
const escaped = identifier.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
9
|
+
return new RegExp(`(^|[^A-Z0-9])${escaped}($|[^A-Z0-9])`, "i").test(query);
|
|
10
|
+
}
|
|
11
|
+
function findGraphics(query, graphics) {
|
|
12
|
+
const entries = Object.entries(graphics);
|
|
13
|
+
const exact = entries.find(([key]) => normalize(key) === normalize(query));
|
|
14
|
+
if (exact)
|
|
15
|
+
return exact;
|
|
16
|
+
return entries
|
|
17
|
+
.sort(([a], [b]) => b.length - a.length)
|
|
18
|
+
.find(([key]) => identifierAppearsIn(query, key));
|
|
19
|
+
}
|
|
20
|
+
function findModule(query, modules) {
|
|
21
|
+
const entries = Object.entries(modules);
|
|
22
|
+
const normalizedQuery = normalize(query);
|
|
23
|
+
const exact = entries.find(([key]) => normalize(key) === normalizedQuery || normalize(shortModuleName(key)) === normalizedQuery);
|
|
24
|
+
if (exact)
|
|
25
|
+
return exact;
|
|
26
|
+
return entries
|
|
27
|
+
.sort(([a], [b]) => shortModuleName(b).length - shortModuleName(a).length)
|
|
28
|
+
.find(([key]) => identifierAppearsIn(query, shortModuleName(key)));
|
|
29
|
+
}
|
|
30
|
+
function matchingModules(graphic, modules) {
|
|
31
|
+
return Object.entries(modules)
|
|
32
|
+
.filter(([, entry]) => normalize(entry.graphic) === normalize(graphic))
|
|
33
|
+
.map(([key, details]) => ({
|
|
34
|
+
module: key,
|
|
35
|
+
alias: shortModuleName(key),
|
|
36
|
+
details,
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
export function resolveModuleGraphics(query, modules, graphics) {
|
|
40
|
+
const trimmedQuery = query.trim();
|
|
41
|
+
if (!trimmedQuery)
|
|
42
|
+
return undefined;
|
|
43
|
+
// A chip name such as BT817 intentionally takes precedence over the
|
|
44
|
+
// generic EVE_GRAPHICS_BT817 module selector so callers get the complete
|
|
45
|
+
// chip-to-module mapping.
|
|
46
|
+
const graphicsMatch = findGraphics(trimmedQuery, graphics);
|
|
47
|
+
const moduleMatch = graphicsMatch ? undefined : findModule(trimmedQuery, modules);
|
|
48
|
+
if (!graphicsMatch && !moduleMatch)
|
|
49
|
+
return undefined;
|
|
50
|
+
const graphic = graphicsMatch?.[0] ?? moduleMatch[1].graphic;
|
|
51
|
+
const graphicsDetails = graphicsMatch?.[1]
|
|
52
|
+
?? Object.entries(graphics).find(([key]) => normalize(key) === normalize(graphic))?.[1]
|
|
53
|
+
?? null;
|
|
54
|
+
return {
|
|
55
|
+
query,
|
|
56
|
+
matchType: graphicsMatch ? "graphics" : "module",
|
|
57
|
+
module: moduleMatch?.[0] ?? null,
|
|
58
|
+
graphic,
|
|
59
|
+
moduleDetails: moduleMatch?.[1] ?? null,
|
|
60
|
+
matchingModules: matchingModules(graphic, modules),
|
|
61
|
+
graphicsDetails,
|
|
62
|
+
graphicsFamily: graphicsDetails?.family ?? null,
|
|
63
|
+
graphicsFeatures: graphicsDetails?.feature ?? [],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=moduleGraphicsLookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleGraphicsLookup.js","sourceRoot":"","sources":["../../src/lib/moduleGraphicsLookup.ts"],"names":[],"mappings":"AAoBA,SAAS,SAAS,CAAC,KAAa;IAC5B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,UAAkB;IAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClE,OAAO,IAAI,MAAM,CAAC,gBAAgB,OAAO,eAAe,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,YAAY,CACjB,KAAa,EACb,QAA2C;IAE3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,OAAO,OAAO;SACT,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;SACvC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,UAAU,CACf,KAAa,EACb,OAAwC;IAExC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CACjC,SAAS,CAAC,GAAG,CAAC,KAAK,eAAe,IAAI,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,eAAe,CAC5F,CAAC;IACF,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,OAAO,OAAO;SACT,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;SACzE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,eAAe,CACpB,OAAe,EACf,OAAwC;IAExC,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;SACtE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,eAAe,CAAC,GAAG,CAAC;QAC3B,OAAO;KACV,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACjC,KAAa,EACb,OAAwC,EACxC,QAA2C;IAE3C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IAEpC,oEAAoE;IACpE,yEAAyE;IACzE,0BAA0B;IAC1B,MAAM,aAAa,GAAG,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAElF,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAErD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,WAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,MAAM,eAAe,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;WACnC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;WACpF,IAAI,CAAC;IAEZ,OAAO;QACH,KAAK;QACL,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;QAChD,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;QAChC,OAAO;QACP,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;QACvC,eAAe,EAAE,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC;QAClD,eAAe;QACf,cAAc,EAAE,eAAe,EAAE,MAAM,IAAI,IAAI;QAC/C,gBAAgB,EAAE,eAAe,EAAE,OAAO,IAAI,EAAE;KACnD,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function normalizeText(input) {
|
|
2
|
+
return input.trim().toLowerCase().replace(/\s+/g, " ");
|
|
3
|
+
}
|
|
4
|
+
export function tokenize(input) {
|
|
5
|
+
return normalizeText(input)
|
|
6
|
+
.split(/[^a-z0-9_+.-]+/i)
|
|
7
|
+
.map((s) => s.trim())
|
|
8
|
+
.filter(Boolean);
|
|
9
|
+
}
|
|
10
|
+
export function includesSearchPhrase(input, phrase) {
|
|
11
|
+
const normalizePhrase = (value) => normalizeText(value)
|
|
12
|
+
.replace(/[_-]+/g, " ")
|
|
13
|
+
.replace(/[^a-z0-9+.\s]+/gi, " ")
|
|
14
|
+
.replace(/\s+/g, " ")
|
|
15
|
+
.trim();
|
|
16
|
+
const normalizedInput = normalizePhrase(input);
|
|
17
|
+
const normalizedPhrase = normalizePhrase(phrase);
|
|
18
|
+
return normalizedPhrase.length > 0 &&
|
|
19
|
+
` ${normalizedInput} `.includes(` ${normalizedPhrase} `);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/lib/normalize.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa;IAClC,OAAO,aAAa,CAAC,KAAK,CAAC;SACtB,KAAK,CAAC,iBAAiB,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,MAAc;IAC9D,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;SAC1D,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;IAEZ,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAC9B,IAAI,eAAe,GAAG,CAAC,QAAQ,CAAC,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FeatureGraphItem, SampleIndexItem } from "../types.js";
|
|
2
|
+
export declare function rankSamples(query: string, samples: SampleIndexItem[], featureGraph: Record<string, FeatureGraphItem>, platform?: string): {
|
|
3
|
+
sample: SampleIndexItem;
|
|
4
|
+
relevanceScore: number;
|
|
5
|
+
score: number;
|
|
6
|
+
}[];
|
package/dist/lib/rank.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { includesSearchPhrase, tokenize, normalizeText } from "./normalize.js";
|
|
2
|
+
import { expandEveSymbolAliases } from "./eveSymbolAliases.js";
|
|
3
|
+
export function rankSamples(query, samples, featureGraph, platform) {
|
|
4
|
+
const knownCommands = new Set([
|
|
5
|
+
...samples.flatMap(sample => sample.commands_used ?? []),
|
|
6
|
+
...Object.values(featureGraph).flatMap(feature => feature.commands.map(command => command.name)),
|
|
7
|
+
]);
|
|
8
|
+
const aliases = expandEveSymbolAliases(query, knownCommands);
|
|
9
|
+
const expandedQuery = [query, ...aliases].join(" ");
|
|
10
|
+
const q = normalizeText(expandedQuery);
|
|
11
|
+
const qTokens = new Set(tokenize(expandedQuery));
|
|
12
|
+
return samples
|
|
13
|
+
.map((sample) => {
|
|
14
|
+
let relevanceScore = 0;
|
|
15
|
+
const haystack = normalizeText([
|
|
16
|
+
sample.name,
|
|
17
|
+
sample.summary,
|
|
18
|
+
...(sample.categories ?? []),
|
|
19
|
+
...(sample.keywords ?? []),
|
|
20
|
+
...(sample.commands_used ?? []),
|
|
21
|
+
].join(" "));
|
|
22
|
+
for (const token of qTokens) {
|
|
23
|
+
if (haystack.includes(token))
|
|
24
|
+
relevanceScore += 2;
|
|
25
|
+
}
|
|
26
|
+
for (const [feature, meta] of Object.entries(featureGraph)) {
|
|
27
|
+
if (includesSearchPhrase(q, feature) ||
|
|
28
|
+
meta.keywords.some((k) => includesSearchPhrase(q, k))) {
|
|
29
|
+
if (meta.samples.includes(sample.id))
|
|
30
|
+
relevanceScore += 5;
|
|
31
|
+
const overlap = sample.commands_used.filter((c) => meta.commands.some((cmd) => cmd.name === c)).length;
|
|
32
|
+
relevanceScore += overlap;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
let rankingBonus = 0;
|
|
36
|
+
if (platform && sample.platform_notes?.some(item => item.toLowerCase() === platform.toLowerCase())) {
|
|
37
|
+
rankingBonus += 2;
|
|
38
|
+
}
|
|
39
|
+
if (sample.difficulty === "beginner") {
|
|
40
|
+
rankingBonus += 0.5;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
sample,
|
|
44
|
+
relevanceScore,
|
|
45
|
+
score: relevanceScore + rankingBonus,
|
|
46
|
+
};
|
|
47
|
+
})
|
|
48
|
+
.filter((x) => x.relevanceScore > 0)
|
|
49
|
+
.sort((a, b) => b.score - a.score);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=rank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rank.js","sourceRoot":"","sources":["../../src/lib/rank.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { GraphicsIndexItem, ModuleIndexItem } from "../types.js";
|
|
2
|
+
import type { RegisterIndexItem, RegisterVariant } from "./loadIndex.js";
|
|
3
|
+
export interface RegisterVariantContext {
|
|
4
|
+
family?: string;
|
|
5
|
+
graphics?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ResolvedGraphicsContext {
|
|
8
|
+
graphics: string;
|
|
9
|
+
family: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function resolveGraphicsContext(graphics: string | undefined, graphicsIndex: Record<string, GraphicsIndexItem>, modulesIndex?: Record<string, ModuleIndexItem>): ResolvedGraphicsContext | undefined;
|
|
12
|
+
export declare function inferGraphicsFamily(graphics: string | undefined, graphicsIndex: Record<string, GraphicsIndexItem>, modulesIndex?: Record<string, ModuleIndexItem>): string | undefined;
|
|
13
|
+
export declare function resolveRegisterVariant(register: RegisterIndexItem, context: RegisterVariantContext): RegisterVariant | undefined;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
function normalizeGraphics(value) {
|
|
2
|
+
return value.trim().toUpperCase().replace(/^EVE_GRAPHICS_/, "");
|
|
3
|
+
}
|
|
4
|
+
function parseGeneration(value) {
|
|
5
|
+
const match = /^GEN(\d+)(\+)?$/i.exec(value.trim());
|
|
6
|
+
if (!match)
|
|
7
|
+
return null;
|
|
8
|
+
return {
|
|
9
|
+
generation: Number(match[1]),
|
|
10
|
+
orLater: Boolean(match[2]),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function familyMatches(actual, expected) {
|
|
14
|
+
const actualGeneration = parseGeneration(actual);
|
|
15
|
+
const expectedGeneration = parseGeneration(expected);
|
|
16
|
+
if (!actualGeneration || !expectedGeneration) {
|
|
17
|
+
return actual.trim().toUpperCase() === expected.trim().toUpperCase();
|
|
18
|
+
}
|
|
19
|
+
return expectedGeneration.orLater
|
|
20
|
+
? actualGeneration.generation >= expectedGeneration.generation
|
|
21
|
+
: actualGeneration.generation === expectedGeneration.generation;
|
|
22
|
+
}
|
|
23
|
+
function conditionMatches(condition, context) {
|
|
24
|
+
if (condition.graphics) {
|
|
25
|
+
if (!context.graphics)
|
|
26
|
+
return false;
|
|
27
|
+
const actualGraphics = normalizeGraphics(context.graphics);
|
|
28
|
+
if (!condition.graphics.some(value => normalizeGraphics(value) === actualGraphics)) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (condition.family) {
|
|
33
|
+
if (!context.family)
|
|
34
|
+
return false;
|
|
35
|
+
if (!condition.family.some(value => familyMatches(context.family, value))) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
function variantSpecificity(variant) {
|
|
42
|
+
// A concrete graphics match is more specific than a family-wide match.
|
|
43
|
+
return (variant.supportedWhen.graphics ? 2 : 0) +
|
|
44
|
+
(variant.supportedWhen.family ? 1 : 0);
|
|
45
|
+
}
|
|
46
|
+
export function resolveGraphicsContext(graphics, graphicsIndex, modulesIndex = {}) {
|
|
47
|
+
if (!graphics)
|
|
48
|
+
return undefined;
|
|
49
|
+
const graphicsKey = normalizeGraphics(graphics);
|
|
50
|
+
const directGraphics = Object.entries(graphicsIndex).find(([key]) => normalizeGraphics(key) === graphicsKey);
|
|
51
|
+
if (directGraphics) {
|
|
52
|
+
return {
|
|
53
|
+
graphics: directGraphics[0],
|
|
54
|
+
family: directGraphics[1].family,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const moduleEntry = Object.entries(modulesIndex).find(([key]) => normalizeGraphics(key) === graphicsKey)?.[1];
|
|
58
|
+
if (!moduleEntry)
|
|
59
|
+
return undefined;
|
|
60
|
+
const moduleGraphicsKey = normalizeGraphics(moduleEntry.graphic);
|
|
61
|
+
const resolvedGraphics = Object.entries(graphicsIndex).find(([key]) => normalizeGraphics(key) === moduleGraphicsKey);
|
|
62
|
+
if (!resolvedGraphics)
|
|
63
|
+
return undefined;
|
|
64
|
+
return {
|
|
65
|
+
graphics: resolvedGraphics[0],
|
|
66
|
+
family: resolvedGraphics[1].family,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export function inferGraphicsFamily(graphics, graphicsIndex, modulesIndex = {}) {
|
|
70
|
+
return resolveGraphicsContext(graphics, graphicsIndex, modulesIndex)?.family;
|
|
71
|
+
}
|
|
72
|
+
export function resolveRegisterVariant(register, context) {
|
|
73
|
+
return register.variants
|
|
74
|
+
?.filter(variant => conditionMatches(variant.supportedWhen, context))
|
|
75
|
+
.sort((left, right) => variantSpecificity(right) - variantSpecificity(left))[0];
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=registerVariants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerVariants.js","sourceRoot":"","sources":["../../src/lib/registerVariants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAMxB,MAAM,UAAU,eAAe,CAC3B,OAAyB,EACzB,IAAY;IAEZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function analyzeQuery(query) {
|
|
2
|
+
const q = query.toLowerCase();
|
|
3
|
+
return {
|
|
4
|
+
isBuild: q.includes("build") || q.includes("cmake") || q.includes("compile"),
|
|
5
|
+
isScreen: q.includes("screen") || q.includes("ui") || q.includes("widget"),
|
|
6
|
+
isSymbol: q.includes("cmd") || q.includes("register") || q.includes("api"),
|
|
7
|
+
isSample: q.includes("sample") || q.includes("example"),
|
|
8
|
+
isDebug: q.includes("error") || q.includes("fail") || q.includes("issue"),
|
|
9
|
+
isGeneric: true
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=analyzeQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyzeQuery.js","sourceRoot":"","sources":["../../src/router/analyzeQuery.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAE9B,OAAO;QACH,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5E,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1E,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1E,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QACvD,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzE,SAAS,EAAE,IAAI;KAClB,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|