@payloadcms/figma 0.0.1-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +11 -0
- package/bin/cli.js +4 -0
- package/dist/api/control-plane.d.ts +124 -0
- package/dist/api/control-plane.d.ts.map +1 -0
- package/dist/api/control-plane.js +245 -0
- package/dist/api/control-plane.js.map +1 -0
- package/dist/api/control-plane.spec.d.ts +2 -0
- package/dist/api/control-plane.spec.d.ts.map +1 -0
- package/dist/api/control-plane.spec.js +296 -0
- package/dist/api/control-plane.spec.js.map +1 -0
- package/dist/api/figma-api.d.ts +31 -0
- package/dist/api/figma-api.d.ts.map +1 -0
- package/dist/api/figma-api.js +169 -0
- package/dist/api/figma-api.js.map +1 -0
- package/dist/api/figma-api.spec.d.ts +14 -0
- package/dist/api/figma-api.spec.d.ts.map +1 -0
- package/dist/api/figma-api.spec.js +201 -0
- package/dist/api/figma-api.spec.js.map +1 -0
- package/dist/auth/__tests__/fixtures.d.ts +26 -0
- package/dist/auth/__tests__/fixtures.d.ts.map +1 -0
- package/dist/auth/__tests__/fixtures.js +67 -0
- package/dist/auth/__tests__/fixtures.js.map +1 -0
- package/dist/auth/__tests__/mocks.d.ts +33 -0
- package/dist/auth/__tests__/mocks.d.ts.map +1 -0
- package/dist/auth/__tests__/mocks.js +63 -0
- package/dist/auth/__tests__/mocks.js.map +1 -0
- package/dist/auth/browser.d.ts +31 -0
- package/dist/auth/browser.d.ts.map +1 -0
- package/dist/auth/browser.js +41 -0
- package/dist/auth/browser.js.map +1 -0
- package/dist/auth/callback-server.d.ts +61 -0
- package/dist/auth/callback-server.d.ts.map +1 -0
- package/dist/auth/callback-server.js +168 -0
- package/dist/auth/callback-server.js.map +1 -0
- package/dist/auth/callback-server.spec.d.ts +2 -0
- package/dist/auth/callback-server.spec.d.ts.map +1 -0
- package/dist/auth/callback-server.spec.js +85 -0
- package/dist/auth/callback-server.spec.js.map +1 -0
- package/dist/auth/crypto-utils.d.ts +33 -0
- package/dist/auth/crypto-utils.d.ts.map +1 -0
- package/dist/auth/crypto-utils.js +96 -0
- package/dist/auth/crypto-utils.js.map +1 -0
- package/dist/auth/crypto-utils.spec.d.ts +2 -0
- package/dist/auth/crypto-utils.spec.d.ts.map +1 -0
- package/dist/auth/crypto-utils.spec.js +36 -0
- package/dist/auth/crypto-utils.spec.js.map +1 -0
- package/dist/auth/jwt-validator.d.ts +41 -0
- package/dist/auth/jwt-validator.d.ts.map +1 -0
- package/dist/auth/jwt-validator.js +113 -0
- package/dist/auth/jwt-validator.js.map +1 -0
- package/dist/auth/jwt-validator.spec.d.ts +10 -0
- package/dist/auth/jwt-validator.spec.d.ts.map +1 -0
- package/dist/auth/jwt-validator.spec.js +236 -0
- package/dist/auth/jwt-validator.spec.js.map +1 -0
- package/dist/auth/oauth-flow.d.ts +62 -0
- package/dist/auth/oauth-flow.d.ts.map +1 -0
- package/dist/auth/oauth-flow.js +172 -0
- package/dist/auth/oauth-flow.js.map +1 -0
- package/dist/auth/oauth-flow.spec.d.ts +2 -0
- package/dist/auth/oauth-flow.spec.d.ts.map +1 -0
- package/dist/auth/oauth-flow.spec.js +134 -0
- package/dist/auth/oauth-flow.spec.js.map +1 -0
- package/dist/auth/pages/error.html +85 -0
- package/dist/auth/pages/success.html +74 -0
- package/dist/auth/pkce.d.ts +51 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +71 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/pkce.spec.d.ts +2 -0
- package/dist/auth/pkce.spec.d.ts.map +1 -0
- package/dist/auth/pkce.spec.js +32 -0
- package/dist/auth/pkce.spec.js.map +1 -0
- package/dist/auth/project-token.d.ts +47 -0
- package/dist/auth/project-token.d.ts.map +1 -0
- package/dist/auth/project-token.js +134 -0
- package/dist/auth/project-token.js.map +1 -0
- package/dist/auth/project-token.spec.d.ts +2 -0
- package/dist/auth/project-token.spec.d.ts.map +1 -0
- package/dist/auth/project-token.spec.js +332 -0
- package/dist/auth/project-token.spec.js.map +1 -0
- package/dist/auth/refresh.d.ts +35 -0
- package/dist/auth/refresh.d.ts.map +1 -0
- package/dist/auth/refresh.js +149 -0
- package/dist/auth/refresh.js.map +1 -0
- package/dist/auth/refresh.spec.d.ts +2 -0
- package/dist/auth/refresh.spec.d.ts.map +1 -0
- package/dist/auth/refresh.spec.js +105 -0
- package/dist/auth/refresh.spec.js.map +1 -0
- package/dist/auth/token-store.d.ts +110 -0
- package/dist/auth/token-store.d.ts.map +1 -0
- package/dist/auth/token-store.js +188 -0
- package/dist/auth/token-store.js.map +1 -0
- package/dist/auth/token-store.spec.d.ts +2 -0
- package/dist/auth/token-store.spec.d.ts.map +1 -0
- package/dist/auth/token-store.spec.js +276 -0
- package/dist/auth/token-store.spec.js.map +1 -0
- package/dist/auth/types.d.ts +197 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +6 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +108 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/__tests__/test-utils.d.ts +28 -0
- package/dist/commands/__tests__/test-utils.d.ts.map +1 -0
- package/dist/commands/__tests__/test-utils.js +34 -0
- package/dist/commands/__tests__/test-utils.js.map +1 -0
- package/dist/commands/deploy.d.ts +16 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +297 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/deploy.spec.d.ts +2 -0
- package/dist/commands/deploy.spec.d.ts.map +1 -0
- package/dist/commands/deploy.spec.js +18 -0
- package/dist/commands/deploy.spec.js.map +1 -0
- package/dist/commands/init.d.ts +30 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +410 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/init.spec.d.ts +2 -0
- package/dist/commands/init.spec.d.ts.map +1 -0
- package/dist/commands/init.spec.js +283 -0
- package/dist/commands/init.spec.js.map +1 -0
- package/dist/commands/list-tokens.d.ts +16 -0
- package/dist/commands/list-tokens.d.ts.map +1 -0
- package/dist/commands/list-tokens.js +44 -0
- package/dist/commands/list-tokens.js.map +1 -0
- package/dist/commands/login.d.ts +17 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +69 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +16 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +43 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/config/oauth.d.ts +19 -0
- package/dist/config/oauth.d.ts.map +1 -0
- package/dist/config/oauth.js +43 -0
- package/dist/config/oauth.js.map +1 -0
- package/dist/constants.d.ts +27 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +27 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/plugin/adapter.d.ts +5 -0
- package/dist/plugin/adapter.d.ts.map +1 -0
- package/dist/plugin/adapter.js +139 -0
- package/dist/plugin/adapter.js.map +1 -0
- package/dist/plugin/build-config.d.ts +37 -0
- package/dist/plugin/build-config.d.ts.map +1 -0
- package/dist/plugin/build-config.js +25 -0
- package/dist/plugin/build-config.js.map +1 -0
- package/dist/plugin/build-config.spec.d.ts +2 -0
- package/dist/plugin/build-config.spec.d.ts.map +1 -0
- package/dist/plugin/build-config.spec.js +72 -0
- package/dist/plugin/build-config.spec.js.map +1 -0
- package/dist/types/config.d.ts +45 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +9 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types.d.ts +60 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/asset-collection.d.ts +30 -0
- package/dist/utils/asset-collection.d.ts.map +1 -0
- package/dist/utils/asset-collection.js +117 -0
- package/dist/utils/asset-collection.js.map +1 -0
- package/dist/utils/asset-collection.spec.d.ts +2 -0
- package/dist/utils/asset-collection.spec.d.ts.map +1 -0
- package/dist/utils/asset-collection.spec.js +155 -0
- package/dist/utils/asset-collection.spec.js.map +1 -0
- package/dist/utils/build-detection.d.ts +32 -0
- package/dist/utils/build-detection.d.ts.map +1 -0
- package/dist/utils/build-detection.js +55 -0
- package/dist/utils/build-detection.js.map +1 -0
- package/dist/utils/build-detection.spec.d.ts +2 -0
- package/dist/utils/build-detection.spec.d.ts.map +1 -0
- package/dist/utils/build-detection.spec.js +110 -0
- package/dist/utils/build-detection.spec.js.map +1 -0
- package/dist/utils/config.d.ts +33 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +78 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/config.spec.d.ts +2 -0
- package/dist/utils/config.spec.d.ts.map +1 -0
- package/dist/utils/config.spec.js +167 -0
- package/dist/utils/config.spec.js.map +1 -0
- package/dist/utils/download-template.d.ts +15 -0
- package/dist/utils/download-template.d.ts.map +1 -0
- package/dist/utils/download-template.js +74 -0
- package/dist/utils/download-template.js.map +1 -0
- package/dist/utils/download-template.spec.d.ts +2 -0
- package/dist/utils/download-template.spec.d.ts.map +1 -0
- package/dist/utils/download-template.spec.js +76 -0
- package/dist/utils/download-template.spec.js.map +1 -0
- package/dist/utils/env-management.d.ts +16 -0
- package/dist/utils/env-management.d.ts.map +1 -0
- package/dist/utils/env-management.js +98 -0
- package/dist/utils/env-management.js.map +1 -0
- package/dist/utils/env-management.spec.d.ts +2 -0
- package/dist/utils/env-management.spec.d.ts.map +1 -0
- package/dist/utils/env-management.spec.js +123 -0
- package/dist/utils/env-management.spec.js.map +1 -0
- package/dist/utils/format.d.ts +23 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +49 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/formatter.d.ts +11 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +47 -0
- package/dist/utils/formatter.js.map +1 -0
- package/dist/utils/git.d.ts +15 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +92 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/git.spec.d.ts +2 -0
- package/dist/utils/git.spec.d.ts.map +1 -0
- package/dist/utils/git.spec.js +99 -0
- package/dist/utils/git.spec.js.map +1 -0
- package/dist/utils/is-debug.d.ts +6 -0
- package/dist/utils/is-debug.d.ts.map +1 -0
- package/dist/utils/is-debug.js +8 -0
- package/dist/utils/is-debug.js.map +1 -0
- package/dist/utils/lambda-config.d.ts +7 -0
- package/dist/utils/lambda-config.d.ts.map +1 -0
- package/dist/utils/lambda-config.js +144 -0
- package/dist/utils/lambda-config.js.map +1 -0
- package/dist/utils/lambda-config.spec.d.ts +2 -0
- package/dist/utils/lambda-config.spec.d.ts.map +1 -0
- package/dist/utils/lambda-config.spec.js +141 -0
- package/dist/utils/lambda-config.spec.js.map +1 -0
- package/dist/utils/log.d.ts +6 -0
- package/dist/utils/log.d.ts.map +1 -0
- package/dist/utils/log.js +22 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/messages.d.ts +10 -0
- package/dist/utils/messages.d.ts.map +1 -0
- package/dist/utils/messages.js +96 -0
- package/dist/utils/messages.js.map +1 -0
- package/dist/utils/package-manager.d.ts +12 -0
- package/dist/utils/package-manager.d.ts.map +1 -0
- package/dist/utils/package-manager.js +37 -0
- package/dist/utils/package-manager.js.map +1 -0
- package/dist/utils/payload-config-ast.d.ts +30 -0
- package/dist/utils/payload-config-ast.d.ts.map +1 -0
- package/dist/utils/payload-config-ast.js +259 -0
- package/dist/utils/payload-config-ast.js.map +1 -0
- package/dist/utils/payload-config-ast.spec.d.ts +2 -0
- package/dist/utils/payload-config-ast.spec.d.ts.map +1 -0
- package/dist/utils/payload-config-ast.spec.js +303 -0
- package/dist/utils/payload-config-ast.spec.js.map +1 -0
- package/dist/utils/payload-config-finder.d.ts +9 -0
- package/dist/utils/payload-config-finder.d.ts.map +1 -0
- package/dist/utils/payload-config-finder.js +26 -0
- package/dist/utils/payload-config-finder.js.map +1 -0
- package/dist/utils/payload-config-modifier.d.ts +18 -0
- package/dist/utils/payload-config-modifier.d.ts.map +1 -0
- package/dist/utils/payload-config-modifier.int.spec.d.ts +2 -0
- package/dist/utils/payload-config-modifier.int.spec.d.ts.map +1 -0
- package/dist/utils/payload-config-modifier.int.spec.js +116 -0
- package/dist/utils/payload-config-modifier.int.spec.js.map +1 -0
- package/dist/utils/payload-config-modifier.js +232 -0
- package/dist/utils/payload-config-modifier.js.map +1 -0
- package/dist/utils/payload-config-modifier.spec.d.ts +2 -0
- package/dist/utils/payload-config-modifier.spec.d.ts.map +1 -0
- package/dist/utils/payload-config-modifier.spec.js +162 -0
- package/dist/utils/payload-config-modifier.spec.js.map +1 -0
- package/dist/utils/payload-package-check.d.ts +15 -0
- package/dist/utils/payload-package-check.d.ts.map +1 -0
- package/dist/utils/payload-package-check.js +116 -0
- package/dist/utils/payload-package-check.js.map +1 -0
- package/dist/utils/payload-package-check.spec.d.ts +2 -0
- package/dist/utils/payload-package-check.spec.d.ts.map +1 -0
- package/dist/utils/payload-package-check.spec.js +148 -0
- package/dist/utils/payload-package-check.spec.js.map +1 -0
- package/dist/utils/project.d.ts +58 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +252 -0
- package/dist/utils/project.js.map +1 -0
- package/dist/utils/project.spec.d.ts +2 -0
- package/dist/utils/project.spec.d.ts.map +1 -0
- package/dist/utils/project.spec.js +222 -0
- package/dist/utils/project.spec.js.map +1 -0
- package/dist/utils/s3-upload.d.ts +43 -0
- package/dist/utils/s3-upload.d.ts.map +1 -0
- package/dist/utils/s3-upload.js +128 -0
- package/dist/utils/s3-upload.js.map +1 -0
- package/dist/utils/s3-upload.spec.d.ts +2 -0
- package/dist/utils/s3-upload.spec.d.ts.map +1 -0
- package/dist/utils/s3-upload.spec.js +140 -0
- package/dist/utils/s3-upload.spec.js.map +1 -0
- package/dist/utils/token-display.d.ts +14 -0
- package/dist/utils/token-display.d.ts.map +1 -0
- package/dist/utils/token-display.js +62 -0
- package/dist/utils/token-display.js.map +1 -0
- package/dist/utils/typescript-validator.d.ts +11 -0
- package/dist/utils/typescript-validator.d.ts.map +1 -0
- package/dist/utils/typescript-validator.js +58 -0
- package/dist/utils/typescript-validator.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/payload-config-modifier.spec.ts"],"sourcesContent":["import { beforeEach, describe, expect, it, vi } from 'vitest'\n\nimport { displayManualInstructions, ensurePayloadFigmaConfig } from './payload-config-modifier.js'\n\nvi.mock('./payload-config-finder.js')\nvi.mock('./payload-package-check.js')\nvi.mock('./payload-config-ast.js')\nvi.mock('./typescript-validator.js')\nvi.mock('./formatter.js')\n\ndescribe('payload-config-modifier', () => {\n beforeEach(() => {\n vi.clearAllMocks()\n })\n\n describe('ensurePayloadFigmaConfig', () => {\n it('should return error when config not found', async () => {\n const { findPayloadConfig } = await import('./payload-config-finder.js')\n vi.mocked(findPayloadConfig).mockResolvedValue(null)\n\n const result = await ensurePayloadFigmaConfig('/test/project', 'pnpm')\n\n expect(result.success).toBe(false)\n expect(result.error).toContain('payload.config.ts not found')\n })\n\n it('should install package if missing', async () => {\n const { findPayloadConfig } = await import('./payload-config-finder.js')\n const { checkPackageInstalled, installPackage } = await import('./payload-package-check.js')\n\n vi.mocked(findPayloadConfig).mockResolvedValue('/test/project/payload.config.ts')\n vi.mocked(checkPackageInstalled).mockResolvedValue(false)\n vi.mocked(installPackage).mockResolvedValue()\n\n // Mock ts-morph to avoid file system operations\n const { Project } = await import('ts-morph')\n vi.spyOn(Project.prototype, 'addSourceFileAtPath').mockReturnValue({\n getFullText: vi.fn().mockReturnValue(''),\n } as any)\n\n const { detectRequiredChanges } = await import('./payload-config-ast.js')\n vi.mocked(detectRequiredChanges).mockReturnValue({\n hasAlias: false,\n hasOtherPayloadImports: false,\n needsImportChange: false,\n })\n\n const result = await ensurePayloadFigmaConfig('/test/project', 'pnpm')\n\n expect(installPackage).toHaveBeenCalledWith('/test/project', '@payloadcms/figma', 'pnpm')\n expect(result.changes).toContain('Installed @payloadcms/figma')\n })\n\n it('should apply modifications when needed', async () => {\n const { findPayloadConfig } = await import('./payload-config-finder.js')\n const { checkPackageInstalled } = await import('./payload-package-check.js')\n const { applyModifications, detectRequiredChanges } = await import('./payload-config-ast.js')\n\n vi.mocked(findPayloadConfig).mockResolvedValue('/test/project/payload.config.ts')\n vi.mocked(checkPackageInstalled).mockResolvedValue(true)\n\n // Mock source file\n const mockSourceFile = {\n getFullText: vi.fn().mockReturnValue(''),\n save: vi.fn().mockResolvedValue(undefined),\n }\n\n const { Project } = await import('ts-morph')\n vi.spyOn(Project.prototype, 'addSourceFileAtPath').mockReturnValue(mockSourceFile as any)\n\n vi.mocked(detectRequiredChanges).mockReturnValue({\n dbProperty: {\n adapter: 'mongooseAdapter',\n importSource: '@payloadcms/db-mongodb',\n },\n hasAlias: false,\n hasOtherPayloadImports: false,\n needsImportChange: true,\n })\n\n vi.mocked(applyModifications).mockReturnValue({\n changes: ['Removed db property', 'Changed buildConfig import to @payloadcms/figma'],\n modified: true,\n })\n\n const { runTypeScriptCheck } = await import('./typescript-validator.js')\n vi.mocked(runTypeScriptCheck).mockResolvedValue({ errors: [], success: true })\n\n const { formatFile } = await import('./formatter.js')\n vi.mocked(formatFile).mockResolvedValue({ success: true })\n\n const result = await ensurePayloadFigmaConfig('/test/project', 'pnpm')\n\n expect(result.success).toBe(true)\n expect(result.modified).toBe(true)\n expect(result.changes.length).toBeGreaterThan(0)\n expect(mockSourceFile.save).toHaveBeenCalled()\n })\n\n it('should return error when buildConfig has alias', async () => {\n const { findPayloadConfig } = await import('./payload-config-finder.js')\n const { checkPackageInstalled } = await import('./payload-package-check.js')\n const { detectRequiredChanges } = await import('./payload-config-ast.js')\n\n vi.mocked(findPayloadConfig).mockResolvedValue('/test/project/payload.config.ts')\n vi.mocked(checkPackageInstalled).mockResolvedValue(true)\n\n const mockSourceFile = {\n getFullText: vi.fn().mockReturnValue(''),\n }\n\n const { Project } = await import('ts-morph')\n vi.spyOn(Project.prototype, 'addSourceFileAtPath').mockReturnValue(mockSourceFile as any)\n\n vi.mocked(detectRequiredChanges).mockReturnValue({\n hasAlias: true,\n hasOtherPayloadImports: false,\n needsImportChange: true,\n })\n\n const result = await ensurePayloadFigmaConfig('/test/project', 'pnpm')\n\n expect(result.success).toBe(false)\n expect(result.error).toContain('Config uses import alias')\n })\n\n it('should uninstall orphaned packages', async () => {\n const { findPayloadConfig } = await import('./payload-config-finder.js')\n const { checkPackageInstalled, uninstallPackage } = await import('./payload-package-check.js')\n const { applyModifications, detectRequiredChanges } = await import('./payload-config-ast.js')\n\n vi.mocked(findPayloadConfig).mockResolvedValue('/test/project/payload.config.ts')\n vi.mocked(checkPackageInstalled).mockResolvedValue(true)\n\n const mockSourceFile = {\n getFullText: vi.fn().mockReturnValue(''),\n save: vi.fn().mockResolvedValue(undefined),\n }\n\n const { Project } = await import('ts-morph')\n vi.spyOn(Project.prototype, 'addSourceFileAtPath').mockReturnValue(mockSourceFile as any)\n\n vi.mocked(detectRequiredChanges).mockReturnValue({\n dbProperty: {\n adapter: 'mongooseAdapter',\n importSource: '@payloadcms/db-mongodb',\n },\n editorProperty: {\n importSource: '@payloadcms/richtext-lexical',\n isDefault: true,\n },\n hasAlias: false,\n hasOtherPayloadImports: false,\n needsImportChange: false,\n })\n\n vi.mocked(applyModifications).mockReturnValue({\n changes: ['Removed db property', 'Removed default editor property'],\n modified: true,\n })\n\n vi.mocked(uninstallPackage).mockResolvedValue()\n\n const { runTypeScriptCheck } = await import('./typescript-validator.js')\n vi.mocked(runTypeScriptCheck).mockResolvedValue({ errors: [], success: true })\n\n const { formatFile } = await import('./formatter.js')\n vi.mocked(formatFile).mockResolvedValue({ success: true })\n\n const result = await ensurePayloadFigmaConfig('/test/project', 'pnpm')\n\n expect(uninstallPackage).toHaveBeenCalledWith(\n '/test/project',\n '@payloadcms/db-mongodb',\n 'pnpm',\n )\n expect(uninstallPackage).toHaveBeenCalledWith(\n '/test/project',\n '@payloadcms/richtext-lexical',\n 'pnpm',\n )\n expect(result.changes).toContain('Uninstalled @payloadcms/db-mongodb')\n expect(result.changes).toContain('Uninstalled @payloadcms/richtext-lexical')\n })\n })\n\n describe('displayManualInstructions', () => {\n it('should format manual instructions correctly', () => {\n // This is a formatting function, just verify it doesn't throw\n expect(() => displayManualInstructions('Test reason')).not.toThrow()\n })\n })\n})\n"],"names":["beforeEach","describe","expect","it","vi","displayManualInstructions","ensurePayloadFigmaConfig","mock","clearAllMocks","findPayloadConfig","mocked","mockResolvedValue","result","success","toBe","error","toContain","checkPackageInstalled","installPackage","Project","spyOn","prototype","mockReturnValue","getFullText","fn","detectRequiredChanges","hasAlias","hasOtherPayloadImports","needsImportChange","toHaveBeenCalledWith","changes","applyModifications","mockSourceFile","save","undefined","dbProperty","adapter","importSource","modified","runTypeScriptCheck","errors","formatFile","length","toBeGreaterThan","toHaveBeenCalled","uninstallPackage","editorProperty","isDefault","not","toThrow"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PackageManager } from './package-manager.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if a package is installed in dependencies (not devDependencies)
|
|
4
|
+
*/
|
|
5
|
+
export declare function checkPackageInstalled(projectPath: string, packageName: string): Promise<boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* Install a package as a production dependency
|
|
8
|
+
*/
|
|
9
|
+
export declare function installPackage(projectPath: string, packageName: string, packageManager: PackageManager): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Uninstall a package
|
|
12
|
+
* Does not throw on failure - orphaned package is better than broken config
|
|
13
|
+
*/
|
|
14
|
+
export declare function uninstallPackage(projectPath: string, packageName: string, packageManager: PackageManager): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=payload-package-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-package-check.d.ts","sourceRoot":"","sources":["../../src/utils/payload-package-check.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAK1D;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import fs from 'fs/promises';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { isDebug } from './is-debug.js';
|
|
5
|
+
import * as log from './log.js';
|
|
6
|
+
/**
|
|
7
|
+
* Check if a package is installed in dependencies (not devDependencies)
|
|
8
|
+
*/ export async function checkPackageInstalled(projectPath, packageName) {
|
|
9
|
+
try {
|
|
10
|
+
const pkgJsonPath = path.join(projectPath, 'package.json');
|
|
11
|
+
if (isDebug()) {
|
|
12
|
+
log.debug(`Checking if ${packageName} is installed in: ${pkgJsonPath}`);
|
|
13
|
+
}
|
|
14
|
+
const pkgJsonContent = await fs.readFile(pkgJsonPath, 'utf-8');
|
|
15
|
+
const pkgJson = JSON.parse(pkgJsonContent);
|
|
16
|
+
const isInstalled = !!pkgJson.dependencies?.[packageName];
|
|
17
|
+
if (isDebug()) {
|
|
18
|
+
log.debug(`${packageName} is ${isInstalled ? 'installed' : 'not installed'}`);
|
|
19
|
+
}
|
|
20
|
+
return isInstalled;
|
|
21
|
+
} catch (error) {
|
|
22
|
+
if (isDebug()) {
|
|
23
|
+
log.debug(`Error checking package installation: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Install a package as a production dependency
|
|
30
|
+
*/ export async function installPackage(projectPath, packageName, packageManager) {
|
|
31
|
+
return new Promise((resolve, reject)=>{
|
|
32
|
+
const command = packageManager;
|
|
33
|
+
const args = [
|
|
34
|
+
'add',
|
|
35
|
+
packageName
|
|
36
|
+
];
|
|
37
|
+
// npm uses 'install' instead of 'add'
|
|
38
|
+
if (packageManager === 'npm') {
|
|
39
|
+
args[0] = 'install';
|
|
40
|
+
}
|
|
41
|
+
if (isDebug()) {
|
|
42
|
+
log.debug(`Running: ${command} ${args.join(' ')} in ${projectPath}`);
|
|
43
|
+
}
|
|
44
|
+
let stderr = '';
|
|
45
|
+
const child = spawn(command, args, {
|
|
46
|
+
cwd: projectPath,
|
|
47
|
+
shell: true,
|
|
48
|
+
stdio: 'pipe'
|
|
49
|
+
});
|
|
50
|
+
// Capture stderr for debug logging
|
|
51
|
+
if (child.stderr) {
|
|
52
|
+
child.stderr.on('data', (data)=>{
|
|
53
|
+
stderr += data.toString();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
child.on('error', (error)=>{
|
|
57
|
+
if (isDebug()) {
|
|
58
|
+
log.debug(`Spawn error for ${command}: ${error.message}`);
|
|
59
|
+
}
|
|
60
|
+
reject(new Error(`Failed to spawn ${command}: ${error.message}`));
|
|
61
|
+
});
|
|
62
|
+
child.on('close', (code)=>{
|
|
63
|
+
if (code === 0) {
|
|
64
|
+
if (isDebug()) {
|
|
65
|
+
log.debug(`Successfully installed ${packageName}`);
|
|
66
|
+
}
|
|
67
|
+
resolve();
|
|
68
|
+
} else {
|
|
69
|
+
if (isDebug()) {
|
|
70
|
+
log.debug(`Failed to install ${packageName} (exit code: ${code})`);
|
|
71
|
+
if (stderr) {
|
|
72
|
+
log.debug(`stderr: ${stderr}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
reject(new Error(`Failed to install ${packageName}`));
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Uninstall a package
|
|
82
|
+
* Does not throw on failure - orphaned package is better than broken config
|
|
83
|
+
*/ export async function uninstallPackage(projectPath, packageName, packageManager) {
|
|
84
|
+
return new Promise((resolve)=>{
|
|
85
|
+
const command = packageManager;
|
|
86
|
+
const args = [
|
|
87
|
+
'remove',
|
|
88
|
+
packageName
|
|
89
|
+
];
|
|
90
|
+
// npm uses 'uninstall' instead of 'remove'
|
|
91
|
+
if (packageManager === 'npm') {
|
|
92
|
+
args[0] = 'uninstall';
|
|
93
|
+
}
|
|
94
|
+
if (isDebug()) {
|
|
95
|
+
log.debug(`Running: ${command} ${args.join(' ')} in ${projectPath}`);
|
|
96
|
+
}
|
|
97
|
+
const child = spawn(command, args, {
|
|
98
|
+
cwd: projectPath,
|
|
99
|
+
shell: true,
|
|
100
|
+
stdio: 'pipe'
|
|
101
|
+
});
|
|
102
|
+
child.on('close', (code)=>{
|
|
103
|
+
if (isDebug()) {
|
|
104
|
+
if (code === 0) {
|
|
105
|
+
log.debug(`Successfully uninstalled ${packageName}`);
|
|
106
|
+
} else {
|
|
107
|
+
log.debug(`Failed to uninstall ${packageName} (exit code: ${code}), continuing anyway`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Always resolve, even on error
|
|
111
|
+
resolve();
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
//# sourceMappingURL=payload-package-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/payload-package-check.ts"],"sourcesContent":["import { spawn } from 'child_process'\nimport fs from 'fs/promises'\nimport path from 'path'\n\nimport type { PackageManager } from './package-manager.js'\n\nimport { isDebug } from './is-debug.js'\nimport * as log from './log.js'\n\n/**\n * Check if a package is installed in dependencies (not devDependencies)\n */\nexport async function checkPackageInstalled(\n projectPath: string,\n packageName: string,\n): Promise<boolean> {\n try {\n const pkgJsonPath = path.join(projectPath, 'package.json')\n if (isDebug()) {\n log.debug(`Checking if ${packageName} is installed in: ${pkgJsonPath}`)\n }\n const pkgJsonContent = await fs.readFile(pkgJsonPath, 'utf-8')\n const pkgJson = JSON.parse(pkgJsonContent)\n const isInstalled = !!pkgJson.dependencies?.[packageName]\n if (isDebug()) {\n log.debug(`${packageName} is ${isInstalled ? 'installed' : 'not installed'}`)\n }\n return isInstalled\n } catch (error) {\n if (isDebug()) {\n log.debug(\n `Error checking package installation: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n return false\n }\n}\n\n/**\n * Install a package as a production dependency\n */\nexport async function installPackage(\n projectPath: string,\n packageName: string,\n packageManager: PackageManager,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const command = packageManager\n const args = ['add', packageName]\n\n // npm uses 'install' instead of 'add'\n if (packageManager === 'npm') {\n args[0] = 'install'\n }\n\n if (isDebug()) {\n log.debug(`Running: ${command} ${args.join(' ')} in ${projectPath}`)\n }\n\n let stderr = ''\n\n const child = spawn(command, args, {\n cwd: projectPath,\n shell: true,\n stdio: 'pipe',\n })\n\n // Capture stderr for debug logging\n if (child.stderr) {\n child.stderr.on('data', (data) => {\n stderr += data.toString()\n })\n }\n\n child.on('error', (error) => {\n if (isDebug()) {\n log.debug(`Spawn error for ${command}: ${error.message}`)\n }\n reject(new Error(`Failed to spawn ${command}: ${error.message}`))\n })\n\n child.on('close', (code) => {\n if (code === 0) {\n if (isDebug()) {\n log.debug(`Successfully installed ${packageName}`)\n }\n resolve()\n } else {\n if (isDebug()) {\n log.debug(`Failed to install ${packageName} (exit code: ${code})`)\n if (stderr) {\n log.debug(`stderr: ${stderr}`)\n }\n }\n reject(new Error(`Failed to install ${packageName}`))\n }\n })\n })\n}\n\n/**\n * Uninstall a package\n * Does not throw on failure - orphaned package is better than broken config\n */\nexport async function uninstallPackage(\n projectPath: string,\n packageName: string,\n packageManager: PackageManager,\n): Promise<void> {\n return new Promise((resolve) => {\n const command = packageManager\n const args = ['remove', packageName]\n\n // npm uses 'uninstall' instead of 'remove'\n if (packageManager === 'npm') {\n args[0] = 'uninstall'\n }\n\n if (isDebug()) {\n log.debug(`Running: ${command} ${args.join(' ')} in ${projectPath}`)\n }\n\n const child = spawn(command, args, {\n cwd: projectPath,\n shell: true,\n stdio: 'pipe',\n })\n\n child.on('close', (code) => {\n if (isDebug()) {\n if (code === 0) {\n log.debug(`Successfully uninstalled ${packageName}`)\n } else {\n log.debug(`Failed to uninstall ${packageName} (exit code: ${code}), continuing anyway`)\n }\n }\n // Always resolve, even on error\n resolve()\n })\n })\n}\n"],"names":["spawn","fs","path","isDebug","log","checkPackageInstalled","projectPath","packageName","pkgJsonPath","join","debug","pkgJsonContent","readFile","pkgJson","JSON","parse","isInstalled","dependencies","error","Error","message","installPackage","packageManager","Promise","resolve","reject","command","args","stderr","child","cwd","shell","stdio","on","data","toString","code","uninstallPackage"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-package-check.spec.d.ts","sourceRoot":"","sources":["../../src/utils/payload-package-check.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { checkPackageInstalled, installPackage, uninstallPackage } from './payload-package-check.js';
|
|
4
|
+
vi.mock('fs/promises');
|
|
5
|
+
vi.mock('child_process', ()=>({
|
|
6
|
+
spawn: vi.fn()
|
|
7
|
+
}));
|
|
8
|
+
describe('payload-package-check', ()=>{
|
|
9
|
+
beforeEach(()=>{
|
|
10
|
+
vi.clearAllMocks();
|
|
11
|
+
});
|
|
12
|
+
describe('checkPackageInstalled', ()=>{
|
|
13
|
+
it('should return true when package is in dependencies', async ()=>{
|
|
14
|
+
const mockPackageJson = {
|
|
15
|
+
dependencies: {
|
|
16
|
+
'@payloadcms/figma': '1.0.0'
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockPackageJson));
|
|
20
|
+
const result = await checkPackageInstalled('/test/project', '@payloadcms/figma');
|
|
21
|
+
expect(result).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
it('should return false when package is in devDependencies', async ()=>{
|
|
24
|
+
const mockPackageJson = {
|
|
25
|
+
devDependencies: {
|
|
26
|
+
'@payloadcms/figma': '1.0.0'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockPackageJson));
|
|
30
|
+
const result = await checkPackageInstalled('/test/project', '@payloadcms/figma');
|
|
31
|
+
expect(result).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
it('should return false when package is not installed', async ()=>{
|
|
34
|
+
const mockPackageJson = {
|
|
35
|
+
dependencies: {}
|
|
36
|
+
};
|
|
37
|
+
vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockPackageJson));
|
|
38
|
+
const result = await checkPackageInstalled('/test/project', '@payloadcms/figma');
|
|
39
|
+
expect(result).toBe(false);
|
|
40
|
+
});
|
|
41
|
+
it('should handle missing package.json', async ()=>{
|
|
42
|
+
vi.mocked(fs.readFile).mockRejectedValue(new Error('ENOENT'));
|
|
43
|
+
const result = await checkPackageInstalled('/test/project', '@payloadcms/figma');
|
|
44
|
+
expect(result).toBe(false);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('installPackage', ()=>{
|
|
48
|
+
it('should call pnpm add for pnpm package manager', async ()=>{
|
|
49
|
+
const { spawn } = await import('child_process');
|
|
50
|
+
const mockSpawn = vi.mocked(spawn);
|
|
51
|
+
mockSpawn.mockReturnValue({
|
|
52
|
+
on: vi.fn((event, callback)=>{
|
|
53
|
+
if (event === 'close') {
|
|
54
|
+
callback(0);
|
|
55
|
+
}
|
|
56
|
+
if (event === 'error') {
|
|
57
|
+
// Error handler registered but not called in success case
|
|
58
|
+
}
|
|
59
|
+
return {};
|
|
60
|
+
}),
|
|
61
|
+
stderr: {
|
|
62
|
+
on: vi.fn()
|
|
63
|
+
},
|
|
64
|
+
stdout: {
|
|
65
|
+
on: vi.fn()
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
await installPackage('/test/project', '@payloadcms/figma', 'pnpm');
|
|
69
|
+
expect(mockSpawn).toHaveBeenCalledWith('pnpm', [
|
|
70
|
+
'add',
|
|
71
|
+
'@payloadcms/figma'
|
|
72
|
+
], expect.objectContaining({
|
|
73
|
+
cwd: '/test/project'
|
|
74
|
+
}));
|
|
75
|
+
});
|
|
76
|
+
it('should throw error when installation fails', async ()=>{
|
|
77
|
+
const { spawn } = await import('child_process');
|
|
78
|
+
const mockSpawn = vi.mocked(spawn);
|
|
79
|
+
mockSpawn.mockReturnValue({
|
|
80
|
+
on: vi.fn((event, callback)=>{
|
|
81
|
+
if (event === 'close') {
|
|
82
|
+
callback(1);
|
|
83
|
+
}
|
|
84
|
+
if (event === 'error') {
|
|
85
|
+
// Error handler registered but not called in this test
|
|
86
|
+
}
|
|
87
|
+
return {};
|
|
88
|
+
}),
|
|
89
|
+
stderr: {
|
|
90
|
+
on: vi.fn()
|
|
91
|
+
},
|
|
92
|
+
stdout: {
|
|
93
|
+
on: vi.fn()
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
await expect(installPackage('/test/project', '@payloadcms/figma', 'pnpm')).rejects.toThrow('Failed to install @payloadcms/figma');
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('uninstallPackage', ()=>{
|
|
100
|
+
it('should call pnpm remove for pnpm package manager', async ()=>{
|
|
101
|
+
const { spawn } = await import('child_process');
|
|
102
|
+
const mockSpawn = vi.mocked(spawn);
|
|
103
|
+
mockSpawn.mockReturnValue({
|
|
104
|
+
on: vi.fn((event, callback)=>{
|
|
105
|
+
if (event === 'close') {
|
|
106
|
+
callback(0);
|
|
107
|
+
}
|
|
108
|
+
return {};
|
|
109
|
+
}),
|
|
110
|
+
stderr: {
|
|
111
|
+
on: vi.fn()
|
|
112
|
+
},
|
|
113
|
+
stdout: {
|
|
114
|
+
on: vi.fn()
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
await uninstallPackage('/test/project', '@payloadcms/db-postgres', 'pnpm');
|
|
118
|
+
expect(mockSpawn).toHaveBeenCalledWith('pnpm', [
|
|
119
|
+
'remove',
|
|
120
|
+
'@payloadcms/db-postgres'
|
|
121
|
+
], expect.objectContaining({
|
|
122
|
+
cwd: '/test/project'
|
|
123
|
+
}));
|
|
124
|
+
});
|
|
125
|
+
it('should not throw error when uninstallation fails', async ()=>{
|
|
126
|
+
const { spawn } = await import('child_process');
|
|
127
|
+
const mockSpawn = vi.mocked(spawn);
|
|
128
|
+
mockSpawn.mockReturnValue({
|
|
129
|
+
on: vi.fn((event, callback)=>{
|
|
130
|
+
if (event === 'close') {
|
|
131
|
+
callback(1);
|
|
132
|
+
}
|
|
133
|
+
return {};
|
|
134
|
+
}),
|
|
135
|
+
stderr: {
|
|
136
|
+
on: vi.fn()
|
|
137
|
+
},
|
|
138
|
+
stdout: {
|
|
139
|
+
on: vi.fn()
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
// Should not throw - orphaned package is better than broken config
|
|
143
|
+
await expect(uninstallPackage('/test/project', '@payloadcms/db-postgres', 'pnpm')).resolves.not.toThrow();
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
//# sourceMappingURL=payload-package-check.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/payload-package-check.spec.ts"],"sourcesContent":["import fs from 'fs/promises'\nimport { beforeEach, describe, expect, it, vi } from 'vitest'\n\nimport type { PackageManager } from './package-manager.js'\n\nimport { checkPackageInstalled, installPackage, uninstallPackage } from './payload-package-check.js'\n\nvi.mock('fs/promises')\nvi.mock('child_process', () => ({\n spawn: vi.fn(),\n}))\n\ndescribe('payload-package-check', () => {\n beforeEach(() => {\n vi.clearAllMocks()\n })\n\n describe('checkPackageInstalled', () => {\n it('should return true when package is in dependencies', async () => {\n const mockPackageJson = {\n dependencies: {\n '@payloadcms/figma': '1.0.0',\n },\n }\n\n vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockPackageJson))\n\n const result = await checkPackageInstalled('/test/project', '@payloadcms/figma')\n\n expect(result).toBe(true)\n })\n\n it('should return false when package is in devDependencies', async () => {\n const mockPackageJson = {\n devDependencies: {\n '@payloadcms/figma': '1.0.0',\n },\n }\n\n vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockPackageJson))\n\n const result = await checkPackageInstalled('/test/project', '@payloadcms/figma')\n\n expect(result).toBe(false)\n })\n\n it('should return false when package is not installed', async () => {\n const mockPackageJson = {\n dependencies: {},\n }\n\n vi.mocked(fs.readFile).mockResolvedValue(JSON.stringify(mockPackageJson))\n\n const result = await checkPackageInstalled('/test/project', '@payloadcms/figma')\n\n expect(result).toBe(false)\n })\n\n it('should handle missing package.json', async () => {\n vi.mocked(fs.readFile).mockRejectedValue(new Error('ENOENT'))\n\n const result = await checkPackageInstalled('/test/project', '@payloadcms/figma')\n\n expect(result).toBe(false)\n })\n })\n\n describe('installPackage', () => {\n it('should call pnpm add for pnpm package manager', async () => {\n const { spawn } = await import('child_process')\n const mockSpawn = vi.mocked(spawn)\n\n mockSpawn.mockReturnValue({\n on: vi.fn((event, callback) => {\n if (event === 'close') {\n callback(0)\n }\n if (event === 'error') {\n // Error handler registered but not called in success case\n }\n return {} as any\n }),\n stderr: { on: vi.fn() },\n stdout: { on: vi.fn() },\n } as any)\n\n await installPackage('/test/project', '@payloadcms/figma', 'pnpm')\n\n expect(mockSpawn).toHaveBeenCalledWith(\n 'pnpm',\n ['add', '@payloadcms/figma'],\n expect.objectContaining({ cwd: '/test/project' }),\n )\n })\n\n it('should throw error when installation fails', async () => {\n const { spawn } = await import('child_process')\n const mockSpawn = vi.mocked(spawn)\n\n mockSpawn.mockReturnValue({\n on: vi.fn((event, callback) => {\n if (event === 'close') {\n callback(1)\n }\n if (event === 'error') {\n // Error handler registered but not called in this test\n }\n return {} as any\n }),\n stderr: { on: vi.fn() },\n stdout: { on: vi.fn() },\n } as any)\n\n await expect(installPackage('/test/project', '@payloadcms/figma', 'pnpm')).rejects.toThrow(\n 'Failed to install @payloadcms/figma',\n )\n })\n })\n\n describe('uninstallPackage', () => {\n it('should call pnpm remove for pnpm package manager', async () => {\n const { spawn } = await import('child_process')\n const mockSpawn = vi.mocked(spawn)\n\n mockSpawn.mockReturnValue({\n on: vi.fn((event, callback) => {\n if (event === 'close') {\n callback(0)\n }\n return {} as any\n }),\n stderr: { on: vi.fn() },\n stdout: { on: vi.fn() },\n } as any)\n\n await uninstallPackage('/test/project', '@payloadcms/db-postgres', 'pnpm')\n\n expect(mockSpawn).toHaveBeenCalledWith(\n 'pnpm',\n ['remove', '@payloadcms/db-postgres'],\n expect.objectContaining({ cwd: '/test/project' }),\n )\n })\n\n it('should not throw error when uninstallation fails', async () => {\n const { spawn } = await import('child_process')\n const mockSpawn = vi.mocked(spawn)\n\n mockSpawn.mockReturnValue({\n on: vi.fn((event, callback) => {\n if (event === 'close') {\n callback(1)\n }\n return {} as any\n }),\n stderr: { on: vi.fn() },\n stdout: { on: vi.fn() },\n } as any)\n\n // Should not throw - orphaned package is better than broken config\n await expect(\n uninstallPackage('/test/project', '@payloadcms/db-postgres', 'pnpm'),\n ).resolves.not.toThrow()\n })\n })\n})\n"],"names":["fs","beforeEach","describe","expect","it","vi","checkPackageInstalled","installPackage","uninstallPackage","mock","spawn","fn","clearAllMocks","mockPackageJson","dependencies","mocked","readFile","mockResolvedValue","JSON","stringify","result","toBe","devDependencies","mockRejectedValue","Error","mockSpawn","mockReturnValue","on","event","callback","stderr","stdout","toHaveBeenCalledWith","objectContaining","cwd","rejects","toThrow","resolves","not"],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project detection and scaffolding utilities
|
|
3
|
+
*/
|
|
4
|
+
import type { ProjectInfo } from '../types/config.js';
|
|
5
|
+
/**
|
|
6
|
+
* Detect if current directory has a Payload project
|
|
7
|
+
*
|
|
8
|
+
* @param projectPath - Path to check (defaults to cwd)
|
|
9
|
+
* @returns Project information
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectPayloadProject(projectPath?: string): Promise<ProjectInfo>;
|
|
12
|
+
/**
|
|
13
|
+
* Validate Payload version (must be 3.x)
|
|
14
|
+
*
|
|
15
|
+
* @param version - Version string from package.json
|
|
16
|
+
* @returns True if version is valid
|
|
17
|
+
*/
|
|
18
|
+
export declare function validatePayloadVersion(version: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Scaffold a new Payload project from GitHub template
|
|
21
|
+
*
|
|
22
|
+
* @param projectPath - Path where to create the project
|
|
23
|
+
* @param projectName - Name for the project
|
|
24
|
+
*/
|
|
25
|
+
export declare function scaffoldProject(projectPath: string, projectName: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Initialize git repository after all setup is complete
|
|
28
|
+
*
|
|
29
|
+
* This should be called AFTER installDependencies so that lock files are included
|
|
30
|
+
*
|
|
31
|
+
* @param projectPath - Path to project directory
|
|
32
|
+
*/
|
|
33
|
+
export declare function initializeGitRepo(projectPath: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Install dependencies using the detected package manager
|
|
36
|
+
*
|
|
37
|
+
* @param projectPath - Path to project
|
|
38
|
+
* @param packageManager - Package manager to use
|
|
39
|
+
* @returns Promise that resolves when installation completes
|
|
40
|
+
*/
|
|
41
|
+
export declare function installDependencies(projectPath: string, packageManager?: 'npm' | 'pnpm' | 'yarn'): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Check if required dependencies are installed
|
|
44
|
+
*
|
|
45
|
+
* @param projectPath - Path to project
|
|
46
|
+
* @returns True if all required dependencies exist
|
|
47
|
+
*/
|
|
48
|
+
export declare function hasRequiredDependencies(projectPath: string): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Check if current directory is a project directory
|
|
51
|
+
*
|
|
52
|
+
* A project directory has package.json OR figma.config.json
|
|
53
|
+
*
|
|
54
|
+
* @param projectPath - Path to check (defaults to cwd)
|
|
55
|
+
* @returns True if in project directory
|
|
56
|
+
*/
|
|
57
|
+
export declare function isInProjectDirectory(projectPath?: string): Promise<boolean>;
|
|
58
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAQrD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC,WAAW,CAAC,CAwCtB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAS/D;AAiED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7F;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAE3D;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,cAAc,GAAE,KAAK,GAAG,MAAM,GAAG,MAAc,GAC9C,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAenF;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBhG"}
|