create-prisma-php-app 4.0.0-alpha.2 → 4.0.0-alpha.21

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.
Files changed (59) hide show
  1. package/dist/.htaccess +54 -41
  2. package/dist/bootstrap.php +143 -98
  3. package/dist/index.js +264 -99
  4. package/dist/settings/auto-swagger-docs.ts +196 -95
  5. package/dist/settings/bs-config.ts +56 -58
  6. package/dist/settings/files-list.json +1 -1
  7. package/dist/settings/restart-mcp.ts +58 -0
  8. package/dist/settings/restart-websocket.ts +51 -45
  9. package/dist/settings/utils.ts +240 -0
  10. package/dist/src/Lib/AI/ChatGPTClient.php +147 -0
  11. package/dist/src/Lib/Auth/Auth.php +544 -0
  12. package/dist/src/Lib/Auth/AuthConfig.php +89 -0
  13. package/dist/src/Lib/CacheHandler.php +121 -0
  14. package/dist/src/Lib/ErrorHandler.php +322 -0
  15. package/dist/src/Lib/FileManager/UploadFile.php +383 -0
  16. package/dist/src/Lib/Headers/Boom.php +192 -0
  17. package/dist/src/Lib/IncludeTracker.php +59 -0
  18. package/dist/src/Lib/MCP/WeatherTools.php +104 -0
  19. package/dist/src/Lib/MCP/mcp-server.php +80 -0
  20. package/dist/src/Lib/MainLayout.php +230 -0
  21. package/dist/src/Lib/Middleware/AuthMiddleware.php +154 -0
  22. package/dist/src/Lib/Middleware/CorsMiddleware.php +145 -0
  23. package/dist/src/Lib/PHPMailer/Mailer.php +169 -0
  24. package/dist/src/Lib/PHPX/Exceptions/ComponentValidationException.php +49 -0
  25. package/dist/src/Lib/PHPX/Fragment.php +32 -0
  26. package/dist/src/Lib/PHPX/IPHPX.php +22 -0
  27. package/dist/src/Lib/PHPX/PHPX.php +287 -0
  28. package/dist/src/Lib/PHPX/TemplateCompiler.php +641 -0
  29. package/dist/src/Lib/PHPX/TwMerge.php +346 -0
  30. package/dist/src/Lib/PHPX/TypeCoercer.php +490 -0
  31. package/dist/src/Lib/PartialRenderer.php +40 -0
  32. package/dist/src/Lib/PrismaPHPSettings.php +181 -0
  33. package/dist/src/Lib/Request.php +479 -0
  34. package/dist/src/Lib/Security/RateLimiter.php +33 -0
  35. package/dist/src/Lib/Set.php +102 -0
  36. package/dist/src/Lib/StateManager.php +127 -0
  37. package/dist/src/Lib/Validator.php +752 -0
  38. package/dist/src/{Websocket → Lib/Websocket}/ConnectionManager.php +1 -1
  39. package/dist/src/Lib/Websocket/websocket-server.php +118 -0
  40. package/dist/src/app/error.php +1 -1
  41. package/dist/src/app/index.php +24 -5
  42. package/dist/src/app/js/index.js +1 -1
  43. package/dist/src/app/layout.php +2 -2
  44. package/package.json +1 -1
  45. package/dist/settings/restart-websocket.bat +0 -28
  46. package/dist/src/app/assets/images/prisma-php-black.svg +0 -6
  47. package/dist/websocket-server.php +0 -22
  48. package/vendor/autoload.php +0 -25
  49. package/vendor/composer/ClassLoader.php +0 -579
  50. package/vendor/composer/InstalledVersions.php +0 -359
  51. package/vendor/composer/LICENSE +0 -21
  52. package/vendor/composer/autoload_classmap.php +0 -10
  53. package/vendor/composer/autoload_namespaces.php +0 -9
  54. package/vendor/composer/autoload_psr4.php +0 -10
  55. package/vendor/composer/autoload_real.php +0 -38
  56. package/vendor/composer/autoload_static.php +0 -25
  57. package/vendor/composer/installed.json +0 -825
  58. package/vendor/composer/installed.php +0 -132
  59. package/vendor/composer/platform_check.php +0 -26
@@ -2,7 +2,7 @@
2
2
 
3
3
  declare(strict_types=1);
4
4
 
5
- namespace Websocket;
5
+ namespace Lib\Websocket;
6
6
 
7
7
  use Ratchet\MessageComponentInterface;
8
8
  use Ratchet\ConnectionInterface;
