Skip to content

Comments

Renamed files to kebab-case - core - seeders, importers#25819

Merged
ibalosh merged 3 commits intomainfrom
moved-to-kebab-case-core
Jan 12, 2026
Merged

Renamed files to kebab-case - core - seeders, importers#25819
ibalosh merged 3 commits intomainfrom
moved-to-kebab-case-core

Conversation

@ibalosh
Copy link
Contributor

@ibalosh ibalosh commented Jan 8, 2026

ref #25815

what

  • Renamed files to match to kebab-case format - core seeders, importers, etc
  • excluded and added comments for files that can not be renamed
    • either external services are using those files
    • or they are loaded within config files or something similar where these specific names are specified

note: since services contain more than 300 files to be renamed, will do this in multiple PRs

@github-actions github-actions bot added the migration [pull request] Includes migration for review label Jan 8, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Jan 8, 2026

It looks like this PR contains a migration 👀
Here's the checklist for reviewing migrations:

General requirements

  • ⚠️ Tested performance on staging database servers, as performance on local machines is not comparable to a production environment
  • Satisfies idempotency requirement (both up() and down())
  • Does not reference models
  • Filename is in the correct format (and correctly ordered)
  • Targets the next minor version
  • All code paths have appropriate log messages
  • Uses the correct utils
  • Contains a minimal changeset
  • Does not mix DDL/DML operations
  • Tested in MySQL and SQLite

Schema changes

  • Both schema change and related migration have been implemented
  • For index changes: has been performance tested for large tables
  • For new tables/columns: fields use the appropriate predefined field lengths
  • For new tables/columns: field names follow the appropriate conventions
  • Does not drop a non-alpha table outside of a major version

Data changes

  • Mass updates/inserts are batched appropriately
  • Does not loop over large tables/datasets
  • Defends against missing or invalid data
  • For settings updates: follows the appropriate guidelines

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 8, 2026

Walkthrough

ESLint config broadened to enforce kebab-case filenames across core/**/*.{js,ts} with an explicit excludedFiles list. Many require/import statements and an exported seeders/importers list were updated from PascalCase to kebab-case module specifiers (e.g., ./Base./base, TableImporter./table-importer, DataGeneratordata-generator). A few ESLint directive comments were removed and a new MigratorConfig export was added. Changes are limited to module specifiers, linter scope/comments, and one new module export; runtime logic, control flow, error handling, and public API signatures remain unchanged.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: renaming files to kebab-case format in core seeders and importers.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Description check ✅ Passed The PR description clearly describes the changeset: renaming files to kebab-case format for core seeders and importers, with references to related PRs and notes about multi-phase rollout.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ibalosh ibalosh changed the title renamed files to kebab-case Renamed files to kebab-case - core - seeders, importers Jan 8, 2026
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In @ghost/core/.eslintrc.js:
- Around line 105-110: Two data migration hook files violate the new kebab-case
ESLint pattern; rename
ghost/core/core/server/data/migrations/hooks/migrate/afterEach.js →
after-each.js and beforeEach.js → before-each.js, then update every
import/require/export reference to those modules (search for "afterEach",
"beforeEach" string occurrences and any direct imports in migration registries,
test files, or index files) and adjust any exported symbol names if they relied
on camelCase; finally run the linter to confirm no remaining references and
update any module lists (e.g., dynamic loaders) that enumerate filenames so the
new kebab-case names are used.
🧹 Nitpick comments (1)
ghost/core/core/server/data/seeders/importers/roles-users-importer.js (1)

6-6: Minor typo in comment.

The comment contains "imorter" which should be "importer". This is a pre-existing issue unrelated to the current refactoring.

✏️ Proposed fix
-    // No roles imorter, since roles are statically defined in database
+    // No roles importer, since roles are statically defined in database

@ibalosh ibalosh force-pushed the moved-to-kebab-case-core branch from 2e9c5b4 to 5b428c4 Compare January 8, 2026 17:10
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
ghost/core/core/server/data/seeders/importers/roles-users-importer.js (1)

6-6: Optional: Fix typo in comment.

Pre-existing typo: "imorter" should be "importer".

✍️ Proposed fix
-    // No roles imorter, since roles are statically defined in database
+    // No roles importer, since roles are statically defined in database
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2e9c5b4 and 5b428c4.

