@frontmcp/nx 1.8.6 → 1.8.7

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 (110) hide show
  1. package/executors/build/build.impl.js +9 -19
  2. package/executors/build/build.impl.js.map +1 -1
  3. package/executors/build/schema.d.ts +2 -0
  4. package/executors/build/schema.js.map +1 -1
  5. package/executors/build/schema.json +22 -2
  6. package/executors/build-exec/build-exec.impl.js +5 -17
  7. package/executors/build-exec/build-exec.impl.js.map +1 -1
  8. package/executors/deploy/deploy.impl.js.map +1 -1
  9. package/executors/dev/dev.impl.js +11 -17
  10. package/executors/dev/dev.impl.js.map +1 -1
  11. package/executors/frontmcp-cli.d.ts +31 -0
  12. package/executors/frontmcp-cli.js +108 -0
  13. package/executors/frontmcp-cli.js.map +1 -0
  14. package/executors/inspector/inspector.impl.js +10 -18
  15. package/executors/inspector/inspector.impl.js.map +1 -1
  16. package/executors/serve/serve.impl.js +11 -17
  17. package/executors/serve/serve.impl.js.map +1 -1
  18. package/executors/test/test.impl.js +3 -15
  19. package/executors/test/test.impl.js.map +1 -1
  20. package/generators/adapter/files/__fileName__.adapter.ts__tmpl__ +9 -2
  21. package/generators/agent/agent.d.ts +1 -1
  22. package/generators/agent/agent.js +21 -7
  23. package/generators/agent/agent.js.map +1 -1
  24. package/generators/agent/files/__fileName__.agent.ts__tmpl__ +12 -6
  25. package/generators/app/app.d.ts +1 -1
  26. package/generators/app/app.js +3 -3
  27. package/generators/app/app.js.map +1 -1
  28. package/generators/app/files/jest.config.cjs__tmpl__ +37 -0
  29. package/generators/app/files/package.json__tmpl__ +5 -0
  30. package/generators/app/files/project.json__tmpl__ +3 -1
  31. package/generators/app/files/tsconfig.json__tmpl__ +6 -9
  32. package/generators/app/files/tsconfig.lib.json__tmpl__ +1 -2
  33. package/generators/app/files/tsconfig.spec.json__tmpl__ +3 -4
  34. package/generators/app/lib/normalize-options.d.ts +8 -1
  35. package/generators/app/lib/normalize-options.js +7 -2
  36. package/generators/app/lib/normalize-options.js.map +1 -1
  37. package/generators/app/schema.d.ts +2 -0
  38. package/generators/app/schema.js.map +1 -1
  39. package/generators/app/schema.json +5 -0
  40. package/generators/auth-provider/files/__fileName__.auth-provider.ts__tmpl__ +0 -1
  41. package/generators/flow/files/__fileName__.flow.ts__tmpl__ +54 -16
  42. package/generators/init/init.d.ts +4 -0
  43. package/generators/init/init.js +40 -0
  44. package/generators/init/init.js.map +1 -0
  45. package/generators/init/schema.d.ts +4 -0
  46. package/generators/init/schema.js +3 -0
  47. package/generators/init/schema.js.map +1 -0
  48. package/generators/init/schema.json +21 -0
  49. package/generators/lib/lib/normalize-options.d.ts +4 -1
  50. package/generators/lib/lib/normalize-options.js +5 -2
  51. package/generators/lib/lib/normalize-options.js.map +1 -1
  52. package/generators/lib/lib-project-files/jest.config.cjs__tmpl__ +39 -0
  53. package/generators/lib/lib-project-files/project.json__tmpl__ +16 -0
  54. package/generators/lib/lib-project-files/tsconfig.json__tmpl__ +15 -0
  55. package/generators/lib/lib-project-files/tsconfig.lib.json__tmpl__ +11 -0
  56. package/generators/lib/lib-project-files/tsconfig.spec.json__tmpl__ +11 -0
  57. package/generators/lib/lib.js +1 -1
  58. package/generators/lib/lib.js.map +1 -1
  59. package/generators/plugin/files/__fileName__.plugin.ts__tmpl__ +9 -5
  60. package/generators/provider/files/__fileName__.provider.ts__tmpl__ +5 -9
  61. package/generators/provider/provider.d.ts +1 -1
  62. package/generators/provider/provider.js +3 -3
  63. package/generators/provider/provider.js.map +1 -1
  64. package/generators/server/files/common/package.json__tmpl__ +5 -0
  65. package/generators/server/files/common/project.json__tmpl__ +3 -2
  66. package/generators/server/files/common/src/main.ts__tmpl__ +2 -2
  67. package/generators/server/files/common/tsconfig.json__tmpl__ +6 -8
  68. package/generators/server/files/common/tsconfig.lib.json__tmpl__ +0 -1
  69. package/generators/server/lib/normalize-options.d.ts +9 -1
  70. package/generators/server/lib/normalize-options.js +15 -2
  71. package/generators/server/lib/normalize-options.js.map +1 -1
  72. package/generators/server/server.d.ts +1 -1
  73. package/generators/server/server.js +2 -2
  74. package/generators/server/server.js.map +1 -1
  75. package/generators/ui-component/files/__className__/__className__.tsx__tmpl__ +0 -1
  76. package/generators/ui-component/ui-component.d.ts +1 -1
  77. package/generators/ui-component/ui-component.js +4 -1
  78. package/generators/ui-component/ui-component.js.map +1 -1
  79. package/generators/ui-page/ui-page.d.ts +1 -1
  80. package/generators/ui-page/ui-page.js +4 -1
  81. package/generators/ui-page/ui-page.js.map +1 -1
  82. package/generators/ui-shared/add-ui-entry.js.map +1 -1
  83. package/generators/ui-shared/ensure-ui-package.d.ts +17 -0
  84. package/generators/ui-shared/ensure-ui-package.js +120 -0
  85. package/generators/ui-shared/ensure-ui-package.js.map +1 -0
  86. package/generators/ui-shell/files/__fileName__/__fileName__.shell.spec.ts__tmpl__ +2 -1
  87. package/generators/ui-shell/ui-shell.d.ts +1 -1
  88. package/generators/ui-shell/ui-shell.js +4 -1
  89. package/generators/ui-shell/ui-shell.js.map +1 -1
  90. package/generators/workspace/files/nx.json__tmpl__ +15 -1
  91. package/generators/workspace/files/package.json__tmpl__ +3 -3
  92. package/generators/workspace/workspace.d.ts +1 -1
  93. package/generators/workspace/workspace.js +3 -2
  94. package/generators/workspace/workspace.js.map +1 -1
  95. package/generators.json +5 -0
  96. package/index.d.ts +1 -0
  97. package/index.js +3 -1
  98. package/index.js.map +1 -1
  99. package/package.json +2 -2
  100. package/utils/add-dependencies.d.ts +4 -2
  101. package/utils/add-dependencies.js +2 -2
  102. package/utils/add-dependencies.js.map +1 -1
  103. package/utils/normalize-options.js.map +1 -1
  104. package/utils/project-paths.d.ts +20 -0
  105. package/utils/project-paths.js +56 -0
  106. package/utils/project-paths.js.map +1 -0
  107. package/utils/versions.d.ts +2 -0
  108. package/utils/versions.js +17 -5
  109. package/utils/versions.js.map +1 -1
  110. package/generators/app/files/jest.config.ts__tmpl__ +0 -23
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-ui-package.js","sourceRoot":"","sources":["../../../../src/generators/ui-shared/ensure-ui-package.ts"],"names":[],"mappings":"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","sourcesContent":["import { offsetFromRoot, readJson, writeJson, type GeneratorCallback, type Tree } from '@nx/devkit';\n\nimport { addFrontmcpDependencies } from '../../utils/add-dependencies.js';\nimport { getIgnoreDeprecations } from '../../utils/project-paths.js';\nimport { getFrontmcpVersion, getNxVersion } from '../../utils/versions.js';\n\nexport interface EnsureUiPackageOptions {\n /** e.g. 'ui/components' */\n packageRoot: string;\n /** Nx project name for a package that does not exist yet, e.g. 'ui-components' */\n projectName: string;\n /** 'react' packages render components and are tested in jsdom; 'shell' packages only build HTML strings. */\n kind: 'react' | 'shell';\n}\n\nconst REACT_DEPENDENCIES: Record<string, string> = {\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n '@mui/material': '^7.0.0',\n '@emotion/react': '^11.14.0',\n '@emotion/styled': '^11.14.0',\n};\n\nconst REACT_DEV_DEPENDENCIES: Record<string, string> = {\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n '@testing-library/dom': '^10.4.0',\n '@testing-library/react': '^16.0.0',\n 'jest-environment-jsdom': '^30.0.2',\n};\n\nfunction buildTargets(packageRoot: string): Record<string, unknown> {\n const common = {\n main: `${packageRoot}/src/index.ts`,\n tsConfig: `${packageRoot}/tsconfig.json`,\n bundle: true,\n thirdParty: false,\n platform: 'node',\n additionalEntryPoints: [] as string[],\n };\n return {\n 'build-cjs': {\n executor: '@nx/esbuild:esbuild',\n outputs: ['{options.outputPath}'],\n options: { ...common, outputPath: `dist/${packageRoot}`, format: ['cjs'], declaration: true },\n },\n 'build-esm': {\n executor: '@nx/esbuild:esbuild',\n dependsOn: ['build-cjs'],\n outputs: ['{options.outputPath}'],\n options: {\n ...common,\n outputPath: `dist/${packageRoot}/esm`,\n format: ['esm'],\n declaration: false,\n esbuildOptions: { outExtension: { '.js': '.mjs' } },\n },\n },\n build: {\n executor: 'nx:noop',\n dependsOn: ['build-cjs', 'build-esm'],\n },\n };\n}\n\n/**\n * The UI generators emit `.tsx` files that import React and MUI (or the uipack\n * shell builder), and a spec that renders them. Nothing else installs those, so\n * the generators add them — and create the package folder when the workspace\n * does not have one yet, instead of writing files into a folder that no Nx\n * project owns.\n */\nexport function ensureUiPackage(tree: Tree, options: EnsureUiPackageOptions): GeneratorCallback {\n const { packageRoot, projectName, kind } = options;\n\n if (!tree.exists(`${packageRoot}/project.json`)) {\n const offset = offsetFromRoot(packageRoot);\n const ignoreDeprecations = getIgnoreDeprecations(tree);\n // `customConditions` (Nx solution workspaces set it) is only valid with a modern `moduleResolution`\n // (TS5098), so a package that inherits it must inherit the base's `module`/`moduleResolution` too.\n const inheritsModernResolution = Boolean(\n tree.exists('tsconfig.base.json') &&\n readJson<{ compilerOptions?: { customConditions?: unknown } }>(tree, 'tsconfig.base.json').compilerOptions\n ?.customConditions,\n );\n writeJson(tree, `${packageRoot}/project.json`, {\n name: projectName,\n $schema: `${offset}node_modules/nx/schemas/project-schema.json`,\n sourceRoot: `${packageRoot}/src`,\n projectType: 'library',\n tags: [],\n targets: buildTargets(packageRoot),\n });\n writeJson(tree, `${packageRoot}/tsconfig.json`, {\n extends: `${offset}tsconfig.base.json`,\n compilerOptions: {\n ...(!inheritsModernResolution && { module: 'commonjs', moduleResolution: 'node10' }),\n ...(!inheritsModernResolution && ignoreDeprecations && { ignoreDeprecations }),\n ...(kind === 'react' && { jsx: 'react-jsx' }),\n esModuleInterop: true,\n strict: true,\n },\n include: ['src/**/*.ts', 'src/**/*.tsx'],\n exclude: ['src/**/*.spec.ts', 'src/**/*.spec.tsx'],\n });\n tree.write(\n `${packageRoot}/jest.config.cjs`,\n `module.exports = {\n displayName: '${projectName}',\n testEnvironment: '${kind === 'react' ? 'jsdom' : 'node'}',\n transform: {\n '^.+\\\\\\\\.[tj]sx?$': ['@swc/jest', {\n jsc: {\n target: 'es2022',\n parser: { syntax: 'typescript', tsx: true },\n transform: { react: { runtime: 'automatic' } },\n },\n swcrc: false,\n }],\n },\n moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],\n};\n`,\n );\n if (!tree.exists(`${packageRoot}/src/index.ts`)) {\n tree.write(`${packageRoot}/src/index.ts`, '');\n }\n }\n\n const range = `~${getFrontmcpVersion()}`;\n const buildDevDependencies = { '@nx/esbuild': getNxVersion(), esbuild: '^0.25.0' };\n return kind === 'react'\n ? addFrontmcpDependencies(\n tree,\n REACT_DEPENDENCIES,\n { ...REACT_DEV_DEPENDENCIES, ...buildDevDependencies },\n { keepExistingVersions: true },\n )\n : addFrontmcpDependencies(tree, { '@frontmcp/uipack': range }, buildDevDependencies, {\n keepExistingVersions: true,\n });\n}\n"]}
@@ -11,6 +11,7 @@ describe('build<%= className %>Shell', () => {
11
11
 
12
12
  it('should return an HTML string', () => {
13
13
  const result = build<%= className %>Shell({ toolName: 'test' });
14
- expect(typeof result).toBe('string');
14
+ expect(typeof result.html).toBe('string');
15
+ expect(result.html).toContain('test');
15
16
  });
16
17
  });
@@ -1,4 +1,4 @@
1
- import { type Tree, type GeneratorCallback } from '@nx/devkit';
1
+ import { type GeneratorCallback, type Tree } from '@nx/devkit';
2
2
  import type { UiShellGeneratorSchema } from './schema.js';
3
3
  export declare function uiShellGenerator(tree: Tree, schema: UiShellGeneratorSchema): Promise<GeneratorCallback | void>;
4
4
  export default uiShellGenerator;
@@ -1,13 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.uiShellGenerator = uiShellGenerator;
4
- const devkit_1 = require("@nx/devkit");
5
4
  const path_1 = require("path");
5
+ const devkit_1 = require("@nx/devkit");
6
6
  const add_ui_entry_js_1 = require("../ui-shared/add-ui-entry.js");
7
+ const ensure_ui_package_js_1 = require("../ui-shared/ensure-ui-package.js");
7
8
  const PACKAGE_ROOT = 'ui/shells';
8
9
  const IMPORT_PATH = '@frontmcp/ui-shells';
9
10
  async function uiShellGenerator(tree, schema) {
10
11
  const { className, fileName } = (0, devkit_1.names)(schema.name);
12
+ const installTask = (0, ensure_ui_package_js_1.ensureUiPackage)(tree, { packageRoot: PACKAGE_ROOT, projectName: 'ui-shells', kind: 'shell' });
11
13
  // Generate shell files from templates (kebab-case naming)
12
14
  (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, 'files'), `${PACKAGE_ROOT}/src`, {
13
15
  className,
@@ -25,6 +27,7 @@ async function uiShellGenerator(tree, schema) {
25
27
  if (!schema.skipFormat) {
26
28
  await (0, devkit_1.formatFiles)(tree);
27
29
  }
30
+ return installTask;
28
31
  }
29
32
  exports.default = uiShellGenerator;
30
33
  //# sourceMappingURL=ui-shell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui-shell.js","sourceRoot":"","sources":["../../../../src/generators/ui-shell/ui-shell.ts"],"names":[],"mappings":";;AAQA,4CAsBC;AA9BD,uCAAkG;AAClG,+BAA4B;AAE5B,kEAA0D;AAE1D,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAEnC,KAAK,UAAU,gBAAgB,CAAC,IAAU,EAAE,MAA8B;IAC/E,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnD,0DAA0D;IAC1D,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,YAAY,MAAM,EAAE;QACnE,SAAS;QACT,QAAQ;QACR,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;IAEH,2EAA2E;IAC3E,IAAA,4BAAU,EAAC,IAAI,EAAE;QACf,WAAW,EAAE,YAAY;QACzB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,kBAAe,gBAAgB,CAAC","sourcesContent":["import { type Tree, formatFiles, generateFiles, names, type GeneratorCallback } from '@nx/devkit';\nimport { join } from 'path';\nimport type { UiShellGeneratorSchema } from './schema.js';\nimport { addUiEntry } from '../ui-shared/add-ui-entry.js';\n\nconst PACKAGE_ROOT = 'ui/shells';\nconst IMPORT_PATH = '@frontmcp/ui-shells';\n\nexport async function uiShellGenerator(tree: Tree, schema: UiShellGeneratorSchema): Promise<GeneratorCallback | void> {\n const { className, fileName } = names(schema.name);\n\n // Generate shell files from templates (kebab-case naming)\n generateFiles(tree, join(__dirname, 'files'), `${PACKAGE_ROOT}/src`, {\n className,\n fileName,\n name: schema.name,\n description: schema.description ?? '',\n tmpl: '',\n });\n\n // Add entry point to project.json, tsconfig.base.json, and barrel index.ts\n addUiEntry(tree, {\n packageRoot: PACKAGE_ROOT,\n entryName: fileName,\n importPath: IMPORT_PATH,\n });\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n}\n\nexport default uiShellGenerator;\n"]}
1
+ {"version":3,"file":"ui-shell.js","sourceRoot":"","sources":["../../../../src/generators/ui-shell/ui-shell.ts"],"names":[],"mappings":";;AAWA,4CA0BC;AArCD,+BAA4B;AAE5B,uCAAkG;AAElG,kEAA0D;AAC1D,4EAAoE;AAGpE,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAEnC,KAAK,UAAU,gBAAgB,CAAC,IAAU,EAAE,MAA8B;IAC/E,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,IAAA,sCAAe,EAAC,IAAI,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAElH,0DAA0D;IAC1D,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,YAAY,MAAM,EAAE;QACnE,SAAS;QACT,QAAQ;QACR,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;QACrC,IAAI,EAAE,EAAE;KACT,CAAC,CAAC;IAEH,2EAA2E;IAC3E,IAAA,4BAAU,EAAC,IAAI,EAAE;QACf,WAAW,EAAE,YAAY;QACzB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,kBAAe,gBAAgB,CAAC","sourcesContent":["import { join } from 'path';\n\nimport { formatFiles, generateFiles, names, type GeneratorCallback, type Tree } from '@nx/devkit';\n\nimport { addUiEntry } from '../ui-shared/add-ui-entry.js';\nimport { ensureUiPackage } from '../ui-shared/ensure-ui-package.js';\nimport type { UiShellGeneratorSchema } from './schema.js';\n\nconst PACKAGE_ROOT = 'ui/shells';\nconst IMPORT_PATH = '@frontmcp/ui-shells';\n\nexport async function uiShellGenerator(tree: Tree, schema: UiShellGeneratorSchema): Promise<GeneratorCallback | void> {\n const { className, fileName } = names(schema.name);\n\n const installTask = ensureUiPackage(tree, { packageRoot: PACKAGE_ROOT, projectName: 'ui-shells', kind: 'shell' });\n\n // Generate shell files from templates (kebab-case naming)\n generateFiles(tree, join(__dirname, 'files'), `${PACKAGE_ROOT}/src`, {\n className,\n fileName,\n name: schema.name,\n description: schema.description ?? '',\n tmpl: '',\n });\n\n // Add entry point to project.json, tsconfig.base.json, and barrel index.ts\n addUiEntry(tree, {\n packageRoot: PACKAGE_ROOT,\n entryName: fileName,\n importPath: IMPORT_PATH,\n });\n\n if (!schema.skipFormat) {\n await formatFiles(tree);\n }\n\n return installTask;\n}\n\nexport default uiShellGenerator;\n"]}
@@ -12,7 +12,8 @@
12
12
  "!{projectRoot}/eslint.config.mjs",
13
13
  "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)",
14
14
  "!{projectRoot}/tsconfig.spec.json",
15
- "!{projectRoot}/jest.config.[jt]s"
15
+ "!{projectRoot}/jest.config.[jt]s",
16
+ "!{projectRoot}/jest.config.cjs"
16
17
  ],
17
18
  "sharedGlobals": []
18
19
  },
@@ -44,6 +45,19 @@
44
45
  },
45
46
  "test": {
46
47
  "dependsOn": ["^build"]
48
+ },
49
+ "@frontmcp/nx:build": {
50
+ "cache": true,
51
+ "dependsOn": ["^build"],
52
+ "inputs": ["production", "^production"]
53
+ },
54
+ "@frontmcp/nx:build-exec": {
55
+ "cache": true,
56
+ "dependsOn": ["^build"],
57
+ "inputs": ["production", "^production"]
58
+ },
59
+ "@frontmcp/nx:test": {
60
+ "cache": true
47
61
  }
48
62
  },
