@nlabs/lex 1.48.4 → 1.48.6

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 (67) hide show
  1. package/.vscode/settings.json +1 -1
  2. package/README.md +293 -22
  3. package/__mocks__/compare-versions.js +3 -0
  4. package/__mocks__/fileMock.js +1 -0
  5. package/__mocks__/latest-version.js +1 -0
  6. package/__mocks__/react-markdown.js +12 -0
  7. package/babel.config.json +7 -1
  8. package/dist/Button.stories.d.ts +19 -0
  9. package/dist/LexConfig.d.ts +84 -0
  10. package/dist/LexConfig.js +1 -4
  11. package/dist/commands/ai/ai.d.ts +17 -0
  12. package/dist/commands/ai/index.d.ts +8 -0
  13. package/dist/commands/build/build.d.ts +18 -0
  14. package/dist/commands/clean/clean.d.ts +7 -0
  15. package/dist/commands/compile/compile.d.ts +2 -0
  16. package/dist/commands/config/config.d.ts +7 -0
  17. package/dist/commands/config/config.js +2 -2
  18. package/dist/commands/copy/copy.d.ts +6 -0
  19. package/dist/commands/create/create.d.ts +8 -0
  20. package/dist/commands/dev/dev.d.ts +11 -0
  21. package/dist/commands/init/init.d.ts +9 -0
  22. package/dist/commands/link/link.d.ts +6 -0
  23. package/dist/commands/lint/autofix.d.ts +2 -0
  24. package/dist/commands/lint/lint.d.ts +39 -0
  25. package/dist/commands/migrate/migrate.d.ts +7 -0
  26. package/dist/commands/publish/publish.d.ts +12 -0
  27. package/dist/commands/storybook/storybook.d.ts +13 -0
  28. package/dist/commands/storybook/storybook.js +3 -5
  29. package/dist/commands/test/test.d.ts +50 -0
  30. package/dist/commands/test/test.js +75 -11
  31. package/dist/commands/update/update.d.ts +9 -0
  32. package/dist/commands/upgrade/upgrade.d.ts +7 -0
  33. package/dist/commands/versions/versions.d.ts +13 -0
  34. package/dist/create/changelog.d.ts +6 -0
  35. package/dist/index.d.ts +33 -0
  36. package/dist/index.js +2 -1
  37. package/dist/lex.d.ts +2 -0
  38. package/dist/test-react/index.d.ts +6 -0
  39. package/dist/test-react/index.js +84 -0
  40. package/dist/types.d.ts +5 -0
  41. package/dist/utils/aiService.d.ts +9 -0
  42. package/dist/utils/app.d.ts +45 -0
  43. package/dist/utils/deepMerge.d.ts +11 -0
  44. package/dist/utils/deepMerge.js +24 -0
  45. package/dist/utils/file.d.ts +8 -0
  46. package/dist/utils/file.js +9 -3
  47. package/dist/utils/log.d.ts +1 -0
  48. package/dist/utils/reactShim.d.ts +4 -0
  49. package/dist/utils/reactShim.js +82 -2
  50. package/jest.config.d.mts +50 -0
  51. package/jest.config.mjs +66 -0
  52. package/jest.config.template.cjs +63 -0
  53. package/jest.setup.template.js +18 -0
  54. package/package.json +30 -10
  55. package/tsconfig.build.json +9 -11
  56. package/tsconfig.json +1 -1
  57. package/tsconfig.lint.json +3 -3
  58. package/tsconfig.template.json +2 -2
  59. package/tsconfig.test.json +3 -3
  60. package/TYPESCRIPT_CONFIGS.md +0 -103
  61. package/dist/dist/LexConfig.d.ts +0 -119
  62. package/dist/dist/utils/file.d.ts +0 -8
  63. package/dist/dist/utils/log.d.ts +0 -1
  64. package/dist/jest.config.lex.d.ts +0 -2
  65. package/jest.config.cjs +0 -43
  66. package/jest.config.lex.js +0 -118
  67. package/jest.setup.js +0 -31
@@ -0,0 +1,9 @@
1
+ export interface UpdateOptions {
2
+ readonly cliName?: string;
3
+ readonly interactive?: boolean;
4
+ readonly packageManager?: string;
5
+ readonly quiet?: boolean;
6
+ readonly registry?: string;
7
+ }
8
+ export type UpdateCallback = typeof process.exit;
9
+ export declare const update: (cmd: UpdateOptions, callback?: UpdateCallback) => Promise<number>;
@@ -0,0 +1,7 @@
1
+ export interface UpgradeOptions {
2
+ readonly cliName?: string;
3
+ readonly cliPackage?: string;
4
+ readonly quiet?: boolean;
5
+ }
6
+ export type UpgradeCallback = typeof process.exit;
7
+ export declare const upgrade: (cmd: UpgradeOptions, callback?: UpgradeCallback) => Promise<number>;
@@ -0,0 +1,13 @@
1
+ export declare const parseVersion: (packageVersion: string) => string;
2
+ export declare const packages: {
3
+ esbuild: string;
4
+ jest: string;
5
+ lex: any;
6
+ typescript: string;
7
+ webpack: string;
8
+ };
9
+ export declare const jsonVersions: (lexPackages: any) => {};
10
+ export interface VersionsCmd {
11
+ readonly json?: boolean;
12
+ }
13
+ export declare const versions: (cmd: VersionsCmd, callback: (status: number) => void) => Promise<number>;
@@ -0,0 +1,6 @@
1
+ export declare const createChangelog: ({ cliName, config, outputFile, quiet }: {
2
+ cliName: any;
3
+ config: any;
4
+ outputFile?: string;
5
+ quiet: any;
6
+ }) => Promise<number>;
@@ -0,0 +1,33 @@
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
+ import type { LexConfigType } from './LexConfig.js';
6
+ export * from './types.js';
7
+ export { defaultConfigValues, LexConfig } from './LexConfig.js';
8
+ export declare const Config: {
9
+ create: (config: LexConfigType) => LexConfigType;
10
+ };
11
+ export * from './utils/aiService.js';
12
+ export * from './utils/app.js';
13
+ export * from './utils/file.js';
14
+ export * from './utils/log.js';
15
+ export * from './utils/reactShim.js';
16
+ export * from './commands/ai/ai.js';
17
+ export * from './commands/build/build.js';
18
+ export * from './commands/clean/clean.js';
19
+ export * from './commands/compile/compile.js';
20
+ export * from './commands/config/config.js';
21
+ export * from './commands/copy/copy.js';
22
+ export * from './commands/create/create.js';
23
+ export * from './commands/dev/dev.js';
24
+ export * from './commands/init/init.js';
25
+ export * from './commands/link/link.js';
26
+ export * from './commands/lint/lint.js';
27
+ export * from './commands/migrate/migrate.js';
28
+ export * from './commands/publish/publish.js';
29
+ export * from './commands/storybook/storybook.js';
30
+ export * from './commands/test/test.js';
31
+ export * from './commands/update/update.js';
32
+ export * from './commands/upgrade/upgrade.js';
33
+ export * from './commands/versions/versions.js';
package/dist/index.js CHANGED
@@ -10,6 +10,7 @@ export * from "./utils/aiService.js";
10
10
  export * from "./utils/app.js";
11
11
  export * from "./utils/file.js";
12
12
  export * from "./utils/log.js";
13
+ export * from "./utils/reactShim.js";
13
14
  export * from "./commands/ai/ai.js";
14
15
  export * from "./commands/build/build.js";
15
16
  export * from "./commands/clean/clean.js";
@@ -33,4 +34,4 @@ export {
33
34
  LexConfig,
34
35
  defaultConfigValues
35
36
  };