📒 Files selected for processing (75)
  • ghost/core/.eslintrc.js
  • ghost/core/core/boot.js
  • ghost/core/core/cli/generate-data.js
  • ghost/core/core/server/data/db/database-state-manager.js
  • ghost/core/core/server/data/importer/handlers/importer-content-file-handler.js
  • ghost/core/core/server/data/importer/import-manager.js
  • ghost/core/core/server/data/importer/importers/content-file-importer.js
  • ghost/core/core/server/data/importer/importers/data/base.js
  • ghost/core/core/server/data/importer/importers/data/custom-theme-settings-importer.js
  • ghost/core/core/server/data/importer/importers/data/data-importer.js
  • ghost/core/core/server/data/importer/importers/data/newsletters-importer.js
  • ghost/core/core/server/data/importer/importers/data/posts-importer.js
  • ghost/core/core/server/data/importer/importers/data/products-importer.js
  • ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js
  • ghost/core/core/server/data/importer/importers/data/roles-importer.js
  • ghost/core/core/server/data/importer/importers/data/settings-importer.js
  • ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js
  • ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js
  • ghost/core/core/server/data/importer/importers/data/tags-importer.js
  • ghost/core/core/server/data/importer/importers/data/users-importer.js
  • ghost/core/core/server/data/migrations/hooks/migrate/after-each.js
  • ghost/core/core/server/data/migrations/hooks/migrate/before-each.js
  • ghost/core/core/server/data/migrations/hooks/migrate/index.js
  • ghost/core/core/server/data/schema/fixtures/fixture-manager.js
  • ghost/core/core/server/data/schema/fixtures/index.js
  • ghost/core/core/server/data/seeders/data-generator.js
  • ghost/core/core/server/data/seeders/importers/benefits-importer.js
  • ghost/core/core/server/data/seeders/importers/comments-importer.js
  • ghost/core/core/server/data/seeders/importers/email-batches-importer.js
  • ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js
  • ghost/core/core/server/data/seeders/importers/email-recipients-importer.js
  • ghost/core/core/server/data/seeders/importers/emails-importer.js
  • ghost/core/core/server/data/seeders/importers/index.js
  • ghost/core/core/server/data/seeders/importers/labels-importer.js
  • ghost/core/core/server/data/seeders/importers/members-click-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-created-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-feedback-importer.js
  • ghost/core/core/server/data/seeders/importers/members-importer.js
  • ghost/core/core/server/data/seeders/importers/members-labels-importer.js
  • ghost/core/core/server/data/seeders/importers/members-login-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js
  • ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-products-importer.js
  • ghost/core/core/server/data/seeders/importers/members-status-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-stripe-customers-importer.js
  • ghost/core/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js
  • ghost/core/core/server/data/seeders/importers/members-subscribe-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-subscription-created-events-importer.js
  • ghost/core/core/server/data/seeders/importers/newsletters-importer.js
  • ghost/core/core/server/data/seeders/importers/offers-importer.js
  • ghost/core/core/server/data/seeders/importers/posts-authors-importer.js
  • ghost/core/core/server/data/seeders/importers/posts-importer.js
  • ghost/core/core/server/data/seeders/importers/posts-products-importer.js
  • ghost/core/core/server/data/seeders/importers/posts-tags-importer.js
  • ghost/core/core/server/data/seeders/importers/products-benefits-importer.js
  • ghost/core/core/server/data/seeders/importers/products-importer.js
  • ghost/core/core/server/data/seeders/importers/recommendation-click-events-importer.js
  • ghost/core/core/server/data/seeders/importers/recommendation-subscribe-events-importer.js
  • ghost/core/core/server/data/seeders/importers/recommendations-importer.js
  • ghost/core/core/server/data/seeders/importers/redirects-importer.js
  • ghost/core/core/server/data/seeders/importers/roles-users-importer.js
  • ghost/core/core/server/data/seeders/importers/stripe-prices-importer.js
  • ghost/core/core/server/data/seeders/importers/stripe-products-importer.js
  • ghost/core/core/server/data/seeders/importers/table-importer.js
  • ghost/core/core/server/data/seeders/importers/tags-importer.js
  • ghost/core/core/server/data/seeders/importers/users-importer.js
  • ghost/core/core/server/data/seeders/importers/web-mentions-importer.js
  • ghost/core/core/server/data/seeders/utils/json-importer.js
  • ghost/core/test/unit/server/data/importer/handlers/importer-content-file-handler.test.js
  • ghost/core/test/unit/server/data/importer/importers/content-file-importer.test.js
  • ghost/core/test/unit/server/data/importer/importers/data/newsletters.test.js
  • ghost/core/test/unit/server/data/importer/importers/data/posts.test.js
  • ghost/core/test/unit/server/data/importer/importers/data/products.test.js
  • ghost/core/test/unit/server/data/importer/importers/data/settings.test.js
  • ghost/core/test/unit/server/data/seeders/data-generator.test.js
✅ Files skipped from review due to trivial changes (2)
  • ghost/core/core/server/data/seeders/importers/recommendation-click-events-importer.js
  • ghost/core/core/server/data/seeders/importers/posts-tags-importer.js
