@nlabs/lex 1.39.1 → 1.41.0

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.
Files changed (43) hide show
  1. package/.eslintrc +1 -0
  2. package/.vscode/settings.json +1 -1
  3. package/babel.config.json +13 -0
  4. package/dist/LexConfig.js +30 -26
  5. package/dist/commands/build.js +95 -49
  6. package/dist/commands/bulid.test.js +314 -5
  7. package/dist/commands/clean.js +4 -4
  8. package/dist/commands/clean.test.js +63 -0
  9. package/dist/commands/compile.js +27 -30
  10. package/dist/commands/compile.test.js +93 -0
  11. package/dist/commands/config.js +2 -2
  12. package/dist/commands/copy.js +1 -1
  13. package/dist/commands/create.js +4 -4
  14. package/dist/commands/dev.js +7 -7
  15. package/dist/commands/init.js +13 -13
  16. package/dist/commands/link.js +3 -3
  17. package/dist/commands/lint.js +50 -36
  18. package/dist/commands/migrate.js +4 -4
  19. package/dist/commands/publish.js +7 -7
  20. package/dist/commands/test.js +9 -9
  21. package/dist/commands/update.js +10 -10
  22. package/dist/commands/upgrade.js +7 -7
  23. package/dist/commands/versions.js +8 -9
  24. package/dist/commands/versions.test.js +49 -0
  25. package/dist/create/changelog.js +1 -1
  26. package/dist/lex.js +16 -16
  27. package/dist/lint.js +8 -0
  28. package/dist/utils/app.js +1 -1
  29. package/dist/utils/file.js +4 -4
  30. package/jest.config.cjs +55 -0
  31. package/jest.config.lex.js +27 -28
  32. package/jest.setup.ts +3 -0
  33. package/package.json +76 -71
  34. package/resolver.cjs +86 -0
  35. package/test/javascript.js +6 -0
  36. package/test/typescript.ts +6 -0
  37. package/tsconfig.build.json +1 -1
  38. package/tsconfig.json +1 -1
  39. package/tsconfig.template.json +5 -5
  40. package/webpack.config.js +78 -65
  41. package/dist/resolver.js +0 -70
  42. package/jest.config.js +0 -14
  43. package/jest.setup.js +0 -3