36
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7TGV4Q29uZmlnVHlwZX0gZnJvbSAnLi9MZXhDb25maWcuanMnO1xuXG4vLyBFeHBvcnQgdHlwZXMgZnJvbSB0eXBlcy50c1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIEV4cG9ydCBjbGFzc2VzIGFuZCB2YWx1ZXMgZnJvbSBMZXhDb25maWdcbmV4cG9ydCB7XG4gIGRlZmF1bHRDb25maWdWYWx1ZXMsIExleENvbmZpZ1xufSBmcm9tICcuL0xleENvbmZpZy5qcyc7XG5cbi8vIEV4cG9ydCBDb25maWcgYXMgYm90aCBhIHR5cGUgYW5kIGEgbmFtZXNwYWNlIHdpdGggY3JlYXRlIG1ldGhvZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IGNvbnN0IENvbmZpZyA9IHtcbiAgY3JlYXRlOiAoY29uZmlnOiBMZXhDb25maWdUeXBlKSA9PiBjb25maWdcbn07XG5cbi8vIEV4cG9ydCB1dGlsaXR5IGZ1bmN0aW9uc1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9haVNlcnZpY2UuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9hcHAuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9maWxlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbG9nLmpzJztcblxuLy8gRXhwb3J0IGNvbW1hbmRzXG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2FpL2FpLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvYnVpbGQvYnVpbGQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy9jbGVhbi9jbGVhbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2NvbmZpZy9jb25maWcuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy9jb3B5L2NvcHkuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUvY3JlYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvZGV2L2Rldi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2luaXQvaW5pdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2xpbmsvbGluay5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2xpbnQvbGludC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL21pZ3JhdGUvbWlncmF0ZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2suanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy90ZXN0L3Rlc3QuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy91cGRhdGUvdXBkYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvdXBncmFkZS91cGdyYWRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvdmVyc2lvbnMvdmVyc2lvbnMuanMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBUUEsY0FBYztBQUdkO0FBQUEsRUFDRTtBQUFBLEVBQXFCO0FBQUEsT0FDaEI7QUFHQSxNQUFNLFNBQVM7QUFBQSxFQUNwQixRQUFRLENBQUMsV0FBMEI7QUFDckM7QUFHQSxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBR2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjOyIsCiAgIm5hbWVzIjogW10KfQo=
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7TGV4Q29uZmlnVHlwZX0gZnJvbSAnLi9MZXhDb25maWcuanMnO1xuXG4vLyBFeHBvcnQgdHlwZXMgZnJvbSB0eXBlcy50c1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8vIEV4cG9ydCBjbGFzc2VzIGFuZCB2YWx1ZXMgZnJvbSBMZXhDb25maWdcbmV4cG9ydCB7XG4gIGRlZmF1bHRDb25maWdWYWx1ZXMsIExleENvbmZpZ1xufSBmcm9tICcuL0xleENvbmZpZy5qcyc7XG5cbi8vIEV4cG9ydCBDb25maWcgYXMgYm90aCBhIHR5cGUgYW5kIGEgbmFtZXNwYWNlIHdpdGggY3JlYXRlIG1ldGhvZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IGNvbnN0IENvbmZpZyA9IHtcbiAgY3JlYXRlOiAoY29uZmlnOiBMZXhDb25maWdUeXBlKSA9PiBjb25maWdcbn07XG5cbi8vIEV4cG9ydCB1dGlsaXR5IGZ1bmN0aW9uc1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9haVNlcnZpY2UuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9hcHAuanMnO1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9maWxlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbG9nLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvcmVhY3RTaGltLmpzJztcblxuLy8gRXhwb3J0IGNvbW1hbmRzXG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2FpL2FpLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvYnVpbGQvYnVpbGQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy9jbGVhbi9jbGVhbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2NvbXBpbGUvY29tcGlsZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2NvbmZpZy9jb25maWcuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy9jb3B5L2NvcHkuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy9jcmVhdGUvY3JlYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvZGV2L2Rldi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2luaXQvaW5pdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2xpbmsvbGluay5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL2xpbnQvbGludC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL21pZ3JhdGUvbWlncmF0ZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL3B1Ymxpc2gvcHVibGlzaC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2suanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy90ZXN0L3Rlc3QuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21tYW5kcy91cGRhdGUvdXBkYXRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvdXBncmFkZS91cGdyYWRlLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbWFuZHMvdmVyc2lvbnMvdmVyc2lvbnMuanMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBUUEsY0FBYztBQUdkO0FBQUEsRUFDRTtBQUFBLEVBQXFCO0FBQUEsT0FDaEI7QUFHQSxNQUFNLFNBQVM7QUFBQSxFQUNwQixRQUFRLENBQUMsV0FBMEI7QUFDckM7QUFHQSxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUdkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYzsiLAogICJuYW1lcyI6IFtdCn0K
package/dist/lex.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ import '@testing-library/jest-dom';
6
+ export { render, screen, fireEvent, waitFor, waitForElementToBeRemoved, within, getByRole, getByLabelText, getByPlaceholderText, getByText, getByTestId, getAllByRole, getAllByLabelText, getAllByPlaceholderText, getAllByText, getAllByTestId, queryByRole, queryByLabelText, queryByPlaceholderText, queryByText, queryByTestId, queryAllByRole, queryAllByLabelText, queryAllByPlaceholderText, queryAllByText, queryAllByTestId, findByRole, findByLabelText, findByPlaceholderText, findByText, findByTestId, findAllByRole, findAllByLabelText, findAllByPlaceholderText, findAllByText, findAllByTestId, renderHook, act, cleanup } from '@testing-library/react';
@@ -0,0 +1,84 @@
1
+ import "@testing-library/jest-dom";
2
+ import {
3
+ render,
4
+ screen,
5
+ fireEvent,
6
+ waitFor,
7
+ waitForElementToBeRemoved,
8
+ within,
9
+ getByRole,
10
+ getByLabelText,
11
+ getByPlaceholderText,
12
+ getByText,
13
+ getByTestId,
14
+ getAllByRole,
15
+ getAllByLabelText,
16
+ getAllByPlaceholderText,
17
+ getAllByText,
18
+ getAllByTestId,
19
+ queryByRole,
20
+ queryByLabelText,
21
+ queryByPlaceholderText,
22
+ queryByText,
23
+ queryByTestId,
24
+ queryAllByRole,
25
+ queryAllByLabelText,
26
+ queryAllByPlaceholderText,
27
+ queryAllByText,
28
+ queryAllByTestId,
29
+ findByRole,
30
+ findByLabelText,
31
+ findByPlaceholderText,
32
+ findByText,
33
+ findByTestId,
34
+ findAllByRole,
35
+ findAllByLabelText,
36
+ findAllByPlaceholderText,
37
+ findAllByText,
38
+ findAllByTestId,
39
+ renderHook,
40
+ act,
41
+ cleanup
42
+ } from "@testing-library/react";
43
+ export {
44
+ act,
45
+ cleanup,
46
+ findAllByLabelText,
47
+ findAllByPlaceholderText,
48
+ findAllByRole,
49
+ findAllByTestId,
50
+ findAllByText,
51
+ findByLabelText,
52
+ findByPlaceholderText,
53
+ findByRole,
54
+ findByTestId,
55
+ findByText,
56
+ fireEvent,
57
+ getAllByLabelText,
58
+ getAllByPlaceholderText,
59
+ getAllByRole,
60
+ getAllByTestId,
61
+ getAllByText,
62
+ getByLabelText,
63
+ getByPlaceholderText,
64
+ getByRole,
65
+ getByTestId,
66
+ getByText,
67
+ queryAllByLabelText,
68
+ queryAllByPlaceholderText,
69
+ queryAllByRole,
70
+ queryAllByTestId,
71
+ queryAllByText,
72
+ queryByLabelText,
73
+ queryByPlaceholderText,
74
+ queryByRole,
75
+ queryByTestId,
76
+ queryByText,
77
+ render,
78
+ renderHook,
79
+ screen,
80
+ waitFor,
81
+ waitForElementToBeRemoved,
82
+ within
83
+ };
84
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3Rlc3QtcmVhY3QvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgJ0B0ZXN0aW5nLWxpYnJhcnkvamVzdC1kb20nO1xuXG5leHBvcnQge1xuICByZW5kZXIsXG4gIHNjcmVlbixcbiAgZmlyZUV2ZW50LFxuICB3YWl0Rm9yLFxuICB3YWl0Rm9yRWxlbWVudFRvQmVSZW1vdmVkLFxuICB3aXRoaW4sXG4gIGdldEJ5Um9sZSxcbiAgZ2V0QnlMYWJlbFRleHQsXG4gIGdldEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBnZXRCeVRleHQsXG4gIGdldEJ5VGVzdElkLFxuICBnZXRBbGxCeVJvbGUsXG4gIGdldEFsbEJ5TGFiZWxUZXh0LFxuICBnZXRBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZ2V0QWxsQnlUZXh0LFxuICBnZXRBbGxCeVRlc3RJZCxcbiAgcXVlcnlCeVJvbGUsXG4gIHF1ZXJ5QnlMYWJlbFRleHQsXG4gIHF1ZXJ5QnlQbGFjZWhvbGRlclRleHQsXG4gIHF1ZXJ5QnlUZXh0LFxuICBxdWVyeUJ5VGVzdElkLFxuICBxdWVyeUFsbEJ5Um9sZSxcbiAgcXVlcnlBbGxCeUxhYmVsVGV4dCxcbiAgcXVlcnlBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgcXVlcnlBbGxCeVRleHQsXG4gIHF1ZXJ5QWxsQnlUZXN0SWQsXG4gIGZpbmRCeVJvbGUsXG4gIGZpbmRCeUxhYmVsVGV4dCxcbiAgZmluZEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBmaW5kQnlUZXh0LFxuICBmaW5kQnlUZXN0SWQsXG4gIGZpbmRBbGxCeVJvbGUsXG4gIGZpbmRBbGxCeUxhYmVsVGV4dCxcbiAgZmluZEFsbEJ5UGxhY2Vob2xkZXJUZXh0LFxuICBmaW5kQWxsQnlUZXh0LFxuICBmaW5kQWxsQnlUZXN0SWQsXG4gIHJlbmRlckhvb2ssXG4gIGFjdCxcbiAgY2xlYW51cFxufSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JzsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFPO0FBRVA7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,5 @@
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
+ export type { AIConfig, Config, EsbuildConfig, JestConfig, LexConfigType, WebpackConfig } from './LexConfig.js';
@@ -0,0 +1,9 @@
1
+ import { AIConfig } from '../LexConfig.js';
2
+ export declare const callCursorAI: (prompt: string, options: AIConfig) => Promise<string>;
3
+ export declare const callOpenAIAI: (prompt: string, options: AIConfig) => Promise<string>;
4
+ export declare const callAnthropicAI: (prompt: string, options: AIConfig) => Promise<string>;
5
+ export declare const callCopilotAI: (prompt: string, options: AIConfig) => Promise<string>;
6
+ export declare const promptForAIProvider: (quiet?: boolean) => Promise<"cursor" | "copilot" | "openai" | "anthropic" | "none">;
7
+ export declare const promptForAPIKey: (provider: string, quiet?: boolean) => Promise<string>;
8
+ export declare const getAIService: (provider: string, options: AIConfig) => (prompt: string, options: AIConfig) => Promise<string>;
9
+ export declare const callAIService: (prompt: string, quiet?: boolean) => Promise<string>;
@@ -0,0 +1,45 @@
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
+ import type { LexConfigType } from '../LexConfig.js';
6
+ export declare const cwd: string;
7
+ export interface GetFilenamesProps {
8
+ readonly callback?: (status: number) => void;
9
+ readonly cliName?: string;
10
+ readonly name?: string;
11
+ readonly quiet?: boolean;
12
+ readonly type?: string;
13
+ readonly useTypescript?: boolean;
14
+ }
15
+ interface FilenamesResult {
16
+ nameCaps: string;
17
+ templateExt: string;
18
+ templatePath: string;
19
+ templateReact: string;
20
+ }
21
+ export declare const getFilenames: (props: GetFilenamesProps) => FilenamesResult | void;
22
+ export interface Spinner {
23
+ fail: (text?: string) => void;
24
+ start: (text?: string) => void;
25
+ succeed: (text?: string) => void;
26
+ }
27
+ export declare const createSpinner: (quiet?: boolean) => Spinner;
28
+ export declare const copyFiles: (files: string[], typeName: string, spinner: any, config: LexConfigType) => Promise<void>;
29
+ export declare const copyConfiguredFiles: (spinner: any, config: LexConfigType, quiet: boolean) => Promise<void>;
30
+ export declare const copyFileSync: (source: string, target: string) => void;
31
+ export declare const copyFolderRecursiveSync: (source: string, target: string) => void;
32
+ export declare const getPackageJson: (packagePath?: string) => any;
33
+ export declare const getFilesByExt: (ext: string, config: LexConfigType) => string[];
34
+ export declare const removeConflictModules: (moduleList: object) => object;
35
+ export declare const removeFiles: (fileName: string, isRelative?: boolean) => Promise<unknown>;
36
+ export declare const removeModules: () => Promise<unknown>;
37
+ export declare const setPackageJson: (json: any, packagePath?: string) => void;
38
+ export interface LinkedModuleType {
39
+ readonly name: string;
40
+ readonly path: string;
41
+ }
42
+ export declare const linkedModules: (startPath?: string) => LinkedModuleType[];
43
+ export declare const checkLinkedModules: () => void;
44
+ export declare const updateTemplateName: (filePath: string, replace: string, replaceCaps: string) => void;
45
+ export {};
@@ -0,0 +1,11 @@
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
+ /**
6
+ * Deep merge function that recursively merges objects and arrays
7
+ * @param target - The target object to merge into
8
+ * @param source - The source object to merge from
9
+ * @returns The merged object
10
+ */
11
+ export declare const deepMerge: (target: any, source: any) => any;
@@ -0,0 +1,24 @@
1
+ const deepMerge = (target, source) => {
2
+ if (!source) return target;
3
+ const result = { ...target };
4
+ for (const key in source) {
5
+ if (source.hasOwnProperty(key)) {
6
+ if (source[key] && typeof source[key] === "object" && !Array.isArray(source[key])) {
7
+ result[key] = deepMerge(target[key] || {}, source[key]);
8
+ } else if (Array.isArray(source[key])) {
9
+ if (Array.isArray(target[key])) {
10
+ result[key] = [...target[key], ...source[key]];
11
+ } else {
12
+ result[key] = [...source[key]];
13
+ }
14
+ } else {
15
+ result[key] = source[key];
16
+ }
17
+ }
18
+ }
19
+ return result;
20
+ };
21
+ export {
22
+ deepMerge
23
+ };
24
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2RlZXBNZXJnZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuLyoqXG4gKiBEZWVwIG1lcmdlIGZ1bmN0aW9uIHRoYXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG9iamVjdHMgYW5kIGFycmF5c1xuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIG1lcmdlIGludG9cbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9iamVjdCB0byBtZXJnZSBmcm9tXG4gKiBAcmV0dXJucyBUaGUgbWVyZ2VkIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgZGVlcE1lcmdlID0gKHRhcmdldDogYW55LCBzb3VyY2U6IGFueSk6IGFueSA9PiB7XG4gIGlmKCFzb3VyY2UpIHJldHVybiB0YXJnZXQ7XG5cbiAgY29uc3QgcmVzdWx0ID0gey4uLnRhcmdldH07XG5cbiAgZm9yKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICBpZihzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgaWYoc291cmNlW2tleV0gJiYgdHlwZW9mIHNvdXJjZVtrZXldID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBkZWVwTWVyZ2UodGFyZ2V0W2tleV0gfHwge30sIHNvdXJjZVtrZXldKTtcbiAgICAgIH0gZWxzZSBpZihBcnJheS5pc0FycmF5KHNvdXJjZVtrZXldKSkge1xuICAgICAgICAvLyBGb3IgYXJyYXlzLCBtZXJnZSBpZiBib3RoIGFyZSBhcnJheXMsIG90aGVyd2lzZSByZXBsYWNlXG4gICAgICAgIGlmKEFycmF5LmlzQXJyYXkodGFyZ2V0W2tleV0pKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBbLi4udGFyZ2V0W2tleV0sIC4uLnNvdXJjZVtrZXldXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IFsuLi5zb3VyY2Vba2V5XV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBV08sTUFBTSxZQUFZLENBQUMsUUFBYSxXQUFxQjtBQUMxRCxNQUFHLENBQUMsT0FBUSxRQUFPO0FBRW5CLFFBQU0sU0FBUyxFQUFDLEdBQUcsT0FBTTtBQUV6QixhQUFVLE9BQU8sUUFBUTtBQUN2QixRQUFHLE9BQU8sZUFBZSxHQUFHLEdBQUc7QUFDN0IsVUFBRyxPQUFPLEdBQUcsS0FBSyxPQUFPLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQyxNQUFNLFFBQVEsT0FBTyxHQUFHLENBQUMsR0FBRztBQUNoRixlQUFPLEdBQUcsSUFBSSxVQUFVLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQztBQUFBLE1BQ3hELFdBQVUsTUFBTSxRQUFRLE9BQU8sR0FBRyxDQUFDLEdBQUc7QUFFcEMsWUFBRyxNQUFNLFFBQVEsT0FBTyxHQUFHLENBQUMsR0FBRztBQUM3QixpQkFBTyxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLENBQUM7QUFBQSxRQUMvQyxPQUFPO0FBQ0wsaUJBQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQztBQUFBLFFBQy9CO0FBQUEsTUFDRixPQUFPO0FBQ0wsZUFBTyxHQUFHLElBQUksT0FBTyxHQUFHO0FBQUEsTUFDMUI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,8 @@
1
+ export declare function getDirName(): string;
2
+ export declare function getFilePath(relativePath: string): string;
3
+ export declare function getLexPackageJsonPath(): string;
4
+ export declare const relativeFilePath: (filename: string, dirPath?: string, backUp?: number) => string;
5
+ export declare const relativeNodePath: (filename: string, dirPath?: string, backUp?: number) => string;
6
+ export declare const getNodePath: (moduleName: string) => string;
7
+ export declare const resolveBinaryPath: (binaryName: string, packageName?: string) => string;
8
+ export declare const findTailwindCssPath: () => string;
@@ -1,7 +1,7 @@
1
1
  import findFileUp from "find-file-up";