🚧 Files skipped from review as they are similar to previous changes (33)
  • ghost/core/core/server/data/importer/importers/data/newsletters-importer.js
  • ghost/core/core/server/data/importer/import-manager.js
  • ghost/core/core/server/data/importer/importers/data/custom-theme-settings-importer.js
  • ghost/core/core/server/data/seeders/importers/members-products-importer.js
  • ghost/core/core/server/data/seeders/importers/posts-importer.js
  • ghost/core/core/boot.js
  • ghost/core/test/unit/server/data/importer/importers/data/products.test.js
  • ghost/core/core/server/data/seeders/importers/email-batches-importer.js
  • ghost/core/core/server/data/importer/importers/data/tags-importer.js
  • ghost/core/test/unit/server/data/importer/handlers/importer-content-file-handler.test.js
  • ghost/core/core/server/data/seeders/importers/members-subscription-created-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-stripe-customers-importer.js
  • ghost/core/core/server/data/seeders/importers/benefits-importer.js
  • ghost/core/core/server/data/seeders/utils/json-importer.js
  • ghost/core/core/server/data/seeders/importers/members-labels-importer.js
  • ghost/core/core/server/data/seeders/data-generator.js
  • ghost/core/core/server/data/seeders/importers/posts-products-importer.js
  • ghost/core/core/server/data/seeders/importers/stripe-prices-importer.js
  • ghost/core/test/unit/server/data/importer/importers/content-file-importer.test.js
  • ghost/core/core/server/data/seeders/importers/members-feedback-importer.js
  • ghost/core/core/server/data/seeders/importers/products-importer.js
  • ghost/core/test/unit/server/data/importer/importers/data/settings.test.js
  • ghost/core/core/server/data/seeders/importers/redirects-importer.js
  • ghost/core/core/server/data/seeders/importers/emails-importer.js
  • ghost/core/core/server/data/schema/fixtures/index.js
  • ghost/core/core/server/data/importer/importers/data/settings-importer.js
  • ghost/core/core/cli/generate-data.js
  • ghost/core/.eslintrc.js
  • ghost/core/core/server/data/seeders/importers/members-click-events-importer.js
  • ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js
  • ghost/core/core/server/data/seeders/importers/index.js
  • ghost/core/core/server/data/seeders/importers/members-status-events-importer.js
  • ghost/core/core/server/data/seeders/importers/recommendations-importer.js
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use `PascalCase` for component identifiers in filenames while keeping ShadCN-generated files in kebab-case
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use `camelCase` for function and variable names
📚 Learning: 2026-01-08T10:26:38.700Z
Learnt from: rob-ghost
Repo: TryGhost/Ghost PR: 25791
File: ghost/core/core/server/api/endpoints/member-comment-ban.js:64-68
Timestamp: 2026-01-08T10:26:38.700Z
Learning: In the Ghost API, endpoints rely on the serialization layer to prepare frame.data[docName] as a non-empty array before query() executes. Endpoints access frame.data[docName][0] directly (e.g., frame.data.comment_bans[0], frame.data.members[0], frame.data.posts[0]) without per-endpoint validation. This pattern is common across API endpoints. When maintaining or creating endpoints, avoid duplicating validation for frame.data[docName] and ensure the serializer guarantees the shape and non-emptiness. If you add a new endpoint that uses this frame.data[docName], follow the same assumption and avoid redundant checks unless there's a documented exception.

Applied to files:

  • ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js
  • ghost/core/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js
  • ghost/core/core/server/data/seeders/importers/recommendation-subscribe-events-importer.js
  • ghost/core/core/server/data/seeders/importers/offers-importer.js
  • ghost/core/core/server/data/seeders/importers/members-subscribe-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js
  • ghost/core/core/server/data/seeders/importers/newsletters-importer.js
  • ghost/core/core/server/data/seeders/importers/web-mentions-importer.js
  • ghost/core/core/server/data/seeders/importers/roles-users-importer.js
  • ghost/core/core/server/data/importer/importers/data/data-importer.js
  • ghost/core/core/server/data/importer/importers/data/users-importer.js
  • ghost/core/core/server/data/seeders/importers/members-login-events-importer.js
  • ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js
  • ghost/core/core/server/data/seeders/importers/users-importer.js
  • ghost/core/core/server/data/seeders/importers/tags-importer.js
  • ghost/core/test/unit/server/data/importer/importers/data/posts.test.js
  • ghost/core/core/server/data/seeders/importers/posts-authors-importer.js
  • ghost/core/test/unit/server/data/importer/importers/data/newsletters.test.js
  • ghost/core/core/server/data/seeders/importers/members-created-events-importer.js
  • ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js
  • ghost/core/core/server/data/importer/importers/data/roles-importer.js
  • ghost/core/core/server/data/seeders/importers/products-benefits-importer.js
  • ghost/core/core/server/data/importer/importers/data/products-importer.js
  • ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js
  • ghost/core/core/server/data/migrations/hooks/migrate/index.js
  • ghost/core/core/server/data/seeders/importers/labels-importer.js
  • ghost/core/core/server/data/seeders/importers/members-importer.js
  • ghost/core/test/unit/server/data/seeders/data-generator.test.js
  • ghost/core/core/server/data/seeders/importers/email-recipients-importer.js
  • ghost/core/core/server/data/seeders/importers/comments-importer.js
  • ghost/core/core/server/data/seeders/importers/stripe-products-importer.js
  • ghost/core/core/server/data/importer/importers/data/posts-importer.js
📚 Learning: 2025-11-24T17:29:43.865Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: e2e/AGENTS.md:0-0
Timestamp: 2025-11-24T17:29:43.865Z
Learning: Applies to e2e/**/*.test.ts : Use factory pattern for all test data creation instead of hard-coded data or direct database manipulation

Applied to files:

  • ghost/core/test/unit/server/data/seeders/data-generator.test.js
🧬 Code graph analysis (26)
ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js (9)
ghost/core/core/server/data/importer/importers/data/custom-theme-settings-importer.js (3)
  • BaseImporter (3-3)
  • require (5-5)
  • require (6-6)
ghost/core/core/server/data/importer/importers/data/newsletters-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/posts-importer.js (1)
  • BaseImporter (4-4)
ghost/core/core/server/data/importer/importers/data/products-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/roles-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/tags-importer.js (2)
  • BaseImporter (3-3)
  • require (5-5)
ghost/core/core/server/data/importer/importers/data/users-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js (15)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipients-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/emails-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-click-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-feedback-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/members-subscribe-events-importer.js (2)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js (15)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipients-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/emails-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-click-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-feedback-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/members-status-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/newsletters-importer.js (15)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipients-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/emails-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-click-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-feedback-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/web-mentions-importer.js (5)
ghost/core/core/server/data/seeders/importers/benefits-importer.js (4)
  • TableImporter (1-1)
  • require (2-2)
  • require (3-3)
  • require (4-4)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/roles-users-importer.js (2)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/importer/importers/data/data-importer.js (3)
