Skip to content

Commit 2228e5b

Browse files
HCK-9607: browser support (#39)
* chore: declared `lodash` as external resource * feat: allowed FE features in browser * chore: added `postinstall` hook
1 parent 8578231 commit 2228e5b

File tree

8 files changed

+4683
-4507
lines changed

8 files changed

+4683
-4507
lines changed

api/fe.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const { generateScript } = require('../forward_engineering/generateScript');
2+
const { generateContainerScript } = require('../forward_engineering/generateContainerScript');
3+
4+
module.exports = {
5+
generateScript,
6+
generateContainerScript,
7+
};

esbuild.package.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const fs = require('fs');
22
const path = require('path');
33
const esbuild = require('esbuild');
44
const { clean } = require('esbuild-plugin-clean');
5+
const { copy } = require('esbuild-plugin-copy');
56
const { copyFolderFiles, addReleaseFlag } = require('@hackolade/hck-esbuild-plugins-pack');
67
const { EXCLUDED_EXTENSIONS, EXCLUDED_FILES, DEFAULT_RELEASE_FOLDER_PATH } = require('./buildConstants');
78

@@ -11,6 +12,7 @@ const RELEASE_FOLDER_PATH = path.join(DEFAULT_RELEASE_FOLDER_PATH, `${packageDat
1112
esbuild
1213
.build({
1314
entryPoints: [
15+
path.resolve(__dirname, 'api', 'fe.js'),
1416
path.resolve(__dirname, 'forward_engineering', 'api.js'),
1517
path.resolve(__dirname, 'reverse_engineering', 'api.js'),
1618
],
@@ -21,10 +23,17 @@ esbuild
2123
outdir: RELEASE_FOLDER_PATH,
2224
minify: true,
2325
logLevel: 'info',
26+
external: ['lodash'],
2427
plugins: [
2528
clean({
2629
patterns: [DEFAULT_RELEASE_FOLDER_PATH],
2730
}),
31+
copy({
32+
assets: {
33+
from: [path.join('node_modules', 'lodash', '**', '*')],
34+
to: [path.join('node_modules', 'lodash')],
35+
},
36+
}),
2837
copyFolderFiles({
2938
fromPath: __dirname,
3039
targetFolderPath: RELEASE_FOLDER_PATH,

forward_engineering/api.js

Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,12 @@
1+
const { generateScript } = require('./generateScript');
2+
const { generateContainerScript } = require('./generateContainerScript');
13
const applyToInstanceHelper = require('./helpers/applyToInstanceHelper');
2-
const scriptHelper = require('./helpers/scriptHelper');
34

45
module.exports = {
5-
generateContainerScript(data, logger, callback, app) {
6-
try {
7-
const _ = app.require('lodash');
8-
const insertSamplesOption =
9-
_.get(data, 'options.additionalOptions', []).find(option => option.id === 'INCLUDE_SAMPLES') || {};
10-
const withSamples = data.options.origin !== 'ui';
11-
let script = scriptHelper.getScript(data);
12-
const samples = scriptHelper.insertSamples(data);
13-
script += withSamples ? '\n' + samples : '';
6+
generateScript,
147

15-
if (withSamples || !insertSamplesOption.value) {
16-
return callback(null, script);
17-
}
8+
generateContainerScript,
189

19-
return callback(null, [
20-
{ title: 'MongoDB script', script },
21-
{
22-
title: 'Sample data',
23-
script: samples,
24-
},
25-
]);
26-
} catch (e) {
27-
const error = { message: e.message, stack: e.stack };
28-
logger.log('error', error, 'CosmosDB w\\ Mongo API forward engineering error');
29-
callback(error);
30-
}
31-
},
32-
generateScript(data, logger, callback, app) {
33-
try {
34-
const script = scriptHelper.getScript(data);
35-
const samples = scriptHelper.insertSample({
36-
containerData: data.containerData,
37-
entityData: data.entityData,
38-
sample: data.jsonData,
39-
});
40-
41-
return callback(null, [script, samples].join('\n\n'));
42-
} catch (e) {
43-
const error = { message: e.message, stack: e.stack };
44-
logger.log('error', error, 'CosmosDB w\\ Mongo API forward engineering error');
45-
callback(error);
46-
}
47-
},
4810
applyToInstance: applyToInstanceHelper.applyToInstance,
4911

5012
testConnection: applyToInstanceHelper.testConnection,
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
const _ = require('lodash');
2+
const { getScript, insertSamples } = require('./helpers/scriptHelper');
3+
4+
const generateContainerScript = (data, logger, callback, app) => {
5+
try {
6+
const insertSamplesOption =
7+
_.get(data, 'options.additionalOptions', []).find(option => option.id === 'INCLUDE_SAMPLES') || {};
8+
const withSamples = data.options.origin !== 'ui';
9+
let script = getScript(data);
10+
const samples = insertSamples(data);
11+
script += withSamples ? '\n' + samples : '';
12+
13+
if (withSamples || !insertSamplesOption.value) {
14+
return callback(null, script);
15+
}
16+
17+
return callback(null, [
18+
{ title: 'MongoDB script', script },
19+
{
20+
title: 'Sample data',
21+
script: samples,
22+
},
23+
]);
24+
} catch (e) {
25+
const error = { message: e.message, stack: e.stack };
26+
logger.log('error', error, 'CosmosDB w\\ Mongo API forward engineering error');
27+
callback(error);
28+
}
29+
};
30+
31+
module.exports = {
32+
generateContainerScript,
33+
};

forward_engineering/generateScript.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const { getScript, insertSample } = require('./helpers/scriptHelper');
2+
3+
const generateScript = (data, logger, callback, app) => {
4+
try {
5+
const script = getScript(data);
6+
const samples = insertSample({
7+
containerData: data.containerData,
8+
entityData: data.entityData,
9+
sample: data.jsonData,
10+
});
11+
12+
return callback(null, [script, samples].join('\n\n'));
13+
} catch (e) {
14+
const error = { message: e.message, stack: e.stack };
15+
logger.log('error', error, 'CosmosDB w\\ Mongo API forward engineering error');
16+
callback(error);
17+
}
18+
};
19+
20+
module.exports = {
21+
generateScript,
22+
};

0 commit comments

Comments
 (0)