lucid-package 0.0.69 → 0.0.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/dataconnector.d.ts +1 -0
- package/src/dataconnector.js +25 -0
- package/src/editorextension.js +14 -29
- package/src/index.js +53 -77
- package/src/installationutil.d.ts +1 -0
- package/src/installationutil.js +32 -0
- package/src/package.js +24 -1
- package/src/packagemanifest.d.ts +2 -2
- package/templates/dataconnector/actions/README.md +1 -0
- package/templates/dataconnector/debug-server.ts +7 -0
- package/templates/dataconnector/index.ts +3 -0
- package/templates/dataconnector/package.json +16 -0
- package/templates/dataconnector/tsconfig.json +36 -0
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createDataConnector(name: string, isInternalTesting: boolean, skipSDKDependency: boolean): Promise<void>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createDataConnector = void 0;
|
|
4
|
+
const filesystemutil_1 = require("./filesystemutil");
|
|
5
|
+
const installationutil_1 = require("./installationutil");
|
|
6
|
+
const package_1 = require("./package");
|
|
7
|
+
async function createDataConnector(name, isInternalTesting, skipSDKDependency) {
|
|
8
|
+
console.log('Creating data connector in dataconnectors/' + name);
|
|
9
|
+
(0, filesystemutil_1.copyFolderRecursiveSync)(__dirname + '/../templates/dataconnector', 'dataconnectors/' + name);
|
|
10
|
+
await (0, package_1.modifyManifest)((manifest) => {
|
|
11
|
+
if (!manifest['dataConnectors']) {
|
|
12
|
+
manifest['dataConnectors'] = [];
|
|
13
|
+
}
|
|
14
|
+
manifest['dataConnectors'].push({
|
|
15
|
+
'name': name,
|
|
16
|
+
'oauthProviderName': '',
|
|
17
|
+
'callbackBaseUrl': '',
|
|
18
|
+
'dataActions': {},
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
console.log(`Installing dependencies`);
|
|
22
|
+
process.chdir('dataconnectors/' + name);
|
|
23
|
+
(0, installationutil_1.installDependenciesIfNeeded)(isInternalTesting, skipSDKDependency);
|
|
24
|
+
}
|
|
25
|
+
exports.createDataConnector = createDataConnector;
|
package/src/editorextension.js
CHANGED
|
@@ -5,40 +5,15 @@ const child_process = require("child_process");
|
|
|
5
5
|
const express = require("express");
|
|
6
6
|
const oldFs = require("fs");
|
|
7
7
|
const fs = require("fs/promises");
|
|
8
|
-
const path = require("path");
|
|
9
8
|
const cors_1 = require("./cors");
|
|
10
9
|
const filesystemutil_1 = require("./filesystemutil");
|
|
10
|
+
const installationutil_1 = require("./installationutil");
|
|
11
11
|
const package_1 = require("./package");
|
|
12
12
|
const packagemanifest_1 = require("./packagemanifest");
|
|
13
13
|
const shapelibrary_1 = require("./shapelibrary");
|
|
14
14
|
const shellutil_1 = require("./shellutil");
|
|
15
15
|
const supportedproduct_1 = require("./supportedproduct");
|
|
16
16
|
const WebPackCLI = require('webpack-cli');
|
|
17
|
-
function linkInternalTestingSDK() {
|
|
18
|
-
if (!oldFs.existsSync('node_modules/lucid-extension-sdk')) {
|
|
19
|
-
const cwd = process.cwd();
|
|
20
|
-
const rootSearch = 'lucid/main/extensibility/';
|
|
21
|
-
const pos = cwd.indexOf(rootSearch);
|
|
22
|
-
const sdkPath = cwd.substr(0, pos + rootSearch.length) + 'lucid-extension-sdk';
|
|
23
|
-
const relativePath = path.relative(cwd, sdkPath);
|
|
24
|
-
console.log('Using symlink for dependency on SDK for internal testing');
|
|
25
|
-
console.log((0, shellutil_1.execSyncLoggingOutputOnError)(`npm install --silent --save ${relativePath}`).toString());
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function installDependenciesIfNeeded(isInternalTesting, skipSDKDependency = false) {
|
|
29
|
-
if (!oldFs.existsSync('node_modules')) {
|
|
30
|
-
console.log((0, shellutil_1.execSyncLoggingOutputOnError)('npm install --silent').toString());
|
|
31
|
-
}
|
|
32
|
-
if (!oldFs.existsSync('node_modules/lucid-extension-sdk') && !skipSDKDependency) {
|
|
33
|
-
if (isInternalTesting) {
|
|
34
|
-
linkInternalTestingSDK();
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
console.log('Adding dependency on SDK');
|
|
38
|
-
console.log((0, shellutil_1.execSyncLoggingOutputOnError)('npm install --save lucid-extension-sdk').toString());
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
17
|
async function createEditorExtension(name, isInternalTesting, skipSDKDependency) {
|
|
43
18
|
console.log('Creating empty editor extension in editorextensions/' + name);
|
|
44
19
|
(0, filesystemutil_1.copyFolderRecursiveSync)(__dirname + '/../templates/editorextension', 'editorextensions/' + name);
|
|
@@ -56,12 +31,12 @@ async function createEditorExtension(name, isInternalTesting, skipSDKDependency)
|
|
|
56
31
|
});
|
|
57
32
|
console.log(`Installing dependencies`);
|
|
58
33
|
process.chdir('editorextensions/' + name);
|
|
59
|
-
installDependenciesIfNeeded(isInternalTesting, skipSDKDependency);
|
|
34
|
+
(0, installationutil_1.installDependenciesIfNeeded)(isInternalTesting, skipSDKDependency);
|
|
60
35
|
}
|
|
61
36
|
exports.createEditorExtension = createEditorExtension;
|
|
62
37
|
async function buildEditorExtension(name, isInternalTesting, quiet = false) {
|
|
63
38
|
process.chdir('editorextensions/' + (await getExtensionCodeDirectoryName(name)));
|
|
64
|
-
installDependenciesIfNeeded(isInternalTesting);
|
|
39
|
+
(0, installationutil_1.installDependenciesIfNeeded)(isInternalTesting);
|
|
65
40
|
const cli = new WebPackCLI();
|
|
66
41
|
await cli.run(['node', 'webpack', '--mode', 'production', ...(quiet ? ['--stats', 'errors-only'] : [])]);
|
|
67
42
|
}
|
|
@@ -79,7 +54,7 @@ exports.updateExtensionSDK = updateExtensionSDK;
|
|
|
79
54
|
*/
|
|
80
55
|
async function watchEditorExtension(name, isInternalTesting, quiet = false) {
|
|
81
56
|
process.chdir('editorextensions/' + (await getExtensionCodeDirectoryName(name)));
|
|
82
|
-
installDependenciesIfNeeded(isInternalTesting);
|
|
57
|
+
(0, installationutil_1.installDependenciesIfNeeded)(isInternalTesting);
|
|
83
58
|
const cli = new WebPackCLI();
|
|
84
59
|
cli.run(['node', 'webpack', '--watch', ...(quiet ? ['--stats', 'errors-only'] : [])]);
|
|
85
60
|
}
|
|
@@ -179,6 +154,16 @@ async function debugEditorExtension(extensionNames, quiet = false, pickAnyPort =
|
|
|
179
154
|
const manifest = await (0, packagemanifest_1.readManifest)('local');
|
|
180
155
|
res.send(JSON.stringify(manifest));
|
|
181
156
|
});
|
|
157
|
+
// iframes (modals and panels) loaded in dev mode from a string (legacy style) will redirect here to get the
|
|
158
|
+
// iframe bootstrap code, so that any requests for static assets from localhost won't fail due to mixed
|
|
159
|
+
// HTTPS and HTTP. But to avoid duplicating the modal-frame.html source here, we just send it in the query
|
|
160
|
+
// string as part of the redirect.
|
|
161
|
+
app.get('/resources/modal-frame.html', async (req, res) => {
|
|
162
|
+
res.set({ 'Content-Type': 'text/html' });
|
|
163
|
+
res.send(req.query['source']);
|
|
164
|
+
});
|
|
165
|
+
// Static resources in the "public" directory of the package
|
|
166
|
+
app.use('/resources', express.static('public'));
|
|
182
167
|
const listen = () => {
|
|
183
168
|
app.listen(port, 'localhost', () => {
|
|
184
169
|
console.log('Listening at http://localhost:' + port + '/extension.js');
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const argparse_1 = require("argparse");
|
|
4
|
+
const dataconnector_1 = require("./dataconnector");
|
|
4
5
|
const editorextension_1 = require("./editorextension");
|
|
5
6
|
const package_1 = require("./package");
|
|
6
7
|
const shapelibrary_1 = require("./shapelibrary");
|
|
@@ -101,6 +102,15 @@ class LucidSuiteExtensionCLI {
|
|
|
101
102
|
action: 'store_true',
|
|
102
103
|
help: 'Lock the aspect ratio of all images',
|
|
103
104
|
});
|
|
105
|
+
const createDataConnectorParser = subparsers.add_parser('create-data-connector', {
|
|
106
|
+
help: 'Create a new data-connector as part of the current package',
|
|
107
|
+
});
|
|
108
|
+
createDataConnectorParser.add_argument('name');
|
|
109
|
+
createDataConnectorParser.add_argument('--skip-sdk', {
|
|
110
|
+
default: false,
|
|
111
|
+
action: 'store_true',
|
|
112
|
+
help: argparse_1.SUPPRESS,
|
|
113
|
+
});
|
|
104
114
|
const parsed = parser.parse_args(args);
|
|
105
115
|
//For internal development, creating and operating on a "test" package via bazel
|
|
106
116
|
let isInternalTesting = !!parsed['chdir'];
|
|
@@ -124,87 +134,53 @@ class LucidSuiteExtensionCLI {
|
|
|
124
134
|
case 'create':
|
|
125
135
|
(0, package_1.createEmptyPackage)(parsed['name']);
|
|
126
136
|
break;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
console.error('Not currently in a Lucid extension package folder');
|
|
133
|
-
}
|
|
134
|
-
break;
|
|
135
|
-
case 'update-sdk':
|
|
136
|
-
if ((0, package_1.currentlyInPackage)()) {
|
|
137
|
-
await (0, package_1.updateAllExtensionSDK)();
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
console.error('Not currently in a Lucid extension package folder');
|
|
141
|
-
}
|
|
142
|
-
break;
|
|
143
|
-
case 'create-editor-extension':
|
|
144
|
-
if ((0, package_1.currentlyInPackage)()) {
|
|
145
|
-
await (0, editorextension_1.createEditorExtension)(parsed['name'], isInternalTesting, parsed['skip_sdk']);
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
console.error('Not currently in a Lucid extension package folder');
|
|
149
|
-
}
|
|
150
|
-
break;
|
|
151
|
-
case 'build-editor-extension':
|
|
152
|
-
if ((0, package_1.currentlyInPackage)()) {
|
|
153
|
-
await (0, editorextension_1.buildEditorExtension)(parsed['name'], isInternalTesting, parsed['quiet']);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
console.error('Not currently in a Lucid extension package folder');
|
|
157
|
-
}
|
|
158
|
-
break;
|
|
159
|
-
case 'create-shape-library':
|
|
160
|
-
if ((0, package_1.currentlyInPackage)()) {
|
|
161
|
-
await (0, shapelibrary_1.createEmptyShapeLibrary)(parsed['name']);
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
console.error('Not currently in a Lucid extension package folder');
|
|
165
|
-
}
|
|
166
|
-
break;
|
|
167
|
-
case 'create-image-shape-library':
|
|
168
|
-
if ((0, package_1.currentlyInPackage)()) {
|
|
169
|
-
const width = Number(parsed['width']) ?? undefined;
|
|
170
|
-
const height = Number(parsed['height']) ?? undefined;
|
|
171
|
-
const config = {
|
|
172
|
-
width: width,
|
|
173
|
-
height: height,
|
|
174
|
-
lockAspect: parsed['aspectRatio'],
|
|
175
|
-
};
|
|
176
|
-
await (0, shapelibrary_1.createImageShapeLibrary)(parsed['name'], parsed['path'], config);
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
console.error('Not currently in a Lucid extension package folder');
|
|
180
|
-
}
|
|
181
|
-
break;
|
|
182
|
-
case 'test-shape-libraries':
|
|
183
|
-
if ((0, package_1.currentlyInPackage)()) {
|
|
184
|
-
await (0, shapelibrary_1.debugShapeLibraries)();
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
console.error('Not currently in a Lucid extension package folder');
|
|
188
|
-
}
|
|
189
|
-
break;
|
|
190
|
-
case 'test-editor-extension':
|
|
191
|
-
if ((0, package_1.currentlyInPackage)()) {
|
|
192
|
-
await (0, editorextension_1.debugEditorExtension)(parsed['name'], parsed['quiet'], parsed['anyport']);
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
137
|
+
default:
|
|
138
|
+
// All the following commands can only be executed inside a Lucid extension package folder
|
|
139
|
+
if (!(0, package_1.currentlyInPackage)()) {
|
|
195
140
|
console.error('Not currently in a Lucid extension package folder');
|
|
196
141
|
}
|
|
197
|
-
break;
|
|
198
|
-
case 'watch-editor-extension':
|
|
199
|
-
if ((0, package_1.currentlyInPackage)()) {
|
|
200
|
-
await (0, editorextension_1.watchEditorExtension)(parsed['name'], isInternalTesting, parsed['quiet']);
|
|
201
|
-
}
|
|
202
142
|
else {
|
|
203
|
-
|
|
143
|
+
switch (parsed['command']) {
|
|
144
|
+
case 'bundle':
|
|
145
|
+
await (0, package_1.writePackage)(parsed['quiet'], parsed['env']);
|
|
146
|
+
case 'update-sdk':
|
|
147
|
+
await (0, package_1.updateAllExtensionSDK)();
|
|
148
|
+
break;
|
|
149
|
+
case 'create-editor-extension':
|
|
150
|
+
await (0, editorextension_1.createEditorExtension)(parsed['name'], isInternalTesting, parsed['skip_sdk']);
|
|
151
|
+
break;
|
|
152
|
+
case 'build-editor-extension':
|
|
153
|
+
await (0, editorextension_1.buildEditorExtension)(parsed['name'], isInternalTesting, parsed['quiet']);
|
|
154
|
+
break;
|
|
155
|
+
case 'create-shape-library':
|
|
156
|
+
await (0, shapelibrary_1.createEmptyShapeLibrary)(parsed['name']);
|
|
157
|
+
break;
|
|
158
|
+
case 'create-image-shape-library':
|
|
159
|
+
const width = Number(parsed['width']) ?? undefined;
|
|
160
|
+
const height = Number(parsed['height']) ?? undefined;
|
|
161
|
+
const config = {
|
|
162
|
+
width: width,
|
|
163
|
+
height: height,
|
|
164
|
+
lockAspect: parsed['aspectRatio'],
|
|
165
|
+
};
|
|
166
|
+
await (0, shapelibrary_1.createImageShapeLibrary)(parsed['name'], parsed['path'], config);
|
|
167
|
+
break;
|
|
168
|
+
case 'create-data-connector':
|
|
169
|
+
await (0, dataconnector_1.createDataConnector)(parsed['name'], isInternalTesting, parsed['skip_sdk']);
|
|
170
|
+
break;
|
|
171
|
+
case 'test-shape-libraries':
|
|
172
|
+
await (0, shapelibrary_1.debugShapeLibraries)();
|
|
173
|
+
break;
|
|
174
|
+
case 'test-editor-extension':
|
|
175
|
+
await (0, editorextension_1.debugEditorExtension)(parsed['name'], parsed['quiet'], parsed['anyport']);
|
|
176
|
+
break;
|
|
177
|
+
case 'watch-editor-extension':
|
|
178
|
+
await (0, editorextension_1.watchEditorExtension)(parsed['name'], isInternalTesting, parsed['quiet']);
|
|
179
|
+
break;
|
|
180
|
+
default:
|
|
181
|
+
parser.print_help();
|
|
182
|
+
}
|
|
204
183
|
}
|
|
205
|
-
break;
|
|
206
|
-
default:
|
|
207
|
-
parser.print_help();
|
|
208
184
|
}
|
|
209
185
|
}
|
|
210
186
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function installDependenciesIfNeeded(isInternalTesting: boolean, skipSDKDependency?: boolean): void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.installDependenciesIfNeeded = void 0;
|
|
4
|
+
const oldFs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const shellutil_1 = require("./shellutil");
|
|
7
|
+
function installDependenciesIfNeeded(isInternalTesting, skipSDKDependency = false) {
|
|
8
|
+
if (!oldFs.existsSync('node_modules')) {
|
|
9
|
+
console.log((0, shellutil_1.execSyncLoggingOutputOnError)('npm install --silent').toString());
|
|
10
|
+
}
|
|
11
|
+
if (!oldFs.existsSync('node_modules/lucid-extension-sdk') && !skipSDKDependency) {
|
|
12
|
+
if (isInternalTesting) {
|
|
13
|
+
linkInternalTestingSDK();
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
console.log('Adding dependency on SDK');
|
|
17
|
+
console.log((0, shellutil_1.execSyncLoggingOutputOnError)('npm install --save lucid-extension-sdk').toString());
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.installDependenciesIfNeeded = installDependenciesIfNeeded;
|
|
22
|
+
function linkInternalTestingSDK() {
|
|
23
|
+
if (!oldFs.existsSync('node_modules/lucid-extension-sdk')) {
|
|
24
|
+
const cwd = process.cwd();
|
|
25
|
+
const rootSearch = 'lucid/main/extensibility/';
|
|
26
|
+
const pos = cwd.indexOf(rootSearch);
|
|
27
|
+
const sdkPath = cwd.substr(0, pos + rootSearch.length) + 'lucid-extension-sdk';
|
|
28
|
+
const relativePath = path.relative(cwd, sdkPath);
|
|
29
|
+
console.log('Using symlink for dependency on SDK for internal testing');
|
|
30
|
+
console.log((0, shellutil_1.execSyncLoggingOutputOnError)(`npm install --silent --save ${relativePath}`).toString());
|
|
31
|
+
}
|
|
32
|
+
}
|
package/src/package.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.writePackage = exports.updateAllExtensionSDK = exports.modifyManifest =
|
|
|
4
4
|
const fsOld = require("fs");
|
|
5
5
|
const fs = require("fs/promises");
|
|
6
6
|
const JSZip = require("jszip");
|
|
7
|
+
const path = require("path");
|
|
7
8
|
const lucid_extension_sdk_1 = require("lucid-extension-sdk");
|
|
8
9
|
const editorextension_1 = require("./editorextension");
|
|
9
10
|
const filesystemutil_1 = require("./filesystemutil");
|
|
@@ -88,10 +89,32 @@ async function writePackage(quiet = false, manifestOverrideEnv) {
|
|
|
88
89
|
}
|
|
89
90
|
zip.file(library['lcszPath'], await fs.readFile(library['lcszPath']));
|
|
90
91
|
}
|
|
92
|
+
//Add any static resources
|
|
93
|
+
const checkDirForResources = async (directory) => {
|
|
94
|
+
if (!fsOld.existsSync(directory)) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
for (const fileName of await fs.readdir(directory)) {
|
|
98
|
+
const filePath = path.join(directory, fileName);
|
|
99
|
+
const stat = await fs.stat(filePath);
|
|
100
|
+
if (stat.isFile()) {
|
|
101
|
+
console.log('Adding resource file: ', filePath);
|
|
102
|
+
zip.file(filePath, await fs.readFile(filePath));
|
|
103
|
+
}
|
|
104
|
+
else if (stat.isDirectory()) {
|
|
105
|
+
await checkDirForResources(filePath);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
await checkDirForResources('public');
|
|
91
110
|
//Add the manifest itself
|
|
92
111
|
zip.file('manifest.json', JSON.stringify(manifest, undefined, 2));
|
|
93
112
|
//Write out the zip file
|
|
94
|
-
const zipBytes = await zip.generateAsync({
|
|
113
|
+
const zipBytes = await zip.generateAsync({
|
|
114
|
+
type: 'uint8array',
|
|
115
|
+
compression: 'DEFLATE',
|
|
116
|
+
compressionOptions: { level: 9 },
|
|
117
|
+
});
|
|
95
118
|
console.log('Writing file package.zip');
|
|
96
119
|
const fileName = `package${manifestOverrideEnv ? `-${manifestOverrideEnv}` : ''}.zip`;
|
|
97
120
|
await fs.writeFile(fileName, zipBytes);
|
package/src/packagemanifest.d.ts
CHANGED
|
@@ -36,8 +36,8 @@ export declare type PackageManifest = {
|
|
|
36
36
|
'dataConnectors'?: {
|
|
37
37
|
'name': string;
|
|
38
38
|
'oauthProviderName': string;
|
|
39
|
-
'
|
|
40
|
-
'dataActions': string
|
|
39
|
+
'callbackBaseUrl': string;
|
|
40
|
+
'dataActions': Record<string, string>;
|
|
41
41
|
}[];
|
|
42
42
|
'settings'?: {
|
|
43
43
|
'name': string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This directory will contain actions performed by the data-connector
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as crypto from 'crypto';
|
|
2
|
+
import * as express from 'express';
|
|
3
|
+
import {DataConnectorClient} from 'lucid-extension-sdk';
|
|
4
|
+
import {makeDataConnector} from './index';
|
|
5
|
+
|
|
6
|
+
const dataConnector = makeDataConnector(new DataConnectorClient({crypto, Buffer}));
|
|
7
|
+
dataConnector.runDebugServer({express});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"devDependencies": {
|
|
3
|
+
"@types/express": "^4.17.13",
|
|
4
|
+
"@types/node": "^16.11.11",
|
|
5
|
+
"nodemon": "^2.0.19",
|
|
6
|
+
"ts-node": "^10.9.1",
|
|
7
|
+
"typescript": "^4.9.5"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"axios": "^0.27.2",
|
|
11
|
+
"express": "^4.18.1"
|
|
12
|
+
},
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=14.0.0"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"declaration": true,
|
|
4
|
+
"emitDecoratorMetadata": true,
|
|
5
|
+
"experimentalDecorators": true,
|
|
6
|
+
"forceConsistentCasingInFileNames": true,
|
|
7
|
+
"module": "commonjs",
|
|
8
|
+
"moduleResolution": "node",
|
|
9
|
+
"newLine": "lf",
|
|
10
|
+
"noEmitOnError": false,
|
|
11
|
+
"noImplicitAny": true,
|
|
12
|
+
"noImplicitReturns": true,
|
|
13
|
+
"noImplicitThis": true,
|
|
14
|
+
"noUnusedLocals": false,
|
|
15
|
+
"pretty": true,
|
|
16
|
+
"removeComments": false,
|
|
17
|
+
"skipLibCheck": true,
|
|
18
|
+
"sourceMap": false,
|
|
19
|
+
"strictBindCallApply": true,
|
|
20
|
+
"strictFunctionTypes": true,
|
|
21
|
+
"strictNullChecks": true,
|
|
22
|
+
"strictPropertyInitialization": true,
|
|
23
|
+
"target": "ES2017",
|
|
24
|
+
"types": ["node"],
|
|
25
|
+
"lib": [
|
|
26
|
+
"es5",
|
|
27
|
+
"es6",
|
|
28
|
+
"ES2016.Array.Include",
|
|
29
|
+
"ES2017.String",
|
|
30
|
+
"ES2018.Promise",
|
|
31
|
+
"ES2017.Object",
|
|
32
|
+
"esnext.asynciterable"
|
|
33
|
+
],
|
|
34
|
+
"outDir": "bin"
|
|
35
|
+
}
|
|
36
|
+
}
|