ghost/core/test/unit/server/data/importer/importers/data/posts.test.js (1)
  • PostsImporter (3-3)
ghost/core/test/unit/server/data/importer/importers/data/newsletters.test.js (1)
  • NewslettersImporter (2-2)
ghost/core/test/unit/server/data/importer/importers/data/products.test.js (1)
  • ProductsImporter (2-2)
ghost/core/core/server/data/importer/importers/data/users-importer.js (10)
ghost/core/core/server/data/importer/importers/data/custom-theme-settings-importer.js (3)
  • BaseImporter (3-3)
  • require (5-5)
  • require (6-6)
ghost/core/core/server/data/importer/importers/data/newsletters-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/posts-importer.js (1)
  • BaseImporter (4-4)
ghost/core/core/server/data/importer/importers/data/products-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/roles-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/settings-importer.js (3)
  • BaseImporter (4-4)
  • require (9-9)
  • require (10-10)
ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/tags-importer.js (2)
  • BaseImporter (3-3)
  • require (5-5)
ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/users-importer.js (15)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipients-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/emails-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-click-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-feedback-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/tags-importer.js (15)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipients-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/emails-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-click-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-feedback-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/test/unit/server/data/importer/importers/data/posts.test.js (1)
ghost/core/core/server/data/importer/importers/data/data-importer.js (4)
  • PostsImporter (8-8)
  • require (4-4)
  • require (6-6)
  • require (19-19)
ghost/core/core/server/data/seeders/importers/posts-authors-importer.js (2)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/test/unit/server/data/importer/importers/data/newsletters.test.js (1)
ghost/core/core/server/data/importer/importers/data/data-importer.js (4)
  • NewslettersImporter (12-12)
  • require (4-4)
  • require (6-6)
  • require (19-19)
ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (3)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/emails-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/importer/importers/data/roles-importer.js (10)
ghost/core/core/server/data/importer/importers/data/custom-theme-settings-importer.js (3)
  • BaseImporter (3-3)
  • require (5-5)
  • require (6-6)
ghost/core/core/server/data/importer/importers/data/newsletters-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/posts-importer.js (1)
  • BaseImporter (4-4)
ghost/core/core/server/data/importer/importers/data/products-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/settings-importer.js (3)
  • BaseImporter (4-4)
  • require (9-9)
  • require (10-10)
ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/tags-importer.js (2)
  • BaseImporter (3-3)
  • require (5-5)
ghost/core/core/server/data/importer/importers/data/users-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/seeders/importers/products-benefits-importer.js (16)
ghost/core/core/server/data/seeders/importers/benefits-importer.js (4)
  • TableImporter (1-1)
  • require (2-2)
  • require (3-3)
  • require (4-4)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipients-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/emails-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-click-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-feedback-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/importer/importers/data/products-importer.js (8)
ghost/core/core/server/data/importer/importers/data/newsletters-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/posts-importer.js (1)
  • BaseImporter (4-4)
ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/roles-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/tags-importer.js (2)
  • BaseImporter (3-3)
  • require (5-5)
ghost/core/core/server/data/importer/importers/data/users-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js (8)
ghost/core/core/server/data/importer/importers/data/newsletters-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/posts-importer.js (1)
  • BaseImporter (4-4)
ghost/core/core/server/data/importer/importers/data/products-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/roles-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/tags-importer.js (2)
  • BaseImporter (3-3)
  • require (5-5)
ghost/core/core/server/data/importer/importers/data/users-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/seeders/importers/labels-importer.js (14)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipients-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/emails-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-click-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-feedback-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-labels-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/members-importer.js (3)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/test/unit/server/data/seeders/data-generator.test.js (2)
ghost/core/core/cli/generate-data.js (1)
  • DataGenerator (3-3)
ghost/core/core/server/data/seeders/data-generator.js (3)
  • require (4-4)
  • require (6-6)
  • require (9-9)
ghost/core/core/server/data/seeders/importers/comments-importer.js (3)
ghost/core/core/server/data/seeders/importers/email-batches-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/email-recipient-failures-importer.js (1)
  • TableImporter (1-1)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/stripe-products-importer.js (2)
ghost/core/core/server/data/seeders/importers/comments-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/seeders/importers/members-products-importer.js (1)
  • TableImporter (2-2)
ghost/core/core/server/data/importer/importers/data/posts-importer.js (10)
ghost/core/core/server/data/importer/importers/data/custom-theme-settings-importer.js (3)
  • BaseImporter (3-3)
  • require (5-5)
  • require (6-6)
ghost/core/core/server/data/importer/importers/data/newsletters-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/products-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/roles-importer.js (1)
  • BaseImporter (2-2)
ghost/core/core/server/data/importer/importers/data/settings-importer.js (3)
  • BaseImporter (4-4)
  • require (9-9)
  • require (10-10)
ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js (1)
  • BaseImporter (3-3)
ghost/core/core/server/data/importer/importers/data/tags-importer.js (2)
  • BaseImporter (3-3)
  • require (5-5)
ghost/core/core/server/data/importer/importers/data/users-importer.js (1)
  • BaseImporter (3-3)
🔇 Additional comments (32)
ghost/core/core/server/data/seeders/importers/members-importer.js (1)

1-1: LGTM! Import path updated to kebab-case.

