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.
399 lines
13 KiB
JavaScript
399 lines
13 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "buildDynamicImport", {
|
|
enumerable: true,
|
|
get: function () {
|
|
return _dynamicImport.buildDynamicImport;
|
|
}
|
|
});
|
|
exports.buildNamespaceInitStatements = buildNamespaceInitStatements;
|
|
exports.ensureStatementsHoisted = ensureStatementsHoisted;
|
|
Object.defineProperty(exports, "getModuleName", {
|
|
enumerable: true,
|
|
get: function () {
|
|
return _getModuleName.default;
|
|
}
|
|
});
|
|
Object.defineProperty(exports, "hasExports", {
|
|
enumerable: true,
|
|
get: function () {
|
|
return _normalizeAndLoadMetadata.hasExports;
|
|
}
|
|
});
|
|
Object.defineProperty(exports, "isModule", {
|
|
enumerable: true,
|
|
get: function () {
|
|
return _helperModuleImports.isModule;
|
|
}
|
|
});
|
|
Object.defineProperty(exports, "isSideEffectImport", {
|
|
enumerable: true,
|
|
get: function () {
|
|
return _normalizeAndLoadMetadata.isSideEffectImport;
|
|
}
|
|
});
|
|
exports.rewriteModuleStatementsAndPrepareHeader = rewriteModuleStatementsAndPrepareHeader;
|
|
Object.defineProperty(exports, "rewriteThis", {
|
|
enumerable: true,
|
|
get: function () {
|
|
return _rewriteThis.default;
|
|
}
|
|
});
|
|
exports.wrapInterop = wrapInterop;
|
|
var _assert = require("assert");
|
|
var _core = require("@babel/core");
|
|
var _helperModuleImports = require("@babel/helper-module-imports");
|
|
var _rewriteThis = require("./rewrite-this.js");
|
|
var _rewriteLiveReferences = require("./rewrite-live-references.js");
|
|
var _normalizeAndLoadMetadata = require("./normalize-and-load-metadata.js");
|
|
var Lazy = require("./lazy-modules.js");
|
|
var _dynamicImport = require("./dynamic-import.js");
|
|
var _getModuleName = require("./get-module-name.js");
|
|
{
|
|
exports.getDynamicImportSource = require("./dynamic-import").getDynamicImportSource;
|
|
}
|
|
function rewriteModuleStatementsAndPrepareHeader(path, {
|
|
exportName,
|
|
strict,
|
|
allowTopLevelThis,
|
|
strictMode,
|
|
noInterop,
|
|
importInterop = noInterop ? "none" : "babel",
|
|
lazy,
|
|
getWrapperPayload = Lazy.toGetWrapperPayload(lazy != null ? lazy : false),
|
|
wrapReference = Lazy.wrapReference,
|
|
esNamespaceOnly,
|
|
filename,
|
|
constantReexports = arguments[1].loose,
|
|
enumerableModuleMeta = arguments[1].loose,
|
|
noIncompleteNsImportDetection
|
|
}) {
|
|
(0, _normalizeAndLoadMetadata.validateImportInteropOption)(importInterop);
|
|
_assert((0, _helperModuleImports.isModule)(path), "Cannot process module statements in a script");
|
|
path.node.sourceType = "script";
|
|
const meta = (0, _normalizeAndLoadMetadata.default)(path, exportName, {
|
|
importInterop,
|
|
initializeReexports: constantReexports,
|
|
getWrapperPayload,
|
|
esNamespaceOnly,
|
|
filename
|
|
});
|
|
if (!allowTopLevelThis) {
|
|
(0, _rewriteThis.default)(path);
|
|
}
|
|
(0, _rewriteLiveReferences.default)(path, meta, wrapReference);
|
|
if (strictMode !== false) {
|
|
const hasStrict = path.node.directives.some(directive => {
|
|
return directive.value.value === "use strict";
|
|
});
|
|
if (!hasStrict) {
|
|
path.unshiftContainer("directives", _core.types.directive(_core.types.directiveLiteral("use strict")));
|
|
}
|
|
}
|
|
const headers = [];
|
|
if ((0, _normalizeAndLoadMetadata.hasExports)(meta) && !strict) {
|
|
headers.push(buildESModuleHeader(meta, enumerableModuleMeta));
|
|
}
|
|
const nameList = buildExportNameListDeclaration(path, meta);
|
|
if (nameList) {
|
|
meta.exportNameListName = nameList.name;
|
|
headers.push(nameList.statement);
|
|
}
|
|
headers.push(...buildExportInitializationStatements(path, meta, wrapReference, constantReexports, noIncompleteNsImportDetection));
|
|
return {
|
|
meta,
|
|
headers
|
|
};
|
|
}
|
|
function ensureStatementsHoisted(statements) {
|
|
statements.forEach(header => {
|
|
header._blockHoist = 3;
|
|
});
|
|
}
|
|
function wrapInterop(programPath, expr, type) {
|
|
if (type === "none") {
|
|
return null;
|
|
}
|
|
if (type === "node-namespace") {
|
|
return _core.types.callExpression(programPath.hub.addHelper("interopRequireWildcard"), [expr, _core.types.booleanLiteral(true)]);
|
|
} else if (type === "node-default") {
|
|
return null;
|
|
}
|
|
let helper;
|
|
if (type === "default") {
|
|
helper = "interopRequireDefault";
|
|
} else if (type === "namespace") {
|
|
helper = "interopRequireWildcard";
|
|
} else {
|
|
throw new Error(`Unknown interop: ${type}`);
|
|
}
|
|
return _core.types.callExpression(programPath.hub.addHelper(helper), [expr]);
|
|
}
|
|
function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports = false, wrapReference = Lazy.wrapReference) {
|
|
var _wrapReference;
|
|
const statements = [];
|
|
const srcNamespaceId = _core.types.identifier(sourceMetadata.name);
|
|
for (const localName of sourceMetadata.importsNamespace) {
|
|
if (localName === sourceMetadata.name) continue;
|
|
statements.push(_core.template.statement`var NAME = SOURCE;`({
|
|
NAME: localName,
|
|
SOURCE: _core.types.cloneNode(srcNamespaceId)
|
|
}));
|
|
}
|
|
const srcNamespace = (_wrapReference = wrapReference(srcNamespaceId, sourceMetadata.wrap)) != null ? _wrapReference : srcNamespaceId;
|
|
if (constantReexports) {
|
|
statements.push(...buildReexportsFromMeta(metadata, sourceMetadata, true, wrapReference));
|
|
}
|
|
for (const exportName of sourceMetadata.reexportNamespace) {
|
|
statements.push((!_core.types.isIdentifier(srcNamespace) ? _core.template.statement`
|
|
Object.defineProperty(EXPORTS, "NAME", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return NAMESPACE;
|
|
}
|
|
});
|
|
` : _core.template.statement`EXPORTS.NAME = NAMESPACE;`)({
|
|
EXPORTS: metadata.exportName,
|
|
NAME: exportName,
|
|
NAMESPACE: _core.types.cloneNode(srcNamespace)
|
|
}));
|
|
}
|
|
if (sourceMetadata.reexportAll) {
|
|
const statement = buildNamespaceReexport(metadata, _core.types.cloneNode(srcNamespace), constantReexports);
|
|
statement.loc = sourceMetadata.reexportAll.loc;
|
|
statements.push(statement);
|
|
}
|
|
return statements;
|
|
}
|
|
const ReexportTemplate = {
|
|
constant: ({
|
|
exports,
|
|
exportName,
|
|
namespaceImport
|
|
}) => _core.template.statement.ast`
|
|
${exports}.${exportName} = ${namespaceImport};
|
|
`,
|
|
constantComputed: ({
|
|
exports,
|
|
exportName,
|
|
namespaceImport
|
|
}) => _core.template.statement.ast`
|
|
${exports}["${exportName}"] = ${namespaceImport};
|
|
`,
|
|
spec: ({
|
|
exports,
|
|
exportName,
|
|
namespaceImport
|
|
}) => _core.template.statement.ast`
|
|
Object.defineProperty(${exports}, "${exportName}", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return ${namespaceImport};
|
|
},
|
|
});
|
|
`
|
|
};
|
|
function buildReexportsFromMeta(meta, metadata, constantReexports, wrapReference) {
|
|
var _wrapReference2;
|
|
let namespace = _core.types.identifier(metadata.name);
|
|
namespace = (_wrapReference2 = wrapReference(namespace, metadata.wrap)) != null ? _wrapReference2 : namespace;
|
|
const {
|
|
stringSpecifiers
|
|
} = meta;
|
|
return Array.from(metadata.reexports, ([exportName, importName]) => {
|
|
let namespaceImport = _core.types.cloneNode(namespace);
|
|
if (importName === "default" && metadata.interop === "node-default") {} else if (stringSpecifiers.has(importName)) {
|
|
namespaceImport = _core.types.memberExpression(namespaceImport, _core.types.stringLiteral(importName), true);
|
|
} else {
|
|
namespaceImport = _core.types.memberExpression(namespaceImport, _core.types.identifier(importName));
|
|
}
|
|
const astNodes = {
|
|
exports: meta.exportName,
|
|
exportName,
|
|
namespaceImport
|
|
};
|
|
if (constantReexports || _core.types.isIdentifier(namespaceImport)) {
|
|
if (stringSpecifiers.has(exportName)) {
|
|
return ReexportTemplate.constantComputed(astNodes);
|
|
} else {
|
|
return ReexportTemplate.constant(astNodes);
|
|
}
|
|
} else {
|
|
return ReexportTemplate.spec(astNodes);
|
|
}
|
|
});
|
|
}
|
|
function buildESModuleHeader(metadata, enumerableModuleMeta = false) {
|
|
return (enumerableModuleMeta ? _core.template.statement`
|
|
EXPORTS.__esModule = true;
|
|
` : _core.template.statement`
|
|
Object.defineProperty(EXPORTS, "__esModule", {
|
|
value: true,
|
|
});
|
|
`)({
|
|
EXPORTS: metadata.exportName
|
|
});
|
|
}
|
|
function buildNamespaceReexport(metadata, namespace, constantReexports) {
|
|
return (constantReexports ? _core.template.statement`
|
|
Object.keys(NAMESPACE).forEach(function(key) {
|
|
if (key === "default" || key === "__esModule") return;
|
|
VERIFY_NAME_LIST;
|
|
if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;
|
|
|
|
EXPORTS[key] = NAMESPACE[key];
|
|
});
|
|
` : _core.template.statement`
|
|
Object.keys(NAMESPACE).forEach(function(key) {
|
|
if (key === "default" || key === "__esModule") return;
|
|
VERIFY_NAME_LIST;
|
|
if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;
|
|
|
|
Object.defineProperty(EXPORTS, key, {
|
|
enumerable: true,
|
|
get: function() {
|
|
return NAMESPACE[key];
|
|
},
|
|
});
|
|
});
|
|
`)({
|
|
NAMESPACE: namespace,
|
|
EXPORTS: metadata.exportName,
|
|
VERIFY_NAME_LIST: metadata.exportNameListName ? (0, _core.template)`
|
|
if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return;
|
|
`({
|
|
EXPORTS_LIST: metadata.exportNameListName
|
|
}) : null
|
|
});
|
|
}
|
|
function buildExportNameListDeclaration(programPath, metadata) {
|
|
const exportedVars = Object.create(null);
|
|
for (const data of metadata.local.values()) {
|
|
for (const name of data.names) {
|
|
exportedVars[name] = true;
|
|
}
|
|
}
|
|
let hasReexport = false;
|
|
for (const data of metadata.source.values()) {
|
|
for (const exportName of data.reexports.keys()) {
|
|
exportedVars[exportName] = true;
|
|
}
|
|
for (const exportName of data.reexportNamespace) {
|
|
exportedVars[exportName] = true;
|
|
}
|
|
hasReexport = hasReexport || !!data.reexportAll;
|
|
}
|
|
if (!hasReexport || Object.keys(exportedVars).length === 0) return null;
|
|
const name = programPath.scope.generateUidIdentifier("exportNames");
|
|
delete exportedVars.default;
|
|
return {
|
|
name: name.name,
|
|
statement: _core.types.variableDeclaration("var", [_core.types.variableDeclarator(name, _core.types.valueToNode(exportedVars))])
|
|
};
|
|
}
|
|
function buildExportInitializationStatements(programPath, metadata, wrapReference, constantReexports = false, noIncompleteNsImportDetection = false) {
|
|
const initStatements = [];
|
|
for (const [localName, data] of metadata.local) {
|
|
if (data.kind === "import") {} else if (data.kind === "hoisted") {
|
|
initStatements.push([data.names[0], buildInitStatement(metadata, data.names, _core.types.identifier(localName))]);
|
|
} else if (!noIncompleteNsImportDetection) {
|
|
for (const exportName of data.names) {
|
|
initStatements.push([exportName, null]);
|
|
}
|
|
}
|
|
}
|
|
for (const data of metadata.source.values()) {
|
|
if (!constantReexports) {
|
|
const reexportsStatements = buildReexportsFromMeta(metadata, data, false, wrapReference);
|
|
const reexports = [...data.reexports.keys()];
|
|
for (let i = 0; i < reexportsStatements.length; i++) {
|
|
initStatements.push([reexports[i], reexportsStatements[i]]);
|
|
}
|
|
}
|
|
if (!noIncompleteNsImportDetection) {
|
|
for (const exportName of data.reexportNamespace) {
|
|
initStatements.push([exportName, null]);
|
|
}
|
|
}
|
|
}
|
|
initStatements.sort(([a], [b]) => {
|
|
if (a < b) return -1;
|
|
if (b < a) return 1;
|
|
return 0;
|
|
});
|
|
const results = [];
|
|
if (noIncompleteNsImportDetection) {
|
|
for (const [, initStatement] of initStatements) {
|
|
results.push(initStatement);
|
|
}
|
|
} else {
|
|
const chunkSize = 100;
|
|
for (let i = 0; i < initStatements.length; i += chunkSize) {
|
|
let uninitializedExportNames = [];
|
|
for (let j = 0; j < chunkSize && i + j < initStatements.length; j++) {
|
|
const [exportName, initStatement] = initStatements[i + j];
|
|
if (initStatement !== null) {
|
|
if (uninitializedExportNames.length > 0) {
|
|
results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
|
|
uninitializedExportNames = [];
|
|
}
|
|
results.push(initStatement);
|
|
} else {
|
|
uninitializedExportNames.push(exportName);
|
|
}
|
|
}
|
|
if (uninitializedExportNames.length > 0) {
|
|
results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
|
|
}
|
|
}
|
|
}
|
|
return results;
|
|
}
|
|
const InitTemplate = {
|
|
computed: ({
|
|
exports,
|
|
name,
|
|
value
|
|
}) => _core.template.expression.ast`${exports}["${name}"] = ${value}`,
|
|
default: ({
|
|
exports,
|
|
name,
|
|
value
|
|
}) => _core.template.expression.ast`${exports}.${name} = ${value}`,
|
|
define: ({
|
|
exports,
|
|
name,
|
|
value
|
|
}) => _core.template.expression.ast`
|
|
Object.defineProperty(${exports}, "${name}", {
|
|
enumerable: true,
|
|
value: void 0,
|
|
writable: true
|
|
})["${name}"] = ${value}`
|
|
};
|
|
function buildInitStatement(metadata, exportNames, initExpr) {
|
|
const {
|
|
stringSpecifiers,
|
|
exportName: exports
|
|
} = metadata;
|
|
return _core.types.expressionStatement(exportNames.reduce((value, name) => {
|
|
const params = {
|
|
exports,
|
|
name,
|
|
value
|
|
};
|
|
if (name === "__proto__") {
|
|
return InitTemplate.define(params);
|
|
}
|
|
if (stringSpecifiers.has(name)) {
|
|
return InitTemplate.computed(params);
|
|
}
|
|
return InitTemplate.default(params);
|
|
}, initExpr));
|
|
}
|
|
|
|
//# sourceMappingURL=index.js.map
|