Fix unimplemented login route with # prefix
Fix IDE service routing and path normalization Refactor IDE services and add session rotation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
34
node_modules/.package-lock.json
generated
vendored
34
node_modules/.package-lock.json
generated
vendored
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "html",
|
||||
"name": "system",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
@@ -2227,9 +2227,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/core": {
|
||||
"version": "2.2.137",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.2.137.tgz",
|
||||
"integrity": "sha512-GViirzsF3VfYe7boTyeP35VxhrWSkerbghnzrPwdag+9LrDKqjc76tDCP8XtO7ddgVlm/VDZpvUQQUXEd57eDA==",
|
||||
"version": "2.2.142",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.2.142.tgz",
|
||||
"integrity": "sha512-8X1p+z82Y1sRm6pp7tfuakfN43xx0BgIEXf2Wz/C6mTSn8pygmOREE8Leodwdy9EQtZXif8N8Qmtz50s7X4wjA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rollup/plugin-node-resolve": "^16.0.1",
|
||||
@@ -2253,9 +2253,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/parser": {
|
||||
"version": "2.2.137",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.2.137.tgz",
|
||||
"integrity": "sha512-DC1GlzZvMhlqxJDNjJ184r+h21W+HhS6GRcG2W/Eo75LnmehakMG9yO4WHeZ9809isl/7+fEwZbk2jM+FD3KVA==",
|
||||
"version": "2.2.142",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.2.142.tgz",
|
||||
"integrity": "sha512-ATn7qrZPWNi/G2WkDUchicGyCTqDLKFYjfE69ckie5S+zRS8zTAUJSS60N+LzUdwgM5N9v8V7C//6P85fggYuw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/jest": "^29.5.11",
|
||||
@@ -2273,9 +2273,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/router": {
|
||||
"version": "2.2.137",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/router/-/router-2.2.137.tgz",
|
||||
"integrity": "sha512-ybiQ6SRZxbYDPwrOML99T9gWJqNM2w43QnptJwWMg+E2zvAr48KpVJhcNJlsOlqGykME5PJOvxioMdMlfaEG5A==",
|
||||
"version": "2.2.142",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/router/-/router-2.2.142.tgz",
|
||||
"integrity": "sha512-x9gCid0jvkMWFKSbFEcFl6iygFGiDtYbZBai5LOBipUMXUlQw13rJv+ZBe1W+SM2PorUTuJXoTY6O+OxDJS/1g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rollup/plugin-node-resolve": "^16.0.1",
|
||||
@@ -2293,21 +2293,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/vscode-extension": {
|
||||
"version": "2.2.137",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.2.137.tgz",
|
||||
"integrity": "sha512-9xM9/JqXKestgeivCCWfr49RD0D279ZG/K/PxU2u4kc+mE1kEwpkmVnN4QGGw4rzXUjPFdIoG3ogaMY2gRjFew==",
|
||||
"version": "2.2.142",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.2.142.tgz",
|
||||
"integrity": "sha512-3A8dOjpK01SgxMC3rTjgHNgRvQLKHdBnGFlWCu2Qk1f70DqTHGGwPUbWHNEQcpQw3LhjINYF8WQ8yu/Dkl9Qnw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"vscode": "^1.74.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/webpack-loader": {
|
||||
"version": "2.2.137",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/webpack-loader/-/webpack-loader-2.2.137.tgz",
|
||||
"integrity": "sha512-kSWsTnGa5USX8HKFYdAhfdAD5l/UiIwBJXmUZeLYaLSZvCePBEMfrk9rKbPtfkpNrbTnHhipF6DZmSOElmoPAg==",
|
||||
"version": "2.2.142",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/webpack-loader/-/webpack-loader-2.2.142.tgz",
|
||||
"integrity": "sha512-SUTREV2M1bUJb5s9h4b4q6cTDAl6EBtbPk7J2hMFpy7XwKpv68DVI2lCAOVOwjM1xQXDiTGOM+0gwWqwzEqE+w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jqhtml/parser": "2.2.137",
|
||||
"@jqhtml/parser": "2.2.142",
|
||||
"@types/loader-utils": "^2.0.6",
|
||||
"@types/node": "^20.0.0",
|
||||
"@types/webpack": "^5.28.5",
|
||||
|
||||
2
node_modules/@jqhtml/core/dist/index.cjs
generated
vendored
2
node_modules/@jqhtml/core/dist/index.cjs
generated
vendored
@@ -2728,7 +2728,7 @@ function init(jQuery) {
|
||||
}
|
||||
}
|
||||
// Version - will be replaced during build with actual version from package.json
|
||||
const version = '2.2.137';
|
||||
const version = '2.2.142';
|
||||
// Default export with all functionality
|
||||
const jqhtml = {
|
||||
// Core
|
||||
|
||||
2
node_modules/@jqhtml/core/dist/index.js
generated
vendored
2
node_modules/@jqhtml/core/dist/index.js
generated
vendored
@@ -2724,7 +2724,7 @@ function init(jQuery) {
|
||||
}
|
||||
}
|
||||
// Version - will be replaced during build with actual version from package.json
|
||||
const version = '2.2.137';
|
||||
const version = '2.2.142';
|
||||
// Default export with all functionality
|
||||
const jqhtml = {
|
||||
// Core
|
||||
|
||||
4
node_modules/@jqhtml/core/dist/jqhtml-core.esm.js
generated
vendored
4
node_modules/@jqhtml/core/dist/jqhtml-core.esm.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* JQHTML Core v2.2.137
|
||||
* JQHTML Core v2.2.142
|
||||
* (c) 2025 JQHTML Team
|
||||
* Released under the MIT License
|
||||
*/
|
||||
@@ -2729,7 +2729,7 @@ function init(jQuery) {
|
||||
}
|
||||
}
|
||||
// Version - will be replaced during build with actual version from package.json
|
||||
const version = '2.2.137';
|
||||
const version = '2.2.142';
|
||||
// Default export with all functionality
|
||||
const jqhtml = {
|
||||
// Core
|
||||
|
||||
2
node_modules/@jqhtml/core/package.json
generated
vendored
2
node_modules/@jqhtml/core/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@jqhtml/core",
|
||||
"version": "2.2.137",
|
||||
"version": "2.2.142",
|
||||
"description": "Core runtime library for JQHTML",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
|
||||
2
node_modules/@jqhtml/parser/dist/codegen.js
generated
vendored
2
node_modules/@jqhtml/parser/dist/codegen.js
generated
vendored
@@ -1201,7 +1201,7 @@ export class CodeGenerator {
|
||||
for (const [name, component] of this.components) {
|
||||
code += `// Component: ${name}\n`;
|
||||
code += `jqhtml_components.set('${name}', {\n`;
|
||||
code += ` _jqhtml_version: '2.2.137',\n`; // Version will be replaced during build
|
||||
code += ` _jqhtml_version: '2.2.142',\n`; // Version will be replaced during build
|
||||
code += ` name: '${name}',\n`;
|
||||
code += ` tag: '${component.tagName}',\n`;
|
||||
code += ` defaultAttributes: ${this.serializeAttributeObject(component.defaultAttributes)},\n`;
|
||||
|
||||
2
node_modules/@jqhtml/parser/package.json
generated
vendored
2
node_modules/@jqhtml/parser/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@jqhtml/parser",
|
||||
"version": "2.2.137",
|
||||
"version": "2.2.142",
|
||||
"description": "JQHTML template parser - converts templates to JavaScript",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
|
||||
2
node_modules/@jqhtml/router/dist/jqhtml-router.esm.js
generated
vendored
2
node_modules/@jqhtml/router/dist/jqhtml-router.esm.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* JQHTML Router v2.2.137
|
||||
* JQHTML Router v2.2.142
|
||||
* (c) 2025 JQHTML Team
|
||||
* Released under the MIT License
|
||||
*/
|
||||
|
||||
2
node_modules/@jqhtml/router/package.json
generated
vendored
2
node_modules/@jqhtml/router/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@jqhtml/router",
|
||||
"version": "2.2.137",
|
||||
"version": "2.2.142",
|
||||
"description": "Client-side routing for JQHTML applications",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
|
||||
2
node_modules/@jqhtml/vscode-extension/.version
generated
vendored
2
node_modules/@jqhtml/vscode-extension/.version
generated
vendored
@@ -1 +1 @@
|
||||
2.2.137
|
||||
2.2.142
|
||||
|
||||
BIN
node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.137.vsix
generated
vendored
BIN
node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.137.vsix
generated
vendored
Binary file not shown.
BIN
node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.142.vsix
generated
vendored
Executable file
BIN
node_modules/@jqhtml/vscode-extension/jqhtml-vscode-extension-2.2.142.vsix
generated
vendored
Executable file
Binary file not shown.
10
node_modules/@jqhtml/vscode-extension/out/componentIndex.js
generated
vendored
10
node_modules/@jqhtml/vscode-extension/out/componentIndex.js
generated
vendored
@@ -44,6 +44,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.JqhtmlComponentIndex = void 0;
|
||||
const vscode = __importStar(require("vscode"));
|
||||
const path = __importStar(require("path"));
|
||||
/**
|
||||
* JQHTML Component Indexer
|
||||
*
|
||||
@@ -97,6 +98,11 @@ class JqhtmlComponentIndex {
|
||||
const files = yield vscode.workspace.findFiles(new vscode.RelativePattern(folder, '**/*.jqhtml'), new vscode.RelativePattern(folder, '**/node_modules/**'));
|
||||
allFiles.push(...files);
|
||||
}
|
||||
// Debug: Log all discovered files
|
||||
console.log(`JQHTML: Found ${allFiles.length} .jqhtml files to index:`);
|
||||
allFiles.forEach(uri => {
|
||||
console.log(` - ${uri.fsPath}`);
|
||||
});
|
||||
// Index each file
|
||||
const promises = allFiles.map(uri => this.indexFile(uri));
|
||||
yield Promise.all(promises);
|
||||
@@ -155,8 +161,8 @@ class JqhtmlComponentIndex {
|
||||
position: new vscode.Position(lineNum, charPos),
|
||||
line: line.trim()
|
||||
});
|
||||
// Debug: Log each component as it's indexed (commented out - too verbose)
|
||||
// console.log(`JQHTML Index: Indexed "${componentName}" from ${path.basename(uri.fsPath)}:${lineNum + 1}`);
|
||||
// Debug: Log each component as it's indexed
|
||||
console.log(`JQHTML Index: Indexed "${componentName}" from ${path.basename(uri.fsPath)}:${lineNum + 1}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
2
node_modules/@jqhtml/vscode-extension/out/componentIndex.js.map
generated
vendored
2
node_modules/@jqhtml/vscode-extension/out/componentIndex.js.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"componentIndex.js","sourceRoot":"","sources":["../src/componentIndex.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"componentIndex.js","sourceRoot":"","sources":["../src/componentIndex.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AACjC,2CAA6B;AAa7B;;;;;GAKG;AACH,MAAa,oBAAoB;IAK7B;QAJQ,iBAAY,GAAqC,IAAI,GAAG,EAAE,CAAC;QAK/D,yBAAyB;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,qCAAqC;QACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,gBAAgB;QACpB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAE3E,uDAAuD;QACvD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACU,gBAAgB;;YACzB,uCAAuC;YACvC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC,YAAY,CAAC;YAC7B,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,YAAY,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAClC,CAAC;KAAA;IAEa,iBAAiB;;YAC3B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAE1B,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBAClD,OAAO;YACX,CAAC;YAED,2EAA2E;YAC3E,MAAM,QAAQ,GAAiB,EAAE,CAAC;YAClC,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAC1C,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,CAAC,EACjD,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAC3D,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAC5B,CAAC;YAED,kCAAkC;YAClC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,MAAM,0BAA0B,CAAC,CAAC;YACxE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnB,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1D,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE5B,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,YAAY,CAAC,IAAI,oBAAoB,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;QACtG,CAAC;KAAA;IAED;;OAEG;IACW,SAAS,CAAC,GAAe;;YACnC,IAAI,CAAC;gBACD,oCAAoC;gBACpC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;gBAE9B,oBAAoB;gBACpB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAE/B,iCAAiC;gBACjC,8EAA8E;gBAC9E,EAAE;gBACF,sBAAsB;gBACtB,4DAA4D;gBAC5D,0DAA0D;gBAC1D,4FAA4F;gBAC5F,2CAA2C;gBAC3C,EAAE;gBACF,0CAA0C;gBAC1C,uEAAuE;gBACvE,wDAAwD;gBACxD,wBAAwB;gBACxB,2EAA2E;gBAC3E,qEAAqE;gBACrE,kDAAkD;gBAClD,qDAAqD;gBACrD,kEAAkE;gBAClE,EAAE;gBACF,mBAAmB;gBACnB,sEAAsE;gBACtE,uEAAuE;gBACvE,qDAAqD;gBACrD,gDAAgD;gBAChD,MAAM,aAAa,GAAG,4CAA4C,CAAC;gBAEnE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;oBACtD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC5B,IAAI,KAAK,CAAC;oBAEV,4BAA4B;oBAC5B,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;oBAE5B,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;wBACjD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;wBAEhD,6BAA6B;wBAC7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE;4BACjC,IAAI,EAAE,aAAa;4BACnB,GAAG,EAAE,GAAG;4BACR,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;4BAC/C,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;yBACpB,CAAC,CAAC;wBAEH,4CAA4C;wBAC5C,OAAO,CAAC,GAAG,CAAC,0BAA0B,aAAa,UAAU,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC7G,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;QACL,CAAC;KAAA;IAED;;OAEG;IACK,mBAAmB,CAAC,GAAe;QACvC,6CAA6C;QAC7C,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACxC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,wDAAwD;QACxD,6BAA6B;QAC7B,8GAA8G;QAC9G,+EAA+E;QAC/E,IAAI;QAEJ,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,uGAAuG;IAC3G,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,oBAAoB;QACvB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,oBAAoB,CAAC,OAAe;QAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,OAAO;QACV,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACJ;AAnMD,oDAmMC"}
|
||||
183
node_modules/@jqhtml/vscode-extension/out/definitionProvider.js
generated
vendored
183
node_modules/@jqhtml/vscode-extension/out/definitionProvider.js
generated
vendored
@@ -69,6 +69,19 @@ class JqhtmlDefinitionProvider {
|
||||
console.log(`JQHTML: In $ attribute context:`, dollarAttrResult);
|
||||
return yield this.handleDollarAttributeDefinition(document, position, dollarAttrResult);
|
||||
}
|
||||
// IMPORTANT: Check for slot syntax BEFORE extracting word
|
||||
// This prevents slot names from being treated as component names
|
||||
// Check if we're in a slot tag by looking for <# or </# before cursor
|
||||
const beforeCursor = line.substring(0, position.character);
|
||||
if (beforeCursor.match(/<\/?#\s*[A-Z][A-Za-z0-9_]*$/)) {
|
||||
// We're in a slot tag - extract the full slot name from the line
|
||||
const slotNameMatch = line.match(/<\/?#\s*([A-Z][A-Za-z0-9_]*)/);
|
||||
if (slotNameMatch) {
|
||||
const slotName = slotNameMatch[1];
|
||||
console.log(`JQHTML: Detected slot tag syntax for slot: ${slotName}`);
|
||||
return yield this.handleSlotDefinition(document, position, slotName);
|
||||
}
|
||||
}
|
||||
// Get the word at the cursor position
|
||||
const wordRange = document.getWordRangeAtPosition(position, /[A-Z][A-Za-z0-9_]*/);
|
||||
if (!wordRange) {
|
||||
@@ -119,11 +132,6 @@ class JqhtmlDefinitionProvider {
|
||||
if (beforeWord.match(/<\/\s*$/) || beforeWord.match(/<\/Define:\s*$/)) {
|
||||
isInTagContext = true;
|
||||
}
|
||||
// Check for slot syntax: <#slotname> or </#slotname>
|
||||
if (beforeWord.match(/<#\s*$/) || beforeWord.match(/<\/#\s*$/)) {
|
||||
// This is a slot, not a component
|
||||
return undefined;
|
||||
}
|
||||
if (!isInTagContext) {
|
||||
// Also check if cursor is inside the tag name (not in attributes)
|
||||
const afterWord = line.substring(wordRange.end.character);
|
||||
@@ -483,6 +491,171 @@ class JqhtmlDefinitionProvider {
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
/**
|
||||
* Handle goto definition for slot tags (<#SlotName>)
|
||||
*
|
||||
* IMPLEMENTATION SCOPE (Narrow, for now):
|
||||
* - Handles direct extends="ComponentName" on <Define:> tags
|
||||
* - Handles direct <ComponentName> invocation tags
|
||||
* - Does NOT traverse full inheritance chain (TODO: add later)
|
||||
* - Just looks for direct parent component
|
||||
*
|
||||
* LOGIC:
|
||||
* 1. Extract slot name from cursor position
|
||||
* 2. Find parent component:
|
||||
* - If inside <Define extends="Parent">, use Parent
|
||||
* - If inside <Parent> invocation, use Parent
|
||||
* 3. Find Parent.jqhtml file
|
||||
* 4. Search for <%= content('SlotName') %>
|
||||
* 5. Navigate to that line
|
||||
*/
|
||||
handleSlotDefinition(document, position, slotName) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
console.log(`JQHTML: Handling slot definition for: ${slotName}`);
|
||||
// Find the parent component that defines this slot
|
||||
const parentComponentName = this.findParentComponentForSlot(document, position);
|
||||
if (!parentComponentName) {
|
||||
console.log(`JQHTML: Could not determine parent component for slot`);
|
||||
return undefined;
|
||||
}
|
||||
console.log(`JQHTML: Parent component for slot: ${parentComponentName}`);
|
||||
// Debug: Show what's in the index
|
||||
const allComponents = this.componentIndex.getAllComponentNames();
|
||||
console.log(`JQHTML: Index currently contains ${allComponents.length} components:`, allComponents.join(', '));
|
||||
// Find the parent component definition file
|
||||
const parentComponent = this.componentIndex.findComponent(parentComponentName);
|
||||
if (!parentComponent) {
|
||||
console.log(`JQHTML: Parent component '${parentComponentName}' not found in index`);
|
||||
return undefined;
|
||||
}
|
||||
console.log(`JQHTML: Found parent component file: ${parentComponent.uri.fsPath}`);
|
||||
// Search for content('SlotName') in the parent component file
|
||||
const slotUsageLocation = yield this.findSlotUsageInTemplate(parentComponent.uri, slotName);
|
||||
if (!slotUsageLocation) {
|
||||
console.log(`JQHTML: Slot usage content('${slotName}') not found in ${parentComponent.uri.fsPath}`);
|
||||
return undefined;
|
||||
}
|
||||
console.log(`JQHTML: Found slot usage at line ${slotUsageLocation.range.start.line + 1}`);
|
||||
return slotUsageLocation;
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Find the parent component that should define this slot
|
||||
*
|
||||
* Looks for either:
|
||||
* 1. <Define:ChildComponent extends="ParentComponent"> - check if slots are top-level
|
||||
* 2. <ParentComponent> - find enclosing component invocation tag
|
||||
*/
|
||||
findParentComponentForSlot(document, position) {
|
||||
const currentLine = position.line;
|
||||
// Strategy 1: Look for <Define extends="ParentComponent"> where slots are at top level
|
||||
// Scan upward to find the Define tag
|
||||
let defineTagStartLine = -1;
|
||||
for (let i = currentLine; i >= 0; i--) {
|
||||
const lineText = document.lineAt(i).text;
|
||||
// Check if we found a <Define:ComponentName
|
||||
if (lineText.match(/<Define:([A-Z][A-Za-z0-9_]*)/)) {
|
||||
defineTagStartLine = i;
|
||||
console.log(`JQHTML: Found <Define: tag at line ${i + 1}`);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// If we found a Define tag, look for extends attribute in the tag (may be multi-line)
|
||||
if (defineTagStartLine >= 0) {
|
||||
// Collect all lines from Define tag start until we find the closing >
|
||||
let tagContent = '';
|
||||
for (let i = defineTagStartLine; i < document.lineCount; i++) {
|
||||
const lineText = document.lineAt(i).text;
|
||||
tagContent += lineText + ' ';
|
||||
// Stop when we find the closing > of the opening tag
|
||||
if (lineText.includes('>')) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// Now check if this multi-line tag has extends attribute
|
||||
const extendsMatch = tagContent.match(/\bextends\s*=\s*["']([A-Z][A-Za-z0-9_]*)["']/);
|
||||
if (extendsMatch) {
|
||||
const parentComponentName = extendsMatch[1];
|
||||
console.log(`JQHTML: Found extends="${parentComponentName}" in Define tag`);
|
||||
// TODO: Verify that the slot is at top level (not nested inside other tags)
|
||||
// For now, we assume if we found a Define with extends, that's the parent
|
||||
return parentComponentName;
|
||||
}
|
||||
else {
|
||||
console.log(`JQHTML: Define tag found but no extends attribute`);
|
||||
}
|
||||
}
|
||||
// Strategy 2: Look for enclosing <ParentComponent> invocation tag
|
||||
// Scan upward to find opening tag
|
||||
let tagStack = [];
|
||||
for (let i = currentLine; i >= 0; i--) {
|
||||
const lineText = document.lineAt(i).text;
|
||||
// Find all component tags on this line (both opening and closing)
|
||||
// Component tags: <ComponentName> or </ComponentName>
|
||||
const tagRegex = /<\/?([A-Z][A-Za-z0-9_]*)[^>]*>/g;
|
||||
let match;
|
||||
// Collect all tags on this line
|
||||
const tagsOnLine = [];
|
||||
while ((match = tagRegex.exec(lineText)) !== null) {
|
||||
const fullMatch = match[0];
|
||||
const componentName = match[1];
|
||||
const isClosing = fullMatch.startsWith('</');
|
||||
tagsOnLine.push({ tag: componentName, isClosing });
|
||||
}
|
||||
// Process tags in reverse order (right to left on the line)
|
||||
for (let j = tagsOnLine.length - 1; j >= 0; j--) {
|
||||
const { tag, isClosing } = tagsOnLine[j];
|
||||
if (isClosing) {
|
||||
// Closing tag - add to stack
|
||||
tagStack.push(tag);
|
||||
}
|
||||
else {
|
||||
// Opening tag
|
||||
if (tagStack.length > 0 && tagStack[tagStack.length - 1] === tag) {
|
||||
// This opening tag matches the last closing tag on stack - they cancel out
|
||||
tagStack.pop();
|
||||
}
|
||||
else {
|
||||
// This is an unclosed opening tag - this is our parent!
|
||||
console.log(`JQHTML: Found enclosing component invocation: <${tag}>`);
|
||||
return tag;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(`JQHTML: No parent component found for slot`);
|
||||
return undefined;
|
||||
}
|
||||
/**
|
||||
* Search for <%= content('SlotName') %> in a template file
|
||||
*/
|
||||
findSlotUsageInTemplate(templateUri, slotName) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
try {
|
||||
const templateDoc = yield vscode.workspace.openTextDocument(templateUri);
|
||||
const templateText = templateDoc.getText();
|
||||
// Search for content('SlotName') or content("SlotName")
|
||||
// Also handle optional whitespace
|
||||
const contentRegex = new RegExp(`<%=\\s*content\\s*\\(\\s*['"]${slotName}['"]\\s*\\)`, 'g');
|
||||
const match = contentRegex.exec(templateText);
|
||||
if (match) {
|
||||
const matchPosition = templateDoc.positionAt(match.index);
|
||||
console.log(`JQHTML: Found content('${slotName}') at line ${matchPosition.line + 1}`);
|
||||
// Return location pointing to the slot name within content('SlotName')
|
||||
const slotNameStartIndex = match.index + match[0].indexOf(slotName);
|
||||
const slotNamePosition = templateDoc.positionAt(slotNameStartIndex);
|
||||
const slotNameRange = new vscode.Range(slotNamePosition, new vscode.Position(slotNamePosition.line, slotNamePosition.character + slotName.length));
|
||||
return new vscode.Location(templateUri, slotNameRange);
|
||||
}
|
||||
console.log(`JQHTML: No content('${slotName}') found in template`);
|
||||
return undefined;
|
||||
}
|
||||
catch (error) {
|
||||
console.error(`JQHTML: Error reading template file:`, error);
|
||||
return undefined;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
exports.JqhtmlDefinitionProvider = JqhtmlDefinitionProvider;
|
||||
/**
|
||||
|
||||
2
node_modules/@jqhtml/vscode-extension/out/definitionProvider.js.map
generated
vendored
2
node_modules/@jqhtml/vscode-extension/out/definitionProvider.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
node_modules/@jqhtml/vscode-extension/package.json
generated
vendored
2
node_modules/@jqhtml/vscode-extension/package.json
generated
vendored
@@ -2,7 +2,7 @@
|
||||
"name": "@jqhtml/vscode-extension",
|
||||
"displayName": "JQHTML",
|
||||
"description": "Syntax highlighting and language support for JQHTML template files",
|
||||
"version": "2.2.137",
|
||||
"version": "2.2.142",
|
||||
"publisher": "jqhtml",
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
|
||||
4
node_modules/@jqhtml/webpack-loader/package.json
generated
vendored
4
node_modules/@jqhtml/webpack-loader/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@jqhtml/webpack-loader",
|
||||
"version": "2.2.137",
|
||||
"version": "2.2.142",
|
||||
"description": "Webpack loader for JQHTML templates",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
@@ -30,7 +30,7 @@
|
||||
"template"
|
||||
],
|
||||
"dependencies": {
|
||||
"@jqhtml/parser": "2.2.137",
|
||||
"@jqhtml/parser": "2.2.142",
|
||||
"@types/loader-utils": "^2.0.6",
|
||||
"@types/node": "^20.0.0",
|
||||
"@types/webpack": "^5.28.5",
|
||||
|
||||
Reference in New Issue
Block a user