The require path change from './TableImporter' to './table-importer' is consistent with other importers in the same directory and aligns with the PR's kebab-case standardization objective.

ghost/core/core/server/data/seeders/importers/users-importer.js (1)

1-1: LGTM! Import path updated consistently with project-wide kebab-case standardization.

The module path change from ./TableImporter to ./table-importer aligns with the PR's objective to standardize filenames to kebab-case. This pattern is consistent across all related importer files in the codebase.

ghost/core/core/server/data/seeders/importers/labels-importer.js (1)

1-1: LGTM! Consistent kebab-case naming.

The require path update from './TableImporter' to './table-importer' correctly aligns with the PR's kebab-case naming convention. This change is consistent with all other importers in the same directory.

ghost/core/core/server/data/seeders/importers/members-stripe-customers-subscriptions-importer.js (1)

2-2: LGTM! Import path updated consistently with kebab-case convention.

The change from ./TableImporter to ./table-importer aligns with the PR's objective to standardize on kebab-case naming. This pattern is consistent across all other importer files in the same directory.

ghost/core/core/server/data/seeders/importers/posts-authors-importer.js (1)

2-2: LGTM! Import path correctly updated to kebab-case.

The change from './TableImporter' to './table-importer' is consistent with the repository-wide migration to kebab-case file naming for seeders and importers, as confirmed by other files in the same directory.

ghost/core/core/server/data/seeders/importers/tags-importer.js (1)

3-3: LGTM! Import path updated to kebab-case.

The import path change from './TableImporter' to './table-importer' is consistent with all other importer files in this directory and aligns with the PR's objective to standardize on kebab-case naming.

ghost/core/core/server/data/seeders/importers/comments-importer.js (1)

2-2: LGTM! Import path correctly updated to kebab-case.

The change from './TableImporter' to './table-importer' aligns with the PR objectives to standardize file naming to kebab-case. This is consistent with other importers in the same directory.

ghost/core/test/unit/server/data/seeders/data-generator.test.js (1)

12-12: LGTM! Import path correctly updated to kebab-case.

The module path has been updated from PascalCase to kebab-case while correctly preserving the PascalCase identifier for the class constructor. The change aligns with the PR's objective of standardizing file naming conventions.

ghost/core/core/server/data/seeders/importers/roles-users-importer.js (1)

2-2: LGTM! Require path correctly updated to kebab-case.

The module path change from './TableImporter' to './table-importer' aligns with the PR objective and is consistent with other importers in the same directory.

ghost/core/core/server/data/seeders/importers/recommendation-subscribe-events-importer.js (1)

1-1: LGTM! Import path updated to kebab-case.

The import path change from './TableImporter' to './table-importer' is consistent with the PR's objective to standardize file naming to kebab-case across core seeders and importers.

ghost/core/core/server/data/seeders/importers/members-created-events-importer.js (1)

1-1: LGTM! Import path correctly updated to kebab-case.

The import path change from ./TableImporter to ./table-importer is consistent with the PR's objective to standardize file naming conventions across core seeders and importers. This matches the pattern used in other importer files (comments-importer.js, members-importer.js, emails-importer.js) as shown in the relevant code snippets.

ghost/core/core/server/data/seeders/importers/members-login-events-importer.js (1)

1-1: LGTM! Import path correctly updated to kebab-case.

The module path change aligns with the PR's kebab-case naming convention, and the variable name appropriately remains PascalCase for the class identifier. The pattern is consistent with other importers in the codebase.

ghost/core/core/server/data/seeders/importers/offers-importer.js (1)

1-1: Correctly updated to kebab-case naming convention.

The require statement now matches the renamed file, and no stale references remain in the codebase.

ghost/core/core/server/data/seeders/importers/members-paid-subscription-events-importer.js (1)

1-1: Verify all references to the old filename pattern have been updated.

The import path change from require('./TableImporter') to require('./table-importer') aligns with kebab-case naming standards. Ensure that:

  1. The actual file has been renamed from TableImporter.js to table-importer.js
  2. All references to the old filename pattern across the codebase have been updated
  3. No runtime errors occur from outdated import paths
ghost/core/core/server/data/seeders/importers/stripe-products-importer.js (1)

2-2: LGTM! Import path updated to kebab-case.

The change correctly updates the import path to './table-importer', aligning with the PR's objective to standardize file naming conventions. The update is consistent with all other importers in the same directory, and the module file exists at the expected location.

ghost/core/core/server/data/migrations/hooks/migrate/index.js (1)

2-3: LGTM! Path updates align with kebab-case convention.

The require paths have been correctly updated to kebab-case while maintaining the camelCase export names, which follows JavaScript naming conventions.

ghost/core/test/unit/server/data/importer/importers/data/newsletters.test.js (1)

2-2: LGTM! Import path correctly updated to kebab-case.

The require path has been updated to match the renamed newsletters-importer file while correctly maintaining the PascalCase variable name for the class.

ghost/core/core/server/data/importer/importers/data/products-importer.js (1)

2-2: LGTM! BaseImporter path correctly updated.

The import path has been updated from ./Base to ./base, consistent with the kebab-case convention applied across all importer files in this PR.

ghost/core/core/server/data/importer/importers/data/roles-importer.js (1)

2-2: LGTM! BaseImporter path correctly updated.

The import path has been updated from ./Base to ./base, maintaining consistency with the kebab-case naming convention.

ghost/core/core/server/data/importer/importers/data/revue-subscriber-importer.js (1)

2-2: LGTM! BaseImporter path correctly updated.

