autoreg-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
85
skills/bypass-ai/templates/cursor-invoice-mock.user.js
Normal file
85
skills/bypass-ai/templates/cursor-invoice-mock.user.js
Normal file
@@ -0,0 +1,85 @@
|
||||
// ==UserScript==
|
||||
// @name Cursor Enterprise Invoice/SEPA Mock
|
||||
// @namespace gothbreach.cursor.invoice
|
||||
// @version 1.0.0
|
||||
// @description Mock Cursor tRPC billing endpoints to force enterprise invoice/SEPA flow
|
||||
// @match *://cursor.com/*
|
||||
// @run-at document-start
|
||||
// @grant none
|
||||
// ==/UserScript==
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
const BILLING_PATTERNS = [
|
||||
'/api/trpc/billing',
|
||||
'/api/trpc/checkout',
|
||||
'/api/billing/'
|
||||
];
|
||||
|
||||
const MOCK_DATA = {
|
||||
paymentMethods: ['invoice', 'sepa', 'wire_transfer', 'bank_transfer'],
|
||||
checkoutFlow: 'enterprise',
|
||||
invoiceBilling: { enabled: true, currency: 'eur' },
|
||||
sepaAvailable: true,
|
||||
bankTransferAvailable: true,
|
||||
poBilling: true,
|
||||
requiresCard: false
|
||||
};
|
||||
|
||||
const nativeFetch = window.fetch;
|
||||
window.fetch = async function (input, init) {
|
||||
const url = typeof input === 'string' ? input : input?.url || '';
|
||||
const response = await nativeFetch.apply(this, arguments);
|
||||
|
||||
const isBilling = BILLING_PATTERNS.some(p => url.includes(p));
|
||||
if (!isBilling) return response;
|
||||
|
||||
try {
|
||||
const cloned = response.clone();
|
||||
const data = await cloned.json();
|
||||
console.warn('[Cursor SEPA] Original:', JSON.stringify(data).substring(0, 300));
|
||||
|
||||
// tRPC wraps response in { result: { data: ... } }
|
||||
const mock = {
|
||||
...data,
|
||||
result: {
|
||||
data: {
|
||||
...(data?.result?.data || {}),
|
||||
...MOCK_DATA
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return new Response(JSON.stringify(mock), {
|
||||
status: 200,
|
||||
statusText: 'OK',
|
||||
headers: new Headers({ 'Content-Type': 'application/json' })
|
||||
});
|
||||
} catch {
|
||||
return response;
|
||||
}
|
||||
};
|
||||
|
||||
// Status badge
|
||||
function showBadge() {
|
||||
if (document.getElementById('cursor-sepa-badge')) return;
|
||||
const badge = document.createElement('div');
|
||||
badge.id = 'cursor-sepa-badge';
|
||||
badge.textContent = 'Cursor SEPA ON';
|
||||
Object.assign(badge.style, {
|
||||
position: 'fixed', right: '12px', bottom: '12px', zIndex: '2147483647',
|
||||
padding: '7px 11px', color: '#fff', background: '#167c3a',
|
||||
borderRadius: '6px', fontSize: '12px', fontFamily: 'sans-serif',
|
||||
boxShadow: '0 2px 8px rgba(0,0,0,.3)'
|
||||
});
|
||||
(document.documentElement || document.body).appendChild(badge);
|
||||
}
|
||||
|
||||
console.info('[Cursor SEPA] Script loaded:', location.href);
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', showBadge, { once: true });
|
||||
} else {
|
||||
showBadge();
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user