2
2
  import { existsSync, readFileSync } from "fs";
3
- import { resolve as pathResolve, dirname } from "path";
4
3
  import { sync as globSync } from "glob";
4
+ import { resolve as pathResolve, dirname } from "path";
5
5
  import { LexConfig } from "../LexConfig.js";
6
6
  function getDirName() {
7
7
  try {
@@ -22,6 +22,10 @@ function getFilePath(relativePath) {
22
22
  }
23
23
  function getLexPackageJsonPath() {
24
24
  const LEX_PACKAGE_NAME = "@nlabs/lex";
25
+ const lexInNodeModules = pathResolve(process.cwd(), "node_modules/@nlabs/lex/package.json");
26
+ if (existsSync(lexInNodeModules)) {
27
+ return lexInNodeModules;
28
+ }
25
29
  let startDir;
26
30
  if (process.env.LEX_ROOT) {
27
31
  startDir = process.env.LEX_ROOT;
@@ -60,7 +64,9 @@ function getLexPackageJsonPath() {
60
64
  }
61
65
  }
62
66
  const parent = dirname(dir);
63
- if (parent === dir) break;
67
+ if (parent === dir) {
68
+ break;
69
+ }
64
70
  dir = parent;
65
71
  }
66
72
  return pathResolve(process.cwd(), "package.json");
@@ -176,4 +182,4 @@ export {
176
182
  relativeNodePath,
177
183
  resolveBinaryPath
178
184
  };
179
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2ZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZmluZEZpbGVVcCBmcm9tICdmaW5kLWZpbGUtdXAnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCByZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7cmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZSwgZGlybmFtZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuXG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuXG4vKipcbiAqIFNhZmVseSBnZXQgZGlyZWN0b3J5IG5hbWUgdGhhdCB3b3JrcyBpbiBib3RoIEVTTSBhbmQgSmVzdCBlbnZpcm9ubWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpck5hbWUoKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICAvLyBPbmx5IHdvcmtzIGluIEVTTSBlbnZpcm9ubWVudHNcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXZhbFxuICAgIHJldHVybiBldmFsKCduZXcgVVJMKFwiLlwiLCBpbXBvcnQubWV0YS51cmwpLnBhdGhuYW1lJyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEZhbGxiYWNrIGZvciBKZXN0IG9yIENKU1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpO1xuICB9XG59XG5cbi8qKlxuICogU2FmZWx5IGdldCBmaWxlIHBhdGggdGhhdCB3b3JrcyBpbiBib3RoIEVTTSBhbmQgSmVzdCBlbnZpcm9ubWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVQYXRoKHJlbGF0aXZlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICAvLyBPbmx5IHdvcmtzIGluIEVTTSBlbnZpcm9ubWVudHNcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXZhbFxuICAgIHJldHVybiBldmFsKCdyZXF1aXJlKFwidXJsXCIpLmZpbGVVUkxUb1BhdGgobmV3IFVSTChyZWxhdGl2ZVBhdGgsIGltcG9ydC5tZXRhLnVybCkpJyk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEZhbGxiYWNrIGZvciBKZXN0IG9yIENKU1xuICAgIGlmKHJlbGF0aXZlUGF0aCA9PT0gJy4uLy4uLy4uL3BhY2thZ2UuanNvbicpIHtcbiAgICAgIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCByZWxhdGl2ZVBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBwYXRoIHRvIExleCdzIG93biBwYWNrYWdlLmpzb24sIHJlZ2FyZGxlc3Mgb2YgQ1dEXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMZXhQYWNrYWdlSnNvblBhdGgoKTogc3RyaW5nIHtcbiAgY29uc3QgTEVYX1BBQ0tBR0VfTkFNRSA9ICdAbmxhYnMvbGV4JztcbiAgbGV0IHN0YXJ0RGlyOiBzdHJpbmc7XG5cbiAgaWYocHJvY2Vzcy5lbnYuTEVYX1JPT1QpIHtcbiAgICBzdGFydERpciA9IHByb2Nlc3MuZW52LkxFWF9ST09UO1xuICB9IGVsc2Uge1xuICAgIC8vIFRyeSBtdWx0aXBsZSBhcHByb2FjaGVzIHRvIGdldCB0aGUgTGV4IENMSSdzIGRpcmVjdG9yeVxuICAgIHRyeSB7XG4gICAgICAvLyBBcHByb2FjaCAxOiBFU00gaW1wb3J0Lm1ldGEudXJsXG4gICAgICBzdGFydERpciA9IGV2YWwoJ25ldyBVUkwoXCIuXCIsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWUnKTtcbiAgICB9IGNhdGNoKGVycjEpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIEFwcHJvYWNoIDI6IENKUyBfX2ZpbGVuYW1lIChpZiBhdmFpbGFibGUpXG4gICAgICAgIHN0YXJ0RGlyID0gZXZhbCgnX19maWxlbmFtZSA/IHJlcXVpcmUoXCJwYXRoXCIpLmRpcm5hbWUoX19maWxlbmFtZSkgOiBudWxsJyk7XG4gICAgICAgIGlmKCFzdGFydERpcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignX19maWxlbmFtZSBub3QgYXZhaWxhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2goZXJyMikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEFwcHJvYWNoIDM6IFVzZSBwcm9jZXNzLmFyZ3ZbMV0gKHRoZSBhY3R1YWwgc2NyaXB0IGJlaW5nIGV4ZWN1dGVkKVxuICAgICAgICAgIGlmKHByb2Nlc3MuYXJndlsxXSAmJiAhcHJvY2Vzcy5hcmd2WzFdLmluY2x1ZGVzKCdub2RlJykpIHtcbiAgICAgICAgICAgIHN0YXJ0RGlyID0gZGlybmFtZShwcm9jZXNzLmFyZ3ZbMV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYXJndlsxXSBub3Qgc3VpdGFibGUnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2goZXJyMykge1xuICAgICAgICAgIC8vIEFwcHJvYWNoIDQ6IEZhbGxiYWNrIHRvIHByb2Nlc3MuY3dkKClcbiAgICAgICAgICBzdGFydERpciA9IHByb2Nlc3MuY3dkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgZGlyID0gc3RhcnREaXI7XG4gIGZvcihsZXQgaSA9IDA7IGkgPCA4OyBpKyspIHtcbiAgICBjb25zdCBwa2dQYXRoID0gcGF0aFJlc29sdmUoZGlyLCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyhwa2dQYXRoKSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGtnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGtnUGF0aCwgJ3V0ZjgnKSk7XG4gICAgICAgIGlmKHBrZy5uYW1lID09PSBMRVhfUEFDS0FHRV9OQU1FKSB7XG4gICAgICAgICAgcmV0dXJuIHBrZ1BhdGg7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgLy8gU2lsZW50bHkgY29udGludWUgaWYgcGFja2FnZS5qc29uIGNhbid0IGJlIHJlYWRcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpO1xuICAgIGlmKHBhcmVudCA9PT0gZGlyKSBicmVhaztcbiAgICBkaXIgPSBwYXJlbnQ7XG4gIH1cbiAgLy8gRmFsbGJhY2sgdG8gcHJvY2Vzcy5jd2QoKSBhcyBsYXN0IHJlc29ydFxuICByZXR1cm4gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3BhY2thZ2UuanNvbicpO1xufVxuXG4vLyBHZXQgZmlsZSBwYXRocyByZWxhdGl2ZSB0byBMZXhcbmV4cG9ydCBjb25zdCByZWxhdGl2ZUZpbGVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcsIGRpclBhdGg6IHN0cmluZyA9ICcuLycsIGJhY2tVcDogbnVtYmVyID0gMCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG5lc3REZXB0aDogbnVtYmVyID0gMTA7XG5cbiAgaWYoYmFja1VwKSB7XG4gICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhmaWxlbmFtZSwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbiAgICBjb25zdCBwcmV2aW91c1BhdGg6IHN0cmluZyA9IEFycmF5KGJhY2tVcCkuZmlsbChudWxsKS5tYXAoKCkgPT4gJy4uLycpLmpvaW4oJycpO1xuICAgIHJldHVybiBwYXRoUmVzb2x2ZShmaWxlUGF0aCwgcHJldmlvdXNQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kRmlsZVVwLnN5bmMoZmlsZW5hbWUsIGRpclBhdGgsIG5lc3REZXB0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVsYXRpdmVOb2RlUGF0aCA9IChmaWxlbmFtZTogc3RyaW5nLCBkaXJQYXRoOiBzdHJpbmcgPSAnLi8nLCBiYWNrVXA6IG51bWJlciA9IDApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBuZXN0RGVwdGg6IG51bWJlciA9IDEwO1xuICBjb25zdCBtb2R1bGVQYXRoID0gYG5vZGVfbW9kdWxlcy8ke2ZpbGVuYW1lfWA7XG5cbiAgLy8gRmlyc3QsIGNoZWNrIHRoZSBMZXggcGFja2FnZSdzIG5vZGVfbW9kdWxlcyBkaXJlY3RvcnlcbiAgaWYoZGlyUGF0aCAhPT0gJy4vJykge1xuICAgIGNvbnN0IGxleE1vZHVsZVBhdGggPSBwYXRoUmVzb2x2ZShkaXJQYXRoLCBtb2R1bGVQYXRoKTtcbiAgICBpZihleGlzdHNTeW5jKGxleE1vZHVsZVBhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4TW9kdWxlUGF0aDtcbiAgICB9XG4gIH1cblxuICAvLyBTZWNvbmQsIGNoZWNrIHRoZSB1c2VyJ3MgcHJvamVjdCBub2RlX21vZHVsZXMgZGlyZWN0b3J5XG4gIGNvbnN0IHByb2plY3RQYXRoID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgbW9kdWxlUGF0aCk7XG4gIGlmKGV4aXN0c1N5bmMocHJvamVjdFBhdGgpKSB7XG4gICAgcmV0dXJuIHByb2plY3RQYXRoO1xuICB9XG5cbiAgLy8gT3JpZ2luYWwgaW1wbGVtZW50YXRpb24gYXMgZmFsbGJhY2tcbiAgaWYoYmFja1VwKSB7XG4gICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhtb2R1bGVQYXRoLCBkaXJQYXRoLCBuZXN0RGVwdGgpO1xuICAgIGNvbnN0IHByZXZpb3VzUGF0aDogc3RyaW5nID0gQXJyYXkobmVzdERlcHRoKS5maWxsKG51bGwpLm1hcCgoKSA9PiAnLi4vJykuam9pbignJyk7XG4gICAgcmV0dXJuIHBhdGhSZXNvbHZlKGZpbGVQYXRoLCBwcmV2aW91c1BhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRGaWxlVXAuc3luYyhtb2R1bGVQYXRoLCBkaXJQYXRoLCBuZXN0RGVwdGgpIHx8IGAvbm9kZV9tb2R1bGVzLyR7ZmlsZW5hbWV9YDtcbn07XG5cbi8vIEdldCBmaWxlIHBhdGhzIHJlbGF0aXZlIHRvIExleFxuZXhwb3J0IGNvbnN0IGdldE5vZGVQYXRoID0gKG1vZHVsZU5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG4gIGNvbnN0IG1vZHVsZVBhdGg6IHN0cmluZyA9IGBub2RlX21vZHVsZXMvJHttb2R1bGVOYW1lfWA7XG5cbiAgLy8gVHJ5IHByb2plY3Qgcm9vdCBmaXJzdFxuICBjb25zdCBwcm9qZWN0UGF0aCA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIG1vZHVsZVBhdGgpO1xuICBpZihleGlzdHNTeW5jKHByb2plY3RQYXRoKSkge1xuICAgIHJldHVybiBwcm9qZWN0UGF0aDtcbiAgfVxuXG4gIC8vIFRoZW4gdHJ5IG1vZHVsZSBsb2NhbCB0byBMZXhcbiAgY29uc3QgcmVwb1BhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhtb2R1bGVQYXRoLCBkaXJOYW1lKTtcbiAgaWYocmVwb1BhdGggJiYgZXhpc3RzU3luYyhyZXBvUGF0aCkpIHtcbiAgICByZXR1cm4gcmVwb1BhdGg7XG4gIH1cblxuICAvLyBGYWxsYmFjayB0byBnZW5lcmFsIHNlYXJjaFxuICBjb25zdCBsb2NhbFBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhtb2R1bGVQYXRoLCAnLi8nLCAxMCkgfHwgYC4vJHttb2R1bGVQYXRofWA7XG4gIHJldHVybiBsb2NhbFBhdGg7XG59O1xuXG4vKipcbiAqIFJlc29sdmUgYmluYXJ5IHBhdGggd2l0aCBmYWxsYmFjayBsb2dpYyBmb3IgbW9ub3JlcG8gYW5kIHBhY2thZ2Ugc2NlbmFyaW9zXG4gKiBDaGVja3M6IDEpIExleCdzIG5vZGVfbW9kdWxlcy8uYmluLywgMikgTGV4J3Mgbm9kZV9tb2R1bGVzLzxwYWNrYWdlPi9iaW4vLCAzKSBNb25vcmVwbyByb290IG5vZGVfbW9kdWxlcy8uYmluLyAoZnJvbSBwcm9jZXNzLmN3ZCgpKSwgNCkgTW9ub3JlcG8gcm9vdCBub2RlX21vZHVsZXMvLmJpbi8gKGZyb20gTGV4J3MgZGlyKVxuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUJpbmFyeVBhdGggPSAoYmluYXJ5TmFtZTogc3RyaW5nLCBwYWNrYWdlTmFtZT86IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGxleERpciA9IExleENvbmZpZy5nZXRMZXhEaXIoKTtcblxuICAvLyAxLiBDaGVjayBMZXgncyBub2RlX21vZHVsZXMvLmJpbi9cbiAgY29uc3QgbGV4QmluUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8uYmluLyR7YmluYXJ5TmFtZX1gKTtcbiAgaWYoZXhpc3RzU3luYyhsZXhCaW5QYXRoKSkge1xuICAgIHJldHVybiBsZXhCaW5QYXRoO1xuICB9XG5cbiAgLy8gMi4gQ2hlY2sgTGV4J3Mgbm9kZV9tb2R1bGVzLzxwYWNrYWdlPi9iaW4vIChpZiBwYWNrYWdlTmFtZSBwcm92aWRlZClcbiAgaWYocGFja2FnZU5hbWUpIHtcbiAgICBjb25zdCBsZXhQYWNrYWdlQmluUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfS9iaW4vJHtiaW5hcnlOYW1lfWApO1xuICAgIGlmKGV4aXN0c1N5bmMobGV4UGFja2FnZUJpblBhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4UGFja2FnZUJpblBhdGg7XG4gICAgfVxuXG4gICAgLy8gQWxzbyBjaGVjayBmb3IgLmpzIGV4dGVuc2lvblxuICAgIGNvbnN0IGxleFBhY2thZ2VCaW5Kc1BhdGggPSBwYXRoUmVzb2x2ZShsZXhEaXIsIGBub2RlX21vZHVsZXMvJHtwYWNrYWdlTmFtZX0vYmluLyR7YmluYXJ5TmFtZX0uanNgKTtcbiAgICBpZihleGlzdHNTeW5jKGxleFBhY2thZ2VCaW5Kc1BhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4UGFja2FnZUJpbkpzUGF0aDtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgLmNqcyBleHRlbnNpb25cbiAgICBjb25zdCBsZXhQYWNrYWdlQmluQ2pzUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfS9iaW4vJHtiaW5hcnlOYW1lfS5janNgKTtcbiAgICBpZihleGlzdHNTeW5jKGxleFBhY2thZ2VCaW5DanNQYXRoKSkge1xuICAgICAgcmV0dXJuIGxleFBhY2thZ2VCaW5DanNQYXRoO1xuICAgIH1cbiAgfVxuXG4gIC8vIDMuIFdhbGsgdXAgZnJvbSBwcm9jZXNzLmN3ZCgpIGFuZCBjaGVjayBub2RlX21vZHVsZXMvLmJpbi9cbiAgY29uc3QgY2hlY2tCaW5VcCA9IChzdGFydERpcjogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGNoZWNrRGlyID0gc3RhcnREaXI7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgY29uc3QgbW9ub3JlcG9CaW5QYXRoID0gcGF0aFJlc29sdmUoY2hlY2tEaXIsIGBub2RlX21vZHVsZXMvLmJpbi8ke2JpbmFyeU5hbWV9YCk7XG4gICAgICBpZihleGlzdHNTeW5jKG1vbm9yZXBvQmluUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIG1vbm9yZXBvQmluUGF0aDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudERpciA9IHBhdGhSZXNvbHZlKGNoZWNrRGlyLCAnLi4nKTtcbiAgICAgIGlmKHBhcmVudERpciA9PT0gY2hlY2tEaXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjaGVja0RpciA9IHBhcmVudERpcjtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9O1xuXG4gIC8vIDNhLiBXYWxrIHVwIGZyb20gcHJvY2Vzcy5jd2QoKVxuICBjb25zdCBmcm9tQ3dkID0gY2hlY2tCaW5VcChwcm9jZXNzLmN3ZCgpKTtcbiAgaWYoZnJvbUN3ZCkge1xuICAgIHJldHVybiBmcm9tQ3dkO1xuICB9XG5cbiAgLy8gM2IuIFdhbGsgdXAgZnJvbSBMZXgncyBkaXJlY3RvcnlcbiAgY29uc3QgZnJvbUxleCA9IGNoZWNrQmluVXAobGV4RGlyKTtcbiAgaWYoZnJvbUxleCkge1xuICAgIHJldHVybiBmcm9tTGV4O1xuICB9XG5cbiAgLy8gTm90IGZvdW5kXG4gIHJldHVybiAnJztcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kVGFpbHdpbmRDc3NQYXRoID0gKCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRhaWx3aW5kUGF0dGVybnMgPSBbJyoqL3RhaWx3aW5kLmNzcyddO1xuXG4gIGZvcihjb25zdCBwYXR0ZXJuIG9mIHRhaWx3aW5kUGF0dGVybnMpIHtcbiAgICBjb25zdCBmaWxlcyA9IGdsb2JTeW5jKHBhdHRlcm4sIHtcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGlnbm9yZTogWycqKi9ub2RlX21vZHVsZXMvKionLCAnKiovZGlzdC8qKicsICcqKi9idWlsZC8qKicsICcqKi8uc3Rvcnlib29rLyoqJ11cbiAgICB9KTtcblxuICAgIGlmKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlc1swXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICcnO1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFPLGdCQUFnQjtBQUN2QixTQUFRLFlBQVksb0JBQW1CO0FBQ3ZDLFNBQVEsV0FBVyxhQUFhLGVBQWM7QUFDOUMsU0FBUSxRQUFRLGdCQUFlO0FBRy9CLFNBQVEsaUJBQWdCO0FBS2pCLFNBQVMsYUFBcUI7QUFDbkMsTUFBSTtBQUdGLFdBQU8sS0FBSyx3Q0FBd0M7QUFBQSxFQUN0RCxRQUFRO0FBRU4sV0FBTyxRQUFRLElBQUk7QUFBQSxFQUNy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
185
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2ZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZmluZEZpbGVVcCBmcm9tICdmaW5kLWZpbGUtdXAnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCByZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmUsIGRpcm5hbWV9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpck5hbWUoKTogc3RyaW5nIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXZhbCgnbmV3IFVSTChcIi5cIiwgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZScpO1xuICB9IGNhdGNoe1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlUGF0aChyZWxhdGl2ZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGV2YWwoJ3JlcXVpcmUoXCJ1cmxcIikuZmlsZVVSTFRvUGF0aChuZXcgVVJMKHJlbGF0aXZlUGF0aCwgaW1wb3J0Lm1ldGEudXJsKSknKTtcbiAgfSBjYXRjaHtcbiAgICBpZihyZWxhdGl2ZVBhdGggPT09ICcuLi8uLi8uLi9wYWNrYWdlLmpzb24nKSB7XG4gICAgICByZXR1cm4gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3BhY2thZ2UuanNvbicpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgcmVsYXRpdmVQYXRoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk6IHN0cmluZyB7XG4gIGNvbnN0IExFWF9QQUNLQUdFX05BTUUgPSAnQG5sYWJzL2xleCc7XG5cbiAgY29uc3QgbGV4SW5Ob2RlTW9kdWxlcyA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICdub2RlX21vZHVsZXMvQG5sYWJzL2xleC9wYWNrYWdlLmpzb24nKTtcblxuICBpZihleGlzdHNTeW5jKGxleEluTm9kZU1vZHVsZXMpKSB7XG4gICAgcmV0dXJuIGxleEluTm9kZU1vZHVsZXM7XG4gIH1cblxuICBsZXQgc3RhcnREaXI6IHN0cmluZztcblxuICBpZihwcm9jZXNzLmVudi5MRVhfUk9PVCkge1xuICAgIHN0YXJ0RGlyID0gcHJvY2Vzcy5lbnYuTEVYX1JPT1Q7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIHN0YXJ0RGlyID0gZXZhbCgnbmV3IFVSTChcIi5cIiwgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZScpO1xuICAgIH0gY2F0Y2goZXJyMSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3RhcnREaXIgPSBldmFsKCdfX2ZpbGVuYW1lID8gcmVxdWlyZShcInBhdGhcIikuZGlybmFtZShfX2ZpbGVuYW1lKSA6IG51bGwnKTtcbiAgICAgICAgaWYoIXN0YXJ0RGlyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdfX2ZpbGVuYW1lIG5vdCBhdmFpbGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnIyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYocHJvY2Vzcy5hcmd2WzFdICYmICFwcm9jZXNzLmFyZ3ZbMV0uaW5jbHVkZXMoJ25vZGUnKSkge1xuICAgICAgICAgICAgc3RhcnREaXIgPSBkaXJuYW1lKHByb2Nlc3MuYXJndlsxXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5hcmd2WzFdIG5vdCBzdWl0YWJsZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaChlcnIzKSB7XG4gICAgICAgICAgc3RhcnREaXIgPSBwcm9jZXNzLmN3ZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IGRpciA9IHN0YXJ0RGlyO1xuICBmb3IobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgY29uc3QgcGtnUGF0aCA9IHBhdGhSZXNvbHZlKGRpciwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGlmKGV4aXN0c1N5bmMocGtnUGF0aCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBrZyA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBrZ1BhdGgsICd1dGY4JykpO1xuICAgICAgICBpZihwa2cubmFtZSA9PT0gTEVYX1BBQ0tBR0VfTkFNRSkge1xuICAgICAgICAgIHJldHVybiBwa2dQYXRoO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKTtcbiAgICBpZihwYXJlbnQgPT09IGRpcikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRpciA9IHBhcmVudDtcbiAgfVxuXG4gIHJldHVybiBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyk7XG59XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZUZpbGVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcsIGRpclBhdGg6IHN0cmluZyA9ICcuLycsIGJhY2tVcDogbnVtYmVyID0gMCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG5lc3REZXB0aDogbnVtYmVyID0gMTA7XG5cbiAgaWYoYmFja1VwKSB7XG4gICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhmaWxlbmFtZSwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbiAgICBjb25zdCBwcmV2aW91c1BhdGg6IHN0cmluZyA9IEFycmF5KGJhY2tVcCkuZmlsbChudWxsKS5tYXAoKCkgPT4gJy4uLycpLmpvaW4oJycpO1xuICAgIHJldHVybiBwYXRoUmVzb2x2ZShmaWxlUGF0aCwgcHJldmlvdXNQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kRmlsZVVwLnN5bmMoZmlsZW5hbWUsIGRpclBhdGgsIG5lc3REZXB0aCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVsYXRpdmVOb2RlUGF0aCA9IChmaWxlbmFtZTogc3RyaW5nLCBkaXJQYXRoOiBzdHJpbmcgPSAnLi8nLCBiYWNrVXA6IG51bWJlciA9IDApOiBzdHJpbmcgPT4ge1xuICBjb25zdCBuZXN0RGVwdGg6IG51bWJlciA9IDEwO1xuICBjb25zdCBtb2R1bGVQYXRoID0gYG5vZGVfbW9kdWxlcy8ke2ZpbGVuYW1lfWA7XG5cbiAgaWYoZGlyUGF0aCAhPT0gJy4vJykge1xuICAgIGNvbnN0IGxleE1vZHVsZVBhdGggPSBwYXRoUmVzb2x2ZShkaXJQYXRoLCBtb2R1bGVQYXRoKTtcbiAgICBpZihleGlzdHNTeW5jKGxleE1vZHVsZVBhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4TW9kdWxlUGF0aDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBwcm9qZWN0UGF0aCA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIG1vZHVsZVBhdGgpO1xuICBpZihleGlzdHNTeW5jKHByb2plY3RQYXRoKSkge1xuICAgIHJldHVybiBwcm9qZWN0UGF0aDtcbiAgfVxuXG4gIGlmKGJhY2tVcCkge1xuICAgIGNvbnN0IGZpbGVQYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbiAgICBjb25zdCBwcmV2aW91c1BhdGg6IHN0cmluZyA9IEFycmF5KG5lc3REZXB0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gJy4uLycpLmpvaW4oJycpO1xuICAgIHJldHVybiBwYXRoUmVzb2x2ZShmaWxlUGF0aCwgcHJldmlvdXNQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgZGlyUGF0aCwgbmVzdERlcHRoKSB8fCBgL25vZGVfbW9kdWxlcy8ke2ZpbGVuYW1lfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Tm9kZVBhdGggPSAobW9kdWxlTmFtZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgbW9kdWxlUGF0aDogc3RyaW5nID0gYG5vZGVfbW9kdWxlcy8ke21vZHVsZU5hbWV9YDtcblxuICBjb25zdCBwcm9qZWN0UGF0aCA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIG1vZHVsZVBhdGgpO1xuICBpZihleGlzdHNTeW5jKHByb2plY3RQYXRoKSkge1xuICAgIHJldHVybiBwcm9qZWN0UGF0aDtcbiAgfVxuXG4gIGNvbnN0IHJlcG9QYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgZGlyTmFtZSk7XG4gIGlmKHJlcG9QYXRoICYmIGV4aXN0c1N5bmMocmVwb1BhdGgpKSB7XG4gICAgcmV0dXJuIHJlcG9QYXRoO1xuICB9XG5cbiAgY29uc3QgbG9jYWxQYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgJy4vJywgMTApIHx8IGAuLyR7bW9kdWxlUGF0aH1gO1xuICByZXR1cm4gbG9jYWxQYXRoO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVCaW5hcnlQYXRoID0gKGJpbmFyeU5hbWU6IHN0cmluZywgcGFja2FnZU5hbWU/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBsZXhEaXIgPSBMZXhDb25maWcuZ2V0TGV4RGlyKCk7XG5cbiAgY29uc3QgbGV4QmluUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8uYmluLyR7YmluYXJ5TmFtZX1gKTtcbiAgaWYoZXhpc3RzU3luYyhsZXhCaW5QYXRoKSkge1xuICAgIHJldHVybiBsZXhCaW5QYXRoO1xuICB9XG5cbiAgaWYocGFja2FnZU5hbWUpIHtcbiAgICBjb25zdCBsZXhQYWNrYWdlQmluUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfS9iaW4vJHtiaW5hcnlOYW1lfWApO1xuICAgIGlmKGV4aXN0c1N5bmMobGV4UGFja2FnZUJpblBhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4UGFja2FnZUJpblBhdGg7XG4gICAgfVxuXG4gICAgY29uc3QgbGV4UGFja2FnZUJpbkpzUGF0aCA9IHBhdGhSZXNvbHZlKGxleERpciwgYG5vZGVfbW9kdWxlcy8ke3BhY2thZ2VOYW1lfS9iaW4vJHtiaW5hcnlOYW1lfS5qc2ApO1xuICAgIGlmKGV4aXN0c1N5bmMobGV4UGFja2FnZUJpbkpzUGF0aCkpIHtcbiAgICAgIHJldHVybiBsZXhQYWNrYWdlQmluSnNQYXRoO1xuICAgIH1cblxuICAgIGNvbnN0IGxleFBhY2thZ2VCaW5DanNQYXRoID0gcGF0aFJlc29sdmUobGV4RGlyLCBgbm9kZV9tb2R1bGVzLyR7cGFja2FnZU5hbWV9L2Jpbi8ke2JpbmFyeU5hbWV9LmNqc2ApO1xuICAgIGlmKGV4aXN0c1N5bmMobGV4UGFja2FnZUJpbkNqc1BhdGgpKSB7XG4gICAgICByZXR1cm4gbGV4UGFja2FnZUJpbkNqc1BhdGg7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2hlY2tCaW5VcCA9IChzdGFydERpcjogc3RyaW5nKSA9PiB7XG4gICAgbGV0IGNoZWNrRGlyID0gc3RhcnREaXI7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgY29uc3QgbW9ub3JlcG9CaW5QYXRoID0gcGF0aFJlc29sdmUoY2hlY2tEaXIsIGBub2RlX21vZHVsZXMvLmJpbi8ke2JpbmFyeU5hbWV9YCk7XG4gICAgICBpZihleGlzdHNTeW5jKG1vbm9yZXBvQmluUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIG1vbm9yZXBvQmluUGF0aDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudERpciA9IHBhdGhSZXNvbHZlKGNoZWNrRGlyLCAnLi4nKTtcbiAgICAgIGlmKHBhcmVudERpciA9PT0gY2hlY2tEaXIpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjaGVja0RpciA9IHBhcmVudERpcjtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9O1xuXG4gIGNvbnN0IGZyb21Dd2QgPSBjaGVja0JpblVwKHByb2Nlc3MuY3dkKCkpO1xuICBpZihmcm9tQ3dkKSB7XG4gICAgcmV0dXJuIGZyb21Dd2Q7XG4gIH1cblxuICBjb25zdCBmcm9tTGV4ID0gY2hlY2tCaW5VcChsZXhEaXIpO1xuICBpZihmcm9tTGV4KSB7XG4gICAgcmV0dXJuIGZyb21MZXg7XG4gIH1cblxuICByZXR1cm4gJyc7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFRhaWx3aW5kQ3NzUGF0aCA9ICgpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0YWlsd2luZFBhdHRlcm5zID0gWycqKi90YWlsd2luZC5jc3MnXTtcblxuICBmb3IoY29uc3QgcGF0dGVybiBvZiB0YWlsd2luZFBhdHRlcm5zKSB7XG4gICAgY29uc3QgZmlsZXMgPSBnbG9iU3luYyhwYXR0ZXJuLCB7XG4gICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovYnVpbGQvKionLCAnKiovLnN0b3J5Ym9vay8qKiddXG4gICAgfSk7XG5cbiAgICBpZihmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZmlsZXNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBTyxnQkFBZ0I7QUFDdkIsU0FB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
@@ -0,0 +1 @@
1
+ export declare const log: (message: string, type?: string, quiet?: boolean) => void;
@@ -0,0 +1,4 @@
1
+ import { render, screen, fireEvent, waitFor, waitForElementToBeRemoved, within, getByRole, getByLabelText, getByPlaceholderText, getByText, getByTestId, getAllByRole, getAllByLabelText, getAllByPlaceholderText, getAllByText, getAllByTestId, queryByRole, queryByLabelText, queryByPlaceholderText, queryByText, queryByTestId, queryAllByRole, queryAllByLabelText, queryAllByPlaceholderText, queryAllByText, queryAllByTestId, findByRole, findByLabelText, findByPlaceholderText, findByText, findByTestId, findAllByRole, findAllByLabelText, findAllByPlaceholderText, findAllByText, findAllByTestId, renderHook, act, cleanup } from '@testing-library/react';
2
+ import * as react from 'react';
3
+ export { react };
4
+ export { render, screen, fireEvent, waitFor, waitForElementToBeRemoved, within, getByRole, getByLabelText, getByPlaceholderText, getByText, getByTestId, getAllByRole, getAllByLabelText, getAllByPlaceholderText, getAllByText, getAllByTestId, queryByRole, queryByLabelText, queryByPlaceholderText, queryByText, queryByTestId, queryAllByRole, queryAllByLabelText, queryAllByPlaceholderText, queryAllByText, queryAllByTestId, findByRole, findByLabelText, findByPlaceholderText, findByText, findByTestId, findAllByRole, findAllByLabelText, findAllByPlaceholderText, findAllByText, findAllByTestId, renderHook, act, cleanup };
@@ -1,5 +1,85 @@
1
+ import {
2
+ render,
3
+ screen,
4
+ fireEvent,
5
+ waitFor,
6
+ waitForElementToBeRemoved,
7
+ within,
8
+ getByRole,
9
+ getByLabelText,
10
+ getByPlaceholderText,
11
+ getByText,
12
+ getByTestId,
13
+ getAllByRole,
14
+ getAllByLabelText,
15
+ getAllByPlaceholderText,
16
+ getAllByText,
17
+ getAllByTestId,
18
+ queryByRole,
19
+ queryByLabelText,
20
+ queryByPlaceholderText,
21
+ queryByText,
22
+ queryByTestId,
23
+ queryAllByRole,
24
+ queryAllByLabelText,
25
+ queryAllByPlaceholderText,
26
+ queryAllByText,
27
+ queryAllByTestId,
28
+ findByRole,
29
+ findByLabelText,
30
+ findByPlaceholderText,
31
+ findByText,
32
+ findByTestId,
33
+ findAllByRole,
34
+ findAllByLabelText,
35
+ findAllByPlaceholderText,
36
+ findAllByText,
37
+ findAllByTestId,
38
+ renderHook,
39
+ act,
40
+ cleanup
41
+ } from "@testing-library/react";
1
42
  import * as react from "react";
2
43
  export {
3
- react
44
+ act,
45
+ cleanup,
46
+ findAllByLabelText,
47
+ findAllByPlaceholderText,
48
+ findAllByRole,
49
+ findAllByTestId,
50
+ findAllByText,
51
+ findByLabelText,
52
+ findByPlaceholderText,
53
+ findByRole,
54
+ findByTestId,
55
+ findByText,
56
+ fireEvent,
57
+ getAllByLabelText,
58
+ getAllByPlaceholderText,
59
+ getAllByRole,
60
+ getAllByTestId,
61
+ getAllByText,
62
+ getByLabelText,
63
+ getByPlaceholderText,
64
+ getByRole,
65
+ getByTestId,
66
+ getByText,
67
+ queryAllByLabelText,
68
+ queryAllByPlaceholderText,
69
+ queryAllByRole,
70
+ queryAllByTestId,
71
+ queryAllByText,
72
+ queryByLabelText,
73
+ queryByPlaceholderText,
74
+ queryByRole,
75
+ queryByTestId,
76
+ queryByText,
77
+ react,
78
+ render,
79
+ renderHook,
80
+ screen,
81
+ waitFor,
82
+ waitForElementToBeRemoved,
83
+ within
4
84
  };
5
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3JlYWN0U2hpbS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgcmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQge3JlYWN0fTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxZQUFZLFdBQVc7IiwKICAibmFtZXMiOiBbXQp9Cg==
85
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3JlYWN0U2hpbS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtcbiAgcmVuZGVyLFxuICBzY3JlZW4sXG4gIGZpcmVFdmVudCxcbiAgd2FpdEZvcixcbiAgd2FpdEZvckVsZW1lbnRUb0JlUmVtb3ZlZCxcbiAgd2l0aGluLFxuICBnZXRCeVJvbGUsXG4gIGdldEJ5TGFiZWxUZXh0LFxuICBnZXRCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZ2V0QnlUZXh0LFxuICBnZXRCeVRlc3RJZCxcbiAgZ2V0QWxsQnlSb2xlLFxuICBnZXRBbGxCeUxhYmVsVGV4dCxcbiAgZ2V0QWxsQnlQbGFjZWhvbGRlclRleHQsXG4gIGdldEFsbEJ5VGV4dCxcbiAgZ2V0QWxsQnlUZXN0SWQsXG4gIHF1ZXJ5QnlSb2xlLFxuICBxdWVyeUJ5TGFiZWxUZXh0LFxuICBxdWVyeUJ5UGxhY2Vob2xkZXJUZXh0LFxuICBxdWVyeUJ5VGV4dCxcbiAgcXVlcnlCeVRlc3RJZCxcbiAgcXVlcnlBbGxCeVJvbGUsXG4gIHF1ZXJ5QWxsQnlMYWJlbFRleHQsXG4gIHF1ZXJ5QWxsQnlQbGFjZWhvbGRlclRleHQsXG4gIHF1ZXJ5QWxsQnlUZXh0LFxuICBxdWVyeUFsbEJ5VGVzdElkLFxuICBmaW5kQnlSb2xlLFxuICBmaW5kQnlMYWJlbFRleHQsXG4gIGZpbmRCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZmluZEJ5VGV4dCxcbiAgZmluZEJ5VGVzdElkLFxuICBmaW5kQWxsQnlSb2xlLFxuICBmaW5kQWxsQnlMYWJlbFRleHQsXG4gIGZpbmRBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZmluZEFsbEJ5VGV4dCxcbiAgZmluZEFsbEJ5VGVzdElkLFxuICByZW5kZXJIb29rLFxuICBhY3QsXG4gIGNsZWFudXBcbn0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgKiBhcyByZWFjdCBmcm9tICdyZWFjdCc7XG5cbmV4cG9ydCB7cmVhY3R9O1xuXG4vLyBFeHBvcnQgc3BlY2lmaWMgdGVzdGluZyBsaWJyYXJ5IGZ1bmN0aW9uc1xuZXhwb3J0IHtcbiAgcmVuZGVyLFxuICBzY3JlZW4sXG4gIGZpcmVFdmVudCxcbiAgd2FpdEZvcixcbiAgd2FpdEZvckVsZW1lbnRUb0JlUmVtb3ZlZCxcbiAgd2l0aGluLFxuICBnZXRCeVJvbGUsXG4gIGdldEJ5TGFiZWxUZXh0LFxuICBnZXRCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZ2V0QnlUZXh0LFxuICBnZXRCeVRlc3RJZCxcbiAgZ2V0QWxsQnlSb2xlLFxuICBnZXRBbGxCeUxhYmVsVGV4dCxcbiAgZ2V0QWxsQnlQbGFjZWhvbGRlclRleHQsXG4gIGdldEFsbEJ5VGV4dCxcbiAgZ2V0QWxsQnlUZXN0SWQsXG4gIHF1ZXJ5QnlSb2xlLFxuICBxdWVyeUJ5TGFiZWxUZXh0LFxuICBxdWVyeUJ5UGxhY2Vob2xkZXJUZXh0LFxuICBxdWVyeUJ5VGV4dCxcbiAgcXVlcnlCeVRlc3RJZCxcbiAgcXVlcnlBbGxCeVJvbGUsXG4gIHF1ZXJ5QWxsQnlMYWJlbFRleHQsXG4gIHF1ZXJ5QWxsQnlQbGFjZWhvbGRlclRleHQsXG4gIHF1ZXJ5QWxsQnlUZXh0LFxuICBxdWVyeUFsbEJ5VGVzdElkLFxuICBmaW5kQnlSb2xlLFxuICBmaW5kQnlMYWJlbFRleHQsXG4gIGZpbmRCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZmluZEJ5VGV4dCxcbiAgZmluZEJ5VGVzdElkLFxuICBmaW5kQWxsQnlSb2xlLFxuICBmaW5kQWxsQnlMYWJlbFRleHQsXG4gIGZpbmRBbGxCeVBsYWNlaG9sZGVyVGV4dCxcbiAgZmluZEFsbEJ5VGV4dCxcbiAgZmluZEFsbEJ5VGVzdElkLFxuICByZW5kZXJIb29rLFxuICBhY3QsXG4gIGNsZWFudXBcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsWUFBWSxXQUFXOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,50 @@
1
+ declare namespace _default {
2
+ let displayName: any;
3
+ let testEnvironment: string;
4
+ let moduleFileExtensions: string[];
5
+ let moduleDirectories: string[];
6
+ let moduleNameMapper: {
7
+ '^(\\.{1,2}/.*)\\.js$': string;
8
+ '^execa$': string;
9
+ '^boxen$': string;
10
+ '^chalk$': string;
11
+ '^ora$': string;
12
+ '^latest-version$': string;
13
+ '^compare-versions$': string;
14
+ '.*LexConfig.*': string;
15
+ '.*build\\.js$': string;
16
+ '.*versions\\.js$': string;
17
+ '.*compile\\.js$': string;
18
+ 'utils/file\\.js$': string;
19
+ '.*/utils/file\\.js$': string;
20
+ '^(\\.{1,2}/)*utils/file\\.js$': string;
21
+ '.(css|less|scss|sass)$': string;
22
+ '.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': string;
23
+ };
24
+ let rootDir: string;
25
+ let transformIgnorePatterns: string[];
26
+ let setupFilesAfterEnv: string[];
27
+ let transform: {
28
+ '^.+.js$|^.+.jsx$': (string | {
29
+ presets: (string | (string | {
30
+ targets: {
31
+ node: string;
32
+ };
33
+ })[])[];
34
+ })[];
35
+ '^.+.ts$|^.+.tsx$': (string | {
36
+ presets: (string | (string | {
37
+ targets: {
38
+ node: string;
39
+ };
40
+ })[])[];
41
+ })[];
42
+ };
43
+ let testRegex: string;
44
+ let collectCoverage: boolean;
45
+ let coverageDirectory: string;
46
+ let coveragePathIgnorePatterns: string[];
47
+ let coverageReporters: string[];
48
+ let verbose: boolean;
49
+ }
50
+ export default _default;
@@ -0,0 +1,66 @@
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
+ import {fileURLToPath} from 'url';
6
+ import {dirname, resolve} from 'path';
7
+ import {deepMerge} from './dist/utils/deepMerge.js';
8
+
9
+ import {readFileSync} from 'fs';
10
+
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ const pack = JSON.parse(readFileSync(resolve(__dirname, 'package.json'), 'utf8'));
14
+
15
+ let projectJestConfig = null;
16
+ if(process.env.LEX_CONFIG) {
17
+ try {
18
+ const lexConfig = JSON.parse(process.env.LEX_CONFIG);
19
+ projectJestConfig = lexConfig.jest;
20
+ } catch(error) {
21
+ console.warn('Failed to parse LEX_CONFIG:', error.message);
22
+ }
23
+ }
24
+
25
+ const baseConfig = {
26
+ collectCoverage: true,
27
+ coverageDirectory: '<rootDir>/coverage',
28
+ coveragePathIgnorePatterns: [
29
+ '/node_modules/',
30
+ '/dist',
31
+ '/lib',
32
+ '__snapshots__',
33
+ '.d.ts'
34
+ ],
35
+ coverageReporters: ['html', 'text'],
36
+ displayName: pack.name,
37
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'json', 'node'],
38
+ moduleNameMapper: {
39
+ '^(\\.{1,2}/.*)\\.js$': '$1',
40
+ },
41
+ rootDir: process.cwd(),
42
+ testEnvironment: 'node',
43
+ testRegex: '(/__tests__/.*|\\.(test|spec|integration))\\.(ts|tsx)?$',
44
+ transform: {
45
+ '^.+\.js$|^.+\.jsx$': ['babel-jest', {
46
+ presets: [
47
+ ['@babel/preset-env', {targets: {node: 'current'}}],
48
+ '@babel/preset-typescript'
49
+ ]
50
+ }],
51
+ '^.+\.ts$|^.+\.tsx$': ['babel-jest', {
52
+ presets: [
53
+ ['@babel/preset-env', {targets: {node: 'current'}}],
54
+ '@babel/preset-typescript',
55
+ ['@babel/preset-react', {runtime: 'automatic'}]
56
+ ]
57
+ }]
58
+ },
59
+ verbose: true
60
+ };
61
+
62
+ const finalConfig = projectJestConfig && Object.keys(projectJestConfig).length > 0
63
+ ? deepMerge(baseConfig, projectJestConfig)
64
+ : baseConfig;
65
+
66
+ export default finalConfig;