refactor: extract apply-platform-mixins.js from index.js

Move all 59 mixin Object.assign registrations into apply-platform-mixins.js
with identical order; index.js invokes applyPlatformMixins after export.
Refactor slash/oauth/invite/permission/worker json mixins to
createJsonExportHealDelegateMixin. index.js reduced by ~116 lines; behavior
unchanged.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-06-03 09:48:09 -04:00
co-authored by Cursor
parent 5622a2be1e
commit 29d61a9ec9
8 changed files with 217 additions and 233 deletions
+2
View File
@@ -54,6 +54,8 @@ Application facade: one `PearcordPlatform` class that wires identity, database,
**Phase 723 (v0.8.699):** Dedicated slash registry & invoke audit export JSON — `slash-registry-json-mixin.js`, `slash-invoke-audit-json-mixin.js`, spans `slash-registry.json` / `slash-invoke-audit.json`, `getSlashInvokeAuditExportJsonExport`, `clearSlashInvokeAuditExportJsonExports`, deep links `openSlashRegistryJson` / `openSlashInvokeAuditJson`. Bundle: `npm run test:ci-phase723`.
**Phase 727 (v0.8.703):** Mixin registration extracted to `apply-platform-mixins.js` (59 assigns, same order). `createJsonExportHealDelegateMixin` for slash/oauth/invite/permission/worker combined json mixins. Bundle: `npm run test:ci-phase727`.
**Phase 726 (v0.8.702):** Legacy combined `*-json-mixin.js` files migrated to `pearcord-json-export-mixin` (`createJsonExportDualHealMixin`, gossip+delegate pattern). All 21 legacy mixins factory-backed; audit keeps custom mod-digest heal. Bundle: `npm run test:ci-phase726`.
**Phase 725 (v0.8.701):** Dedicated bot registry & webhook execute export JSON — `bot-registry-json-mixin.js`, `webhook-json-mixin.js`, spans `bot-registry.json` / `webhook.json`, deep links `openBotRegistryJson` / `openWebhookExecuteExportJson`. Mesh dedupe/heal logic lives in `pearcord-json-export-mixin`. Bundle: `npm run test:ci-phase725`.
+128
View File
@@ -0,0 +1,128 @@
'use strict'
/**
* Side-effect mixin registration for PearcordPlatform (preserves assign order from index.js).
*/
function applyPlatformMixins (PearcordPlatform) {
const { pollSchedulingMixin } = require('./polls-scheduling')
const { notificationsActivityMixin } = require('./notifications-activity')
const { userSettingsMixin } = require('./user-settings')
const { moderationMixin } = require('./moderation')
const { invitesDiscoveryMixin } = require('./invites-discovery')
const { threadsForumMixin } = require('./threads-forum')
const { announcementsMixin } = require('./announcements-mixin')
const { permissionsMixin } = require('./permissions-mixin')
const { memberRolesMixin } = require('./member-roles-mixin')
const { slashMixin } = require('./slash-mixin')
const { botsMixin } = require('./bots-mixin')
const { webhooksMixin } = require('./webhooks-mixin')
const { automationMixin } = require('./automation-mixin')
const { workersMixin } = require('./workers-mixin')
const { deliveryMixin } = require('./delivery-mixin')
const { healthMixin } = require('./health-mixin')
const { auditJsonMixin } = require('./audit-json-mixin')
const { digestJsonMixin } = require('./digest-json-mixin')
const { relayJsonMixin } = require('./relay-json-mixin')
const { workerJsonMixin } = require('./worker-json-mixin')
const { botRegistryJsonMixin } = require('./bot-registry-json-mixin')
const { slashJsonMixin } = require('./slash-json-mixin')
const { oauthJsonMixin } = require('./oauth-json-mixin')
const { inviteJsonMixin } = require('./invite-json-mixin')
const { permissionJsonMixin } = require('./permission-json-mixin')
const { emojiJsonMixin } = require('./emoji-json-mixin')
const { memberJsonMixin } = require('./member-json-mixin')
const { banJsonMixin } = require('./ban-json-mixin')
const { pollJsonMixin } = require('./poll-json-mixin')
const { pinJsonMixin } = require('./pin-json-mixin')
const { threadJsonMixin } = require('./thread-json-mixin')
const { stageJsonMixin } = require('./stage-json-mixin')
const { voiceJsonMixin } = require('./voice-json-mixin')
const { screenJsonMixin } = require('./screen-json-mixin')
const { presenceJsonMixin } = require('./presence-json-mixin')
const { notificationJsonMixin } = require('./notification-json-mixin')
const { statusJsonMixin } = require('./status-json-mixin')
const { activityJsonMixin } = require('./activity-json-mixin')
const { sessionJsonMixin } = require('./session-json-mixin')
const { deviceJsonMixin } = require('./device-json-mixin')
const { discoveryJsonMixin } = require('./discovery-json-mixin')
const { federationJsonMixin } = require('./federation-json-mixin')
const { meshJsonMixin } = require('./mesh-json-mixin')
const { multiGuildJsonMixin } = require('./multi-guild-json-mixin')
const { partitionHealJsonMixin } = require('./partition-heal-json-mixin')
const { channelFollowJsonMixin } = require('./channel-follow-json-mixin')
const { guildWidgetJsonMixin } = require('./guild-widget-json-mixin')
const { readStateJsonMixin } = require('./read-state-json-mixin')
const { webhookJsonMixin } = require('./webhook-json-mixin')
const { vanityUrlJsonMixin } = require('./vanity-url-json-mixin')
const { effectivePermissionJsonMixin } = require('./effective-permission-json-mixin')
const { inviteLinkJsonMixin } = require('./invite-link-json-mixin')
const { roleOverrideJsonMixin } = require('./role-override-json-mixin')
const { oauthGrantJsonMixin } = require('./oauth-grant-json-mixin')
const { oauthInstallTokenJsonMixin } = require('./oauth-install-token-json-mixin')
const { slashRegistryJsonMixin } = require('./slash-registry-json-mixin')
const { slashInvokeAuditJsonMixin } = require('./slash-invoke-audit-json-mixin')
const { workerReleaseJsonMixin } = require('./worker-release-json-mixin')
const { integrationManifestJsonMixin } = require('./integration-manifest-json-mixin')
Object.assign(PearcordPlatform.prototype, pollSchedulingMixin)
Object.assign(PearcordPlatform.prototype, notificationsActivityMixin)
Object.assign(PearcordPlatform.prototype, userSettingsMixin)
Object.assign(PearcordPlatform.prototype, moderationMixin)
Object.assign(PearcordPlatform.prototype, invitesDiscoveryMixin)
Object.assign(PearcordPlatform.prototype, threadsForumMixin)
Object.assign(PearcordPlatform.prototype, announcementsMixin)
Object.assign(PearcordPlatform.prototype, permissionsMixin)
Object.assign(PearcordPlatform.prototype, memberRolesMixin)
Object.assign(PearcordPlatform.prototype, slashMixin)
Object.assign(PearcordPlatform.prototype, botsMixin)
Object.assign(PearcordPlatform.prototype, webhooksMixin)
Object.assign(PearcordPlatform.prototype, automationMixin)
Object.assign(PearcordPlatform.prototype, workersMixin)
Object.assign(PearcordPlatform.prototype, deliveryMixin)
Object.assign(PearcordPlatform.prototype, healthMixin)
Object.assign(PearcordPlatform.prototype, auditJsonMixin)
Object.assign(PearcordPlatform.prototype, digestJsonMixin)
Object.assign(PearcordPlatform.prototype, relayJsonMixin)
Object.assign(PearcordPlatform.prototype, workerJsonMixin)
Object.assign(PearcordPlatform.prototype, botRegistryJsonMixin)
Object.assign(PearcordPlatform.prototype, slashJsonMixin)
Object.assign(PearcordPlatform.prototype, oauthJsonMixin)
Object.assign(PearcordPlatform.prototype, inviteJsonMixin)
Object.assign(PearcordPlatform.prototype, permissionJsonMixin)
Object.assign(PearcordPlatform.prototype, emojiJsonMixin)
Object.assign(PearcordPlatform.prototype, memberJsonMixin)
Object.assign(PearcordPlatform.prototype, banJsonMixin)
Object.assign(PearcordPlatform.prototype, pollJsonMixin)
Object.assign(PearcordPlatform.prototype, pinJsonMixin)
Object.assign(PearcordPlatform.prototype, threadJsonMixin)
Object.assign(PearcordPlatform.prototype, stageJsonMixin)
Object.assign(PearcordPlatform.prototype, voiceJsonMixin)
Object.assign(PearcordPlatform.prototype, screenJsonMixin)
Object.assign(PearcordPlatform.prototype, presenceJsonMixin)
Object.assign(PearcordPlatform.prototype, notificationJsonMixin)
Object.assign(PearcordPlatform.prototype, statusJsonMixin)
Object.assign(PearcordPlatform.prototype, activityJsonMixin)
Object.assign(PearcordPlatform.prototype, sessionJsonMixin)
Object.assign(PearcordPlatform.prototype, deviceJsonMixin)
Object.assign(PearcordPlatform.prototype, discoveryJsonMixin)
Object.assign(PearcordPlatform.prototype, federationJsonMixin)
Object.assign(PearcordPlatform.prototype, meshJsonMixin)
Object.assign(PearcordPlatform.prototype, multiGuildJsonMixin)
Object.assign(PearcordPlatform.prototype, partitionHealJsonMixin)
Object.assign(PearcordPlatform.prototype, channelFollowJsonMixin)
Object.assign(PearcordPlatform.prototype, guildWidgetJsonMixin)
Object.assign(PearcordPlatform.prototype, readStateJsonMixin)
Object.assign(PearcordPlatform.prototype, webhookJsonMixin)
Object.assign(PearcordPlatform.prototype, vanityUrlJsonMixin)
Object.assign(PearcordPlatform.prototype, effectivePermissionJsonMixin)
Object.assign(PearcordPlatform.prototype, inviteLinkJsonMixin)
Object.assign(PearcordPlatform.prototype, roleOverrideJsonMixin)
Object.assign(PearcordPlatform.prototype, oauthGrantJsonMixin)
Object.assign(PearcordPlatform.prototype, oauthInstallTokenJsonMixin)
Object.assign(PearcordPlatform.prototype, slashRegistryJsonMixin)
Object.assign(PearcordPlatform.prototype, slashInvokeAuditJsonMixin)
Object.assign(PearcordPlatform.prototype, workerReleaseJsonMixin)
Object.assign(PearcordPlatform.prototype, integrationManifestJsonMixin)
}
module.exports = { applyPlatformMixins }
+2 -118
View File
@@ -34728,121 +34728,5 @@ class PearcordPlatform extends EventEmitter {
module.exports = { PearcordPlatform, USER_STATUS }
const { pollSchedulingMixin } = require('./polls-scheduling')
const { notificationsActivityMixin } = require('./notifications-activity')
const { userSettingsMixin } = require('./user-settings')
const { moderationMixin } = require('./moderation')
const { invitesDiscoveryMixin } = require('./invites-discovery')
const { threadsForumMixin } = require('./threads-forum')
const { announcementsMixin } = require('./announcements-mixin')
const { permissionsMixin } = require('./permissions-mixin')
const { memberRolesMixin } = require('./member-roles-mixin')
const { slashMixin } = require('./slash-mixin')
const { botsMixin } = require('./bots-mixin')
const { webhooksMixin } = require('./webhooks-mixin')
const { automationMixin } = require('./automation-mixin')
const { workersMixin } = require('./workers-mixin')
const { deliveryMixin } = require('./delivery-mixin')
const { healthMixin } = require('./health-mixin')
const { auditJsonMixin } = require('./audit-json-mixin')
const { digestJsonMixin } = require('./digest-json-mixin')
const { relayJsonMixin } = require('./relay-json-mixin')
const { workerJsonMixin } = require('./worker-json-mixin')
const { botRegistryJsonMixin } = require('./bot-registry-json-mixin')
const { slashJsonMixin } = require('./slash-json-mixin')
const { oauthJsonMixin } = require('./oauth-json-mixin')
const { inviteJsonMixin } = require('./invite-json-mixin')
const { permissionJsonMixin } = require('./permission-json-mixin')
const { emojiJsonMixin } = require('./emoji-json-mixin')
const { memberJsonMixin } = require('./member-json-mixin')
const { banJsonMixin } = require('./ban-json-mixin')
const { pollJsonMixin } = require('./poll-json-mixin')
const { pinJsonMixin } = require('./pin-json-mixin')
const { threadJsonMixin } = require('./thread-json-mixin')
const { stageJsonMixin } = require('./stage-json-mixin')
const { voiceJsonMixin } = require('./voice-json-mixin')
const { screenJsonMixin } = require('./screen-json-mixin')
const { presenceJsonMixin } = require('./presence-json-mixin')
const { notificationJsonMixin } = require('./notification-json-mixin')
const { statusJsonMixin } = require('./status-json-mixin')
const { activityJsonMixin } = require('./activity-json-mixin')
const { sessionJsonMixin } = require('./session-json-mixin')
const { deviceJsonMixin } = require('./device-json-mixin')
const { discoveryJsonMixin } = require('./discovery-json-mixin')
const { federationJsonMixin } = require('./federation-json-mixin')
const { meshJsonMixin } = require('./mesh-json-mixin')
const { multiGuildJsonMixin } = require('./multi-guild-json-mixin')
const { partitionHealJsonMixin } = require('./partition-heal-json-mixin')
const { channelFollowJsonMixin } = require('./channel-follow-json-mixin')
const { guildWidgetJsonMixin } = require('./guild-widget-json-mixin')
const { readStateJsonMixin } = require('./read-state-json-mixin')
const { webhookJsonMixin } = require('./webhook-json-mixin')
const { vanityUrlJsonMixin } = require('./vanity-url-json-mixin')
const { effectivePermissionJsonMixin } = require('./effective-permission-json-mixin')
const { inviteLinkJsonMixin } = require('./invite-link-json-mixin')
const { roleOverrideJsonMixin } = require('./role-override-json-mixin')
const { oauthGrantJsonMixin } = require('./oauth-grant-json-mixin')
const { oauthInstallTokenJsonMixin } = require('./oauth-install-token-json-mixin')
const { slashRegistryJsonMixin } = require('./slash-registry-json-mixin')
const { slashInvokeAuditJsonMixin } = require('./slash-invoke-audit-json-mixin')
const { workerReleaseJsonMixin } = require('./worker-release-json-mixin')
const { integrationManifestJsonMixin } = require('./integration-manifest-json-mixin')
Object.assign(PearcordPlatform.prototype, pollSchedulingMixin)
Object.assign(PearcordPlatform.prototype, notificationsActivityMixin)
Object.assign(PearcordPlatform.prototype, userSettingsMixin)
Object.assign(PearcordPlatform.prototype, moderationMixin)
Object.assign(PearcordPlatform.prototype, invitesDiscoveryMixin)
Object.assign(PearcordPlatform.prototype, threadsForumMixin)
Object.assign(PearcordPlatform.prototype, announcementsMixin)
Object.assign(PearcordPlatform.prototype, permissionsMixin)
Object.assign(PearcordPlatform.prototype, memberRolesMixin)
Object.assign(PearcordPlatform.prototype, slashMixin)
Object.assign(PearcordPlatform.prototype, botsMixin)
Object.assign(PearcordPlatform.prototype, webhooksMixin)
Object.assign(PearcordPlatform.prototype, automationMixin)
Object.assign(PearcordPlatform.prototype, workersMixin)
Object.assign(PearcordPlatform.prototype, deliveryMixin)
Object.assign(PearcordPlatform.prototype, healthMixin)
Object.assign(PearcordPlatform.prototype, auditJsonMixin)
Object.assign(PearcordPlatform.prototype, digestJsonMixin)
Object.assign(PearcordPlatform.prototype, relayJsonMixin)
Object.assign(PearcordPlatform.prototype, workerJsonMixin)
Object.assign(PearcordPlatform.prototype, botRegistryJsonMixin)
Object.assign(PearcordPlatform.prototype, slashJsonMixin)
Object.assign(PearcordPlatform.prototype, oauthJsonMixin)
Object.assign(PearcordPlatform.prototype, inviteJsonMixin)
Object.assign(PearcordPlatform.prototype, permissionJsonMixin)
Object.assign(PearcordPlatform.prototype, emojiJsonMixin)
Object.assign(PearcordPlatform.prototype, memberJsonMixin)
Object.assign(PearcordPlatform.prototype, banJsonMixin)
Object.assign(PearcordPlatform.prototype, pollJsonMixin)
Object.assign(PearcordPlatform.prototype, pinJsonMixin)
Object.assign(PearcordPlatform.prototype, threadJsonMixin)
Object.assign(PearcordPlatform.prototype, stageJsonMixin)
Object.assign(PearcordPlatform.prototype, voiceJsonMixin)
Object.assign(PearcordPlatform.prototype, screenJsonMixin)
Object.assign(PearcordPlatform.prototype, presenceJsonMixin)
Object.assign(PearcordPlatform.prototype, notificationJsonMixin)
Object.assign(PearcordPlatform.prototype, statusJsonMixin)
Object.assign(PearcordPlatform.prototype, activityJsonMixin)
Object.assign(PearcordPlatform.prototype, sessionJsonMixin)
Object.assign(PearcordPlatform.prototype, deviceJsonMixin)
Object.assign(PearcordPlatform.prototype, discoveryJsonMixin)
Object.assign(PearcordPlatform.prototype, federationJsonMixin)
Object.assign(PearcordPlatform.prototype, meshJsonMixin)
Object.assign(PearcordPlatform.prototype, multiGuildJsonMixin)
Object.assign(PearcordPlatform.prototype, partitionHealJsonMixin)
Object.assign(PearcordPlatform.prototype, channelFollowJsonMixin)
Object.assign(PearcordPlatform.prototype, guildWidgetJsonMixin)
Object.assign(PearcordPlatform.prototype, readStateJsonMixin)
Object.assign(PearcordPlatform.prototype, webhookJsonMixin)
Object.assign(PearcordPlatform.prototype, vanityUrlJsonMixin)
Object.assign(PearcordPlatform.prototype, effectivePermissionJsonMixin)
Object.assign(PearcordPlatform.prototype, inviteLinkJsonMixin)
Object.assign(PearcordPlatform.prototype, roleOverrideJsonMixin)
Object.assign(PearcordPlatform.prototype, oauthGrantJsonMixin)
Object.assign(PearcordPlatform.prototype, oauthInstallTokenJsonMixin)
Object.assign(PearcordPlatform.prototype, slashRegistryJsonMixin)
Object.assign(PearcordPlatform.prototype, slashInvokeAuditJsonMixin)
Object.assign(PearcordPlatform.prototype, workerReleaseJsonMixin)
Object.assign(PearcordPlatform.prototype, integrationManifestJsonMixin)
const { applyPlatformMixins } = require('./apply-platform-mixins')
applyPlatformMixins(PearcordPlatform)
+17 -23
View File
@@ -1,30 +1,24 @@
'use strict'
const { createJsonExportGossipMixin } = require('pearcord-json-export-mixin')
const { createJsonExportHealDelegateMixin } = require('pearcord-json-export-mixin')
const inviteJsonMixin = Object.assign(
createJsonExportGossipMixin({
keysField: '_inviteLinkJsonGossipKeys',
initMethod: '_initInviteJsonMixinState',
entries: [
const inviteJsonMixin = createJsonExportHealDelegateMixin({
keysField: '_inviteLinkJsonGossipKeys',
initMethod: '_initInviteJsonMixinState',
gossipEntries: [
{ method: '_shouldGossipInviteLinkJson', gossipHashPrefix: '' },
{ method: '_shouldGossipVanityUrlExportJson', gossipHashPrefix: 'vanity:' },
]
}),
{
async _healInviteLinkExportCursorOnPartition (guildId) {
if (typeof this._healInviteLinkJsonExportCursorOnPartition === 'function') {
return this._healInviteLinkJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
{ method: '_shouldGossipVanityUrlExportJson', gossipHashPrefix: 'vanity:' }
],
delegates: [
{
legacyHeal: '_healInviteLinkExportCursorOnPartition',
dedicatedHeal: '_healInviteLinkJsonExportCursorOnPartition'
},
async _healVanityUrlExportCursorOnPartition (guildId) {
if (typeof this._healVanityUrlJsonExportCursorOnPartition === 'function') {
return this._healVanityUrlJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
},
}
)
{
legacyHeal: '_healVanityUrlExportCursorOnPartition',
dedicatedHeal: '_healVanityUrlJsonExportCursorOnPartition'
}
]
})
module.exports = { inviteJsonMixin }
+17 -23
View File
@@ -1,30 +1,24 @@
'use strict'
const { createJsonExportGossipMixin } = require('pearcord-json-export-mixin')
const { createJsonExportHealDelegateMixin } = require('pearcord-json-export-mixin')
const oauthJsonMixin = Object.assign(
createJsonExportGossipMixin({
keysField: '_oauthGrantJsonGossipKeys',
initMethod: '_initOauthJsonMixinState',
entries: [
const oauthJsonMixin = createJsonExportHealDelegateMixin({
keysField: '_oauthGrantJsonGossipKeys',
initMethod: '_initOauthJsonMixinState',
gossipEntries: [
{ method: '_shouldGossipOAuthGrantJson', gossipHashPrefix: '' },
{ method: '_shouldGossipOAuthInstallTokenExportJson', gossipHashPrefix: 'install:' },
]
}),
{
async _healOAuthGrantExportCursorOnPartition (guildId) {
if (typeof this._healOAuthGrantJsonExportCursorOnPartition === 'function') {
return this._healOAuthGrantJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
{ method: '_shouldGossipOAuthInstallTokenExportJson', gossipHashPrefix: 'install:' }
],
delegates: [
{
legacyHeal: '_healOAuthGrantExportCursorOnPartition',
dedicatedHeal: '_healOAuthGrantJsonExportCursorOnPartition'
},
async _healOAuthInstallTokenExportCursorOnPartition (guildId) {
if (typeof this._healOAuthInstallTokenJsonExportCursorOnPartition === 'function') {
return this._healOAuthInstallTokenJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
},
}
)
{
legacyHeal: '_healOAuthInstallTokenExportCursorOnPartition',
dedicatedHeal: '_healOAuthInstallTokenJsonExportCursorOnPartition'
}
]
})
module.exports = { oauthJsonMixin }
+17 -23
View File
@@ -1,30 +1,24 @@
'use strict'
const { createJsonExportGossipMixin } = require('pearcord-json-export-mixin')
const { createJsonExportHealDelegateMixin } = require('pearcord-json-export-mixin')
const permissionJsonMixin = Object.assign(
createJsonExportGossipMixin({
keysField: '_roleOverrideJsonGossipKeys',
initMethod: '_initPermissionJsonMixinState',
entries: [
const permissionJsonMixin = createJsonExportHealDelegateMixin({
keysField: '_roleOverrideJsonGossipKeys',
initMethod: '_initPermissionJsonMixinState',
gossipEntries: [
{ method: '_shouldGossipRoleOverrideJson', gossipHashPrefix: '' },
{ method: '_shouldGossipEffectivePermissionExportJson', gossipHashPrefix: 'effective:' },
]
}),
{
async _healRoleOverrideExportCursorOnPartition (guildId) {
if (typeof this._healRoleOverrideJsonExportCursorOnPartition === 'function') {
return this._healRoleOverrideJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
{ method: '_shouldGossipEffectivePermissionExportJson', gossipHashPrefix: 'effective:' }
],
delegates: [
{
legacyHeal: '_healRoleOverrideExportCursorOnPartition',
dedicatedHeal: '_healRoleOverrideJsonExportCursorOnPartition'
},
async _healEffectivePermissionExportCursorOnPartition (guildId) {
if (typeof this._healEffectivePermissionJsonExportCursorOnPartition === 'function') {
return this._healEffectivePermissionJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
},
}
)
{
legacyHeal: '_healEffectivePermissionExportCursorOnPartition',
dedicatedHeal: '_healEffectivePermissionJsonExportCursorOnPartition'
}
]
})
module.exports = { permissionJsonMixin }
+17 -23
View File
@@ -1,30 +1,24 @@
'use strict'
const { createJsonExportGossipMixin } = require('pearcord-json-export-mixin')
const { createJsonExportHealDelegateMixin } = require('pearcord-json-export-mixin')
const slashJsonMixin = Object.assign(
createJsonExportGossipMixin({
keysField: '_slashRegistryJsonGossipKeys',
initMethod: '_initSlashJsonMixinState',
entries: [
const slashJsonMixin = createJsonExportHealDelegateMixin({
keysField: '_slashRegistryJsonGossipKeys',
initMethod: '_initSlashJsonMixinState',
gossipEntries: [
{ method: '_shouldGossipSlashRegistryJson', gossipHashPrefix: '' },
{ method: '_shouldGossipSlashInvokeAuditExportJson', gossipHashPrefix: 'invoke:' },
]
}),
{
async _healSlashRegistryExportCursorOnPartition (guildId) {
if (typeof this._healSlashRegistryJsonExportCursorOnPartition === 'function') {
return this._healSlashRegistryJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
{ method: '_shouldGossipSlashInvokeAuditExportJson', gossipHashPrefix: 'invoke:' }
],
delegates: [
{
legacyHeal: '_healSlashRegistryExportCursorOnPartition',
dedicatedHeal: '_healSlashRegistryJsonExportCursorOnPartition'
},
async _healSlashInvokeAuditExportCursorOnPartition (guildId) {
if (typeof this._healSlashInvokeAuditJsonExportCursorOnPartition === 'function') {
return this._healSlashInvokeAuditJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
},
}
)
{
legacyHeal: '_healSlashInvokeAuditExportCursorOnPartition',
dedicatedHeal: '_healSlashInvokeAuditJsonExportCursorOnPartition'
}
]
})
module.exports = { slashJsonMixin }
+17 -23
View File
@@ -1,31 +1,25 @@
'use strict'
const { createJsonExportGossipMixin } = require('pearcord-json-export-mixin')
const { createJsonExportHealDelegateMixin } = require('pearcord-json-export-mixin')
/** Legacy gossip dedupe for worker release + integration manifest (heal lives in dedicated mixins). */
const workerJsonMixin = Object.assign(
createJsonExportGossipMixin({
keysField: '_workerReleaseJsonGossipKeys',
initMethod: '_initWorkerJsonMixinState',
entries: [
{ method: '_shouldGossipWorkerReleaseJson', gossipHashPrefix: '' },
{ method: '_shouldGossipIntegrationManifestExportJson', gossipHashPrefix: 'manifest:' }
]
}),
{
async _healWorkerReleaseExportCursorOnPartition (guildId) {
if (typeof this._healWorkerReleaseJsonExportCursorOnPartition === 'function') {
return this._healWorkerReleaseJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
const workerJsonMixin = createJsonExportHealDelegateMixin({
keysField: '_workerReleaseJsonGossipKeys',
initMethod: '_initWorkerJsonMixinState',
gossipEntries: [
{ method: '_shouldGossipWorkerReleaseJson', gossipHashPrefix: '' },
{ method: '_shouldGossipIntegrationManifestExportJson', gossipHashPrefix: 'manifest:' }
],
delegates: [
{
legacyHeal: '_healWorkerReleaseExportCursorOnPartition',
dedicatedHeal: '_healWorkerReleaseJsonExportCursorOnPartition'
},
async _healIntegrationManifestCursorOnPartition (guildId) {
if (typeof this._healIntegrationManifestJsonExportCursorOnPartition === 'function') {
return this._healIntegrationManifestJsonExportCursorOnPartition(guildId)
}
return { relisted: 0, skipped: true }
{
legacyHeal: '_healIntegrationManifestCursorOnPartition',
dedicatedHeal: '_healIntegrationManifestJsonExportCursorOnPartition'
}
}
)
]
})
module.exports = { workerJsonMixin }