49
63
  "release": {
@@ -33,9 +33,9 @@
33
33
  "@nx/jest": "<%= nxVersion %>",
34
34
  "@nx/esbuild": "<%= nxVersion %>",
35
35
  "@nx/workspace": "<%= nxVersion %>",
36
- "@swc-node/register": "~1.9.1",
37
- "@swc/core": "~1.5.7",
38
- "@swc/helpers": "~0.5.11",
36
+ "@swc-node/register": "~1.11.1",
37
+ "@swc/core": "~1.15.8",
38
+ "@swc/helpers": "~0.5.18",
39
39
  "@swc/jest": "~0.2.38",
40
40
  "@types/jest": "^30.0.0",
41
41
  "@types/node": "^24.0.0",
@@ -1,4 +1,4 @@
1
- import { type Tree, type GeneratorCallback } from '@nx/devkit';
1
+ import { type GeneratorCallback, type Tree } from '@nx/devkit';
2
2
  import type { WorkspaceGeneratorSchema } from './schema.js';
3
3
  export declare function workspaceGenerator(tree: Tree, schema: WorkspaceGeneratorSchema): Promise<GeneratorCallback>;
4
4
  export default workspaceGenerator;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.workspaceGenerator = workspaceGenerator;
4
- const devkit_1 = require("@nx/devkit");
5
4
  const child_process_1 = require("child_process");
6
5
  const path_1 = require("path");
7
- const index_js_1 = require("./lib/index.js");
6
+ const devkit_1 = require("@nx/devkit");
8
7
  const versions_js_1 = require("../../utils/versions.js");
8
+ const index_js_1 = require("./lib/index.js");
9
9
  async function workspaceGenerator(tree, schema) {
10
10
  return workspaceGeneratorInternal(tree, schema);
11
11
  }
@@ -30,6 +30,7 @@ async function workspaceGeneratorInternal(tree, schema) {
30
30
  await appGenerator(tree, {
31
31
  name: 'demo',
32
32
  directory: (0, path_1.join)(options.workspaceRoot, 'apps', 'demo'),
33
+ workspaceRoot: options.workspaceRoot,
33
34
  tags: 'scope:apps',
34
35
  skipFormat: true,
35
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../src/generators/workspace/workspace.ts"],"names":[],"mappings":";;AAOA,gDAEC;AATD,uCAAgH;AAChH,iDAAyC;AACzC,+BAA4B;AAE5B,6CAAkD;AAClD,yDAA2E;AAEpE,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,MAAgC;IACnF,OAAO,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,IAAU,EAAE,MAAgC;IACpF,MAAM,OAAO,GAAG,IAAA,2BAAgB,EAAC,MAAM,CAAC,CAAC;IACzC,MAAM,eAAe,GAAG,IAAI,IAAA,gCAAkB,GAAE,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,IAAA,0BAAY,GAAE,CAAC;IAEjC,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAA,WAAI,EAAC,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE;QACnE,GAAG,OAAO;QACV,eAAe;QACf,SAAS;QACT,IAAI,EAAE,EAAE;QACR,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;IAEH,2BAA2B;IAC3B,IAAI,CAAC,KAAK,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnE,0DAA0D;IAC1D,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACvD,MAAM,YAAY,CAAC,IAAI,EAAE;YACvB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;YACtD,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAExB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,GAAG,EAAE;gBACV,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3C,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,EAAE;YACV,UAAU;QACZ,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,EAAE;QACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,aAAqB;IAC9C,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,UAAU,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,IAAA,wBAAQ,EAAC,YAAY,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChE,IAAA,wBAAQ,EAAC,gCAAgC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC;AAED,kBAAe,kBAAkB,CAAC","sourcesContent":["import { type Tree, formatFiles, generateFiles, installPackagesTask, type GeneratorCallback } from '@nx/devkit';\nimport { execSync } from 'child_process';\nimport { join } from 'path';\nimport type { WorkspaceGeneratorSchema } from './schema.js';\nimport { normalizeOptions } from './lib/index.js';\nimport { getFrontmcpVersion, getNxVersion } from '../../utils/versions.js';\n\nexport async function workspaceGenerator(tree: Tree, schema: WorkspaceGeneratorSchema): Promise<GeneratorCallback> {\n return workspaceGeneratorInternal(tree, schema);\n}\n\nasync function workspaceGeneratorInternal(tree: Tree, schema: WorkspaceGeneratorSchema): Promise<GeneratorCallback> {\n const options = normalizeOptions(schema);\n const frontmcpVersion = `~${getFrontmcpVersion()}`;\n const nxVersion = getNxVersion();\n\n generateFiles(tree, join(__dirname, 'files'), options.workspaceRoot, {\n ...options,\n frontmcpVersion,\n nxVersion,\n tmpl: '',\n dot: '.',\n });\n\n // Create empty directories\n tree.write(join(options.workspaceRoot, 'apps', '.gitkeep'), '');\n tree.write(join(options.workspaceRoot, 'libs', '.gitkeep'), '');\n tree.write(join(options.workspaceRoot, 'servers', '.gitkeep'), '');\n\n // Compose with app generator when createSampleApp is true\n if (options.createSampleApp) {\n const { appGenerator } = await import('../app/app.js');\n await appGenerator(tree, {\n name: 'demo',\n directory: join(options.workspaceRoot, 'apps', 'demo'),\n tags: 'scope:apps',\n skipFormat: true,\n });\n }\n\n await formatFiles(tree);\n\n if (options.skipInstall) {\n if (!options.skipGit) {\n return () => {\n initGitRepository(options.workspaceRoot);\n };\n }\n return () => {\n /* noop */\n };\n }\n\n return () => {\n installPackagesTask(tree);\n if (!options.skipGit) {\n initGitRepository(options.workspaceRoot);\n }\n };\n}\n\nfunction initGitRepository(workspaceRoot: string): void {\n try {\n execSync('git init', { cwd: workspaceRoot, stdio: 'ignore' });\n execSync('git add -A', { cwd: workspaceRoot, stdio: 'ignore' });\n execSync('git commit -m \"Initial commit\"', { cwd: workspaceRoot, stdio: 'ignore' });\n } catch {\n // git may not be installed — silently skip\n }\n}\n\nexport default workspaceGenerator;\n"]}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../src/generators/workspace/workspace.ts"],"names":[],"mappings":"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","sourcesContent":["import { execSync } from 'child_process';\nimport { join } from 'path';\n\nimport { formatFiles, generateFiles, installPackagesTask, type GeneratorCallback, type Tree } from '@nx/devkit';\n\nimport { getFrontmcpVersion, getNxVersion } from '../../utils/versions.js';\nimport { normalizeOptions } from './lib/index.js';\nimport type { WorkspaceGeneratorSchema } from './schema.js';\n\nexport async function workspaceGenerator(tree: Tree, schema: WorkspaceGeneratorSchema): Promise<GeneratorCallback> {\n return workspaceGeneratorInternal(tree, schema);\n}\n\nasync function workspaceGeneratorInternal(tree: Tree, schema: WorkspaceGeneratorSchema): Promise<GeneratorCallback> {\n const options = normalizeOptions(schema);\n const frontmcpVersion = `~${getFrontmcpVersion()}`;\n const nxVersion = getNxVersion();\n\n generateFiles(tree, join(__dirname, 'files'), options.workspaceRoot, {\n ...options,\n frontmcpVersion,\n nxVersion,\n tmpl: '',\n dot: '.',\n });\n\n // Create empty directories\n tree.write(join(options.workspaceRoot, 'apps', '.gitkeep'), '');\n tree.write(join(options.workspaceRoot, 'libs', '.gitkeep'), '');\n tree.write(join(options.workspaceRoot, 'servers', '.gitkeep'), '');\n\n // Compose with app generator when createSampleApp is true\n if (options.createSampleApp) {\n const { appGenerator } = await import('../app/app.js');\n await appGenerator(tree, {\n name: 'demo',\n directory: join(options.workspaceRoot, 'apps', 'demo'),\n workspaceRoot: options.workspaceRoot,\n tags: 'scope:apps',\n skipFormat: true,\n });\n }\n\n await formatFiles(tree);\n\n if (options.skipInstall) {\n if (!options.skipGit) {\n return () => {\n initGitRepository(options.workspaceRoot);\n };\n }\n return () => {\n /* noop */\n };\n }\n\n return () => {\n installPackagesTask(tree);\n if (!options.skipGit) {\n initGitRepository(options.workspaceRoot);\n }\n };\n}\n\nfunction initGitRepository(workspaceRoot: string): void {\n try {\n execSync('git init', { cwd: workspaceRoot, stdio: 'ignore' });\n execSync('git add -A', { cwd: workspaceRoot, stdio: 'ignore' });\n execSync('git commit -m \"Initial commit\"', { cwd: workspaceRoot, stdio: 'ignore' });\n } catch {\n // git may not be installed — silently skip\n }\n}\n\nexport default workspaceGenerator;\n"]}
package/generators.json CHANGED
@@ -1,5 +1,10 @@
1
1
  {
2
2
  "generators": {
3
+ "init": {
4
+ "factory": "./generators/init/init",
5
+ "schema": "./generators/init/schema.json",
6
+ "description": "Prepare an existing Nx workspace for FrontMCP (dependencies and cacheable executors)"
7
+ },
3
8
  "workspace": {
4
9
  "factory": "./generators/workspace/workspace",
5
10
  "schema": "./generators/workspace/schema.json",
package/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { initGenerator } from './generators/init/init.js';
1
2
  export { workspaceGenerator } from './generators/workspace/workspace.js';
2
3
  export { appGenerator } from './generators/app/app.js';
3
4
  export { libGenerator } from './generators/lib/lib.js';
package/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toConstantName = exports.toFileName = exports.toPropertyName = exports.toClassName = exports.getNxDependencies = exports.getFrontmcpDevDependencies = exports.getFrontmcpDependencies = exports.getFrontmcpVersion = exports.uiShellGenerator = exports.uiPageGenerator = exports.uiComponentGenerator = exports.flowGenerator = exports.authProviderGenerator = exports.adapterGenerator = exports.pluginGenerator = exports.providerGenerator = exports.agentGenerator = exports.skillGenerator = exports.promptGenerator = exports.resourceGenerator = exports.toolGenerator = exports.serverGenerator = exports.libGenerator = exports.appGenerator = exports.workspaceGenerator = void 0;
3
+ exports.toConstantName = exports.toFileName = exports.toPropertyName = exports.toClassName = exports.getNxDependencies = exports.getFrontmcpDevDependencies = exports.getFrontmcpDependencies = exports.getFrontmcpVersion = exports.uiShellGenerator = exports.uiPageGenerator = exports.uiComponentGenerator = exports.flowGenerator = exports.authProviderGenerator = exports.adapterGenerator = exports.pluginGenerator = exports.providerGenerator = exports.agentGenerator = exports.skillGenerator = exports.promptGenerator = exports.resourceGenerator = exports.toolGenerator = exports.serverGenerator = exports.libGenerator = exports.appGenerator = exports.workspaceGenerator = exports.initGenerator = void 0;
4
4
  // Generators
5
+ var init_js_1 = require("./generators/init/init.js");
6
+ Object.defineProperty(exports, "initGenerator", { enumerable: true, get: function () { return init_js_1.initGenerator; } });
5
7
  var workspace_js_1 = require("./generators/workspace/workspace.js");
6
8
  Object.defineProperty(exports, "workspaceGenerator", { enumerable: true, get: function () { return workspace_js_1.workspaceGenerator; } });
7
9
  var app_js_1 = require("./generators/app/app.js");
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,aAAa;AACb,oEAAyE;AAAhE,kHAAA,kBAAkB,OAAA;AAC3B,kDAAuD;AAA9C,sGAAA,YAAY,OAAA;AACrB,kDAAuD;AAA9C,sGAAA,YAAY,OAAA;AACrB,2DAAgE;AAAvD,4GAAA,eAAe,OAAA;AACxB,qDAA0D;AAAjD,wGAAA,aAAa,OAAA;AACtB,iEAAsE;AAA7D,gHAAA,iBAAiB,OAAA;AAC1B,2DAAgE;AAAvD,4GAAA,eAAe,OAAA;AACxB,wDAA6D;AAApD,0GAAA,cAAc,OAAA;AACvB,wDAA6D;AAApD,0GAAA,cAAc,OAAA;AACvB,iEAAsE;AAA7D,gHAAA,iBAAiB,OAAA;AAC1B,2DAAgE;AAAvD,4GAAA,eAAe,OAAA;AACxB,8DAAmE;AAA1D,8GAAA,gBAAgB,OAAA;AACzB,gFAAoF;AAA3E,yHAAA,qBAAqB,OAAA;AAC9B,qDAA0D;AAAjD,wGAAA,aAAa,OAAA;AACtB,6EAAiF;AAAxE,uHAAA,oBAAoB,OAAA;AAC7B,8DAAkE;AAAzD,6GAAA,eAAe,OAAA;AACxB,iEAAqE;AAA5D,+GAAA,gBAAgB,OAAA;AAEzB,YAAY;AACZ,mDAK6B;AAJ3B,iHAAA,kBAAkB,OAAA;AAClB,sHAAA,uBAAuB,OAAA;AACvB,yHAAA,0BAA0B,OAAA;AAC1B,gHAAA,iBAAiB,OAAA;AAEnB,6CAA2F;AAAlF,uGAAA,WAAW,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,sGAAA,UAAU,OAAA;AAAE,0GAAA,cAAc,OAAA","sourcesContent":["// Generators\nexport { workspaceGenerator } from './generators/workspace/workspace.js';\nexport { appGenerator } from './generators/app/app.js';\nexport { libGenerator } from './generators/lib/lib.js';\nexport { serverGenerator } from './generators/server/server.js';\nexport { toolGenerator } from './generators/tool/tool.js';\nexport { resourceGenerator } from './generators/resource/resource.js';\nexport { promptGenerator } from './generators/prompt/prompt.js';\nexport { skillGenerator } from './generators/skill/skill.js';\nexport { agentGenerator } from './generators/agent/agent.js';\nexport { providerGenerator } from './generators/provider/provider.js';\nexport { pluginGenerator } from './generators/plugin/plugin.js';\nexport { adapterGenerator } from './generators/adapter/adapter.js';\nexport { authProviderGenerator } from './generators/auth-provider/auth-provider.js';\nexport { flowGenerator } from './generators/flow/flow.js';\nexport { uiComponentGenerator } from './generators/ui-component/ui-component.js';\nexport { uiPageGenerator } from './generators/ui-page/ui-page.js';\nexport { uiShellGenerator } from './generators/ui-shell/ui-shell.js';\n\n// Utilities\nexport {\n getFrontmcpVersion,\n getFrontmcpDependencies,\n getFrontmcpDevDependencies,\n getNxDependencies,\n} from './utils/versions.js';\nexport { toClassName, toPropertyName, toFileName, toConstantName } from './utils/names.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,aAAa;AACb,qDAA0D;AAAjD,wGAAA,aAAa,OAAA;AACtB,oEAAyE;AAAhE,kHAAA,kBAAkB,OAAA;AAC3B,kDAAuD;AAA9C,sGAAA,YAAY,OAAA;AACrB,kDAAuD;AAA9C,sGAAA,YAAY,OAAA;AACrB,2DAAgE;AAAvD,4GAAA,eAAe,OAAA;AACxB,qDAA0D;AAAjD,wGAAA,aAAa,OAAA;AACtB,iEAAsE;AAA7D,gHAAA,iBAAiB,OAAA;AAC1B,2DAAgE;AAAvD,4GAAA,eAAe,OAAA;AACxB,wDAA6D;AAApD,0GAAA,cAAc,OAAA;AACvB,wDAA6D;AAApD,0GAAA,cAAc,OAAA;AACvB,iEAAsE;AAA7D,gHAAA,iBAAiB,OAAA;AAC1B,2DAAgE;AAAvD,4GAAA,eAAe,OAAA;AACxB,8DAAmE;AAA1D,8GAAA,gBAAgB,OAAA;AACzB,gFAAoF;AAA3E,yHAAA,qBAAqB,OAAA;AAC9B,qDAA0D;AAAjD,wGAAA,aAAa,OAAA;AACtB,6EAAiF;AAAxE,uHAAA,oBAAoB,OAAA;AAC7B,8DAAkE;AAAzD,6GAAA,eAAe,OAAA;AACxB,iEAAqE;AAA5D,+GAAA,gBAAgB,OAAA;AAEzB,YAAY;AACZ,mDAK6B;AAJ3B,iHAAA,kBAAkB,OAAA;AAClB,sHAAA,uBAAuB,OAAA;AACvB,yHAAA,0BAA0B,OAAA;AAC1B,gHAAA,iBAAiB,OAAA;AAEnB,6CAA2F;AAAlF,uGAAA,WAAW,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,sGAAA,UAAU,OAAA;AAAE,0GAAA,cAAc,OAAA","sourcesContent":["// Generators\nexport { initGenerator } from './generators/init/init.js';\nexport { workspaceGenerator } from './generators/workspace/workspace.js';\nexport { appGenerator } from './generators/app/app.js';\nexport { libGenerator } from './generators/lib/lib.js';\nexport { serverGenerator } from './generators/server/server.js';\nexport { toolGenerator } from './generators/tool/tool.js';\nexport { resourceGenerator } from './generators/resource/resource.js';\nexport { promptGenerator } from './generators/prompt/prompt.js';\nexport { skillGenerator } from './generators/skill/skill.js';\nexport { agentGenerator } from './generators/agent/agent.js';\nexport { providerGenerator } from './generators/provider/provider.js';\nexport { pluginGenerator } from './generators/plugin/plugin.js';\nexport { adapterGenerator } from './generators/adapter/adapter.js';\nexport { authProviderGenerator } from './generators/auth-provider/auth-provider.js';\nexport { flowGenerator } from './generators/flow/flow.js';\nexport { uiComponentGenerator } from './generators/ui-component/ui-component.js';\nexport { uiPageGenerator } from './generators/ui-page/ui-page.js';\nexport { uiShellGenerator } from './generators/ui-shell/ui-shell.js';\n\n// Utilities\nexport {\n getFrontmcpVersion,\n getFrontmcpDependencies,\n getFrontmcpDevDependencies,\n getNxDependencies,\n} from './utils/versions.js';\nexport { toClassName, toPropertyName, toFileName, toConstantName } from './utils/names.js';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontmcp/nx",
3
- "version": "1.8.6",
3
+ "version": "1.8.7",
4
4
  "description": "Nx plugin for FrontMCP — generators and executors for building MCP servers",
5
5
  "author": "AgentFront <info@agentfront.dev>",
6
6
  "homepage": "https://docs.agentfront.dev",
@@ -33,7 +33,7 @@
33
33
  "node": ">=24.0.0"
34
34
  },
35
35
  "dependencies": {
36
- "@frontmcp/skills": "1.8.6",
36
+ "@frontmcp/skills": "1.8.7",
37
37
  "@nx/devkit": "22.6.4",
38
38
  "tslib": "^2.3.0"
39
39
  },
@@ -1,2 +1,4 @@
1
- import { type Tree, type GeneratorCallback } from '@nx/devkit';
2
- export declare function addFrontmcpDependencies(tree: Tree, dependencies: Record<string, string>, devDependencies?: Record<string, string>): GeneratorCallback;
1
+ import { type GeneratorCallback, type Tree } from '@nx/devkit';
2
+ export declare function addFrontmcpDependencies(tree: Tree, dependencies: Record<string, string>, devDependencies?: Record<string, string>, options?: {
3
+ keepExistingVersions?: boolean;
4
+ }): GeneratorCallback;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addFrontmcpDependencies = addFrontmcpDependencies;
4
4
  const devkit_1 = require("@nx/devkit");
5
- function addFrontmcpDependencies(tree, dependencies, devDependencies = {}) {
6
- return (0, devkit_1.addDependenciesToPackageJson)(tree, dependencies, devDependencies);
5
+ function addFrontmcpDependencies(tree, dependencies, devDependencies = {}, options = {}) {
6
+ return (0, devkit_1.addDependenciesToPackageJson)(tree, dependencies, devDependencies, undefined, options.keepExistingVersions);
7
7
  }
8
8
  //# sourceMappingURL=add-dependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-dependencies.js","sourceRoot":"","sources":["../../../src/utils/add-dependencies.ts"],"names":[],"mappings":";;AAEA,0DAMC;AARD,uCAA6F;AAE7F,SAAgB,uBAAuB,CACrC,IAAU,EACV,YAAoC,EACpC,kBAA0C,EAAE;IAE5C,OAAO,IAAA,qCAA4B,EAAC,IAAI,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;AAC3E,CAAC","sourcesContent":["import { type Tree, addDependenciesToPackageJson, type GeneratorCallback } from '@nx/devkit';\n\nexport function addFrontmcpDependencies(\n tree: Tree,\n dependencies: Record<string, string>,\n devDependencies: Record<string, string> = {},\n): GeneratorCallback {\n return addDependenciesToPackageJson(tree, dependencies, devDependencies);\n}\n"]}
1
+ {"version":3,"file":"add-dependencies.js","sourceRoot":"","sources":["../../../src/utils/add-dependencies.ts"],"names":[],"mappings":";;AAEA,0DAOC;AATD,uCAA6F;AAE7F,SAAgB,uBAAuB,CACrC,IAAU,EACV,YAAoC,EACpC,kBAA0C,EAAE,EAC5C,UAA8C,EAAE;IAEhD,OAAO,IAAA,qCAA4B,EAAC,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACpH,CAAC","sourcesContent":["import { addDependenciesToPackageJson, type GeneratorCallback, type Tree } from '@nx/devkit';\n\nexport function addFrontmcpDependencies(\n tree: Tree,\n dependencies: Record<string, string>,\n devDependencies: Record<string, string> = {},\n options: { keepExistingVersions?: boolean } = {},\n): GeneratorCallback {\n return addDependenciesToPackageJson(tree, dependencies, devDependencies, undefined, options.keepExistingVersions);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../../../src/utils/normalize-options.ts"],"names":[],"mappings":";;AAmBA,8DA+BC;AAlDD,uCAAuE;AACvE,yCAAwC;AAkBxC,SAAgB,yBAAyB,CACvC,IAAU,EACV,MAA2B,EAC3B,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,YAAY,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;IACvC,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,IAAI,IAAA,0BAAiB,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAAgC,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;IAE/C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;QAChC,CAAC,CAAC,IAAA,0BAAiB,EAAC,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;QACtE,CAAC,CAAC,IAAA,0BAAiB,EAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW;QACX,iBAAiB;QACjB,QAAQ;QACR,SAAS;QACT,SAAS;KACV,CAAC;AACJ,CAAC","sourcesContent":["import { type Tree, getProjects, joinPathFragments } from '@nx/devkit';\nimport { toFileName } from './names.js';\n\nexport interface NormalizedPrimitiveOptions {\n name: string;\n project: string;\n projectRoot: string;\n projectSourceRoot: string;\n fileName: string;\n className: string;\n directory: string;\n}\n\nexport interface PrimitiveSchemaBase {\n name: string;\n project: string;\n directory?: string;\n}\n\nexport function normalizePrimitiveOptions(\n tree: Tree,\n schema: PrimitiveSchemaBase,\n subdirectory: string,\n): NormalizedPrimitiveOptions {\n const projects = getProjects(tree);\n const projectConfig = projects.get(schema.project);\n if (!projectConfig) {\n throw new Error(`Project \"${schema.project}\" not found in the workspace.`);\n }\n\n const projectRoot = projectConfig.root;\n const projectSourceRoot = projectConfig.sourceRoot ?? joinPathFragments(projectRoot, 'src');\n const fileName = toFileName(schema.name);\n\n const { names } = require('@nx/devkit') as typeof import('@nx/devkit');\n const className = names(schema.name).className;\n\n const directory = schema.directory\n ? joinPathFragments(projectSourceRoot, subdirectory, schema.directory)\n : joinPathFragments(projectSourceRoot, subdirectory);\n\n return {\n name: schema.name,\n project: schema.project,\n projectRoot,\n projectSourceRoot,\n fileName,\n className,\n directory,\n };\n}\n"]}
1
+ {"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../../../src/utils/normalize-options.ts"],"names":[],"mappings":";;AAoBA,8DA+BC;AAnDD,uCAAuE;AAEvE,yCAAwC;AAkBxC,SAAgB,yBAAyB,CACvC,IAAU,EACV,MAA2B,EAC3B,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,YAAY,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC;IACvC,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,IAAI,IAAA,0BAAiB,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC5F,MAAM,QAAQ,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEzC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,YAAY,CAAgC,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;IAE/C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS;QAChC,CAAC,CAAC,IAAA,0BAAiB,EAAC,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;QACtE,CAAC,CAAC,IAAA,0BAAiB,EAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAEvD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW;QACX,iBAAiB;QACjB,QAAQ;QACR,SAAS;QACT,SAAS;KACV,CAAC;AACJ,CAAC","sourcesContent":["import { getProjects, joinPathFragments, type Tree } from '@nx/devkit';\n\nimport { toFileName } from './names.js';\n\nexport interface NormalizedPrimitiveOptions {\n name: string;\n project: string;\n projectRoot: string;\n projectSourceRoot: string;\n fileName: string;\n className: string;\n directory: string;\n}\n\nexport interface PrimitiveSchemaBase {\n name: string;\n project: string;\n directory?: string;\n}\n\nexport function normalizePrimitiveOptions(\n tree: Tree,\n schema: PrimitiveSchemaBase,\n subdirectory: string,\n): NormalizedPrimitiveOptions {\n const projects = getProjects(tree);\n const projectConfig = projects.get(schema.project);\n if (!projectConfig) {\n throw new Error(`Project \"${schema.project}\" not found in the workspace.`);\n }\n\n const projectRoot = projectConfig.root;\n const projectSourceRoot = projectConfig.sourceRoot ?? joinPathFragments(projectRoot, 'src');\n const fileName = toFileName(schema.name);\n\n const { names } = require('@nx/devkit') as typeof import('@nx/devkit');\n const className = names(schema.name).className;\n\n const directory = schema.directory\n ? joinPathFragments(projectSourceRoot, subdirectory, schema.directory)\n : joinPathFragments(projectSourceRoot, subdirectory);\n\n return {\n name: schema.name,\n project: schema.project,\n projectRoot,\n projectSourceRoot,\n fileName,\n className,\n directory,\n };\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export interface ProjectPaths {
3
+ /** Project root relative to the Nx workspace root (what project.json must contain). */
4
+ projectRoot: string;
5
+ /** Relative path from the project root back to the workspace root, with a trailing slash. */
6
+ offset: string;
7
+ }
8
+ /**
9
+ * `directory` is relative to the tree root. When the tree root sits above the
10
+ * workspace (the `workspace` generator scaffolds into `<name>/`), pass that
11
+ * folder as `workspaceRoot` so the paths written into project files are
12
+ * relative to the workspace itself.
13
+ */
14
+ export declare function resolveProjectPaths(directory: string, workspaceRoot?: string): ProjectPaths;
15
+ /**
16
+ * TypeScript 6 rejects the classic `node10` module resolution unless the
17
+ * deprecation is acknowledged, but older compilers reject the acknowledgement
18
+ * itself, so it is only emitted when the workspace really runs TypeScript 6+.
19
+ */
20
+ export declare function getIgnoreDeprecations(tree: Tree, workspaceRoot?: string): string;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveProjectPaths = resolveProjectPaths;
4
+ exports.getIgnoreDeprecations = getIgnoreDeprecations;
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ const devkit_1 = require("@nx/devkit");
8
+ function normalizeDirectory(value) {
9
+ let result = value.replace(/\\/g, '/');
10
+ if (result.startsWith('./'))
11
+ result = result.slice(2);
12
+ let end = result.length;
13
+ while (end > 0 && result[end - 1] === '/')
14
+ end--;
15
+ return result.slice(0, end);
16
+ }
17
+ /**
18
+ * `directory` is relative to the tree root. When the tree root sits above the
19
+ * workspace (the `workspace` generator scaffolds into `<name>/`), pass that
20
+ * folder as `workspaceRoot` so the paths written into project files are
21
+ * relative to the workspace itself.
22
+ */
23
+ function resolveProjectPaths(directory, workspaceRoot) {
24
+ const normalized = normalizeDirectory(directory);
25
+ const base = normalizeDirectory(workspaceRoot ?? '');
26
+ const projectRoot = base && normalized.startsWith(`${base}/`) ? normalized.slice(base.length + 1) : normalized;
27
+ return { projectRoot, offset: (0, devkit_1.offsetFromRoot)(projectRoot) };
28
+ }
29
+ /**
30
+ * TypeScript 6 rejects the classic `node10` module resolution unless the
31
+ * deprecation is acknowledged, but older compilers reject the acknowledgement
32
+ * itself, so it is only emitted when the workspace really runs TypeScript 6+.
33
+ */
34
+ function getIgnoreDeprecations(tree, workspaceRoot) {
35
+ const root = workspaceRoot ?? '';
36
+ const installed = (0, path_1.join)(tree.root, root, 'node_modules', 'typescript', 'package.json');
37
+ let range;
38
+ try {
39
+ if ((0, fs_1.existsSync)(installed)) {
40
+ range = JSON.parse((0, fs_1.readFileSync)(installed, 'utf8')).version;
41
+ }
42
+ }
43
+ catch {
44
+ range = undefined;
45
+ }
46
+ if (!range) {
47
+ const pkgPath = (0, path_1.join)(root, 'package.json');
48
+ if (tree.exists(pkgPath)) {
49
+ const pkg = JSON.parse(tree.read(pkgPath, 'utf-8') ?? '{}');
50
+ range = pkg.devDependencies?.['typescript'] ?? pkg.dependencies?.['typescript'];
51
+ }
52
+ }
53
+ const major = Number(range?.match(/\d+/)?.[0]);
54
+ return Number.isFinite(major) && major >= 6 ? '6.0' : '';
55
+ }
56
+ //# sourceMappingURL=project-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-paths.js","sourceRoot":"","sources":["../../../src/utils/project-paths.ts"],"names":[],"mappings":";;AA0BA,kDAKC;AAOD,sDAuBC;AA7DD,2BAA8C;AAC9C,+BAA4B;AAE5B,uCAAuD;AASvD,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,OAAO,GAAG,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,GAAG,EAAE,CAAC;IACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,SAAiB,EAAE,aAAsB;IAC3E,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,kBAAkB,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAA,uBAAc,EAAC,WAAW,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,IAAU,EAAE,aAAsB;IACtE,MAAM,IAAI,GAAG,aAAa,IAAI,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IACtF,IAAI,KAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,SAAS,EAAE,MAAM,CAAC,CAA0B,CAAC,OAAO,CAAC;QACxF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,CAGzD,CAAC;YACF,KAAK,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC","sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\n\nimport { offsetFromRoot, type Tree } from '@nx/devkit';\n\nexport interface ProjectPaths {\n /** Project root relative to the Nx workspace root (what project.json must contain). */\n projectRoot: string;\n /** Relative path from the project root back to the workspace root, with a trailing slash. */\n offset: string;\n}\n\nfunction normalizeDirectory(value: string): string {\n let result = value.replace(/\\\\/g, '/');\n if (result.startsWith('./')) result = result.slice(2);\n let end = result.length;\n while (end > 0 && result[end - 1] === '/') end--;\n return result.slice(0, end);\n}\n\n/**\n * `directory` is relative to the tree root. When the tree root sits above the\n * workspace (the `workspace` generator scaffolds into `<name>/`), pass that\n * folder as `workspaceRoot` so the paths written into project files are\n * relative to the workspace itself.\n */\nexport function resolveProjectPaths(directory: string, workspaceRoot?: string): ProjectPaths {\n const normalized = normalizeDirectory(directory);\n const base = normalizeDirectory(workspaceRoot ?? '');\n const projectRoot = base && normalized.startsWith(`${base}/`) ? normalized.slice(base.length + 1) : normalized;\n return { projectRoot, offset: offsetFromRoot(projectRoot) };\n}\n\n/**\n * TypeScript 6 rejects the classic `node10` module resolution unless the\n * deprecation is acknowledged, but older compilers reject the acknowledgement\n * itself, so it is only emitted when the workspace really runs TypeScript 6+.\n */\nexport function getIgnoreDeprecations(tree: Tree, workspaceRoot?: string): string {\n const root = workspaceRoot ?? '';\n const installed = join(tree.root, root, 'node_modules', 'typescript', 'package.json');\n let range: string | undefined;\n try {\n if (existsSync(installed)) {\n range = (JSON.parse(readFileSync(installed, 'utf8')) as { version?: string }).version;\n }\n } catch {\n range = undefined;\n }\n if (!range) {\n const pkgPath = join(root, 'package.json');\n if (tree.exists(pkgPath)) {\n const pkg = JSON.parse(tree.read(pkgPath, 'utf-8') ?? '{}') as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n };\n range = pkg.devDependencies?.['typescript'] ?? pkg.dependencies?.['typescript'];\n }\n }\n const major = Number(range?.match(/\\d+/)?.[0]);\n return Number.isFinite(major) && major >= 6 ? '6.0' : '';\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  export declare function getFrontmcpVersion(): string;
2
2
  export declare function getFrontmcpDependencies(): Record<string, string>;
3
3
  export declare function getFrontmcpDevDependencies(): Record<string, string>;
4
+ /** What `frontmcp test` and the generated `jest.config.cjs` need in the workspace. */
5
+ export declare function getJestDevDependencies(): Record<string, string>;
4
6
  export declare function getNxVersion(): string;
5
7
  export declare function getNxDependencies(): Record<string, string>;
6
8
  export declare function getNxDevDependencies(): Record<string, string>;
package/utils/versions.js CHANGED
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getFrontmcpVersion = getFrontmcpVersion;
4
4
  exports.getFrontmcpDependencies = getFrontmcpDependencies;
5
5
  exports.getFrontmcpDevDependencies = getFrontmcpDevDependencies;
6
+ exports.getJestDevDependencies = getJestDevDependencies;
6
7
  exports.getNxVersion = getNxVersion;
7
8
  exports.getNxDependencies = getNxDependencies;
8
9
  exports.getNxDevDependencies = getNxDevDependencies;
9
- const devkit_1 = require("@nx/devkit");
10
- const path_1 = require("path");
11
10
  const fs_1 = require("fs");
11
+ const path_1 = require("path");
12
+ const devkit_1 = require("@nx/devkit");
12
13
  let cachedVersion;
13
14
  function readPluginVersion() {
14
15
  if (cachedVersion)
@@ -48,6 +49,17 @@ function getFrontmcpDevDependencies() {
48
49
  '@frontmcp/testing': range,
49
50
  };
50
51
  }
52
+ /** What `frontmcp test` and the generated `jest.config.cjs` need in the workspace. */
53
+ function getJestDevDependencies() {
54
+ return {
55
+ '@swc/core': '~1.15.8',
56
+ '@swc/helpers': '~0.5.18',
57
+ '@swc/jest': '~0.2.39',
58
+ '@types/jest': '^30.0.0',
59
+ '@types/node': '^24.0.0',
60
+ jest: '^30.0.2',
61
+ };
62
+ }
51
63
  const NX_VERSION = '22.6.4';
52
64
  function getNxVersion() {
53
65
  return NX_VERSION;
@@ -65,9 +77,9 @@ function getNxDependencies() {
65
77
  function getNxDevDependencies() {
66
78
  return {
67
79
  '@nx/workspace': NX_VERSION,
68
- '@swc-node/register': '~1.9.1',
69
- '@swc/core': '~1.5.7',
70
- '@swc/helpers': '~0.5.11',
80
+ '@swc-node/register': '~1.11.1',
81
+ '@swc/core': '~1.15.8',
82
+ '@swc/helpers': '~0.5.18',
71
83
  '@swc/jest': '~0.2.39',
72
84
  '@types/jest': '^30.0.0',
73
85
  '@types/node': '^24.0.0',
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/utils/versions.ts"],"names":[],"mappings":";;AA2BA,gDAEC;AAED,0DAQC;AAED,gEAKC;AAID,oCAEC;AAED,8CASC;AAED,oDAcC;AA/ED,uCAA0C;AAC1C,+BAA4B;AAC5B,2BAAgC;AAEhC,IAAI,aAAiC,CAAC;AAEtC,SAAS,iBAAiB;IACxB,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,gEAAgE;IAChE,8DAA8D;IAC9D,kDAAkD;IAClD,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtB,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC;YAAE,SAAS;QACrC,MAAM,GAAG,GAAG,IAAA,qBAAY,EAAuC,SAAS,CAAC,CAAC;QAC1E,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnE,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5B,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,SAAS,GAAG,CAAC,CAAC;AACtF,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,uBAAuB;IACrC,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACzC,OAAO;QACL,eAAe,EAAE,KAAK;QACtB,QAAQ,EAAE,KAAK;QACf,kBAAkB,EAAE,QAAQ;QAC5B,GAAG,EAAE,QAAQ;KACd,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B;IACxC,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACzC,OAAO;QACL,mBAAmB,EAAE,KAAK;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B,SAAgB,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO;QACL,EAAE,EAAE,UAAU;QACd,YAAY,EAAE,UAAU;QACxB,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,UAAU;QACxB,UAAU,EAAE,UAAU;QACtB,aAAa,EAAE,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO;QACL,eAAe,EAAE,UAAU;QAC3B,oBAAoB,EAAE,QAAQ;QAC9B,WAAW,EAAE,QAAQ;QACrB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,SAAS;QACxB,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,QAAQ;KACnB,CAAC;AACJ,CAAC","sourcesContent":["import { readJsonFile } from '@nx/devkit';\nimport { join } from 'path';\nimport { existsSync } from 'fs';\n\nlet cachedVersion: string | undefined;\n\nfunction readPluginVersion(): string {\n if (cachedVersion) return cachedVersion;\n\n // Walk up from __dirname to find the @frontmcp/nx package.json.\n // In monorepo (src/utils/ or dist/utils/): ../../package.json\n // When published to npm (utils/): ../package.json\n let dir = __dirname;\n for (let i = 0; i < 4; i++) {\n dir = join(dir, '..');\n const candidate = join(dir, 'package.json');\n if (!existsSync(candidate)) continue;\n const pkg = readJsonFile<{ name?: string; version?: unknown }>(candidate);\n if (pkg.name === '@frontmcp/nx' && typeof pkg.version === 'string') {\n cachedVersion = pkg.version;\n return cachedVersion;\n }\n }\n\n throw new Error(`@frontmcp/nx package.json not found (searched from ${__dirname})`);\n}\n\nexport function getFrontmcpVersion(): string {\n return readPluginVersion();\n}\n\nexport function getFrontmcpDependencies(): Record<string, string> {\n const range = `~${getFrontmcpVersion()}`;\n return {\n '@frontmcp/sdk': range,\n frontmcp: range,\n 'reflect-metadata': '^0.2.2',\n zod: '^4.0.0',\n };\n}\n\nexport function getFrontmcpDevDependencies(): Record<string, string> {\n const range = `~${getFrontmcpVersion()}`;\n return {\n '@frontmcp/testing': range,\n };\n}\n\nconst NX_VERSION = '22.6.4';\n\nexport function getNxVersion(): string {\n return NX_VERSION;\n}\n\nexport function getNxDependencies(): Record<string, string> {\n return {\n nx: NX_VERSION,\n '@nx/devkit': NX_VERSION,\n '@nx/js': NX_VERSION,\n '@nx/eslint': NX_VERSION,\n '@nx/jest': NX_VERSION,\n '@nx/esbuild': NX_VERSION,\n };\n}\n\nexport function getNxDevDependencies(): Record<string, string> {\n return {\n '@nx/workspace': NX_VERSION,\n '@swc-node/register': '~1.9.1',\n '@swc/core': '~1.5.7',\n '@swc/helpers': '~0.5.11',\n '@swc/jest': '~0.2.39',\n '@types/jest': '^30.0.0',\n '@types/node': '^24.0.0',\n jest: '^30.0.2',\n typescript: '~5.9.2',\n tslib: '^2.3.0',\n prettier: '~3.6.2',\n };\n}\n"]}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/utils/versions.ts"],"names":[],"mappings":";;AA4BA,gDAEC;AAED,0DAQC;AAED,gEAKC;AAGD,wDASC;AAID,oCAEC;AAED,8CASC;AAED,oDAcC;AA5FD,2BAAgC;AAChC,+BAA4B;AAE5B,uCAA0C;AAE1C,IAAI,aAAiC,CAAC;AAEtC,SAAS,iBAAiB;IACxB,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,gEAAgE;IAChE,8DAA8D;IAC9D,kDAAkD;IAClD,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtB,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC;YAAE,SAAS;QACrC,MAAM,GAAG,GAAG,IAAA,qBAAY,EAAuC,SAAS,CAAC,CAAC;QAC1E,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnE,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5B,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sDAAsD,SAAS,GAAG,CAAC,CAAC;AACtF,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,uBAAuB;IACrC,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACzC,OAAO;QACL,eAAe,EAAE,KAAK;QACtB,QAAQ,EAAE,KAAK;QACf,kBAAkB,EAAE,QAAQ;QAC5B,GAAG,EAAE,QAAQ;KACd,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B;IACxC,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,EAAE,CAAC;IACzC,OAAO;QACL,mBAAmB,EAAE,KAAK;KAC3B,CAAC;AACJ,CAAC;AAED,sFAAsF;AACtF,SAAgB,sBAAsB;IACpC,OAAO;QACL,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,SAAS;QACxB,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B,SAAgB,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,iBAAiB;IAC/B,OAAO;QACL,EAAE,EAAE,UAAU;QACd,YAAY,EAAE,UAAU;QACxB,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,UAAU;QACxB,UAAU,EAAE,UAAU;QACtB,aAAa,EAAE,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO;QACL,eAAe,EAAE,UAAU;QAC3B,oBAAoB,EAAE,SAAS;QAC/B,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,SAAS;QACxB,aAAa,EAAE,SAAS;QACxB,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,QAAQ;KACnB,CAAC;AACJ,CAAC","sourcesContent":["import { existsSync } from 'fs';\nimport { join } from 'path';\n\nimport { readJsonFile } from '@nx/devkit';\n\nlet cachedVersion: string | undefined;\n\nfunction readPluginVersion(): string {\n if (cachedVersion) return cachedVersion;\n\n // Walk up from __dirname to find the @frontmcp/nx package.json.\n // In monorepo (src/utils/ or dist/utils/): ../../package.json\n // When published to npm (utils/): ../package.json\n let dir = __dirname;\n for (let i = 0; i < 4; i++) {\n dir = join(dir, '..');\n const candidate = join(dir, 'package.json');\n if (!existsSync(candidate)) continue;\n const pkg = readJsonFile<{ name?: string; version?: unknown }>(candidate);\n if (pkg.name === '@frontmcp/nx' && typeof pkg.version === 'string') {\n cachedVersion = pkg.version;\n return cachedVersion;\n }\n }\n\n throw new Error(`@frontmcp/nx package.json not found (searched from ${__dirname})`);\n}\n\nexport function getFrontmcpVersion(): string {\n return readPluginVersion();\n}\n\nexport function getFrontmcpDependencies(): Record<string, string> {\n const range = `~${getFrontmcpVersion()}`;\n return {\n '@frontmcp/sdk': range,\n frontmcp: range,\n 'reflect-metadata': '^0.2.2',\n zod: '^4.0.0',\n };\n}\n\nexport function getFrontmcpDevDependencies(): Record<string, string> {\n const range = `~${getFrontmcpVersion()}`;\n return {\n '@frontmcp/testing': range,\n };\n}\n\n/** What `frontmcp test` and the generated `jest.config.cjs` need in the workspace. */\nexport function getJestDevDependencies(): Record<string, string> {\n return {\n '@swc/core': '~1.15.8',\n '@swc/helpers': '~0.5.18',\n '@swc/jest': '~0.2.39',\n '@types/jest': '^30.0.0',\n '@types/node': '^24.0.0',\n jest: '^30.0.2',\n };\n}\n\nconst NX_VERSION = '22.6.4';\n\nexport function getNxVersion(): string {\n return NX_VERSION;\n}\n\nexport function getNxDependencies(): Record<string, string> {\n return {\n nx: NX_VERSION,\n '@nx/devkit': NX_VERSION,\n '@nx/js': NX_VERSION,\n '@nx/eslint': NX_VERSION,\n '@nx/jest': NX_VERSION,\n '@nx/esbuild': NX_VERSION,\n };\n}\n\nexport function getNxDevDependencies(): Record<string, string> {\n return {\n '@nx/workspace': NX_VERSION,\n '@swc-node/register': '~1.11.1',\n '@swc/core': '~1.15.8',\n '@swc/helpers': '~0.5.18',\n '@swc/jest': '~0.2.39',\n '@types/jest': '^30.0.0',\n '@types/node': '^24.0.0',\n jest: '^30.0.2',\n typescript: '~5.9.2',\n tslib: '^2.3.0',\n prettier: '~3.6.2',\n };\n}\n"]}
@@ -1,23 +0,0 @@
1
- module.exports = {
2
- displayName: '<%= projectName %>',
3
- preset: '../../jest.preset.js',
4
- testEnvironment: 'node',
5
- transform: {
6
- '^.+\\.[tj]s$': ['@swc/jest', {
7
- jsc: {
8
- target: 'es2022',
9
- parser: { syntax: 'typescript', decorators: true, dynamicImport: true },
10
- transform: { decoratorMetadata: true, legacyDecorator: true },
11
- keepClassNames: true,
12
- externalHelpers: true,
13
- loose: true,
14
- },
15
- module: { type: 'es6' },
16
- sourceMaps: true,
17
- swcrc: false,
18
- }],
19
- },
20
- moduleFileExtensions: ['ts', 'js', 'html'],
21
- // Transpile ESM-only deps; the `.pnpm` skip keeps this correct under pnpm (issue #519).
22
- transformIgnorePatterns: ['node_modules[/\\\\](?!\\.pnpm[/\\\\])(?!(jose)[/\\\\])'],
23
- };