The import path has been updated from ./Base to ./base, consistent with the kebab-case refactoring applied across all importer modules.

ghost/core/core/server/data/importer/importers/data/stripe-products-importer.js (1)

3-3: LGTM! Import path updated to kebab-case.

The change from './Base' to './base' is consistent with the codebase-wide refactor to kebab-case naming conventions. This aligns with similar updates across numerous other importer files.

ghost/core/core/server/data/seeders/importers/web-mentions-importer.js (1)

1-1: LGTM! Import path updated to kebab-case.

The change from './TableImporter' to './table-importer' aligns with the PR's objective to standardize on kebab-case naming across seeder importers.

ghost/core/core/server/data/seeders/importers/members-subscribe-events-importer.js (1)

1-1: LGTM! Import path updated to kebab-case.

Consistent with the codebase-wide refactor to kebab-case filenames.

ghost/core/core/server/data/importer/importers/data/posts-importer.js (1)

4-4: LGTM! Import path updated to kebab-case.

The change from './Base' to './base' is consistent with the kebab-case refactor across all data importers.

ghost/core/core/server/data/seeders/importers/email-recipients-importer.js (1)

1-1: LGTM! Import path correctly uses kebab-case.

Verified that the import require('./table-importer') resolves to the actual table-importer.js file on case-sensitive filesystems. All seeder importer files consistently follow kebab-case naming convention with no PascalCase variants remaining.

ghost/core/core/server/data/seeders/importers/newsletters-importer.js (1)

1-1: LGTM! Import path updated to kebab-case.

The change from './TableImporter' to './table-importer' correctly aligns with the repository-wide kebab-case naming convention.

ghost/core/core/server/data/seeders/importers/products-benefits-importer.js (1)

1-1: LGTM! Import path updated to kebab-case.

The change from './TableImporter' to './table-importer' is consistent with the refactoring objective.

ghost/core/core/server/data/importer/importers/data/stripe-prices-importer.js (1)

3-3: LGTM! Import path updated to kebab-case.

The change from './Base' to './base' correctly reflects the kebab-case filename convention adopted across the data importer modules.

ghost/core/core/server/data/importer/importers/data/users-importer.js (1)

3-3: LGTM! Import path updated to kebab-case.

The change from './Base' to './base' is consistent with the kebab-case refactoring applied throughout the importer modules.

ghost/core/core/server/data/seeders/importers/members-newsletters-importer.js (1)

1-1: LGTM! Import path updated to kebab-case.

The change from './TableImporter' to './table-importer' correctly aligns with the kebab-case naming standard.

ghost/core/core/server/data/importer/importers/data/data-importer.js (1)

8-18: All 11 importer modules successfully renamed to kebab-case.

All require statements in data-importer.js have been correctly updated. Verification confirms all 11 kebab-case importer files exist and no references to old PascalCase filenames remain across the codebase.

ghost/core/test/unit/server/data/importer/importers/data/posts.test.js (1)

3-3: Module file successfully renamed and imports updated.

The import path update to posts-importer is correct. The actual module file exists at ghost/core/core/server/data/importer/importers/data/posts-importer.js, there are no remaining references to the old PostsImporter.js filename, and all imports throughout the codebase correctly use the kebab-case path. The relative import path in the test file (../../../../../../../core/server/data/importer/importers/data/posts-importer) properly resolves to the renamed module.

@ibalosh ibalosh force-pushed the moved-to-kebab-case-core branch from 5b428c4 to cf7e427 Compare January 8, 2026 17:30
@github-actions
Copy link
Contributor

github-actions bot commented Jan 8, 2026

React E2E Tests Failed

To view the Playwright test report locally, run:

REPORT_DIR=$(mktemp -d) && gh run download 20825809712 -n playwright-report-react -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR"

@github-actions
Copy link
Contributor

github-actions bot commented Jan 8, 2026

Ember E2E Tests Failed

To view the Playwright test report locally, run:

REPORT_DIR=$(mktemp -d) && gh run download 20825809712 -n playwright-report-ember -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR"

@github-actions
Copy link
Contributor

github-actions bot commented Jan 9, 2026

React E2E Tests Failed

To view the Playwright test report locally, run:

REPORT_DIR=$(mktemp -d) && gh run download 20825809712 -n playwright-report-react -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR"

@github-actions
Copy link
Contributor

github-actions bot commented Jan 9, 2026

Ember E2E Tests Failed

To view the Playwright test report locally, run:

REPORT_DIR=$(mktemp -d) && gh run download 20825809712 -n playwright-report-ember -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR"

@ibalosh ibalosh force-pushed the moved-to-kebab-case-core branch from cf7e427 to 8944b04 Compare January 11, 2026 15:48
@codecov
Copy link

codecov bot commented Jan 11, 2026

Codecov Report

