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.
127 lines
3.6 KiB
JavaScript
127 lines
3.6 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = void 0;
|
|
exports.get = get;
|
|
exports.getDependencies = getDependencies;
|
|
exports.isInternal = isInternal;
|
|
exports.list = void 0;
|
|
exports.minVersion = minVersion;
|
|
var _t = require("@babel/types");
|
|
var _helpersGenerated = require("./helpers-generated.js");
|
|
const {
|
|
cloneNode,
|
|
identifier
|
|
} = _t;
|
|
function deep(obj, path, value) {
|
|
try {
|
|
const parts = path.split(".");
|
|
let last = parts.shift();
|
|
while (parts.length > 0) {
|
|
obj = obj[last];
|
|
last = parts.shift();
|
|
}
|
|
if (arguments.length > 2) {
|
|
obj[last] = value;
|
|
} else {
|
|
return obj[last];
|
|
}
|
|
} catch (e) {
|
|
e.message += ` (when accessing ${path})`;
|
|
throw e;
|
|
}
|
|
}
|
|
function permuteHelperAST(ast, metadata, bindingName, localBindings, getDependency, adjustAst) {
|
|
const {
|
|
locals,
|
|
dependencies,
|
|
exportBindingAssignments,
|
|
exportName
|
|
} = metadata;
|
|
const bindings = new Set(localBindings || []);
|
|
if (bindingName) bindings.add(bindingName);
|
|
for (const [name, paths] of (Object.entries || (o => Object.keys(o).map(k => [k, o[k]])))(locals)) {
|
|
let newName = name;
|
|
if (bindingName && name === exportName) {
|
|
newName = bindingName;
|
|
} else {
|
|
while (bindings.has(newName)) newName = "_" + newName;
|
|
}
|
|
if (newName !== name) {
|
|
for (const path of paths) {
|
|
deep(ast, path, identifier(newName));
|
|
}
|
|
}
|
|
}
|
|
for (const [name, paths] of (Object.entries || (o => Object.keys(o).map(k => [k, o[k]])))(dependencies)) {
|
|
const ref = typeof getDependency === "function" && getDependency(name) || identifier(name);
|
|
for (const path of paths) {
|
|
deep(ast, path, cloneNode(ref));
|
|
}
|
|
}
|
|
adjustAst == null || adjustAst(ast, exportName, map => {
|
|
exportBindingAssignments.forEach(p => deep(ast, p, map(deep(ast, p))));
|
|
});
|
|
}
|
|
const helperData = Object.create(null);
|
|
function loadHelper(name) {
|
|
if (!helperData[name]) {
|
|
const helper = _helpersGenerated.default[name];
|
|
if (!helper) {
|
|
throw Object.assign(new ReferenceError(`Unknown helper ${name}`), {
|
|
code: "BABEL_HELPER_UNKNOWN",
|
|
helper: name
|
|
});
|
|
}
|
|
helperData[name] = {
|
|
minVersion: helper.minVersion,
|
|
build(getDependency, bindingName, localBindings, adjustAst) {
|
|
const ast = helper.ast();
|
|
permuteHelperAST(ast, helper.metadata, bindingName, localBindings, getDependency, adjustAst);
|
|
return {
|
|
nodes: ast.body,
|
|
globals: helper.metadata.globals
|
|
};
|
|
},
|
|
getDependencies() {
|
|
return Object.keys(helper.metadata.dependencies);
|
|
}
|
|
};
|
|
}
|
|
return helperData[name];
|
|
}
|
|
function get(name, getDependency, bindingName, localBindings, adjustAst) {
|
|
{
|
|
if (typeof bindingName === "object") {
|
|
const id = bindingName;
|
|
if ((id == null ? void 0 : id.type) === "Identifier") {
|
|
bindingName = id.name;
|
|
} else {
|
|
bindingName = undefined;
|
|
}
|
|
}
|
|
}
|
|
return loadHelper(name).build(getDependency, bindingName, localBindings, adjustAst);
|
|
}
|
|
function minVersion(name) {
|
|
return loadHelper(name).minVersion;
|
|
}
|
|
function getDependencies(name) {
|
|
return loadHelper(name).getDependencies();
|
|
}
|
|
function isInternal(name) {
|
|
var _helpers$name;
|
|
return (_helpers$name = _helpersGenerated.default[name]) == null ? void 0 : _helpers$name.metadata.internal;
|
|
}
|
|
{
|
|
exports.ensure = name => {
|
|
loadHelper(name);
|
|
};
|
|
}
|
|
const list = exports.list = Object.keys(_helpersGenerated.default).map(name => name.replace(/^_/, ""));
|
|
var _default = exports.default = get;
|
|
|
|
//# sourceMappingURL=index.js.map
|