@stamhoofd/models 2.120.6 → 2.122.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/factories/GroupFactory.d.ts.map +1 -1
- package/dist/factories/GroupFactory.js +1 -1
- package/dist/factories/GroupFactory.js.map +1 -1
- package/dist/factories/OrganizationFactory.d.ts +2 -1
- package/dist/factories/OrganizationFactory.d.ts.map +1 -1
- package/dist/factories/OrganizationFactory.js +9 -1
- package/dist/factories/OrganizationFactory.js.map +1 -1
- package/dist/factories/RegistrationInvitationFactory.d.ts +15 -0
- package/dist/factories/RegistrationInvitationFactory.d.ts.map +1 -0
- package/dist/factories/RegistrationInvitationFactory.js +18 -0
- package/dist/factories/RegistrationInvitationFactory.js.map +1 -0
- package/dist/factories/STPackageFactory.js.map +1 -1
- package/dist/factories/UserFactory.d.ts.map +1 -1
- package/dist/factories/UserFactory.js +2 -2
- package/dist/factories/UserFactory.js.map +1 -1
- package/dist/factories/index.d.ts +1 -0
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +1 -0
- package/dist/factories/index.js.map +1 -1
- package/dist/helpers/EmailBuilder.d.ts.map +1 -1
- package/dist/helpers/EmailBuilder.js +8 -8
- package/dist/helpers/EmailBuilder.js.map +1 -1
- package/dist/helpers/Handlebars.d.ts.map +1 -1
- package/dist/helpers/Handlebars.js +10 -1
- package/dist/helpers/Handlebars.js.map +1 -1
- package/dist/helpers/InvoiceCounter.d.ts +24 -0
- package/dist/helpers/InvoiceCounter.d.ts.map +1 -0
- package/dist/helpers/InvoiceCounter.js +133 -0
- package/dist/helpers/InvoiceCounter.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations/1605262045-import-postcodes.d.ts.map +1 -1
- package/dist/migrations/1605262045-import-postcodes.js +58 -24
- package/dist/migrations/1605262045-import-postcodes.js.map +1 -1
- package/dist/migrations/1605262046-import-postcodes-nl.d.ts.map +1 -1
- package/dist/migrations/1605262046-import-postcodes-nl.js +54 -17
- package/dist/migrations/1605262046-import-postcodes-nl.js.map +1 -1
- package/dist/migrations/1719567881-organization-periodId.sql +2 -0
- package/dist/migrations/1719567882-groups-periodId.sql +2 -0
- package/dist/migrations/1720080975-convert-charset.d.ts +4 -0
- package/dist/migrations/1720080975-convert-charset.d.ts.map +1 -0
- package/dist/migrations/1720080975-convert-charset.js +26 -0
- package/dist/migrations/1720080975-convert-charset.js.map +1 -0
- package/dist/migrations/1720080976-convert-charset-leads.d.ts.map +1 -1
- package/dist/migrations/1720080976-convert-charset-leads.js +11 -10
- package/dist/migrations/1720080976-convert-charset-leads.js.map +1 -1
- package/dist/migrations/1721400546-users-memberId.sql +2 -0
- package/dist/migrations/1722269236-group-waitinglist-id.sql +2 -1
- package/dist/migrations/1722525785-balance-item-paying-organization-id.sql +2 -0
- package/dist/migrations/1722525787-depending-balance-item.sql +2 -0
- package/dist/migrations/1722963554-registration-group-price-and-options.sql +1 -1
- package/dist/migrations/1723652797-payments-paying-organization-id-fk.sql +2 -0
- package/dist/migrations/1733317908-added-missing-organization-fk-on-registrations.sql +2 -0
- package/dist/migrations/1733317910-paying-organization-id-fk.sql +2 -0
- package/dist/migrations/1733504881-negative-invoice-id.sql +6 -0
- package/dist/migrations/1733994455-balance-item-status-open.d.ts +4 -0
- package/dist/migrations/1733994455-balance-item-status-open.d.ts.map +1 -0
- package/dist/migrations/1733994455-balance-item-status-open.js +28 -0
- package/dist/migrations/1733994455-balance-item-status-open.js.map +1 -0
- package/dist/migrations/1763216320-bigint-balance-item-payments.sql +2 -0
- package/dist/migrations/1763216320-bigint-balance-items.sql +5 -0
- package/dist/migrations/1763216320-bigint-orders.sql +2 -0
- package/dist/migrations/1763216320-bigint-payments.sql +2 -0
- package/dist/migrations/1763216332-bigint-balance-item-price-total.sql +2 -0
- package/dist/migrations/1769087808-corrected-invoice-user-agent.sql +2 -0
- package/dist/migrations/1769087809-payments-invoice-id.sql +2 -0
- package/dist/migrations/1772033555-balance-item-package-id.sql +2 -0
- package/dist/migrations/1776873089-create-registration-invitations-table.sql +13 -0
- package/dist/migrations/1778657958-payments-create-mandate.sql +2 -0
- package/dist/migrations/1778657959-payments-mandate-id.sql +2 -0
- package/dist/migrations/1778796615-payments-reversing-payment-id.sql +5 -0
- package/dist/migrations/1778950642-price-invoiced.sql +2 -0
- package/dist/migrations/1779443446-transfer-fees.sql +3 -0
- package/dist/migrations/1779709174-used-register-code-balance-item-id.sql +5 -0
- package/dist/migrations/1779968328-payments-admin-user-id.sql +5 -0
- package/dist/migrations/1779970611-payments-refunded-amount.sql +2 -0
- package/dist/migrations/1779972640-balance-items-failed-at.sql +2 -0
- package/dist/migrations/1780328285-document-template-locked.sql +2 -0
- package/dist/migrations/1780328286-document-locked.sql +2 -0
- package/dist/migrations/1780412083-documents-set-locked.d.ts +4 -0
- package/dist/migrations/1780412083-documents-set-locked.d.ts.map +1 -0
- package/dist/migrations/1780412083-documents-set-locked.js +14 -0
- package/dist/migrations/1780412083-documents-set-locked.js.map +1 -0
- package/dist/migrations/1780928401-v1-groups-migration-data.d.ts +4 -0
- package/dist/migrations/1780928401-v1-groups-migration-data.d.ts.map +1 -0
- package/dist/migrations/1780928401-v1-groups-migration-data.js +44 -0
- package/dist/migrations/1780928401-v1-groups-migration-data.js.map +1 -0
- package/dist/models/BalanceItem.d.ts +14 -1
- package/dist/models/BalanceItem.d.ts.map +1 -1
- package/dist/models/BalanceItem.js +91 -41
- package/dist/models/BalanceItem.js.map +1 -1
- package/dist/models/CachedBalance.d.ts +6 -1
- package/dist/models/CachedBalance.d.ts.map +1 -1
- package/dist/models/CachedBalance.js +3 -2
- package/dist/models/CachedBalance.js.map +1 -1
- package/dist/models/Document.d.ts +4 -0
- package/dist/models/Document.d.ts.map +1 -1
- package/dist/models/Document.js +26 -3
- package/dist/models/Document.js.map +1 -1
- package/dist/models/DocumentTemplate.d.ts +4 -0
- package/dist/models/DocumentTemplate.d.ts.map +1 -1
- package/dist/models/DocumentTemplate.js +37 -1
- package/dist/models/DocumentTemplate.js.map +1 -1
- package/dist/models/Email.d.ts.map +1 -1
- package/dist/models/Email.js +1 -1
- package/dist/models/Email.js.map +1 -1
- package/dist/models/EmailVerificationCode.d.ts.map +1 -1
- package/dist/models/EmailVerificationCode.js +3 -13
- package/dist/models/EmailVerificationCode.js.map +1 -1
- package/dist/models/Event.d.ts +2 -1
- package/dist/models/Event.d.ts.map +1 -1
- package/dist/models/Event.js +3 -0
- package/dist/models/Event.js.map +1 -1
- package/dist/models/EventNotification.d.ts.map +1 -1
- package/dist/models/EventNotification.js +5 -5
- package/dist/models/EventNotification.js.map +1 -1
- package/dist/models/Group.d.ts +4 -0
- package/dist/models/Group.d.ts.map +1 -1
- package/dist/models/Group.js +17 -0
- package/dist/models/Group.js.map +1 -1
- package/dist/models/Invoice.d.ts +1 -0
- package/dist/models/Invoice.d.ts.map +1 -1
- package/dist/models/Invoice.js +8 -8
- package/dist/models/Invoice.js.map +1 -1
- package/dist/models/MemberPlatformMembership.d.ts.map +1 -1
- package/dist/models/MemberPlatformMembership.js +9 -0
- package/dist/models/MemberPlatformMembership.js.map +1 -1
- package/dist/models/MollieToken.d.ts +4 -8
- package/dist/models/MollieToken.d.ts.map +1 -1
- package/dist/models/MollieToken.js +37 -90
- package/dist/models/MollieToken.js.map +1 -1
- package/dist/models/Order.d.ts.map +1 -1
- package/dist/models/Order.js +1 -0
- package/dist/models/Order.js.map +1 -1
- package/dist/models/Organization.d.ts +30 -23
- package/dist/models/Organization.d.ts.map +1 -1
- package/dist/models/Organization.js +113 -61
- package/dist/models/Organization.js.map +1 -1
- package/dist/models/PasswordToken.d.ts +5 -1
- package/dist/models/PasswordToken.d.ts.map +1 -1
- package/dist/models/PasswordToken.js +18 -17
- package/dist/models/PasswordToken.js.map +1 -1
- package/dist/models/Payment.d.ts +35 -3
- package/dist/models/Payment.d.ts.map +1 -1
- package/dist/models/Payment.js +66 -3
- package/dist/models/Payment.js.map +1 -1
- package/dist/models/Registration.d.ts +1 -0
- package/dist/models/Registration.d.ts.map +1 -1
- package/dist/models/Registration.js +4 -3
- package/dist/models/Registration.js.map +1 -1
- package/dist/models/RegistrationInvitation.d.ts +14 -0
- package/dist/models/RegistrationInvitation.d.ts.map +1 -0
- package/dist/models/RegistrationInvitation.js +45 -0
- package/dist/models/RegistrationInvitation.js.map +1 -0
- package/dist/models/STCredit.d.ts +4 -0
- package/dist/models/STCredit.d.ts.map +1 -1
- package/dist/models/STCredit.js +28 -0
- package/dist/models/STCredit.js.map +1 -1
- package/dist/models/STInvoice.d.ts +7 -1
- package/dist/models/STInvoice.d.ts.map +1 -1
- package/dist/models/STInvoice.js +9 -0
- package/dist/models/STInvoice.js.map +1 -1
- package/dist/models/STPackage.d.ts +4 -0
- package/dist/models/STPackage.d.ts.map +1 -1
- package/dist/models/STPackage.js +12 -1
- package/dist/models/STPackage.js.map +1 -1
- package/dist/models/UsedRegisterCode.d.ts +9 -0
- package/dist/models/UsedRegisterCode.d.ts.map +1 -1
- package/dist/models/UsedRegisterCode.js +31 -0
- package/dist/models/UsedRegisterCode.js.map +1 -1
- package/dist/models/User.d.ts +1 -1
- package/dist/models/User.d.ts.map +1 -1
- package/dist/models/User.js +1 -1
- package/dist/models/User.js.map +1 -1
- package/dist/models/_relations.js +25 -0
- package/dist/models/_relations.js.map +1 -1
- package/dist/models/addresses/City.d.ts +4 -4
- package/dist/models/addresses/City.d.ts.map +1 -1
- package/dist/models/addresses/City.js +6 -6
- package/dist/models/addresses/City.js.map +1 -1
- package/dist/models/addresses/PostalCode.d.ts +2 -2
- package/dist/models/addresses/PostalCode.d.ts.map +1 -1
- package/dist/models/addresses/PostalCode.js +4 -3
- package/dist/models/addresses/PostalCode.js.map +1 -1
- package/dist/models/addresses/Street.d.ts +3 -3
- package/dist/models/addresses/Street.d.ts.map +1 -1
- package/dist/models/addresses/Street.js +4 -4
- package/dist/models/addresses/Street.js.map +1 -1
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -1
- package/dist/models/v1GroupMigrationData.d.ts +22 -0
- package/dist/models/v1GroupMigrationData.d.ts.map +1 -0
- package/dist/models/v1GroupMigrationData.js +48 -0
- package/dist/models/v1GroupMigrationData.js.map +1 -0
- package/package.json +41 -13
- package/src/factories/GroupFactory.ts +4 -6
- package/src/factories/OrganizationFactory.ts +12 -4
- package/src/factories/RegistrationInvitationFactory.ts +24 -0
- package/src/factories/STPackageFactory.ts +2 -2
- package/src/factories/UserFactory.ts +4 -5
- package/src/factories/index.ts +1 -0
- package/src/helpers/EmailBuilder.ts +19 -28
- package/src/helpers/Handlebars.ts +10 -1
- package/src/helpers/InvoiceCounter.test.ts +220 -0
- package/src/helpers/InvoiceCounter.ts +162 -0
- package/src/index.ts +0 -1
- package/src/migrations/1605262045-import-postcodes.ts +62 -25
- package/src/migrations/1605262046-import-postcodes-nl.ts +58 -17
- package/src/migrations/1719567881-organization-periodId.sql +2 -0
- package/src/migrations/1719567882-groups-periodId.sql +2 -0
- package/src/migrations/1720080975-convert-charset.ts +34 -0
- package/src/migrations/1720080976-convert-charset-leads.ts +16 -13
- package/src/migrations/1721400546-users-memberId.sql +2 -0
- package/src/migrations/1722269236-group-waitinglist-id.sql +2 -1
- package/src/migrations/1722525785-balance-item-paying-organization-id.sql +2 -0
- package/src/migrations/1722525787-depending-balance-item.sql +2 -0
- package/src/migrations/1722963554-registration-group-price-and-options.sql +1 -1
- package/src/migrations/1723652797-payments-paying-organization-id-fk.sql +2 -0
- package/src/migrations/1733317908-added-missing-organization-fk-on-registrations.sql +2 -0
- package/src/migrations/1733317910-paying-organization-id-fk.sql +2 -0
- package/src/migrations/1733504881-negative-invoice-id.sql +6 -0
- package/src/migrations/1733994455-balance-item-status-open.ts +30 -0
- package/src/migrations/1763216320-bigint-balance-item-payments.sql +2 -0
- package/src/migrations/1763216320-bigint-balance-items.sql +5 -0
- package/src/migrations/1763216320-bigint-orders.sql +2 -0
- package/src/migrations/1763216320-bigint-payments.sql +2 -0
- package/src/migrations/1763216332-bigint-balance-item-price-total.sql +2 -0
- package/src/migrations/1769087808-corrected-invoice-user-agent.sql +2 -0
- package/src/migrations/1769087809-payments-invoice-id.sql +2 -0
- package/src/migrations/1772033555-balance-item-package-id.sql +2 -0
- package/src/migrations/1776873089-create-registration-invitations-table.sql +13 -0
- package/src/migrations/1778657958-payments-create-mandate.sql +2 -0
- package/src/migrations/1778657959-payments-mandate-id.sql +2 -0
- package/src/migrations/1778796615-payments-reversing-payment-id.sql +5 -0
- package/src/migrations/1778950642-price-invoiced.sql +2 -0
- package/src/migrations/1779443446-transfer-fees.sql +3 -0
- package/src/migrations/1779709174-used-register-code-balance-item-id.sql +5 -0
- package/src/migrations/1779968328-payments-admin-user-id.sql +5 -0
- package/src/migrations/1779970611-payments-refunded-amount.sql +2 -0
- package/src/migrations/1779972640-balance-items-failed-at.sql +2 -0
- package/src/migrations/1780328285-document-template-locked.sql +2 -0
- package/src/migrations/1780328286-document-locked.sql +2 -0
- package/src/migrations/1780412083-documents-set-locked.ts +18 -0
- package/src/migrations/1780928401-v1-groups-migration-data.ts +50 -0
- package/src/models/BalanceItem.ts +98 -43
- package/src/models/CachedBalance.test.ts +46 -46
- package/src/models/CachedBalance.ts +7 -7
- package/src/models/Document.ts +34 -13
- package/src/models/DocumentTemplate.ts +56 -17
- package/src/models/Email.test.ts +3 -3
- package/src/models/Email.ts +28 -49
- package/src/models/EmailVerificationCode.ts +8 -22
- package/src/models/Event.ts +6 -4
- package/src/models/EventNotification.ts +6 -6
- package/src/models/Group.ts +24 -3
- package/src/models/Invoice.ts +10 -9
- package/src/models/MemberPlatformMembership.test.ts +70 -0
- package/src/models/MemberPlatformMembership.ts +16 -12
- package/src/models/MollieToken.ts +42 -102
- package/src/models/Order.ts +14 -26
- package/src/models/Organization.ts +143 -86
- package/src/models/PasswordToken.ts +21 -21
- package/src/models/Payment.ts +61 -4
- package/src/models/Registration.ts +6 -5
- package/src/models/RegistrationInvitation.ts +40 -0
- package/src/models/STCredit.ts +32 -0
- package/src/models/STInvoice.ts +11 -5
- package/src/models/STPackage.ts +19 -14
- package/src/models/UsedRegisterCode.ts +34 -0
- package/src/models/User.ts +6 -7
- package/src/models/_relations.ts +29 -0
- package/src/models/addresses/City.ts +8 -6
- package/src/models/addresses/PostalCode.test.ts +1 -0
- package/src/models/addresses/PostalCode.ts +5 -3
- package/src/models/addresses/Street.ts +6 -4
- package/src/models/index.ts +3 -0
- package/src/models/v1GroupMigrationData.ts +43 -0
- package/dist/helpers/MemberMerger.d.ts +0 -14
- package/dist/helpers/MemberMerger.d.ts.map +0 -1
- package/dist/helpers/MemberMerger.js +0 -364
- package/dist/helpers/MemberMerger.js.map +0 -1
- package/dist/migrations/1720080975-convert-charset.sql +0 -85
- package/dist/migrations/1723202126-member-number-index.sql +0 -2
- package/dist/models/OneTimeToken.d.ts +0 -38
- package/dist/models/OneTimeToken.d.ts.map +0 -1
- package/dist/models/OneTimeToken.js +0 -125
- package/dist/models/OneTimeToken.js.map +0 -1
- package/src/helpers/MemberMerger.test.ts +0 -782
- package/src/helpers/MemberMerger.ts +0 -577
- package/src/migrations/1720080975-convert-charset.sql +0 -85
- package/src/migrations/1723202126-member-number-index.sql +0 -2
- package/src/models/OneTimeToken.ts +0 -133
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { QueueHandler } from '@stamhoofd/queues';
|
|
2
|
+
import { Formatter } from '@stamhoofd/utility';
|
|
3
|
+
import { Invoice } from '../models/Invoice.js';
|
|
4
|
+
export class InvoiceCounter {
|
|
5
|
+
static numberCache = new Map();
|
|
6
|
+
static getNextResetDate(last, resetMonth) {
|
|
7
|
+
const candidate = last.set({ month: resetMonth, day: 1 }).startOf('day');
|
|
8
|
+
return candidate > last ? candidate : candidate.plus({ years: 1 }).startOf('day');
|
|
9
|
+
}
|
|
10
|
+
static shouldStartNewSeries(settings, lastInvoiceDate, invoiceDate) {
|
|
11
|
+
if (settings.resetMonth === null) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
const last = Formatter.luxon(lastInvoiceDate);
|
|
15
|
+
const current = Formatter.luxon(invoiceDate);
|
|
16
|
+
return current >= this.getNextResetDate(last, settings.resetMonth);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* XXX-123 -> 123
|
|
20
|
+
* YYY-0001 -> 1
|
|
21
|
+
*
|
|
22
|
+
* if prefix is enabled:
|
|
23
|
+
* 2025001 -> 1
|
|
24
|
+
* STA-2025001 -> 1
|
|
25
|
+
*/
|
|
26
|
+
static parseNumber(settings, str) {
|
|
27
|
+
str = str.replace(/\D+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
|
|
28
|
+
// Remove prefixes and possibly year
|
|
29
|
+
const splitted = str.split('-');
|
|
30
|
+
let last = splitted[splitted.length - 1];
|
|
31
|
+
const stripYear = settings.prefixYear;
|
|
32
|
+
if (last.length) {
|
|
33
|
+
if (stripYear) {
|
|
34
|
+
if (last.length <= 4) {
|
|
35
|
+
console.error('Could not parse invoice number from string ' + str + ' (could not trim year prefix)');
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
last = last.substring(4);
|
|
39
|
+
}
|
|
40
|
+
const int = parseInt(last);
|
|
41
|
+
if (int !== 0 && !isNaN(int) && isFinite(int)) {
|
|
42
|
+
return int;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
console.error('Could not parse invoice number from string ' + str);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
static formatNumber(settings, int, invoicedAt) {
|
|
49
|
+
let str = int.toFixed(0).padStart(settings.padZeroLength, '0');
|
|
50
|
+
if (settings.prefixYear) {
|
|
51
|
+
const year = Formatter.luxon(invoicedAt).year;
|
|
52
|
+
str = year + str;
|
|
53
|
+
}
|
|
54
|
+
if (settings.fixedPrefix) {
|
|
55
|
+
if (!settings.fixedPrefix.match(/\D$/)) {
|
|
56
|
+
// Need seperation character
|
|
57
|
+
str = settings.fixedPrefix.replace(/-$/, '') + '-' + str;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
str = settings.fixedPrefix + str;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return str;
|
|
64
|
+
}
|
|
65
|
+
static async assignNextNumber(invoice, settings) {
|
|
66
|
+
const organizationId = invoice.organizationId;
|
|
67
|
+
return await QueueHandler.schedule('invoice/numbers-' + organizationId, async () => {
|
|
68
|
+
// Invoice date should be inside the queue to ensure it is chronologically generated
|
|
69
|
+
const invoicedAt = new Date();
|
|
70
|
+
const c = this.numberCache.get(organizationId);
|
|
71
|
+
if (c !== undefined) {
|
|
72
|
+
const lastNumber = c.lastNumber;
|
|
73
|
+
// check date
|
|
74
|
+
if (!this.shouldStartNewSeries(settings, c.date, invoicedAt)) {
|
|
75
|
+
// Set and save.
|
|
76
|
+
// we do this here because it assures we'll not increase the next number if the save fails
|
|
77
|
+
invoice.number = this.formatNumber(settings, lastNumber + 1, invoicedAt);
|
|
78
|
+
invoice.invoicedAt = invoicedAt;
|
|
79
|
+
await invoice.save();
|
|
80
|
+
// If save succeeds, increase cache:
|
|
81
|
+
this.numberCache.set(organizationId, {
|
|
82
|
+
lastNumber: lastNumber + 1,
|
|
83
|
+
date: new Date(invoicedAt)
|
|
84
|
+
});
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const lastInvoice = await Invoice.select()
|
|
89
|
+
.where('organizationId', organizationId)
|
|
90
|
+
.where('number', '!=', null)
|
|
91
|
+
.where('invoicedAt', '!=', null)
|
|
92
|
+
.orderBy('invoicedAt', 'DESC')
|
|
93
|
+
.first(false);
|
|
94
|
+
if (lastInvoice && lastInvoice.number && lastInvoice.invoicedAt) {
|
|
95
|
+
// check date
|
|
96
|
+
if (!this.shouldStartNewSeries(settings, lastInvoice.invoicedAt, invoicedAt)) {
|
|
97
|
+
const lastNumber = this.parseNumber(settings, lastInvoice.number);
|
|
98
|
+
if (lastNumber) {
|
|
99
|
+
invoice.number = this.formatNumber(settings, lastNumber + 1, invoicedAt);
|
|
100
|
+
invoice.invoicedAt = invoicedAt;
|
|
101
|
+
await invoice.save();
|
|
102
|
+
this.numberCache.set(organizationId, {
|
|
103
|
+
lastNumber: lastNumber + 1,
|
|
104
|
+
date: new Date(invoicedAt)
|
|
105
|
+
});
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Start new
|
|
111
|
+
invoice.number = this.formatNumber(settings, 1, invoicedAt);
|
|
112
|
+
invoice.invoicedAt = invoicedAt;
|
|
113
|
+
await invoice.save();
|
|
114
|
+
this.numberCache.set(organizationId, {
|
|
115
|
+
lastNumber: 1,
|
|
116
|
+
date: new Date(invoicedAt)
|
|
117
|
+
});
|
|
118
|
+
return;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
static async resetNumbers(organizationId) {
|
|
122
|
+
// Prevent race conditions: create a queue
|
|
123
|
+
// The queue can only run one at a time for the same webshop (so multiple webshops at the same time are allowed)
|
|
124
|
+
return await QueueHandler.schedule('invoice/numbers-' + organizationId, async () => {
|
|
125
|
+
this.numberCache.delete(organizationId);
|
|
126
|
+
return Promise.resolve();
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
static clearAll() {
|
|
130
|
+
this.numberCache.clear();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=InvoiceCounter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InvoiceCounter.js","sourceRoot":"","sources":["../../src/helpers/InvoiceCounter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAG5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4CAA4C,CAAC;AAG3D,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,2BAA2B,CAAC;AAC1C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAE5C,SAAS;AACT,cAAc,mBAAmB,CAAC;AAClC,cAAc,4CAA4C,CAAC;AAE3D,YAAY;AACZ,cAAc,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1605262045-import-postcodes.d.ts","sourceRoot":"","sources":["../../src/migrations/1605262045-import-postcodes.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"1605262045-import-postcodes.d.ts","sourceRoot":"","sources":["../../src/migrations/1605262045-import-postcodes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAInD,qBAAa,QAAS,SAAQ,cAAc;IACxC,MAAM,CAAC,KAAK,SAAe;IAK3B,EAAE,EAAG,MAAM,CAAC;IAGZ,QAAQ,EAAE,MAAM,CAAC;IAGjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,sBAAsB,EAAE,MAAM,CAAC;IAG/B,aAAa,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,MAAM,CAAC;IAGlB,IAAI,EAAG,IAAI,CAAC;CACf;;AAgBD,wBA8EG"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { column, Migration } from '@simonbackx/simple-database';
|
|
2
|
+
import { column, Database, Migration } from '@simonbackx/simple-database';
|
|
3
3
|
import { QueryableModel } from '@stamhoofd/sql';
|
|
4
4
|
import { Country } from '@stamhoofd/types/Country';
|
|
5
5
|
import { StringCompare } from '@stamhoofd/utility';
|
|
6
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
6
7
|
import { City } from '../models/addresses/City.js';
|
|
7
8
|
import { PostalCode } from '../models/addresses/PostalCode.js';
|
|
8
9
|
import { Province } from '../models/addresses/Province.js';
|
|
@@ -37,16 +38,17 @@ __decorate([
|
|
|
37
38
|
__decorate([
|
|
38
39
|
column({ type: 'string' })
|
|
39
40
|
], Gemeente.prototype, "provincie", void 0);
|
|
40
|
-
|
|
41
|
+
function getProvince(name, provinces, provinceRows) {
|
|
41
42
|
const p = provinces.find(p => StringCompare.typoCount(p.name, name) < 2 && p.country == Country.Belgium);
|
|
42
43
|
if (p) {
|
|
43
44
|
return p;
|
|
44
45
|
}
|
|
45
46
|
const province = new Province();
|
|
47
|
+
province.id = uuidv4();
|
|
46
48
|
province.country = Country.Belgium;
|
|
47
49
|
province.name = name.trim();
|
|
48
|
-
await province.save();
|
|
49
50
|
provinces.push(province);
|
|
51
|
+
provinceRows.push([province.id, province.name, province.country]);
|
|
50
52
|
return province;
|
|
51
53
|
}
|
|
52
54
|
export default new Migration(async () => {
|
|
@@ -57,61 +59,93 @@ export default new Migration(async () => {
|
|
|
57
59
|
// Loop all gemeenten
|
|
58
60
|
const provinces = await Province.all();
|
|
59
61
|
const gemeenten = await Gemeente.all();
|
|
60
|
-
const
|
|
62
|
+
const citiesByNameAndProvince = new Map();
|
|
63
|
+
const provinceRows = [];
|
|
64
|
+
const cityRows = [];
|
|
65
|
+
const postalCodeRows = [];
|
|
66
|
+
const parentCityUpdates = new Map();
|
|
61
67
|
for (const gemeente of gemeenten) {
|
|
62
|
-
const province =
|
|
68
|
+
const province = getProvince(gemeente.provincie, provinces, provinceRows);
|
|
63
69
|
// Some cities have the same name
|
|
64
|
-
const found =
|
|
70
|
+
const found = citiesByNameAndProvince.get(cityKey(gemeente.gemeente, province.id));
|
|
65
71
|
if (!found) {
|
|
66
72
|
// Create the city
|
|
67
73
|
const city = new City();
|
|
74
|
+
city.id = uuidv4();
|
|
68
75
|
city.name = gemeente.gemeente.trim();
|
|
69
76
|
city.country = Country.Belgium;
|
|
70
77
|
city.provinceId = province.id;
|
|
71
|
-
|
|
78
|
+
cityRows.push([city.id, city.name, city.provinceId, city.parentCityId, city.country]);
|
|
72
79
|
// Also add postal code already
|
|
73
|
-
|
|
74
|
-
postalCode.postalCode = gemeente.postcode;
|
|
75
|
-
postalCode.cityId = city.id;
|
|
76
|
-
postalCode.country = Country.Belgium;
|
|
77
|
-
await postalCode.save();
|
|
80
|
+
postalCodeRows.push([uuidv4(), gemeente.postcode, city.id, Country.Belgium]);
|
|
78
81
|
gemeente.city = city;
|
|
79
|
-
|
|
82
|
+
citiesByNameAndProvince.set(cityKey(city.name, city.provinceId), city);
|
|
80
83
|
}
|
|
81
84
|
else {
|
|
82
85
|
gemeente.city = found;
|
|
83
86
|
// Also add postal code already
|
|
84
|
-
|
|
85
|
-
postalCode.postalCode = gemeente.postcode;
|
|
86
|
-
postalCode.cityId = found.id;
|
|
87
|
-
postalCode.country = Country.Belgium;
|
|
88
|
-
await postalCode.save();
|
|
87
|
+
postalCodeRows.push([uuidv4(), gemeente.postcode, found.id, Country.Belgium]);
|
|
89
88
|
}
|
|
90
89
|
}
|
|
91
90
|
for (const gemeente of gemeenten) {
|
|
92
91
|
if (gemeente.gemeente.trim() == gemeente.hoofdgemeente.trim()) {
|
|
93
92
|
continue;
|
|
94
93
|
}
|
|
95
|
-
const hoofd =
|
|
94
|
+
const hoofd = citiesByNameAndProvince.get(cityKey(gemeente.hoofdgemeente, gemeente.city.provinceId));
|
|
96
95
|
if (!hoofd) {
|
|
97
96
|
// Create the city
|
|
98
97
|
const city = new City();
|
|
98
|
+
city.id = uuidv4();
|
|
99
99
|
city.name = gemeente.hoofdgemeente.trim();
|
|
100
100
|
city.country = Country.Belgium;
|
|
101
|
-
const province =
|
|
101
|
+
const province = getProvince(gemeente.provincie, provinces, provinceRows);
|
|
102
102
|
city.provinceId = province.id;
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
cityRows.push([city.id, city.name, city.provinceId, city.parentCityId, city.country]);
|
|
104
|
+
citiesByNameAndProvince.set(cityKey(city.name, city.provinceId), city);
|
|
105
105
|
// do not create a postal code here, these don't have one
|
|
106
106
|
// console.log('Assigning ' + gemeente.gemeente + ' to ' + city.name);
|
|
107
107
|
gemeente.city.parentCityId = city.id;
|
|
108
|
-
|
|
108
|
+
parentCityUpdates.set(gemeente.city.id, city.id);
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
111
|
// console.log('Assigning ' + gemeente.gemeente + ' to ' + hoofd.name);
|
|
112
112
|
gemeente.city.parentCityId = hoofd.id;
|
|
113
|
-
|
|
113
|
+
parentCityUpdates.set(gemeente.city.id, hoofd.id);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
+
await insertRows(Province.table, ['id', 'name', 'country'], provinceRows);
|
|
117
|
+
await insertRows(City.table, ['id', 'name', 'provinceId', 'parentCityId', 'country'], cityRows);
|
|
118
|
+
await insertRows(PostalCode.table, ['id', 'postalCode', 'cityId', 'country'], postalCodeRows);
|
|
119
|
+
await updateParentCityIds([...parentCityUpdates.entries()]);
|
|
116
120
|
});
|
|
121
|
+
function cityKey(name, provinceId) {
|
|
122
|
+
return `${name.trim()}\0${provinceId}`;
|
|
123
|
+
}
|
|
124
|
+
async function insertRows(table, columns, rows) {
|
|
125
|
+
for (const chunk of chunks(rows, 1000)) {
|
|
126
|
+
if (chunk.length === 0) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
await Database.insert(`INSERT INTO \`${table}\` (${columns.map(column => `\`${column}\``).join(', ')}) VALUES ?`, [chunk]);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async function updateParentCityIds(rows) {
|
|
133
|
+
for (const chunk of chunks(rows, 1000)) {
|
|
134
|
+
if (chunk.length === 0) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
const cases = chunk.map(() => 'WHEN ? THEN ?').join(' ');
|
|
138
|
+
await Database.statement(`UPDATE \`${City.table}\` SET \`parentCityId\` = CASE \`id\` ${cases} END WHERE \`id\` IN (?)`, [
|
|
139
|
+
...chunk.flatMap(([cityId, parentCityId]) => [cityId, parentCityId]),
|
|
140
|
+
chunk.map(([cityId]) => cityId),
|
|
141
|
+
]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function chunks(values, size) {
|
|
145
|
+
const result = [];
|
|
146
|
+
for (let index = 0; index < values.length; index += size) {
|
|
147
|
+
result.push(values.slice(index, index + size));
|
|
148
|
+
}
|
|
149
|
+
return result;
|
|
150
|
+
}
|
|
117
151
|
//# sourceMappingURL=1605262045-import-postcodes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1605262045-import-postcodes.js","sourceRoot":"","sources":["../../src/migrations/1605262045-import-postcodes.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"1605262045-import-postcodes.js","sourceRoot":"","sources":["../../src/migrations/1605262045-import-postcodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1605262046-import-postcodes-nl.d.ts","sourceRoot":"","sources":["../../src/migrations/1605262046-import-postcodes-nl.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"1605262046-import-postcodes-nl.d.ts","sourceRoot":"","sources":["../../src/migrations/1605262046-import-postcodes-nl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,6BAA6B,CAAC;;AA0ClE,wBA4DG"}
|
|
@@ -1,34 +1,37 @@
|
|
|
1
|
-
import { Migration } from '@simonbackx/simple-database';
|
|
1
|
+
import { Database, Migration } from '@simonbackx/simple-database';
|
|
2
2
|
import { Country } from '@stamhoofd/types/Country';
|
|
3
3
|
import { StringCompare } from '@stamhoofd/utility';
|
|
4
4
|
import fs from 'fs';
|
|
5
5
|
import readline from 'readline';
|
|
6
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
6
7
|
import { City } from '../models/addresses/City.js';
|
|
7
8
|
import { PostalCode } from '../models/addresses/PostalCode.js';
|
|
8
9
|
import { Province } from '../models/addresses/Province.js';
|
|
9
|
-
|
|
10
|
+
function getProvince(name, provinces, provinceRows) {
|
|
10
11
|
const p = provinces.find(p => StringCompare.typoCount(p.name, name) == 0 && p.country == Country.Netherlands);
|
|
11
12
|
if (p) {
|
|
12
13
|
return p;
|
|
13
14
|
}
|
|
14
15
|
const province = new Province();
|
|
16
|
+
province.id = uuidv4();
|
|
15
17
|
province.country = Country.Netherlands;
|
|
16
18
|
province.name = name;
|
|
17
|
-
await province.save();
|
|
18
19
|
provinces.push(province);
|
|
20
|
+
provinceRows.push([province.id, province.name, province.country]);
|
|
19
21
|
return province;
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
const p =
|
|
23
|
+
function getCity(name, provinceId, citiesByName, cityRows) {
|
|
24
|
+
const p = citiesByName.get(normalizeCityName(name));
|
|
23
25
|
if (p) {
|
|
24
26
|
return p;
|
|
25
27
|
}
|
|
26
28
|
const city = new City();
|
|
29
|
+
city.id = uuidv4();
|
|
27
30
|
city.name = name;
|
|
28
31
|
city.country = Country.Netherlands;
|
|
29
32
|
city.provinceId = provinceId;
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
cityRows.push([city.id, city.name, city.provinceId, city.parentCityId, city.country]);
|
|
34
|
+
citiesByName.set(normalizeCityName(city.name), city);
|
|
32
35
|
return city;
|
|
33
36
|
}
|
|
34
37
|
export default new Migration(async () => {
|
|
@@ -44,14 +47,18 @@ export default new Migration(async () => {
|
|
|
44
47
|
return { path: folder + '/' + dirent.name, name: dirent.name };
|
|
45
48
|
});
|
|
46
49
|
const allProvinces = await Province.where({ country: Country.Netherlands });
|
|
50
|
+
const provinceRows = [];
|
|
51
|
+
const cityRows = [];
|
|
52
|
+
const postalCodeRows = [];
|
|
53
|
+
const parentCityUpdates = [];
|
|
47
54
|
for (const p of provinces) {
|
|
48
55
|
// console.log(p.name);
|
|
49
|
-
const province =
|
|
56
|
+
const province = getProvince(p.name.trim(), allProvinces, provinceRows);
|
|
50
57
|
// const cities = await fs.readFile(p.path, { encoding: "utf-8" });
|
|
51
58
|
const lineReader = readline.createInterface({
|
|
52
59
|
input: fs.createReadStream(p.path, { encoding: 'utf-8' }),
|
|
53
60
|
});
|
|
54
|
-
const
|
|
61
|
+
const citiesByName = new Map();
|
|
55
62
|
for await (const line of lineReader) {
|
|
56
63
|
const splitted = line.split('\t');
|
|
57
64
|
if (splitted.length !== 3) {
|
|
@@ -62,19 +69,49 @@ export default new Migration(async () => {
|
|
|
62
69
|
const gemeente = splitted[1].trim();
|
|
63
70
|
const plaats = splitted[2].trim();
|
|
64
71
|
// Check plaats and gemeente
|
|
65
|
-
const city =
|
|
66
|
-
const city2 =
|
|
72
|
+
const city = getCity(plaats, province.id, citiesByName, cityRows);
|
|
73
|
+
const city2 = getCity(gemeente, province.id, citiesByName, cityRows); // might be the same as city
|
|
67
74
|
if (city2.id !== city.id && city.parentCityId === null) {
|
|
68
75
|
city.parentCityId = city2.id;
|
|
69
|
-
|
|
76
|
+
parentCityUpdates.push([city.id, city2.id]);
|
|
70
77
|
}
|
|
71
78
|
// Also add postal code already
|
|
72
|
-
|
|
73
|
-
postalCode.postalCode = postcode;
|
|
74
|
-
postalCode.cityId = city.id;
|
|
75
|
-
postalCode.country = Country.Netherlands;
|
|
76
|
-
await postalCode.save();
|
|
79
|
+
postalCodeRows.push([uuidv4(), postcode, city.id, Country.Netherlands]);
|
|
77
80
|
}
|
|
78
81
|
}
|
|
82
|
+
await insertRows(Province.table, ['id', 'name', 'country'], provinceRows);
|
|
83
|
+
await insertRows(City.table, ['id', 'name', 'provinceId', 'parentCityId', 'country'], cityRows);
|
|
84
|
+
await insertRows(PostalCode.table, ['id', 'postalCode', 'cityId', 'country'], postalCodeRows);
|
|
85
|
+
await updateParentCityIds(parentCityUpdates);
|
|
79
86
|
});
|
|
87
|
+
function normalizeCityName(name) {
|
|
88
|
+
return name.normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase().replace(/\s+/, ' ').trim();
|
|
89
|
+
}
|
|
90
|
+
async function insertRows(table, columns, rows) {
|
|
91
|
+
for (const chunk of chunks(rows, 1000)) {
|
|
92
|
+
if (chunk.length === 0) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
await Database.insert(`INSERT INTO \`${table}\` (${columns.map(column => `\`${column}\``).join(', ')}) VALUES ?`, [chunk]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async function updateParentCityIds(rows) {
|
|
99
|
+
for (const chunk of chunks(rows, 1000)) {
|
|
100
|
+
if (chunk.length === 0) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const cases = chunk.map(() => 'WHEN ? THEN ?').join(' ');
|
|
104
|
+
await Database.statement(`UPDATE \`${City.table}\` SET \`parentCityId\` = CASE \`id\` ${cases} END WHERE \`id\` IN (?)`, [
|
|
105
|
+
...chunk.flatMap(([cityId, parentCityId]) => [cityId, parentCityId]),
|
|
106
|
+
chunk.map(([cityId]) => cityId),
|
|
107
|
+
]);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function chunks(values, size) {
|
|
111
|
+
const result = [];
|
|
112
|
+
for (let index = 0; index < values.length; index += size) {
|
|
113
|
+
result.push(values.slice(index, index + size));
|
|
114
|
+
}
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
80
117
|
//# sourceMappingURL=1605262046-import-postcodes-nl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1605262046-import-postcodes-nl.js","sourceRoot":"","sources":["../../src/migrations/1605262046-import-postcodes-nl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"1605262046-import-postcodes-nl.js","sourceRoot":"","sources":["../../src/migrations/1605262046-import-postcodes-nl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAE3D,SAAS,WAAW,CAAC,IAAY,EAAE,SAAqB,EAAE,YAAwB;IAC9E,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9G,IAAI,CAAC,EAAE,CAAC;QACJ,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IACvC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;IAErB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,UAAkB,EAAE,YAA+B,EAAE,QAAqB;IACrG,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC;QACJ,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEtF,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,eAAe,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE;IACpC,IAAI,SAAS,CAAC,WAAW,IAAI,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACX,CAAC;IAED,iDAAiD;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC;IAC1D,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SACvC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACZ,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAe,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,MAAM,cAAc,GAAe,EAAE,CAAC;IACtC,MAAM,iBAAiB,GAAe,EAAE,CAAC;IAEzC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QACxB,uBAAuB;QAEvB,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAExE,mEAAmE;QAEnE,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC;YACxC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;SAC5D,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,GAAG,EAAgB,CAAC;QAE7C,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;gBAC/C,SAAS;YACb,CAAC;YACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAElC,4BAA4B;YAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,4BAA4B;YAClG,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC;gBAC7B,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,+BAA+B;YAC/B,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5E,CAAC;IACL,CAAC;IAED,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1E,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IAChG,MAAM,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC;IAC9F,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AACH,SAAS,iBAAiB,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1G,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,KAAa,EAAE,OAAiB,EAAE,IAAiB;IACzE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,CAAC,MAAM,CAAC,iBAAiB,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/H,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAgB;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,SAAS;QACb,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,MAAM,QAAQ,CAAC,SAAS,CAAC,YAAY,IAAI,CAAC,KAAK,yCAAyC,KAAK,0BAA0B,EAAE;YACrH,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACpE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;SAClC,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAI,MAAW,EAAE,IAAY;IACxC,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
SET FOREIGN_KEY_CHECKS=0;
|
|
1
2
|
ALTER TABLE `organizations` ADD COLUMN `periodId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;
|
|
2
3
|
ALTER TABLE `organizations` ADD FOREIGN KEY (`periodId`) REFERENCES `registration_periods` (`id`) ON UPDATE CASCADE ON DELETE RESTRICT;
|
|
4
|
+
SET FOREIGN_KEY_CHECKS=1;
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
SET FOREIGN_KEY_CHECKS=0;
|
|
1
2
|
ALTER TABLE `groups` ADD COLUMN `periodId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL;
|
|
2
3
|
ALTER TABLE `groups` ADD FOREIGN KEY (`periodId`) REFERENCES `registration_periods` (`id`) ON UPDATE CASCADE ON DELETE RESTRICT;
|
|
4
|
+
SET FOREIGN_KEY_CHECKS=1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1720080975-convert-charset.d.ts","sourceRoot":"","sources":["../../src/migrations/1720080975-convert-charset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,6BAA6B,CAAC;;AAGlE,wBAmBG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Database, Migration } from '@simonbackx/simple-database';
|
|
2
|
+
import { LoggingTools } from '@stamhoofd/utility';
|
|
3
|
+
export default new Migration(async () => {
|
|
4
|
+
process.stdout.write('\n');
|
|
5
|
+
if (STAMHOOFD.userMode === 'platform' && (STAMHOOFD.environment === 'production' || STAMHOOFD.environment === 'staging')) {
|
|
6
|
+
console.log('Skipped convert charset for userMode platform in production.');
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const tables = ['_members_users', 'balance_item_payments', 'balance_items', 'buckaroo_payments', 'cities', 'document_templates', 'documents', 'email_templates', 'email_verification_codes', 'groups', 'images', 'members', 'migrations', 'mollie_payments', 'mollie_tokens', 'organization_registration_periods', 'organizations', 'password_tokens', 'payconiq_payments', 'payments', 'platform', 'postal_codes', 'provinces', 'register_codes', 'registration_periods', 'registrations', 'stamhoofd_credits', 'stamhoofd_invoices', 'stamhoofd_packages', 'stamhoofd_pending_invoices', 'streets', 'stripe_accounts', 'stripe_checkout_sessions', 'stripe_payment_intents', 'tokens', 'used_register_codes', 'users', 'webshop_discount_codes', 'webshop_orders', 'webshop_tickets', 'webshops'];
|
|
10
|
+
const progressLogger = LoggingTools.createProgressLogger(tables.length, { tag: 'convert tables charset' });
|
|
11
|
+
for (const table of tables) {
|
|
12
|
+
await convertTable(table);
|
|
13
|
+
progressLogger.update();
|
|
14
|
+
}
|
|
15
|
+
console.log('Start set database charset.');
|
|
16
|
+
await Database.statement('ALTER DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;');
|
|
17
|
+
});
|
|
18
|
+
async function convertTable(name) {
|
|
19
|
+
await Database.beginTransaction(async () => {
|
|
20
|
+
await Database.statement('set foreign_key_checks=0;');
|
|
21
|
+
console.log('Start converting charset of table: ' + name);
|
|
22
|
+
await Database.statement('ALTER TABLE `' + name + '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;');
|
|
23
|
+
await Database.statement('set foreign_key_checks=1;');
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=1720080975-convert-charset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1720080975-convert-charset.js","sourceRoot":"","sources":["../../src/migrations/1720080975-convert-charset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,eAAe,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,IAAI,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,YAAY,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC;QACvH,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC5E,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,mCAAmC,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,SAAS,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAEpwB,MAAM,cAAc,GAAG,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAE3G,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,cAAc,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,MAAM,QAAQ,CAAC,SAAS,CAAC,kEAAkE,CAAC,CAAC;AACjG,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,YAAY,CAAC,IAAY;IACpC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;QACvC,MAAM,QAAQ,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,qCAAqC,GAAG,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,GAAG,gEAAgE,CAAC,CAAC;QAEpH,MAAM,QAAQ,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1720080976-convert-charset-leads.d.ts","sourceRoot":"","sources":["../../src/migrations/1720080976-convert-charset-leads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;GAKG;;AACH,
|
|
1
|
+
{"version":3,"file":"1720080976-convert-charset-leads.d.ts","sourceRoot":"","sources":["../../src/migrations/1720080976-convert-charset-leads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;GAKG;;AACH,wBAgBG"}
|
|
@@ -7,21 +7,14 @@ import { Database, Migration } from '@simonbackx/simple-database';
|
|
|
7
7
|
*/
|
|
8
8
|
export default new Migration(async () => {
|
|
9
9
|
process.stdout.write('\n');
|
|
10
|
-
if (STAMHOOFD.userMode === 'platform') {
|
|
11
|
-
console.log('Skipped update leads charset for userMode platform.');
|
|
10
|
+
if (STAMHOOFD.userMode === 'platform' && (STAMHOOFD.environment === 'production' || STAMHOOFD.environment === 'staging')) {
|
|
11
|
+
console.log('Skipped update leads charset for userMode platform in production.');
|
|
12
12
|
return Promise.resolve();
|
|
13
13
|
}
|
|
14
14
|
const hasTable = await tableExists('leads');
|
|
15
15
|
console.log('Has leads table: ' + hasTable);
|
|
16
16
|
if (hasTable) {
|
|
17
|
-
|
|
18
|
-
'set foreign_key_checks=0;',
|
|
19
|
-
'ALTER TABLE `leads` CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;',
|
|
20
|
-
'ALTER TABLE `leads` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;',
|
|
21
|
-
'set foreign_key_checks=1;'
|
|
22
|
-
].join('');
|
|
23
|
-
console.log('Start updating charset of leads table.');
|
|
24
|
-
await Database.statement(sqlStatement);
|
|
17
|
+
await convertTable('leads');
|
|
25
18
|
}
|
|
26
19
|
return Promise.resolve();
|
|
27
20
|
});
|
|
@@ -38,4 +31,12 @@ async function tableExists(tableName) {
|
|
|
38
31
|
}
|
|
39
32
|
return count > 0;
|
|
40
33
|
}
|
|
34
|
+
async function convertTable(name) {
|
|
35
|
+
await Database.beginTransaction(async () => {
|
|
36
|
+
await Database.statement('set foreign_key_checks=0;');
|
|
37
|
+
console.log('Start converting charset of table: ' + name);
|
|
38
|
+
await Database.statement('ALTER TABLE `' + name + '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;');
|
|
39
|
+
await Database.statement('set foreign_key_checks=1;');
|
|
40
|
+
});
|
|
41
|
+
}
|
|
41
42
|
//# sourceMappingURL=1720080976-convert-charset-leads.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1720080976-convert-charset-leads.js","sourceRoot":"","sources":["../../src/migrations/1720080976-convert-charset-leads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;GAKG;AACH,eAAe,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,IAAI,SAAS,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"1720080976-convert-charset-leads.js","sourceRoot":"","sources":["../../src/migrations/1720080976-convert-charset-leads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;GAKG;AACH,eAAe,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,IAAI,SAAS,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,YAAY,IAAI,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,EAAE,CAAC;QACvH,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC,CAAC;IAE5C,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,WAAW,CAAC,SAAiB;IACxC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,CAChC;;;;;SAKC,EACD,CAAC,SAAS,CAAC,CACd,CAAC;IAEF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IAEnC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACpC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;QACvC,MAAM,QAAQ,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,qCAAqC,GAAG,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,CAAC,SAAS,CAAC,eAAe,GAAG,IAAI,GAAG,gEAAgE,CAAC,CAAC;QAEpH,MAAM,QAAQ,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC"}
|