@@ -0,0 +1,118 @@
1
+ <?php
2
+
3
+ declare(strict_types=1);
4
+
5
+ namespace Lib\Websocket;
6
+
7
+ $root = dirname(__DIR__, 3);
8
+ require $root . '/vendor/autoload.php';
9
+ require_once $root . '/settings/paths.php';
10
+
11
+ use Dotenv\Dotenv;
12
+ use Ratchet\Server\IoServer;
13
+ use Ratchet\Http\HttpServer;
14
+ use Ratchet\WebSocket\WsServer;
15
+ use Lib\Websocket\ConnectionManager;
16
+ use Throwable;
17
+
18
+ // ── Load .env (optional) and timezone ─────────────────────────────────────────
19
+ if (file_exists(DOCUMENT_PATH . '/.env')) {
20
+ Dotenv::createImmutable(DOCUMENT_PATH)->safeLoad();
21
+ }
22
+ date_default_timezone_set($_ENV['APP_TIMEZONE'] ?? 'UTC');
23
+
24
+ // ── Tiny argv parser: allows --host=0.0.0.0 --port=8080 ──────────────────────
25
+ $cli = [];
26
+ foreach ($argv ?? [] as $arg) {
27
+ if (preg_match('/^--([^=]+)=(.*)$/', $arg, $m)) {
28
+ $cli[$m[1]] = $m[2];
29
+ }
30
+ }
31
+
32
+ // ── Resolve settings (env → cli defaults) ────────────────────────────────────
33
+ $appName = $_ENV['WS_NAME'] ?? 'prisma-php-ws';
34
+ $appVer = $_ENV['WS_VERSION'] ?? '0.0.1';
35
+ $host = $cli['host'] ?? ($_ENV['WS_HOST'] ?? '127.0.0.1');
36
+ $port = (int)($cli['port'] ?? ($_ENV['WS_PORT'] ?? 8080));
37
+ $verbose = filter_var($cli['verbose'] ?? ($_ENV['WS_VERBOSE'] ?? 'true'), FILTER_VALIDATE_BOOLEAN);
38
+
39
+ // ── Console helpers ──────────────────────────────────────────────────────────
40
+ $color = static fn(string $t, string $c) => "\033[{$c}m{$t}\033[0m";
41
+ $info = static fn(string $t) => $color($t, '1;36');
42
+ $ok = static fn(string $t) => $color($t, '32');
43
+ $warn = static fn(string $t) => $color($t, '33');
44
+ $err = static fn(string $t) => $color($t, '31');
45
+
46
+ // ── Preflight: check if port is free (nice error if not) ─────────────────────
47
+ $probe = @stream_socket_server("tcp://{$host}:{$port}", $errno, $errstr);
48
+ if ($probe === false) {
49
+ fwrite(STDERR, $err("✖ Port {$port} on {$host} is not available: {$errstr}\n"));
50
+ exit(1);
51
+ }
52
+ fclose($probe);
53
+
54
+ // ── Build app ────────────────────────────────────────────────────────────────
55
+ $manager = new ConnectionManager(); // your app component
56
+ $server = IoServer::factory(
57
+ new HttpServer(new WsServer($manager)),
58
+ $port,
59
+ $host
60
+ );
61
+
62
+ $pid = getmypid() ?: 0;
63
+ $url = "ws://{$host}:{$port}";
64
+ $ts = date('Y-m-d H:i:s');
65
+
66
+ echo PHP_EOL;
67
+ echo $info("⚡ {$appName} (v{$appVer})") . PHP_EOL;
68
+ echo $warn("→ WebSocket server starting…") . PHP_EOL;
69
+ echo " Host: {$host}" . PHP_EOL;
70
+ echo " Port: {$port}" . PHP_EOL;
71
+ echo " URL: {$url}" . PHP_EOL;
72
+ echo " PID: {$pid}" . PHP_EOL;
73
+ echo " Started: {$ts}" . PHP_EOL;
74
+
75
+ // ── Graceful shutdown & periodic logs (if loop available) ────────────────────
76
+ $loop = property_exists($server, 'loop') ? $server->loop : null;
77
+ if ($loop instanceof \React\EventLoop\LoopInterface) {
78
+ // Periodic stats every 60s
79
+ $loop->addPeriodicTimer(60, function () use ($ok) {
80
+ $mem = function_exists('memory_get_usage') ? number_format(memory_get_usage(true) / 1048576, 2) . ' MB' : 'n/a';
81
+ $msg = "✓ Heartbeat — memory: {$mem}";
82
+ echo $ok($msg) . PHP_EOL;
83
+ });
84
+
85
+ // Signal handlers (needs pcntl)
86
+ if (function_exists('pcntl_signal') && method_exists($loop, 'addSignal')) {
87
+ $stop = function (int $sig) use ($warn, $loop) {
88
+ echo PHP_EOL . $warn("⏹ Caught signal {$sig}. Shutting down…") . PHP_EOL;
89
+ $loop->stop();
90
+ };
91
+ $loop->addSignal(SIGINT, $stop);
92
+ $loop->addSignal(SIGTERM, $stop);
93
+ }
94
+ }
95
+
96
+ // ── Run ──────────────────────────────────────────────────────────────────────
97
+ try {
98
+ echo $ok("✓ Listening on {$url}") . PHP_EOL;
99
+ if ($verbose) {
100
+ // Basic error/exception logging
101
+ set_error_handler(function ($severity, $message, $file, $line) use ($err) {
102
+ // Respect @-silence
103
+ if (!(error_reporting() & $severity)) return;
104
+ fwrite(STDERR, $err("PHP Error [{$severity}] {$message} @ {$file}:{$line}\n"));
105
+ });
106
+ set_exception_handler(function (Throwable $e) use ($err) {
107
+ fwrite(STDERR, $err('Uncaught Exception: ' . $e->getMessage() . "\n" . $e->getTraceAsString() . "\n"));
108
+ });
109
+ }
110
+
111
+ $server->run(); // blocks until loop->stop()
112
+
113
+ echo PHP_EOL . $ok('✔ Server stopped.') . PHP_EOL;
114
+ exit(0);
115
+ } catch (Throwable $e) {
116
+ fwrite(STDERR, $err('✖ Server error: ' . $e->getMessage()) . PHP_EOL);
117
+ exit(1);
118
+ }
@@ -1,4 +1,4 @@
1
- <?php use PPHP\ErrorHandler; ?>
1
+ <?php use Lib\ErrorHandler; ?>
2
2
 