❌ Patch coverage is 25.00000% with 87 lines in your changes missing coverage. Please review.
✅ Project coverage is 72.35%. Comparing base (ba4fd6c) to head (d9717bc).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...t/core/core/server/data/seeders/importers/index.js 0.00% 39 Missing ⚠️
ghost/core/core/server/adapters/cache/Redis.js 0.00% 7 Missing ⚠️
...st/core/core/server/data/seeders/data-generator.js 0.00% 1 Missing ⚠️
...server/data/seeders/importers/benefits-importer.js 0.00% 1 Missing ⚠️
...server/data/seeders/importers/comments-importer.js 0.00% 1 Missing ⚠️
...r/data/seeders/importers/email-batches-importer.js 0.00% 1 Missing ⚠️
...ers/importers/email-recipient-failures-importer.js 0.00% 1 Missing ⚠️
...ata/seeders/importers/email-recipients-importer.js 0.00% 1 Missing ⚠️
...e/server/data/seeders/importers/emails-importer.js 0.00% 1 Missing ⚠️
...e/server/data/seeders/importers/labels-importer.js 0.00% 1 Missing ⚠️
... and 33 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #25819      +/-   ##
==========================================
- Coverage   72.35%   72.35%   -0.01%     
==========================================
  Files        1542     1542              
  Lines      118524   118532       +8     
  Branches    14218    14218              
==========================================
+ Hits        85761    85762       +1     
- Misses      31746    31753       +7     
  Partials     1017     1017              
Flag Coverage Δ
admin-tests 51.80% <ø> (ø)
e2e-tests 72.35% <25.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ibalosh ibalosh force-pushed the moved-to-kebab-case-core branch from 8944b04 to eefb17d Compare January 12, 2026 07:31
@github-actions
Copy link
Contributor

React E2E Tests Failed

To view the Playwright test report locally, run:

REPORT_DIR=$(mktemp -d) && gh run download 20911356550 -n playwright-report-react -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR"

1 similar comment
@github-actions
Copy link
Contributor

React E2E Tests Failed

To view the Playwright test report locally, run:

REPORT_DIR=$(mktemp -d) && gh run download 20911356550 -n playwright-report-react -D "$REPORT_DIR" && npx playwright show-report "$REPORT_DIR"

…plain why

- removed lint disable filename check comment from files that do not need it
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (2)
ghost/core/core/server/api/endpoints/utils/validators/input/password_reset.js (2)

16-26: Inconsistent error handling pattern with generateResetToken.

resetPassword returns Promise.reject() while generateResetToken (line 34) throws synchronously. This inconsistency can cause unexpected behavior depending on how the validation framework handles these functions.

Consider aligning both functions to use the same error pattern for consistency.

♻️ Option 1: Use `throw` consistently (preferred if validators are sync)
     resetPassword(apiConfig, frame) {
         debug('resetPassword');
 
         const data = frame.data.password_reset[0];
 
         if (data.newPassword !== data.ne2Password) {
-            return Promise.reject(new errors.ValidationError({
+            throw new errors.ValidationError({
                 message: tpl(messages.newPasswordsDoNotMatch)
-            }));
+            });
         }
     },

28-38: Inconsistent optional chaining usage.

Line 31 uses optional chaining (frame.data.password_reset?.[0]?.email) while line 19 directly accesses frame.data.password_reset[0] without guards. Based on learnings, Ghost endpoints rely on the serialization layer to guarantee frame.data[docName] is a non-empty array, so direct access is the established pattern.

Consider using consistent access patterns within the same validator file.

♻️ Align with Ghost convention (direct access)
     generateResetToken(apiConfig, frame) {
         debug('generateResetToken');
 
-        const email = frame.data.password_reset?.[0]?.email;
+        const email = frame.data.password_reset[0].email;
 
         if (typeof email !== 'string' || !validator.isEmail(email)) {
             throw new errors.BadRequestError({
                 message: tpl(messages.invalidEmailReceived)
             });
         }
     }
📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0973134 and d9717bc.

📒 Files selected for processing (4)
  • ghost/core/.eslintrc.js
  • ghost/core/core/server/adapters/cache/Redis.js
  • ghost/core/core/server/api/endpoints/utils/validators/input/password_reset.js
  • ghost/core/core/server/services/email-suppression-list/email-suppression-list.js
💤 Files with no reviewable changes (1)
  • ghost/core/core/server/services/email-suppression-list/email-suppression-list.js
🧰 Additional context used
🧠 Learnings (10)
📓 Common learnings
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use `PascalCase` for component identifiers in filenames while keeping ShadCN-generated files in kebab-case
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use `camelCase` for function and variable names
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: e2e/AGENTS.md:0-0
Timestamp: 2025-11-24T17:29:43.865Z
Learning: Applies to e2e/**/*.{ts,tsx} : Prefer less comments and give things clear names
Learnt from: sagzy
Repo: TryGhost/Ghost PR: 24673
File: ghost/i18n/lib/i18n.js:34-35
Timestamp: 2025-11-24T11:12:15.712Z
Learning: In the Ghost i18n package (ghost/i18n/lib/i18n.js), changing existing locale codes requires backwards compatibility handling for users who have already configured those locales. Such changes should be done in a separate PR with migration logic rather than included in feature PRs.
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/{src,test}/**/*.{ts,tsx,js} : Follow ESLint and `tailwindcss/*` plugin rules when writing styles
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/components/**/*.{ts,tsx} : Use `PascalCase` for component identifiers in filenames while keeping ShadCN-generated files in kebab-case

Applied to files:

  • ghost/core/.eslintrc.js
📚 Learning: 2025-10-30T17:13:26.190Z
Learnt from: sam-lord
Repo: TryGhost/Ghost PR: 25303
File: ghost/core/core/server/services/email-service/BatchSendingService.js:19-19
Timestamp: 2025-10-30T17:13:26.190Z
Learning: In ghost/core/core/server/services/email-service/BatchSendingService.js and similar files in the Ghost codebase, prefer using `{...options}` spread syntax without explicit guards like `...(options || {})` when spreading potentially undefined objects, as the maintainer prefers cleaner syntax over defensive patterns when the behavior is safe.

