@p10i/create-nestbox 0.1.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/.dockerignore +34 -0
- package/.env.example +35 -0
- package/.gitattributes +10 -0
- package/INSTALL.md +258 -0
- package/LICENSE +21 -0
- package/README.md +41 -0
- package/bin/create-nestbox.js +184 -0
- package/docker/nginx/Dockerfile +31 -0
- package/docker/opencode/Dockerfile +36 -0
- package/docker/opencode/entrypoint.sh +9 -0
- package/docker/php-fpm/Dockerfile +43 -0
- package/docker/rollup/Dockerfile +16 -0
- package/docker-compose.yaml +139 -0
- package/home/code/.user.ini +1 -0
- package/home/code/404.php +104 -0
- package/home/code/__data/.gitignore +2 -0
- package/home/code/__includes/footer.php +3 -0
- package/home/code/__includes/functions.php +325 -0
- package/home/code/__includes/header.php +20 -0
- package/home/code/__templates/super-document.php +47 -0
- package/home/code/scripts-bundle.css +13295 -0
- package/home/code/scripts-bundle.js +6277 -0
- package/home/code/scripts.js +3 -0
- package/home/code/styles.css +36 -0
- package/home/configs/nginx/nginx.conf +199 -0
- package/home/configs/opencode/instance.example.md +16 -0
- package/home/configs/opencode/instructions.md +308 -0
- package/home/configs/opencode/opencode.json +15 -0
- package/home/configs/php/cli.php +33 -0
- package/home/configs/php/composer.json +10 -0
- package/home/configs/php/composer.lock +805 -0
- package/home/configs/php/index.php +105 -0
- package/home/configs/php/init.php +3 -0
- package/home/configs/php/php.ini +5 -0
- package/home/configs/php/preload.php +5 -0
- package/home/configs/rollup/package-lock.json +2089 -0
- package/home/configs/rollup/package.json +16 -0
- package/home/configs/rollup/rollup.config.js +28 -0
- package/package.json +42 -0
- package/scripts/check-package.js +31 -0
- package/template.gitignore +20 -0
- package/tests/nestbox.ps1 +322 -0
- package/tests/nestbox.sh +438 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
// CLI direction: expose the document's focused command-line behavior.
|
|
3
|
+
if (PHP_SAPI === 'cli') {
|
|
4
|
+
$name = trim($argv[1] ?? 'workspace');
|
|
5
|
+
echo "Hello, $name!\n";
|
|
6
|
+
exit;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// HTTP direction: process mutations before emitting frontmatter or Markdown.
|
|
10
|
+
$name = trim((string) ($_POST['name'] ?? 'workspace'));
|
|
11
|
+
if (($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST') {
|
|
12
|
+
// Publish only an invalidation hint after the request state is accepted.
|
|
13
|
+
nestbox_bus_publish('example:greeting', 'changed', ['name' => $name]);
|
|
14
|
+
}
|
|
15
|
+
?>
|
|
16
|
+
---
|
|
17
|
+
title: Super-document
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Hello, <?= nestbox_escape($name); ?>
|
|
21
|
+
|
|
22
|
+
This page keeps its HTTP processing, Markdown, interface, and browser behavior together.
|
|
23
|
+
|
|
24
|
+
<?php // Keep related element tags in one raw HTML block without empty lines between them. ?>
|
|
25
|
+
<form class="card card-body" method="post"><label class="form-label" for="name">Name</label><div class="input-group"><input class="form-control" id="name" name="name" value="<?= nestbox_escape($name); ?>"><button class="btn btn-primary" type="submit">Greet</button></div></form>
|
|
26
|
+
|
|
27
|
+
<p class="alert alert-success mt-3" id="greeting">Hello, <?= nestbox_escape($name); ?>!</p>
|
|
28
|
+
|
|
29
|
+
<p class="small text-body-secondary" id="event-status">Waiting for greeting changes.</p>
|
|
30
|
+
|
|
31
|
+
<script>
|
|
32
|
+
// Browser direction: local input feedback remains page-specific and immediate.
|
|
33
|
+
const nameInput = document.querySelector('#name');
|
|
34
|
+
const greeting = document.querySelector('#greeting');
|
|
35
|
+
const eventStatus = document.querySelector('#event-status');
|
|
36
|
+
nameInput.addEventListener('input', () => {
|
|
37
|
+
greeting.textContent = `Hello, ${nameInput.value || 'workspace'}!`;
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// One EventSource carries this page's server-side invalidations.
|
|
41
|
+
const events = new EventSource(<?= nestbox_script_json(nestbox_bus_url('example:greeting')); ?>);
|
|
42
|
+
events.addEventListener('changed', ({data}) => {
|
|
43
|
+
const message = JSON.parse(data);
|
|
44
|
+
eventStatus.textContent = `Greeting changed to ${message.data.name || 'workspace'} in another request.`;
|
|
45
|
+
});
|
|
46
|
+
window.addEventListener('pagehide', () => events.close(), {once: true});
|
|
47
|
+
</script>
|