3
3
  <div class="flex items-center justify-center">
4
4
  <div class="text-center max-w-md">
@@ -1,16 +1,18 @@
1
- <?php use PPHP\Request; ?>
1
+ <?php
2
+
3
+ use Lib\Request; ?>
2
4
 
3
5
  <div class="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20">
4
6
  <main class="flex flex-col gap-5 row-start-2 items-center sm:items-center">
5
7
  <h1 class="text-6xl font-bold tracking-tight">
6
- <span class="text-black">PRISMA</span>
7
- <span class="text-black text-2xl align-super">PHP</span>
8
+ <span class="text-foreground">PRISMA</span>
9
+ <span class="text-foreground text-2xl align-super">PHP</span>
8
10
  </h1>
9
11
 
10
12
  <ol class="list-inside list-decimal text-sm/6 text-center sm:text-left">
11
13
  <li class="mb-2 tracking-[-.01em]">
12
14
  Get started by editing
13
- <code class="bg-black/[.05] dark:bg-white/[.06] px-1 py-0.5 rounded font-semibold">
15
+ <code class="bg-text-foreground/[.05] dark:bg-white/[.06] px-1 py-0.5 rounded font-semibold">
14
16
  src/app/index.php
15
17
  </code>
16
18
  .
@@ -26,7 +28,24 @@
26
28
  href="https://prismaphp.tsnc.tech/docs"
27
29
  target="_blank"
28
30
  rel="noopener noreferrer">
29
- <img src="<?= Request::baseUrl ?>/assets/images/prisma-php-black.svg" alt="Read Docs" width="20" height="20" style="filter: invert(1) sepia(1) hue-rotate(180deg);" /> Read Docs
31
+ <svg
32
+ version="1.1"
33
+ viewBox="0 0 123.8 126.8"
34
+ xmlns="http://www.w3.org/2000/svg"
35
+ width="20"
36
+ height="20"
37
+ fill="currentColor"
38
+ aria-hidden="true">
39
+ <g>
40
+ <g id="Layer_2">
41
+ <g id="Layer_1-2">
42
+ <polygon
43
+ points="113.9 50.6 111.5 49.4 105 46.2 97.1 42.4 92.7 37 89 32.7 84.6 31.3 77.9 32.6 72.4 37.9 71.3 45.5 68.1 50.9 66.2 46.6 64.6 33.1 63.1 21.6 60.3 15.1 50.4 5.5 46.7 20.5 46.7 32.9 39 27.4 24.1 11.8 0 0 6.5 12.1 18.2 24.7 27.8 42.1 41 55.6 47.7 66.2 45.2 73.5 44.1 89 35.8 99.3 34.1 106.8 39.7 105.2 37.1 113.5 39.4 122.5 44.1 116.3 47.7 126.8 53.4 117.9 60.8 123.2 62.2 113.2 68.3 115.3 67.8 108.3 74.2 110.1 72.7 101.7 58.8 90.1 77 80.7 84 72.3 88 62.6 90.8 51.1 94.1 46.6 99.8 47.3 107.2 49.9 112.2 51.6 123.8 58.2 113.9 50.6" />
44
+ </g>
45
+ </g>
46
+ </g>
47
+ </svg>
48
+ Read Docs
30
49
  </a>
31
50
  </div>
32
51
  </main>