Applied to files:

  • ghost/core/.eslintrc.js
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/{src,test}/**/*.{ts,tsx,js} : Follow ESLint and `tailwindcss/*` plugin rules when writing styles

Applied to files:

  • ghost/core/.eslintrc.js
📚 Learning: 2025-11-26T11:05:59.314Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: apps/shade/AGENTS.md:0-0
Timestamp: 2025-11-26T11:05:59.314Z
Learning: Applies to apps/shade/src/**/*.{ts,tsx,js} : Use `camelCase` for function and variable names

Applied to files:

  • ghost/core/.eslintrc.js
📚 Learning: 2025-11-24T11:12:15.712Z
Learnt from: sagzy
Repo: TryGhost/Ghost PR: 24673
File: ghost/i18n/lib/i18n.js:34-35
Timestamp: 2025-11-24T11:12:15.712Z
Learning: In the Ghost i18n package (ghost/i18n/lib/i18n.js), changing existing locale codes requires backwards compatibility handling for users who have already configured those locales. Such changes should be done in a separate PR with migration logic rather than included in feature PRs.

Applied to files:

  • ghost/core/.eslintrc.js
📚 Learning: 2025-11-24T17:29:43.865Z
Learnt from: CR
Repo: TryGhost/Ghost PR: 0
File: e2e/AGENTS.md:0-0
Timestamp: 2025-11-24T17:29:43.865Z
Learning: Applies to e2e/**/*.{ts,tsx} : Prefer less comments and give things clear names

Applied to files:

  • ghost/core/.eslintrc.js
📚 Learning: 2025-08-11T19:39:00.428Z
Learnt from: kevinansfield
Repo: TryGhost/Ghost PR: 24651
File: ghost/core/test/utils/urlUtils.js:53-57
Timestamp: 2025-08-11T19:39:00.428Z
Learning: In Ghost's test utilities, when fixing specific issues like async behavior, it's preferred to maintain existing error handling patterns (even if suboptimal) to keep PRs focused on their primary objective. Error handling improvements can be addressed in separate, dedicated PRs.

Applied to files:

  • ghost/core/.eslintrc.js
📚 Learning: 2025-05-29T07:45:35.714Z
Learnt from: ErisDS
Repo: TryGhost/Ghost PR: 23582
File: ghost/core/.c8rc.json:24-24
Timestamp: 2025-05-29T07:45:35.714Z
Learning: In Ghost project, app.js files under core/server/web are intentionally excluded from unit test coverage because they are not easily unit-testable due to being entry points with initialization code and side effects.

Applied to files:

  • ghost/core/.eslintrc.js
📚 Learning: 2026-01-08T10:26:38.700Z
Learnt from: rob-ghost
Repo: TryGhost/Ghost PR: 25791
File: ghost/core/core/server/api/endpoints/member-comment-ban.js:64-68
Timestamp: 2026-01-08T10:26:38.700Z
Learning: In the Ghost API, endpoints rely on the serialization layer to prepare frame.data[docName] as a non-empty array before query() executes. Endpoints access frame.data[docName][0] directly (e.g., frame.data.comment_bans[0], frame.data.members[0], frame.data.posts[0]) without per-endpoint validation. This pattern is common across API endpoints. When maintaining or creating endpoints, avoid duplicating validation for frame.data[docName] and ensure the serializer guarantees the shape and non-emptiness. If you add a new endpoint that uses this frame.data[docName], follow the same assumption and avoid redundant checks unless there's a documented exception.

Applied to files:

  • ghost/core/core/server/api/endpoints/utils/validators/input/password_reset.js
  • ghost/core/core/server/adapters/cache/Redis.js
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (9)
  • GitHub Check: Legacy tests (Node 22.18.0, sqlite3)
  • GitHub Check: Ghost-CLI tests
  • GitHub Check: Legacy tests (Node 22.18.0, mysql8)
  • GitHub Check: Acceptance tests (Node 22.18.0, sqlite3)
  • GitHub Check: Lint
  • GitHub Check: Unit tests (Node 22.18.0)
  • GitHub Check: Admin tests - Chrome
  • GitHub Check: Acceptance tests (Node 22.18.0, mysql8)
  • GitHub Check: Build & Push Docker Image
🔇 Additional comments (3)
ghost/core/core/server/adapters/cache/Redis.js (1)

1-7: Good documentation for the naming exception.

The JSDoc comment clearly explains the adapter naming constraint and provides helpful cross-references to the config and adapter-manager files. This context will help future maintainers understand why the file can't follow kebab-case conventions.

ghost/core/.eslintrc.js (1)

103-127: Well-structured approach to enforcing kebab-case with documented exceptions.

The broadened scope (core/**/*.{js,ts}) with explicit excludedFiles is cleaner than scattered overrides. Each exclusion (adapters, shared events, caches, Sentry, libs) is documented with clear rationale for future maintainers.

ghost/core/core/server/api/endpoints/utils/validators/input/password_reset.js (1)

1-4: LGTM!

Good addition of the explanatory comment for the ESLint disable directive. This aligns with the PR objective of documenting why filename linting exceptions exist.

@ibalosh ibalosh merged commit 865c618 into main Jan 12, 2026
39 checks passed
@ibalosh ibalosh deleted the moved-to-kebab-case-core branch January 12, 2026 10:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

migration [pull request] Includes migration for review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant