forked from FINAKON/HelpProject
1. Initial Commit - a boiler plate code and POC to realize the concept of context
sensitive help
2. Frontend code written in ReactJS
3. Backend code written in Java, Spring Boot Framework
4. Frontend Start:
pre-requisites : node, npm
npm run dev ==> to start the frontend vite server
5. Backend Start:
pre-requisites : java, mvn
mvn spring-boot:run ==> to start the backend server
6. Visit http://localhost:5173/ for basic demo of help, press F1 in textboxes
7. Visit http://localhost:5173/editor and enter "admin123" to add/modify texts.
Happy Coding !!!
Thank you,
Bhargava.
150 lines
4.2 KiB
JavaScript
150 lines
4.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports._getTypeAnnotation = _getTypeAnnotation;
|
|
exports.baseTypeStrictlyMatches = baseTypeStrictlyMatches;
|
|
exports.couldBeBaseType = couldBeBaseType;
|
|
exports.getTypeAnnotation = getTypeAnnotation;
|
|
exports.isBaseType = isBaseType;
|
|
exports.isGenericType = isGenericType;
|
|
var inferers = require("./inferers.js");
|
|
var _t = require("@babel/types");
|
|
const {
|
|
anyTypeAnnotation,
|
|
isAnyTypeAnnotation,
|
|
isArrayTypeAnnotation,
|
|
isBooleanTypeAnnotation,
|
|
isEmptyTypeAnnotation,
|
|
isFlowBaseAnnotation,
|
|
isGenericTypeAnnotation,
|
|
isIdentifier,
|
|
isMixedTypeAnnotation,
|
|
isNumberTypeAnnotation,
|
|
isStringTypeAnnotation,
|
|
isTSArrayType,
|
|
isTSTypeAnnotation,
|
|
isTSTypeReference,
|
|
isTupleTypeAnnotation,
|
|
isTypeAnnotation,
|
|
isUnionTypeAnnotation,
|
|
isVoidTypeAnnotation,
|
|
stringTypeAnnotation,
|
|
voidTypeAnnotation
|
|
} = _t;
|
|
function getTypeAnnotation() {
|
|
let type = this.getData("typeAnnotation");
|
|
if (type != null) {
|
|
return type;
|
|
}
|
|
type = _getTypeAnnotation.call(this) || anyTypeAnnotation();
|
|
if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {
|
|
type = type.typeAnnotation;
|
|
}
|
|
this.setData("typeAnnotation", type);
|
|
return type;
|
|
}
|
|
const typeAnnotationInferringNodes = new WeakSet();
|
|
function _getTypeAnnotation() {
|
|
const node = this.node;
|
|
if (!node) {
|
|
if (this.key === "init" && this.parentPath.isVariableDeclarator()) {
|
|
const declar = this.parentPath.parentPath;
|
|
const declarParent = declar.parentPath;
|
|
if (declar.key === "left" && declarParent.isForInStatement()) {
|
|
return stringTypeAnnotation();
|
|
}
|
|
if (declar.key === "left" && declarParent.isForOfStatement()) {
|
|
return anyTypeAnnotation();
|
|
}
|
|
return voidTypeAnnotation();
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
if (node.typeAnnotation) {
|
|
return node.typeAnnotation;
|
|
}
|
|
if (typeAnnotationInferringNodes.has(node)) {
|
|
return;
|
|
}
|
|
typeAnnotationInferringNodes.add(node);
|
|
try {
|
|
var _inferer;
|
|
let inferer = inferers[node.type];
|
|
if (inferer) {
|
|
return inferer.call(this, node);
|
|
}
|
|
inferer = inferers[this.parentPath.type];
|
|
if ((_inferer = inferer) != null && _inferer.validParent) {
|
|
return this.parentPath.getTypeAnnotation();
|
|
}
|
|
} finally {
|
|
typeAnnotationInferringNodes.delete(node);
|
|
}
|
|
}
|
|
function isBaseType(baseName, soft) {
|
|
return _isBaseType(baseName, this.getTypeAnnotation(), soft);
|
|
}
|
|
function _isBaseType(baseName, type, soft) {
|
|
if (baseName === "string") {
|
|
return isStringTypeAnnotation(type);
|
|
} else if (baseName === "number") {
|
|
return isNumberTypeAnnotation(type);
|
|
} else if (baseName === "boolean") {
|
|
return isBooleanTypeAnnotation(type);
|
|
} else if (baseName === "any") {
|
|
return isAnyTypeAnnotation(type);
|
|
} else if (baseName === "mixed") {
|
|
return isMixedTypeAnnotation(type);
|
|
} else if (baseName === "empty") {
|
|
return isEmptyTypeAnnotation(type);
|
|
} else if (baseName === "void") {
|
|
return isVoidTypeAnnotation(type);
|
|
} else {
|
|
if (soft) {
|
|
return false;
|
|
} else {
|
|
throw new Error(`Unknown base type ${baseName}`);
|
|
}
|
|
}
|
|
}
|
|
function couldBeBaseType(name) {
|
|
const type = this.getTypeAnnotation();
|
|
if (isAnyTypeAnnotation(type)) return true;
|
|
if (isUnionTypeAnnotation(type)) {
|
|
for (const type2 of type.types) {
|
|
if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
} else {
|
|
return _isBaseType(name, type, true);
|
|
}
|
|
}
|
|
function baseTypeStrictlyMatches(rightArg) {
|
|
const left = this.getTypeAnnotation();
|
|
const right = rightArg.getTypeAnnotation();
|
|
if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {
|
|
return right.type === left.type;
|
|
}
|
|
return false;
|
|
}
|
|
function isGenericType(genericName) {
|
|
const type = this.getTypeAnnotation();
|
|
if (genericName === "Array") {
|
|
if (isTSArrayType(type) || isArrayTypeAnnotation(type) || isTupleTypeAnnotation(type)) {
|
|
return true;
|
|
}
|
|
}
|
|
return isGenericTypeAnnotation(type) && isIdentifier(type.id, {
|
|
name: genericName
|
|
}) || isTSTypeReference(type) && isIdentifier(type.typeName, {
|
|
name: genericName
|
|
});
|
|
}
|
|
|
|
//# sourceMappingURL=index.js.map
|