@@ -2,18 +2,18 @@
2
2
  "compilerOptions": {
3
3
  "allowJs": false,
4
4
  "allowSyntheticDefaultImports": true,
5
- "declaration": true,
5
+ "emitDeclarationOnly": true,
6
6
  "esModuleInterop": true,
7
7
  "inlineSourceMap": true,
8
8
  "jsx": "react-jsx",
9
9
  "lib": [
10
10
  "es6",
11
11
  "es7",
12
- "esnext",
12
+ "ESNext",
13
13
  "dom"
14
14
  ],
15
- "module": "commonjs",
16
- "moduleResolution": "node",
15
+ "module": "ESNext",
16
+ "moduleResolution": "Node",
17
17
  "noFallthroughCasesInSwitch": true,
18
18
  "noImplicitReturns": true,
19
19
  "noImplicitThis": true,
@@ -21,7 +21,7 @@
21
21
  "pretty": true,
22
22
  "removeComments": true,
23
23
  "skipLibCheck": true,
24
- "target": "es5",
24
+ "target": "ESNext",
25
25
  "types": [
26
26
  "jest",
27
27
  "node"
package/webpack.config.js CHANGED
@@ -2,28 +2,41 @@
2
2
  * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- const {StaticSitePlugin} = require('@nlabs/webpack-plugin-static-site');
6
- const CompressionWebpackPlugin = require('compression-webpack-plugin');
7
- const CopyWebpackPlugin = require('copy-webpack-plugin');
8
- const DotenvPlugin = require('dotenv-webpack');
9
- const {ESBuildMinifyPlugin} = require('esbuild-loader');
10
- const FaviconsWebpackPlugin = require('favicons-webpack-plugin');
11
- const fs = require('fs');
12
- const glob = require('glob');
13
- const HtmlWebPackPlugin = require('html-webpack-plugin');
14
- const isEmpty = require('lodash/isEmpty');
15
- const path = require('path');
16
- const SVGSpritemapPlugin = require('svg-spritemap-webpack-plugin');
17
- const webpack = require('webpack');
18
- const {BundleAnalyzerPlugin} = require('webpack-bundle-analyzer');
19
- const {merge} = require('webpack-merge');
20
- const {WebpackPluginServe} = require('webpack-plugin-serve');
5
+ import {StaticSitePlugin} from '@nlabs/webpack-plugin-static-site';
6
+ import autoprefixer from 'autoprefixer';
7
+ import CompressionWebpackPlugin from 'compression-webpack-plugin';
8
+ import CopyWebpackPlugin from 'copy-webpack-plugin';
9
+ import cssnano from 'cssnano';
10
+ import DotenvPlugin from 'dotenv-webpack';
11
+ import {EsbuildPlugin} from 'esbuild-loader';
12
+ import FaviconsWebpackPlugin from 'favicons-webpack-plugin';
13
+ import {existsSync} from 'fs';
14
+ import {sync as globSync} from 'glob';
15
+ import HtmlWebPackPlugin from 'html-webpack-plugin';
16
+ import isEmpty from 'lodash/isEmpty.js';
17
+ import {resolve as pathResolve} from 'path';
18
+ import postcssBrowserReporter from 'postcss-browser-reporter';
19
+ import postcssCustomProperties from 'postcss-custom-properties';
20
+ import postcssFlexbugsFixes from 'postcss-flexbugs-fixes';
21
+ import postcssFor from 'postcss-for';
22
+ import postcssImport from 'postcss-import';
23
+ import postcssNesting from 'postcss-nesting';
24
+ import postcssPercentage from 'postcss-percentage';
25
+ import postcssPresetEnv from 'postcss-preset-env';
26
+ import postcssUrl from 'postcss-url';
27
+ import SVGSpritemapPlugin from 'svg-spritemap-webpack-plugin';
28
+ import {URL} from 'url';
29
+ import {default as webpack} from 'webpack';
30
+ import {BundleAnalyzerPlugin} from 'webpack-bundle-analyzer';
31
+ import {merge} from 'webpack-merge';
32
+ import {WebpackPluginServe} from 'webpack-plugin-serve';
21
33
 
22
- const {getNodePath, relativeFilePath} = require('./dist/utils/file');
34
+ import {relativeFilePath, relativeNodePath} from './dist/utils/file.js';
23
35
 
24
36
  const {ProgressPlugin, ProvidePlugin} = webpack;
25
37
  const isProduction = process.env.NODE_ENV === 'production';
26
38
  const lexConfig = JSON.parse(process.env.LEX_CONFIG) || {};
39
+ const dirName = new URL('.', import.meta.url).pathname;
27
40
 
28
41
  const {
29
42
  isStatic,
@@ -47,7 +60,7 @@ const plugins = [
47
60
  dependencies: true,
48
61
  percentBy: null
49
62
  }),
50
- new DotenvPlugin({path: path.resolve(process.cwd(), '.env'), systemvars: false})
63
+ new DotenvPlugin({path: pathResolve(process.cwd(), '.env'), systemvars: false})
51
64
  ];
52
65
 
53
66
  const isWeb = (preset || targetEnvironment) === 'web';
@@ -58,7 +71,7 @@ if(isWeb) {
58
71
  new CompressionWebpackPlugin({algorithm: 'gzip'}),
59
72
  new ProvidePlugin({
60
73
  process: 'process/browser',
61
- React: path.resolve(__dirname, './node_modules/react')
74
+ React: pathResolve(dirName, './node_modules/react')
62
75
  })
63
76
  );
64
77
  }
