summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* src/hero.mjs: Add simplified implementation of `makePipeReader()`EuAndreh2024-03-062-2/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are a few limitations of the current approach that I didn't figure out how to solve yet: 1. when stopping the server, mainly for shutting down the Node.js process when running the tests, we need to open and close the pipe in write mode at least once, otherwise it hangs forever. After opening and closing it, the "autoClose" functionality of the `fs.createReadStream()` kicks in, and it closes, otherwise the test hangs forever as Node.js still has open handles. That's why the `server.close()` function has a gratuitous call to `fs.createWriteStream(pipe).end()`: so that when stopping the server, the pipe is always closed at least once; 2. when actually running the application, if one tries an IPC command like: $ echo '{ "action": "config-dump" }' > web.pipe It works, but only for the first time. As this shell line opened the pipe, wrote to it and then closed it, the reader that `makePipeReader()` constructed closed, but didn't open it again. So when running the exact same IPC command for a second time, the shell hangs, as there is no process on the other side listening for the command and consuming the pipe. Shortcoming nº 2 is much more important to be solved, as we can live with shortcoming nª 1 for some time. Both are to be fixed in the near future.
* src/hero.mjs: Change server.listen() to receive no argumentsEuAndreh2024-03-063-13/+35
|
* src/hero.mjs: Add skeleton for makePipeReaderFn()EuAndreh2024-03-062-5/+40
|
* src/hero.mjs: Add makeLineEmitter()EuAndreh2024-03-062-0/+100
|
* src/utils.mjs: Add first(), rest(), butlast() and last()EuAndreh2024-03-062-0/+83
|
* src/hero.mjs: Add rmIf() and mkfifo()EuAndreh2024-03-066-28/+111
|
* tests/runner.mjs: Add missing await in t.test("", () => {})EuAndreh2024-03-066-152/+153
|
* src/utils.mjs: s/first/findFirst/gEuAndreh2024-03-063-10/+10
|
* src/hero.mjs: Always recreate the unix socket fileEuAndreh2024-03-011-0/+3
|
* src/hero.mjs: Add app name as first argument to buildServer()EuAndreh2024-03-012-8/+11
|
* src/hero.mjs: Add actionsFn() and lineHandlerFn()EuAndreh2024-03-012-1/+189
|
* Makefile: Let the application recreate its pipes and socketsEuAndreh2024-03-011-1/+1
|
* Setup user-level lighttpd reverse proxy for development and testingEuAndreh2024-03-016-1/+126
| | | | Add static files as in production, too.
* src/web.mjs: Try out new hero APIEuAndreh2024-03-011-13/+13
|
* src/ircd.mjs: Remove unix socket before recreating itEuAndreh2024-03-012-5/+10
|
* src/api.mjs: Simplify handling of argumentsEuAndreh2024-03-012-17/+12
|
* src/utils.mjs: Remove eq(), use utils.isDeepStrictEqual from "node:utils" ↵EuAndreh2024-03-012-114/+0
| | | | instead
* src/utils.mjs: Replace promisify() by util.promisify()EuAndreh2024-02-283-42/+6
|
* src/utils.mjs: Add undefinedAsNull()EuAndreh2024-02-282-0/+22
|
* src/utils.mjs: Define strSortFn() and use it on all filesEuAndreh2024-02-285-5/+25
|
* tests/runner.mjs: Use process.stderr.write() to avoid printing newlines when ↵EuAndreh2024-02-281-2/+5
| | | | not needed
* tests/runner.mjs: Remove unused `AssertionError` typeEuAndreh2024-02-281-2/+0
|
* src/hero.mjs: Promote log() to fancy logger objectEuAndreh2024-02-254-16/+242
|
* Explicit import from "node:process"; move log() to hero.mjsEuAndreh2024-02-259-41/+56
|
* Normalize how modules import and name each otherEuAndreh2024-02-2417-90/+92
| | | | | Also add a `defaultInterceptors` variable in `src/hero.mjs` to avoid needing to redefine it in every application.
* src/hero.mjs: Add buildServer()EuAndreh2024-02-237-144/+322
|
* Implement accretion.runMigrations() and wrappings of node-sqlite3EuAndreh2024-02-238-40/+296
|
* Big cleanupEuAndreh2024-02-2326-292/+1696
| | | | | | - delete all SQLite Node-API code: we'll use the C++ one instead; - implement hero.mjs, with tests! - use ESM all over.
* Remove C code and cleanup repositoryEuAndreh2024-02-2129-2771/+21
|
* Makefile: Include SQL migration files as installable artifactsEuAndreh2023-11-273-1/+16
|
* Makefile: Also recompile `src/napi-sqlite.lo` when Makefile changesEuAndreh2023-11-271-0/+1
|
* Makefile: Fix missing installation of the `napi-sqlite.{c,node}` source and ↵EuAndreh2023-11-271-1/+2
| | | | executable
* Makefile: Fix missing installation of the `src/cli` executableEuAndreh2023-11-271-1/+1
| | | | | The `$PREFIX/bin/papo` was being installed as a symlink, but the target was empty.
* tests/js/db.js: Disable test for incomplete codeEuAndreh2023-11-271-1/+1
|
* src/db.js: Inline fallback definition of $PAPO_DB_PATHEuAndreh2023-11-272-4/+1
|
* src/config.h.in: Add provenance links and explanation for _XOPEN_SOURCE and ↵EuAndreh2023-11-251-1/+20
| | | | _POSIX_C_SOURCE
* Makefile: Erase $(JSLIBDIR) together with $(SRCDIR)EuAndreh2023-11-251-1/+1
|
* Makefile: Compose $(CFLAGS.a) with $(CFLAGS) instead of combineEuAndreh2023-11-251-11/+8
| | | | | | | | | | | | | | | | | | | | | | | Instead of defining a toplevel $(CFLAGS.a) that includes everything from $(CFLAGS) plus whatever is statically defined in the Makefile, we now use both $(CFLAGS) and $(CFLAGS.a) together, and we define neither. Now one can keep a single usage of $(CFLAGS), and override $(CFLAGS.a) when desired. Where previously, in order to give a flag only to $(CFLAGS.a), one had to write: $ make CFLAGS.a="$CFLAGS --.a-only" Now can be done via: $ make CFLAGS.a="--.a-only" IOW, previously $(CFLAGS.so) was "everything you gave to $(CFLAGS), plus this extra -fPIC" what now is "override $(CFLAGS), $(CFLAGS.a) or $(CFLAGS.so) as you wish". The same is true for $(LDLIBS), $(LDLIBS.a) and $(LDLIBS.so).
* src/napi-sqlite.c: Improve error handlingEuAndreh2023-11-174-134/+223
|
* tests/runner.js: Replace hand-rolled assert with "node:assert" moduleEuAndreh2023-11-162-56/+45
|
* Add WIP non-async functions to napi-sqlite.cEuAndreh2023-11-169-101/+833
|
* Makefile, mkdeps.sh: Enforce JS->native dependencyEuAndreh2023-11-153-0/+9
| | | | | Assert that we'll always have the `src/napi-sqlite.node` binary ready by the time we get to any JavaScript file.
* TODOs.md: Add relevant quote on software correctness and disciplineEuAndreh2023-11-151-0/+15
|
* mv src/cli src/cli.jsEuAndreh2023-11-152-3/+4
|
* Add support for multi-file C projectEuAndreh2023-11-1525-96/+1831
| | | | | | - have dynamic discovered dependencies via `mkdeps.hs`, and also move the listing of JavaScript files to it. - copy over stub C files for setting up the project skeleton.
* src/napi-sqlite.c: Add Node-API PoCEuAndreh2023-11-133-2/+75
|
* tests/assert-*.sh: Reuse rebuilt assets for testsEuAndreh2023-11-134-22/+7
|
* tests/assert-*.sh: Allow tests to run independently from "all" and from each ↵EuAndreh2023-11-134-16/+34
| | | | other
* tests/assert-uninstall.sh: Split from assert-install.shEuAndreh2023-11-133-17/+28
|
* Makefile: Clean directory symlink potential leftover before recreatingEuAndreh2023-11-131-0/+1
|