fix(acquisition): standardize bundling and externalize React/PDF dependencies
- Added JSX support to esbuild configuration. - Externalized react, react-dom, and @react-pdf/renderer to avoid redundant bundling. - Updated acquisition-library exports for modular PDF generation.
This commit is contained in:
1
directus/extensions/acquisition-manager/index.js
Normal file
1
directus/extensions/acquisition-manager/index.js
Normal file
File diff suppressed because one or more lines are too long
30
directus/extensions/acquisition-manager/package.json
Normal file
30
directus/extensions/acquisition-manager/package.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "acquisition-manager",
|
||||||
|
"description": "Custom High-Fidelity Acquisition Management for Directus",
|
||||||
|
"icon": "account_balance_wallet",
|
||||||
|
"version": "1.7.12",
|
||||||
|
"type": "module",
|
||||||
|
"keywords": [
|
||||||
|
"directus",
|
||||||
|
"directus-extension",
|
||||||
|
"directus-extension-module"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"directus:extension": {
|
||||||
|
"type": "module",
|
||||||
|
"path": "index.js",
|
||||||
|
"source": "src/index.ts",
|
||||||
|
"host": "*",
|
||||||
|
"name": "Acquisition Manager"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "directus-extension build && (cp -f dist/index.js index.js 2>/dev/null || true)",
|
||||||
|
"dev": "directus-extension build -w"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@directus/extensions-sdk": "11.0.2",
|
||||||
|
"vue": "^3.4.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
27
directus/extensions/acquisition/package.json
Normal file
27
directus/extensions/acquisition/package.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"name": "acquisition",
|
||||||
|
"version": "1.7.12",
|
||||||
|
"type": "module",
|
||||||
|
"directus:extension": {
|
||||||
|
"type": "endpoint",
|
||||||
|
"path": "dist/index.js",
|
||||||
|
"source": "src/index.ts",
|
||||||
|
"host": "^11.0.0"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "node build.mjs",
|
||||||
|
"dev": "node build.mjs --watch"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@directus/extensions-sdk": "11.0.2",
|
||||||
|
"@mintel/acquisition": "workspace:*",
|
||||||
|
"@mintel/mail": "workspace:*",
|
||||||
|
"esbuild": "^0.25.0",
|
||||||
|
"typescript": "^5.6.3"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"jquery": "^3.7.1",
|
||||||
|
"react": "^19.2.4",
|
||||||
|
"react-dom": "^19.2.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
1
directus/extensions/customer-manager/index.js
Normal file
1
directus/extensions/customer-manager/index.js
Normal file
File diff suppressed because one or more lines are too long
30
directus/extensions/customer-manager/package.json
Normal file
30
directus/extensions/customer-manager/package.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "customer-manager",
|
||||||
|
"description": "Custom High-Fidelity Customer & Company Management for Directus",
|
||||||
|
"icon": "supervisor_account",
|
||||||
|
"version": "1.7.12",
|
||||||
|
"type": "module",
|
||||||
|
"keywords": [
|
||||||
|
"directus",
|
||||||
|
"directus-extension",
|
||||||
|
"directus-extension-module"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"directus:extension": {
|
||||||
|
"type": "module",
|
||||||
|
"path": "index.js",
|
||||||
|
"source": "src/index.ts",
|
||||||
|
"host": "*",
|
||||||
|
"name": "Customer Manager"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "directus-extension build && (cp -f dist/index.js index.js 2>/dev/null || true)",
|
||||||
|
"dev": "directus-extension build -w"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@directus/extensions-sdk": "11.0.2",
|
||||||
|
"vue": "^3.4.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
1
directus/extensions/feedback-commander/index.js
Normal file
1
directus/extensions/feedback-commander/index.js
Normal file
File diff suppressed because one or more lines are too long
30
directus/extensions/feedback-commander/package.json
Normal file
30
directus/extensions/feedback-commander/package.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "feedback-commander",
|
||||||
|
"description": "Custom High-Fidelity Feedback Management Extension for Directus",
|
||||||
|
"icon": "view_kanban",
|
||||||
|
"version": "1.7.12",
|
||||||
|
"type": "module",
|
||||||
|
"keywords": [
|
||||||
|
"directus",
|
||||||
|
"directus-extension",
|
||||||
|
"directus-extension-module"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"directus:extension": {
|
||||||
|
"type": "module",
|
||||||
|
"path": "index.js",
|
||||||
|
"source": "src/index.ts",
|
||||||
|
"host": "*",
|
||||||
|
"name": "Feedback Commander"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "directus-extension build && (cp -f dist/index.js index.js 2>/dev/null || true)",
|
||||||
|
"dev": "directus-extension build -w"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@directus/extensions-sdk": "11.0.2",
|
||||||
|
"vue": "^3.4.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
1
directus/extensions/people-manager/index.js
Normal file
1
directus/extensions/people-manager/index.js
Normal file
File diff suppressed because one or more lines are too long
30
directus/extensions/people-manager/package.json
Normal file
30
directus/extensions/people-manager/package.json
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"name": "people-manager",
|
||||||
|
"description": "Custom High-Fidelity People Management for Directus",
|
||||||
|
"icon": "person",
|
||||||
|
"version": "1.7.12",
|
||||||
|
"type": "module",
|
||||||
|
"keywords": [
|
||||||
|
"directus",
|
||||||
|
"directus-extension",
|
||||||
|
"directus-extension-module"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"directus:extension": {
|
||||||
|
"type": "module",
|
||||||
|
"path": "index.js",
|
||||||
|
"source": "src/index.ts",
|
||||||
|
"host": "*",
|
||||||
|
"name": "People Manager"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "directus-extension build && (cp -f dist/index.js index.js 2>/dev/null || true)",
|
||||||
|
"dev": "directus-extension build -w"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@directus/extensions-sdk": "11.0.2",
|
||||||
|
"vue": "^3.4.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
1
directus/uploads/directus-health-file
Normal file
1
directus/uploads/directus-health-file
Normal file
@@ -0,0 +1 @@
|
|||||||
|
-Jy2r
|
||||||
@@ -22,7 +22,13 @@ build({
|
|||||||
target: 'node18',
|
target: 'node18',
|
||||||
outfile: outfile,
|
outfile: outfile,
|
||||||
format: 'esm',
|
format: 'esm',
|
||||||
external: ["jsdom", "jsdom/*", "jquery", "jquery/*", "canvas", "fs", "path", "os", "http", "https", "zlib", "stream", "util", "url", "net", "tls", "crypto"],
|
jsx: 'automatic',
|
||||||
|
loader: {
|
||||||
|
'.tsx': 'tsx',
|
||||||
|
'.ts': 'ts',
|
||||||
|
'.js': 'js',
|
||||||
|
},
|
||||||
|
external: ["@react-pdf/renderer", "react", "react-dom", "jsdom", "jsdom/*", "jquery", "jquery/*", "canvas", "fs", "path", "os", "http", "https", "zlib", "stream", "util", "url", "net", "tls", "crypto"],
|
||||||
plugins: [{
|
plugins: [{
|
||||||
name: 'mock-canvas',
|
name: 'mock-canvas',
|
||||||
setup(build) {
|
setup(build) {
|
||||||
|
|||||||
@@ -0,0 +1,218 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import * as React from "react";
|
||||||
|
import {
|
||||||
|
View as PDFView,
|
||||||
|
Text as PDFText,
|
||||||
|
StyleSheet,
|
||||||
|
} from "@react-pdf/renderer";
|
||||||
|
import {
|
||||||
|
DocumentTitle,
|
||||||
|
IndustrialListItem,
|
||||||
|
IndustrialCard,
|
||||||
|
Divider,
|
||||||
|
COLORS,
|
||||||
|
FONT_SIZES,
|
||||||
|
} from "../SharedUI";
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
industrialTextLead: {
|
||||||
|
fontSize: FONT_SIZES.BODY,
|
||||||
|
color: COLORS.TEXT_MAIN,
|
||||||
|
lineHeight: 1.4,
|
||||||
|
marginBottom: 16,
|
||||||
|
},
|
||||||
|
industrialText: {
|
||||||
|
fontSize: FONT_SIZES.BODY,
|
||||||
|
color: COLORS.TEXT_DIM,
|
||||||
|
lineHeight: 1.4,
|
||||||
|
marginBottom: 12,
|
||||||
|
},
|
||||||
|
industrialGrid2: { flexDirection: "row" },
|
||||||
|
industrialCol: { width: "46%" },
|
||||||
|
});
|
||||||
|
|
||||||
|
export const AboutModule = () => (
|
||||||
|
<>
|
||||||
|
<DocumentTitle
|
||||||
|
title="Expertise & Profil"
|
||||||
|
subLines={["Entwicklung & Technischer Partner für den Mittelstand"]}
|
||||||
|
isHero={true}
|
||||||
|
/>
|
||||||
|
<Divider style={{ marginVertical: 16, backgroundColor: COLORS.GRID }} />
|
||||||
|
|
||||||
|
<PDFView style={{ marginTop: 24 }}>
|
||||||
|
<PDFText style={styles.industrialTextLead}>
|
||||||
|
Begleitung mittelständischer Unternehmen und Agenturen bei der
|
||||||
|
Realisierung anspruchsvoller Web-Projekte. Als Senior Software Developer
|
||||||
|
mit over 15 Jahren Erfahrung wird das gesamte technische Spektrum
|
||||||
|
abgedeckt – von der Architektur bis zum fertigen Produkt.
|
||||||
|
</PDFText>
|
||||||
|
|
||||||
|
<PDFView style={[styles.industrialGrid2, { marginTop: 20 }]}>
|
||||||
|
<PDFView style={[styles.industrialCol, { marginRight: "8%" }]}>
|
||||||
|
<PDFText
|
||||||
|
style={[
|
||||||
|
styles.industrialText,
|
||||||
|
{ fontWeight: "bold", color: COLORS.CHARCOAL, marginBottom: 8 },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
Erfahrung & Substanz
|
||||||
|
</PDFText>
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Der Werdegang umfasst alle Ebenen der Webentwicklung: von der
|
||||||
|
Teamleitung in Kreativagenturen bis zur Softwareentwicklung für
|
||||||
|
internationale Konzerne.
|
||||||
|
</PDFText>
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Die Kenntnis komplexer Enterprise-Systeme wird mit der Agilität
|
||||||
|
kombiniert, die im Mittelstand gefordert ist. Dieses Wissen
|
||||||
|
ermöglicht den Bau von Lösungen, die technologisch auf Augenhöhe mit
|
||||||
|
Konzern-Standards sind, jedoch ohne unnötigen bürokratischen
|
||||||
|
Overhead auskommen.
|
||||||
|
</PDFText>
|
||||||
|
</PDFView>
|
||||||
|
|
||||||
|
<PDFView style={styles.industrialCol}>
|
||||||
|
<PDFText
|
||||||
|
style={[
|
||||||
|
styles.industrialText,
|
||||||
|
{ fontWeight: "bold", color: COLORS.CHARCOAL, marginBottom: 8 },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
Fokus Einzelentwicklung
|
||||||
|
</PDFText>
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Die Umsetzung erfolgt bewusst als spezialisierter Einzelentwickler.
|
||||||
|
Dies garantiert maximale Geschwindigkeit, direkte Kommunikationswege
|
||||||
|
und volle technologische Verantwortung.
|
||||||
|
</PDFText>
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Als direkter technischer Sparringspartner bleibt die Codebasis von
|
||||||
|
der ersten bis zur letzten Zeile transparent und wartbar. Diese
|
||||||
|
Unmittelbarkeit stellt sicher, dass Ergebnisse sowohl technisch
|
||||||
|
sauber als auch wirtschaftlich sinnvoll realisiert werden.
|
||||||
|
</PDFText>
|
||||||
|
</PDFView>
|
||||||
|
</PDFView>
|
||||||
|
|
||||||
|
<PDFView
|
||||||
|
style={{
|
||||||
|
marginTop: 32,
|
||||||
|
paddingVertical: 16,
|
||||||
|
borderTopWidth: 1,
|
||||||
|
borderTopColor: COLORS.GRID,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<PDFText
|
||||||
|
style={[
|
||||||
|
styles.industrialText,
|
||||||
|
{ fontWeight: "bold", color: COLORS.CHARCOAL, marginBottom: 4 },
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
Infrastruktur & Souveränität
|
||||||
|
</PDFText>
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Es wird keine instabile Prototyp-Software geliefert, sondern
|
||||||
|
produktionsreife Systeme, die technisch skalierbar bleiben. Die
|
||||||
|
Codebasis folgt modernen Standards – bei wachsenden Ansprüchen oder
|
||||||
|
dem Wechsel zu einer Agentur kann der Quellcode jederzeit nahtlos
|
||||||
|
übernommen und weitergeführt werden.
|
||||||
|
</PDFText>
|
||||||
|
</PDFView>
|
||||||
|
</PDFView>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
|
export const CrossSellModule = ({ state }: any) => {
|
||||||
|
const isWebsite = state.projectType === "website";
|
||||||
|
const title = isWebsite ? "Weitere Potenziale" : "Websites & Ökosysteme";
|
||||||
|
const subtitle = isWebsite
|
||||||
|
? "Automatisierung und Prozessoptimierung"
|
||||||
|
: "Technische Infrastruktur ohne Kompromisse";
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<DocumentTitle title={title} subLines={[subtitle]} isHero={true} />
|
||||||
|
<Divider style={{ marginVertical: 16, backgroundColor: COLORS.GRID }} />
|
||||||
|
<PDFView style={[styles.industrialGrid2, { marginTop: 16 }]}>
|
||||||
|
{isWebsite ? (
|
||||||
|
<>
|
||||||
|
<PDFView style={[styles.industrialCol, { marginRight: "8%" }]}>
|
||||||
|
<PDFText style={styles.industrialTextLead}>
|
||||||
|
Über die klassische Webpräsenz hinaus werden maßgeschneiderte
|
||||||
|
Lösungen zur Automatisierung von Routine-Prozessen angeboten.
|
||||||
|
Dies ermöglicht eine signifikante Effizienzsteigerung im
|
||||||
|
Tagesgeschäft.
|
||||||
|
</PDFText>
|
||||||
|
<PDFText style={[styles.industrialText, { fontWeight: "bold" }]}>
|
||||||
|
Keine Abos. Keine komplexen neuen Systeme. Gezielte
|
||||||
|
Zeitersparnis.
|
||||||
|
</PDFText>
|
||||||
|
<PDFView
|
||||||
|
style={{
|
||||||
|
marginTop: 24,
|
||||||
|
padding: 16,
|
||||||
|
backgroundColor: "#f8fafc",
|
||||||
|
borderLeftWidth: 2,
|
||||||
|
borderLeftColor: COLORS.GRID,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<PDFText
|
||||||
|
style={[
|
||||||
|
styles.industrialText,
|
||||||
|
{
|
||||||
|
fontWeight: "bold",
|
||||||
|
color: COLORS.CHARCOAL,
|
||||||
|
marginBottom: 4,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
Individuelle Analyse
|
||||||
|
</PDFText>
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Spezifische Prozesse werden auf technisches
|
||||||
|
Automatisierungspotenzial untersucht. Das Ergebnis liefert
|
||||||
|
Klarheit über die wirtschaftliche Sinnhaftigkeit einer
|
||||||
|
Umsetzung.
|
||||||
|
</PDFText>
|
||||||
|
</PDFView>
|
||||||
|
</PDFView>
|
||||||
|
<PDFView style={styles.industrialCol}>
|
||||||
|
<IndustrialCard title="DOKUMENT-AUTOMATION">
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Erstellung von PDF-Angeboten, Berichten oder Protokollen in
|
||||||
|
Sekunden statt Stunden.
|
||||||
|
</PDFText>
|
||||||
|
</IndustrialCard>
|
||||||
|
<IndustrialCard title="EXCEL-LOGIK">
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Intelligente Tabellen und automatisierte Auswertungen
|
||||||
|
bestehender Datensätze.
|
||||||
|
</PDFText>
|
||||||
|
</IndustrialCard>
|
||||||
|
<IndustrialCard title="KI-ASSISTENZ">
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Effiziente Verarbeitung von analogen Dokumenten oder
|
||||||
|
handschriftlichen Notizen mittels KI.
|
||||||
|
</PDFText>
|
||||||
|
</IndustrialCard>
|
||||||
|
</PDFView>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<PDFView style={{ width: "100%" }}>
|
||||||
|
<PDFText style={styles.industrialTextLead}>
|
||||||
|
Bereitstellung einer stabilen technischen Basis ohne
|
||||||
|
Abhängigkeiten von Baukasten-Systemen oder Agenturen.
|
||||||
|
</PDFText>
|
||||||
|
<PDFText style={styles.industrialText}>
|
||||||
|
Entwicklung performanter Frontends und skalierbarer Backends. Die
|
||||||
|
Auslieferung erfolgt als kontrollierbarer und nachhaltiger
|
||||||
|
Quellcode.
|
||||||
|
</PDFText>
|
||||||
|
</PDFView>
|
||||||
|
)}
|
||||||
|
</PDFView>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
@@ -4,3 +4,13 @@ export * from "./logic/pricing/calculator.js";
|
|||||||
export * from "./services/AcquisitionService.js";
|
export * from "./services/AcquisitionService.js";
|
||||||
export * from "./services/PdfEngine.js";
|
export * from "./services/PdfEngine.js";
|
||||||
export * from "./components/EstimationPDF.js";
|
export * from "./components/EstimationPDF.js";
|
||||||
|
export * from "./components/pdf/DINLayout.js";
|
||||||
|
export * from "./components/pdf/SimpleLayout.js";
|
||||||
|
export * from "./components/pdf/SharedUI.js";
|
||||||
|
export * from "./components/pdf/modules/FrontPageModule.js";
|
||||||
|
export * from "./components/pdf/modules/BriefingModule.js";
|
||||||
|
export * from "./components/pdf/modules/SitemapModule.js";
|
||||||
|
export * from "./components/pdf/modules/EstimationModule.js";
|
||||||
|
export * from "./components/pdf/modules/CommonModules.js";
|
||||||
|
export * from "./components/pdf/modules/BrandingModules.js";
|
||||||
|
export * from "./components/pdf/modules/TransparenzModule.js";
|
||||||
|
|||||||
@@ -21,9 +21,13 @@ build({
|
|||||||
platform: 'node',
|
platform: 'node',
|
||||||
target: 'node18',
|
target: 'node18',
|
||||||
outfile: outfile,
|
outfile: outfile,
|
||||||
format: 'esm',
|
jsx: 'automatic',
|
||||||
// Bundle everything, including Directus SDK, to avoid resolution issues in Docker
|
loader: {
|
||||||
external: ["jsdom", "jsdom/*", "jquery", "jquery/*", "canvas", "fs", "path", "os", "http", "https", "zlib", "stream", "util", "url", "net", "tls", "crypto"],
|
'.tsx': 'tsx',
|
||||||
|
'.ts': 'ts',
|
||||||
|
'.js': 'js',
|
||||||
|
},
|
||||||
|
external: ["@react-pdf/renderer", "react", "react-dom", "jsdom", "jsdom/*", "jquery", "jquery/*", "canvas", "fs", "path", "os", "http", "https", "zlib", "stream", "util", "url", "net", "tls", "crypto"],
|
||||||
plugins: [{
|
plugins: [{
|
||||||
name: 'mock-canvas',
|
name: 'mock-canvas',
|
||||||
setup(build) {
|
setup(build) {
|
||||||
|
|||||||
Reference in New Issue
Block a user