@@ -73,7 +86,7 @@ const globOptions = {
73
86
 
74
87
  const svgPaths = `${sourceFullPath}/icons/**/**.svg`;
75
88
 
76
- if(glob.sync(svgPaths, globOptions).length) {
89
+ if(globSync(svgPaths, globOptions).length) {
77
90
  plugins.push(new SVGSpritemapPlugin(svgPaths, {
78
91
  input: {
79
92
  allowDuplicates: false
@@ -95,17 +108,17 @@ const imagePath = `${sourceFullPath}/images/`;
95
108
  const fontPath = `${sourceFullPath}/fonts/`;
96
109
  const docPath = `${sourceFullPath}/docs/`;
97
110
 
98
- if(fs.existsSync(imagePath)) {
111
+ if(existsSync(imagePath)) {
99
112
  staticPaths.push({from: imagePath, to: './images/'});
100
113
  watchIgnorePaths.push(imagePath);
101
114
  }
102
115
 
103
- if(fs.existsSync(fontPath)) {
116
+ if(existsSync(fontPath)) {
104
117
  staticPaths.push({from: fontPath, to: './fonts/'});
105
118
  watchIgnorePaths.push(fontPath);
106
119
  }
107
120
 
108
- if(fs.existsSync(docPath)) {
121
+ if(existsSync(docPath)) {
109
122
  staticPaths.push({from: docPath, to: './docs/'});
110
123
  }
111
124
 
@@ -113,7 +126,7 @@ if(staticPaths.length) {
113
126
  plugins.push(new CopyWebpackPlugin({patterns: staticPaths}));
114
127
  }
115
128
 
116
- if(fs.existsSync(`${sourceFullPath}/${lexConfig.entryHTML}`)) {
129
+ if(existsSync(`${sourceFullPath}/${lexConfig.entryHTML}`)) {
117
130
  plugins.push(new HtmlWebPackPlugin({
118
131
  filename: './index.html',
119
132
  minify: isProduction,
@@ -134,26 +147,26 @@ if(outputFile) {
134
147
  }
135
148
 
136
149
  // Loader paths
137
- const esbuildLoaderPath = relativeFilePath('node_modules/esbuild-loader', __dirname);
138
- const cssLoaderPath = relativeFilePath('node_modules/css-loader', __dirname);
139
- const fileLoaderPath = relativeFilePath('node_modules/file-loader', __dirname);
140
- const graphqlLoaderPath = relativeFilePath('node_modules/graphql-tag/loader', __dirname);
141
- const htmlLoaderPath = relativeFilePath('node_modules/html-loader', __dirname);
142
- const jsonLoaderPath = relativeFilePath('node_modules/json-loader', __dirname);
143
- const postcssLoaderPath = relativeFilePath('node_modules/postcss-loader', __dirname);
144
- const sourceMapLoaderPath = relativeFilePath('node_modules/source-map-loader', __dirname);
145
- const styleLoaderPath = relativeFilePath('node_modules/style-loader', __dirname);
146
- const webpackPath = relativeFilePath('node_modules/webpack', __dirname);
150
+ const esbuildLoaderPath = relativeNodePath('esbuild-loader', dirName);
151
+ const cssLoaderPath = relativeNodePath('css-loader', dirName);
152
+ const fileLoaderPath = relativeNodePath('file-loader', dirName);
153
+ const graphqlLoaderPath = relativeNodePath('graphql-tag/loader', dirName);
154
+ const htmlLoaderPath = relativeNodePath('html-loader', dirName);
155
+ const jsonLoaderPath = relativeNodePath('json-loader', dirName);
156
+ const postcssLoaderPath = relativeNodePath('postcss-loader', dirName);
157
+ const sourceMapLoaderPath = relativeNodePath('source-map-loader', dirName);
158
+ const styleLoaderPath = relativeNodePath('style-loader', dirName);
159
+ const webpackPath = relativeNodePath('webpack', dirName);
147
160
 
148
161
  // Aliases
149
162
  const aliasPaths = {
150
- '@nlabs/arkhamjs': relativeFilePath('node_modules/@nlabs/arkhamjs', process.cwd()),
151
- '@nlabs/arkhamjs-utils-react': relativeFilePath('node_modules/@nlabs/arkhamjs-utils-react', process.cwd()),
152
- 'core-js': getNodePath('core-js'),
153
- process: relativeFilePath('node_modules/process', process.cwd()),
154
- react: relativeFilePath('node_modules/react', process.cwd()),
155
- 'react-dom': relativeFilePath('node_modules/react-dom', process.cwd()),
156
- 'regenerator-runtime': getNodePath('regenerator-runtime')
163
+ '@nlabs/arkhamjs': relativeNodePath('@nlabs/arkhamjs', process.cwd()),
164
+ '@nlabs/arkhamjs-utils-react': relativeNodePath('@nlabs/arkhamjs-utils-react', process.cwd()),
165
+ 'core-js': relativeNodePath('core-js', dirName),
166
+ process: relativeNodePath('process', dirName),
167
+ react: relativeNodePath('react', process.cwd()),
168
+ 'react-dom': relativeNodePath('react-dom', process.cwd()),
169
+ 'regenerator-runtime': relativeNodePath('regenerator-runtime', dirName)
157
170
  };
158
171
  const aliasKeys = Object.keys(aliasPaths);
159
172
  const alias = aliasKeys.reduce((aliases, key) => {
@@ -165,7 +178,7 @@ const alias = aliasKeys.reduce((aliases, key) => {
165
178
  }, {});
166
179
 
167
180
  // Webpack config
168
- module.exports = (webpackEnv, webpackOptions) => {
181
+ export default (webpackEnv, webpackOptions) => {
169
182
  const {bundleAnalyzer, watch} = webpackOptions;
170
183
  const webpackConfig = {
171
184
  bail: true,
@@ -235,27 +248,27 @@ module.exports = (webpackEnv, webpackOptions) => {
235
248
  options: {
236
249
  postcssOptions: {
237
250
  plugins: [
238
- require(relativeFilePath('node_modules/postcss-import', __dirname))({addDependencyTo: webpack}),
239
- require(relativeFilePath('node_modules/postcss-url', __dirname)),
240
- require(relativeFilePath('node_modules/postcss-for', __dirname)),
241
- require(relativeFilePath('node_modules/postcss-percentage', __dirname))({
251
+ postcssImport({addDependencyTo: webpack}),
252
+ postcssUrl,
253
+ postcssFor,
254
+ postcssPercentage({
242
255
  floor: true,
243
256
  precision: 9,
244
257
  trimTrailingZero: true
245
258
  }),
246
- require(relativeFilePath('node_modules/postcss-custom-properties', __dirname))({
259
+ postcssCustomProperties({
247
260
  preserve: false,
248
261
  strict: false,
249
262
  warnings: false
250
263
  }),
251
- require(relativeFilePath('node_modules/autoprefixer', __dirname)),
252
- require(relativeFilePath('node_modules/postcss-nesting', __dirname)),
253
- require(relativeFilePath('node_modules/postcss-flexbugs-fixes', __dirname)),
254
- require(relativeFilePath('node_modules/postcss-preset-env', __dirname))({
264
+ autoprefixer,
265
+ postcssNesting,
266
+ postcssFlexbugsFixes,
267
+ postcssPresetEnv({
255
268
  stage: 0
256
269
  }),
257
- require(relativeFilePath('node_modules/cssnano', __dirname))({autoprefixer: false}),
258
- require(relativeFilePath('node_modules/postcss-browser-reporter', __dirname))
270
+ cssnano({autoprefixer: false}),
271
+ postcssBrowserReporter
259
272
  ]
260
273
  }
261
274
  }
@@ -291,7 +304,7 @@ module.exports = (webpackEnv, webpackOptions) => {
291
304
  },
292
305
  optimization: (isProduction && isWeb) ? {
293
306
  minimizer: [
294
- new ESBuildMinifyPlugin({
307
+ new EsbuildPlugin({
295
308
  css: true,
296
309
  target: targetEnvironment
297
310
  })
@@ -322,15 +335,15 @@ module.exports = (webpackEnv, webpackOptions) => {
322
335
  alias,
323
336
  extensions: ['*', '.mjs', '.js', '.ts', '.tsx', '.jsx', '.json', '.gql', '.graphql'],
324
337
  fallback: {
325
- assert: require.resolve('assert/'),
326
- crypto: require.resolve('crypto-browserify'),
327
- http: require.resolve('stream-http'),
328
- https: require.resolve('https-browserify'),
329
- os: require.resolve('os-browserify/browser'),
330
- path: require.resolve('path-browserify'),
331
- process: require.resolve('process/browser'),
332
- stream: require.resolve('stream-browserify'),
333
- util: require.resolve('util/')
338
+ assert: relativeNodePath('assert', dirName),
339
+ crypto: relativeNodePath('crypto-browserify', dirName),
340
+ http: relativeNodePath('stream-http', dirName),
341
+ https: relativeNodePath('https-browserify', dirName),
342
+ os: relativeNodePath('os-browserify/browser.js', dirName),
343
+ path: relativeNodePath('path-browserify', dirName),
344
+ process: relativeNodePath('process/browser.js', dirName),
345
+ stream: relativeNodePath('stream-browserify', dirName),
346
+ util: relativeNodePath('util', dirName)
334
347
  },
335
348
  mainFiles: ['index'],
336
349
  modules: [sourceFullPath, 'node_modules'],
@@ -348,7 +361,7 @@ module.exports = (webpackEnv, webpackOptions) => {
348
361
  webpack: webpackPath
349
362
  };
350
363
  webpackConfig.optimization = {minimize: false};
351
- webpackConfig.entry.wps = relativeFilePath('node_modules/webpack-plugin-serve/client.js', __dirname);
364
+ webpackConfig.entry.wps = relativeNodePath('webpack-plugin-serve/client.js', dirName);
352
365
  webpackConfig.stats = {errorDetails: true};
353
366
  webpackConfig.plugins.push(
354
367
  new WebpackPluginServe({
@@ -418,7 +431,7 @@ module.exports = (webpackEnv, webpackOptions) => {
418
431
  // Create site ico files
419
432
  const siteLogo = `${sourceFullPath}/images/logo.png`;
420
433
 
421
- if(fs.existsSync(siteLogo)) {
434
+ if(existsSync(siteLogo)) {
422
435
  plugins.push(new FaviconsWebpackPlugin({
423
436
  icons: {
424
437
  android: true,
package/dist/resolver.js DELETED
@@ -1,70 +0,0 @@
1
- import { existsSync } from "fs";
2
- import { extname as pathExtname, resolve as pathResolve } from "path";
3
- import resolveSync from "resolve/sync";
4
- import { fileURLToPath } from "url";
5
- const getFullPath = (basedir, name, extensions) => {
6
- let fileName = name;
7
- extensions.some((ext) => {
8
- if (fileName !== "..") {
9
- const fullPath = pathResolve(`${basedir}/${fileName}${ext}`);
10
- if (existsSync(fullPath)) {
11
- fileName = fullPath;
12
- return true;
13
- }
14
- }
15
- if (fileName !== "index") {
16
- const indexFile = pathResolve(`${basedir}/${fileName}/index${ext}`);
17
- if (existsSync(indexFile)) {
18
- fileName = indexFile;
19
- return true;
20
- }
21
- }
22
- return false;
23
- });
24
- return fileName;
25
- };
26
- const resolver = (value, options) => {
27
- let fileName = value;
28
- if (fileName === "") {
29
- return null;
30
- }
31
- const isSequencer = fileName.startsWith("jest-sequencer-");
32
- if (isSequencer) {
33
- fileName = fileName.replace("jest-sequencer-", "");
34
- }
35
- const { basedir, extensions = [".js", ".ts"] } = options;
36
- const existingExt = pathExtname(fileName) || "";
37
- const hasExtension = existingExt !== "" && extensions.includes(existingExt);
38
- const isAbsolute = fileName.indexOf("/") === 0;
39
- if (isAbsolute) {
40
- if (hasExtension) {
41
- return existsSync(fileName) ? fileName : null;
42
- }
43
- return getFullPath(fileName, "index", extensions);
44
- }
45
- if (fileName === "..") {
46
- return getFullPath(basedir, "..", extensions);
47
- }
48
- const hasBase = fileName.indexOf("./") >= 0 || fileName.indexOf("../") >= 0;
49
- if (hasBase) {
50
- if (hasExtension) {
51
- return pathResolve(`${basedir}/${fileName}`);
52
- }
53
- return getFullPath(basedir, fileName, extensions);
54
- }
55
- try {
56
- const dirName = fileURLToPath(new URL(".", import.meta.url));
57
- return resolveSync(fileName, { basedir: `${dirName}/../`, extensions });
58
- } catch (error) {
59
- try {
60
- return resolveSync(fileName, { basedir: process.cwd(), extensions });
61
- } catch (error2) {
62
- return null;
63
- }
64
- }
65
- };
66
- var resolver_default = resolver;
67
- export {
68
- resolver_default as default
69
- };
70
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3Jlc29sdmVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtleGlzdHNTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2V4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHJlc29sdmVTeW5jIGZyb20gJ3Jlc29sdmUvc3luYyc7XG5pbXBvcnQge2ZpbGVVUkxUb1BhdGh9IGZyb20gJ3VybCc7XG5cbmNvbnN0IGdldEZ1bGxQYXRoID0gKGJhc2VkaXI6IHN0cmluZywgbmFtZTogc3RyaW5nLCBleHRlbnNpb25zOiBzdHJpbmdbXSk6IHN0cmluZyA9PiB7XG4gIGxldCBmaWxlTmFtZSA9IG5hbWU7XG5cbiAgZXh0ZW5zaW9ucy5zb21lKChleHQpID0+IHtcbiAgICBpZihmaWxlTmFtZSAhPT0gJy4uJykge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBwYXRoUmVzb2x2ZShgJHtiYXNlZGlyfS8ke2ZpbGVOYW1lfSR7ZXh0fWApO1xuXG4gICAgICBpZihleGlzdHNTeW5jKGZ1bGxQYXRoKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZ1bGxQYXRoO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZihmaWxlTmFtZSAhPT0gJ2luZGV4Jykge1xuICAgICAgY29uc3QgaW5kZXhGaWxlID0gcGF0aFJlc29sdmUoYCR7YmFzZWRpcn0vJHtmaWxlTmFtZX0vaW5kZXgke2V4dH1gKTtcblxuICAgICAgaWYoZXhpc3RzU3luYyhpbmRleEZpbGUpKSB7XG4gICAgICAgIGZpbGVOYW1lID0gaW5kZXhGaWxlO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuXG4gIHJldHVybiBmaWxlTmFtZTtcbn07XG5cbmNvbnN0IHJlc29sdmVyID0gKHZhbHVlLCBvcHRpb25zKSA9PiB7XG4gIGxldCBmaWxlTmFtZSA9IHZhbHVlO1xuXG4gIGlmKGZpbGVOYW1lID09PSAnJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaXNTZXF1ZW5jZXIgPSBmaWxlTmFtZS5zdGFydHNXaXRoKCdqZXN0LXNlcXVlbmNlci0nKTtcblxuICBpZihpc1NlcXVlbmNlcikge1xuICAgIGZpbGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZSgnamVzdC1zZXF1ZW5jZXItJywgJycpO1xuICB9XG5cbiAgY29uc3Qge2Jhc2VkaXIsIGV4dGVuc2lvbnMgPSBbJy5qcycsICcudHMnXX0gPSBvcHRpb25zO1xuICBjb25zdCBleGlzdGluZ0V4dCA9IHBhdGhFeHRuYW1lKGZpbGVOYW1lKSB8fCAnJztcbiAgY29uc3QgaGFzRXh0ZW5zaW9uID0gZXhpc3RpbmdFeHQgIT09ICcnICYmIGV4dGVuc2lvbnMuaW5jbHVkZXMoZXhpc3RpbmdFeHQpO1xuICBjb25zdCBpc0Fic29sdXRlID0gZmlsZU5hbWUuaW5kZXhPZignLycpID09PSAwO1xuXG4gIGlmKGlzQWJzb2x1dGUpIHtcbiAgICBpZihoYXNFeHRlbnNpb24pIHtcbiAgICAgIHJldHVybiBleGlzdHNTeW5jKGZpbGVOYW1lKSA/IGZpbGVOYW1lIDogbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0RnVsbFBhdGgoZmlsZU5hbWUsICdpbmRleCcsIGV4dGVuc2lvbnMpO1xuICB9XG5cbiAgaWYoZmlsZU5hbWUgPT09ICcuLicpIHtcbiAgICByZXR1cm4gZ2V0RnVsbFBhdGgoYmFzZWRpciwgJy4uJywgZXh0ZW5zaW9ucyk7XG4gIH1cblxuICBjb25zdCBoYXNCYXNlID0gZmlsZU5hbWUuaW5kZXhPZignLi8nKSA+PSAwIHx8IGZpbGVOYW1lLmluZGV4T2YoJy4uLycpID49IDA7XG5cbiAgaWYoaGFzQmFzZSkge1xuICAgIGlmKGhhc0V4dGVuc2lvbikge1xuICAgICAgcmV0dXJuIHBhdGhSZXNvbHZlKGAke2Jhc2VkaXJ9LyR7ZmlsZU5hbWV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldEZ1bGxQYXRoKGJhc2VkaXIsIGZpbGVOYW1lLCBleHRlbnNpb25zKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGlyTmFtZSA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkpO1xuICAgIHJldHVybiByZXNvbHZlU3luYyhmaWxlTmFtZSwge2Jhc2VkaXI6IGAke2Rpck5hbWV9Ly4uL2AsIGV4dGVuc2lvbnN9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVN5bmMoZmlsZU5hbWUsIHtiYXNlZGlyOiBwcm9jZXNzLmN3ZCgpLCBleHRlbnNpb25zfSk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCByZXNvbHZlcjsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLGtCQUFpQjtBQUN6QixTQUFRLFdBQVcsYUFBYSxXQUFXLG1CQUFrQjtBQUM3RCxPQUFPLGlCQUFpQjtBQUN4QixTQUFRLHFCQUFvQjtBQUU1QixNQUFNLGNBQWMsQ0FBQyxTQUFpQixNQUFjLGVBQWlDO0FBQ25GLE1BQUksV0FBVztBQUVmLGFBQVcsS0FBSyxDQUFDLFFBQVE7QUFDdkIsUUFBRyxhQUFhLE1BQU07QUFDcEIsWUFBTSxXQUFXLFlBQVksR0FBRyxXQUFXLFdBQVcsS0FBSztBQUUzRCxVQUFHLFdBQVcsUUFBUSxHQUFHO0FBQ3ZCLG1CQUFXO0FBQ1gsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBRUEsUUFBRyxhQUFhLFNBQVM7QUFDdkIsWUFBTSxZQUFZLFlBQVksR0FBRyxXQUFXLGlCQUFpQixLQUFLO0FBRWxFLFVBQUcsV0FBVyxTQUFTLEdBQUc7QUFDeEIsbUJBQVc7QUFDWCxlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFFQSxXQUFPO0FBQUEsRUFDVCxDQUFDO0FBRUQsU0FBTztBQUNUO0FBRUEsTUFBTSxXQUFXLENBQUMsT0FBTyxZQUFZO0FBQ25DLE1BQUksV0FBVztBQUVmLE1BQUcsYUFBYSxJQUFJO0FBQ2xCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxjQUFjLFNBQVMsV0FBVyxpQkFBaUI7QUFFekQsTUFBRyxhQUFhO0FBQ2QsZUFBVyxTQUFTLFFBQVEsbUJBQW1CLEVBQUU7QUFBQSxFQUNuRDtBQUVBLFFBQU0sRUFBQyxTQUFTLGFBQWEsQ0FBQyxPQUFPLEtBQUssRUFBQyxJQUFJO0FBQy9DLFFBQU0sY0FBYyxZQUFZLFFBQVEsS0FBSztBQUM3QyxRQUFNLGVBQWUsZ0JBQWdCLE1BQU0sV0FBVyxTQUFTLFdBQVc7QUFDMUUsUUFBTSxhQUFhLFNBQVMsUUFBUSxHQUFHLE1BQU07QUFFN0MsTUFBRyxZQUFZO0FBQ2IsUUFBRyxjQUFjO0FBQ2YsYUFBTyxXQUFXLFFBQVEsSUFBSSxXQUFXO0FBQUEsSUFDM0M7QUFFQSxXQUFPLFlBQVksVUFBVSxTQUFTLFVBQVU7QUFBQSxFQUNsRDtBQUVBLE1BQUcsYUFBYSxNQUFNO0FBQ3BCLFdBQU8sWUFBWSxTQUFTLE1BQU0sVUFBVTtBQUFBLEVBQzlDO0FBRUEsUUFBTSxVQUFVLFNBQVMsUUFBUSxJQUFJLEtBQUssS0FBSyxTQUFTLFFBQVEsS0FBSyxLQUFLO0FBRTFFLE1BQUcsU0FBUztBQUNWLFFBQUcsY0FBYztBQUNmLGFBQU8sWUFBWSxHQUFHLFdBQVcsVUFBVTtBQUFBLElBQzdDO0FBRUEsV0FBTyxZQUFZLFNBQVMsVUFBVSxVQUFVO0FBQUEsRUFDbEQ7QUFFQSxNQUFJO0FBQ0YsVUFBTSxVQUFVLGNBQWMsSUFBSSxJQUFJLEtBQUssWUFBWSxHQUFHLENBQUM7QUFDM0QsV0FBTyxZQUFZLFVBQVUsRUFBQyxTQUFTLEdBQUcsZUFBZSxXQUFVLENBQUM7QUFBQSxFQUN0RSxTQUFRLE9BQU47QUFDQSxRQUFJO0FBQ0YsYUFBTyxZQUFZLFVBQVUsRUFBQyxTQUFTLFFBQVEsSUFBSSxHQUFHLFdBQVUsQ0FBQztBQUFBLElBQ25FLFNBQVFBLFFBQU47QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLElBQU8sbUJBQVE7IiwKICAibmFtZXMiOiBbImVycm9yIl0KfQo=
package/jest.config.js DELETED
@@ -1,14 +0,0 @@
1
- /**
2
- * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
- */
5
- const base = require('../../jest.config.base');
6
- const pack = require('./package.json');
7
-
8
- module.exports = {
9
- ...base,
10
- displayName: pack.name,
11
- rootDir: '../..',
12
- setupFiles: ['<rootDir>/packages/lex/jest.setup.js'],
13
- testMatch: ['<rootDir>/packages/lex/**/*.test.ts']
14
- };
package/jest.setup.js DELETED
@@ -1,3 +0,0 @@
1
- import execaMock from '@nlabs/execa-mock';
2
-
3
- jest.mock('execa', execaMock);