@slopware/sloppy-linux-x64 0.1.0-alpha.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.
Files changed (434) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +5 -0
  3. package/bin/sloppy +0 -0
  4. package/bin/sloppyc +0 -0
  5. package/docs/KNOWN_LIMITATIONS.md +16 -0
  6. package/docs/LICENSES.md +6 -0
  7. package/docs/NOTICE.md +8 -0
  8. package/examples/README.md +140 -0
  9. package/examples/auth-api/README.md +20 -0
  10. package/examples/auth-api/app.js +61 -0
  11. package/examples/auth-api/appsettings.json +7 -0
  12. package/examples/auth-api/sloppy.json +5 -0
  13. package/examples/cache-basic/README.md +9 -0
  14. package/examples/cache-basic/app.js +32 -0
  15. package/examples/cache-hybrid-postgres/README.md +10 -0
  16. package/examples/cache-hybrid-postgres/app.js +27 -0
  17. package/examples/cache-output-api/README.md +10 -0
  18. package/examples/cache-output-api/app.js +35 -0
  19. package/examples/codec-base64-hex/README.md +14 -0
  20. package/examples/codec-base64-hex/app.js +15 -0
  21. package/examples/codec-checksums/README.md +15 -0
  22. package/examples/codec-checksums/app.js +8 -0
  23. package/examples/codec-compression/README.md +13 -0
  24. package/examples/codec-compression/app.js +9 -0
  25. package/examples/codec-streaming-compression/README.md +19 -0
  26. package/examples/codec-streaming-compression/app.js +16 -0
  27. package/examples/codec-text-binary/README.md +16 -0
  28. package/examples/codec-text-binary/app.js +17 -0
  29. package/examples/compiler-hello/README.md +71 -0
  30. package/examples/compiler-hello/app.js +7 -0
  31. package/examples/compiler-hello/expected/app.js +8 -0
  32. package/examples/compiler-hello/expected/app.js.map +53 -0
  33. package/examples/compiler-hello/expected/app.plan.json +229 -0
  34. package/examples/compiler-hello/expected/routes.slrt +0 -0
  35. package/examples/config-basic/README.md +13 -0
  36. package/examples/config-basic/app.js +13 -0
  37. package/examples/config-basic/appsettings.json +7 -0
  38. package/examples/config-secrets-redaction/README.md +9 -0
  39. package/examples/config-secrets-redaction/app.js +9 -0
  40. package/examples/config-secrets-redaction/appsettings.json +5 -0
  41. package/examples/config-strict-mode/README.md +7 -0
  42. package/examples/config-strict-mode/app.js +10 -0
  43. package/examples/config-strict-mode/appsettings.json +7 -0
  44. package/examples/configured-api/README.md +38 -0
  45. package/examples/configured-api/app.js +12 -0
  46. package/examples/configured-api/appsettings.Development.json +5 -0
  47. package/examples/configured-api/appsettings.json +6 -0
  48. package/examples/configured-api/sloppy.json +5 -0
  49. package/examples/core-config-secrets/README.md +10 -0
  50. package/examples/core-config-secrets/app.js +15 -0
  51. package/examples/core-fs-time-codec/README.md +9 -0
  52. package/examples/core-fs-time-codec/app.js +8 -0
  53. package/examples/core-network-time-codec/README.md +11 -0
  54. package/examples/core-network-time-codec/app.js +20 -0
  55. package/examples/core-policy-audit/README.md +7 -0
  56. package/examples/core-policy-audit/app.js +22 -0
  57. package/examples/core-process-time-codec/README.md +8 -0
  58. package/examples/core-process-time-codec/app.js +28 -0
  59. package/examples/core-worker-time/README.md +8 -0
  60. package/examples/core-worker-time/app.js +17 -0
  61. package/examples/crypto-hash-hmac/README.md +17 -0
  62. package/examples/crypto-hash-hmac/app.js +29 -0
  63. package/examples/crypto-password/README.md +21 -0
  64. package/examples/crypto-password/app.js +12 -0
  65. package/examples/crypto-random-token/README.md +16 -0
  66. package/examples/crypto-random-token/app.js +12 -0
  67. package/examples/crypto-secret-constant-time/README.md +21 -0
  68. package/examples/crypto-secret-constant-time/app.js +15 -0
  69. package/examples/data-foundation/README.md +39 -0
  70. package/examples/data-foundation/app.js +63 -0
  71. package/examples/dependency-graph/README.md +19 -0
  72. package/examples/dependency-graph/fixtures/graph-helper/index.js +3 -0
  73. package/examples/dependency-graph/fixtures/graph-helper/package.json +6 -0
  74. package/examples/dependency-graph/package.json +7 -0
  75. package/examples/dependency-graph/public/message.txt +1 -0
  76. package/examples/dependency-graph/sloppy.json +9 -0
  77. package/examples/dependency-graph/src/main.ts +8 -0
  78. package/examples/dogfood/README.md +23 -0
  79. package/examples/dogfood/dogfood.json +136 -0
  80. package/examples/dynamic-module-include/README.md +20 -0
  81. package/examples/dynamic-module-include/public/readme.txt +1 -0
  82. package/examples/dynamic-module-include/sloppy.json +12 -0
  83. package/examples/dynamic-module-include/src/main.ts +6 -0
  84. package/examples/dynamic-module-include/src/plugins/alpha.js +3 -0
  85. package/examples/dynamic-module-include/src/plugins/beta.js +3 -0
  86. package/examples/ergonomics/README.md +42 -0
  87. package/examples/ergonomics/app.js +38 -0
  88. package/examples/framework-controller/README.md +12 -0
  89. package/examples/framework-controller/app.js +31 -0
  90. package/examples/framework-di-services/README.md +17 -0
  91. package/examples/framework-di-services/app.ts +40 -0
  92. package/examples/framework-explicit-binding/README.md +12 -0
  93. package/examples/framework-explicit-binding/app.ts +34 -0
  94. package/examples/framework-hello/README.md +16 -0
  95. package/examples/framework-hello/app.ts +16 -0
  96. package/examples/framework-postgres-crud/README.md +73 -0
  97. package/examples/framework-postgres-crud/app.ts +64 -0
  98. package/examples/framework-sqlite-crud/README.md +52 -0
  99. package/examples/framework-sqlite-crud/app.ts +90 -0
  100. package/examples/framework-sqlite-crud/appsettings.json +11 -0
  101. package/examples/framework-sqlserver-crud/README.md +73 -0
  102. package/examples/framework-sqlserver-crud/app.ts +64 -0
  103. package/examples/framework-validation-errors/README.md +12 -0
  104. package/examples/framework-validation-errors/app.ts +16 -0
  105. package/examples/fs-basic/README.md +24 -0
  106. package/examples/fs-basic/app.js +12 -0
  107. package/examples/fs-roots-policy/README.md +14 -0
  108. package/examples/fs-roots-policy/app.js +4 -0
  109. package/examples/fs-streams/README.md +18 -0
  110. package/examples/fs-streams/app.js +11 -0
  111. package/examples/fs-watch/README.md +19 -0
  112. package/examples/fs-watch/app.js +11 -0
  113. package/examples/hello/README.md +63 -0
  114. package/examples/hello/app.js +19 -0
  115. package/examples/hello-minimal/README.md +51 -0
  116. package/examples/hello-minimal/sloppy.json +5 -0
  117. package/examples/hello-minimal/src/main.ts +9 -0
  118. package/examples/http-client-basic/README.md +11 -0
  119. package/examples/http-client-basic/app.js +46 -0
  120. package/examples/http-client-generated/README.md +22 -0
  121. package/examples/http-client-generated/openapi.json +45 -0
  122. package/examples/http-client-resilience/README.md +4 -0
  123. package/examples/http-client-resilience/app.js +38 -0
  124. package/examples/http-client-runtime-loopback/README.md +24 -0
  125. package/examples/http-client-testhost/README.md +4 -0
  126. package/examples/http-client-testhost/app.js +27 -0
  127. package/examples/http-client-testhost-package-mock/README.md +26 -0
  128. package/examples/http-client-typed/README.md +5 -0
  129. package/examples/http-client-typed/app.js +33 -0
  130. package/examples/modules-api/README.md +30 -0
  131. package/examples/modules-api/app.js +9 -0
  132. package/examples/modules-api/modules/routes.js +16 -0
  133. package/examples/modules-api/sloppy.json +5 -0
  134. package/examples/modules-basic/README.md +32 -0
  135. package/examples/modules-basic/app.js +41 -0
  136. package/examples/net-deadline-cancel/README.md +13 -0
  137. package/examples/net-deadline-cancel/app.js +34 -0
  138. package/examples/net-local-ipc/README.md +12 -0
  139. package/examples/net-local-ipc/app.js +46 -0
  140. package/examples/net-policy-strict/README.md +12 -0
  141. package/examples/net-policy-strict/app.js +34 -0
  142. package/examples/net-tcp-client/README.md +10 -0
  143. package/examples/net-tcp-client/app.js +23 -0
  144. package/examples/net-tcp-echo/README.md +11 -0
  145. package/examples/net-tcp-echo/app.js +45 -0
  146. package/examples/net-tcp-server/README.md +10 -0
  147. package/examples/net-tcp-server/app.js +28 -0
  148. package/examples/node-compat-path-events/README.md +15 -0
  149. package/examples/node-compat-path-events/sloppy.json +6 -0
  150. package/examples/node-compat-path-events/src/main.ts +15 -0
  151. package/examples/ops-compiler/README.md +9 -0
  152. package/examples/ops-compiler/app.js +26 -0
  153. package/examples/ops-health-metrics-management/README.md +14 -0
  154. package/examples/ops-health-metrics-management/app.js +24 -0
  155. package/examples/orm-basic/README.md +17 -0
  156. package/examples/orm-basic/app.js +82 -0
  157. package/examples/orm-cursor-export/README.md +16 -0
  158. package/examples/orm-cursor-export/app.js +28 -0
  159. package/examples/orm-migrations/README.md +14 -0
  160. package/examples/orm-migrations/migrations/.gitkeep +1 -0
  161. package/examples/orm-migrations/sloppy.json +9 -0
  162. package/examples/orm-migrations/src/app.ts +34 -0
  163. package/examples/orm-relations-includes/README.md +10 -0
  164. package/examples/orm-relations-includes/app.js +47 -0
  165. package/examples/orm-testservices/README.md +37 -0
  166. package/examples/orm-testservices/test.mjs +32 -0
  167. package/examples/os-runtime-api/README.md +11 -0
  168. package/examples/os-runtime-api/app.js +44 -0
  169. package/examples/package-zod-like/README.md +28 -0
  170. package/examples/package-zod-like/fixtures/zod-like/index.js +48 -0
  171. package/examples/package-zod-like/fixtures/zod-like/package.json +12 -0
  172. package/examples/package-zod-like/package.json +7 -0
  173. package/examples/package-zod-like/sloppy.json +6 -0
  174. package/examples/package-zod-like/src/main.ts +16 -0
  175. package/examples/postgres-basic/README.md +31 -0
  176. package/examples/postgres-basic/app.js +50 -0
  177. package/examples/prealpha-control-plane/README.md +50 -0
  178. package/examples/prealpha-control-plane/appsettings.Development.json +11 -0
  179. package/examples/prealpha-control-plane/appsettings.json +15 -0
  180. package/examples/prealpha-control-plane/sloppy.json +5 -0
  181. package/examples/prealpha-control-plane/src/db/schema.js +7 -0
  182. package/examples/prealpha-control-plane/src/db/seed.js +6 -0
  183. package/examples/prealpha-control-plane/src/main.js +21 -0
  184. package/examples/prealpha-control-plane/src/routes/apps.js +34 -0
  185. package/examples/prealpha-control-plane/src/routes/builds.js +25 -0
  186. package/examples/prealpha-control-plane/src/routes/deployments.js +19 -0
  187. package/examples/prealpha-control-plane/src/routes/diagnostics.js +11 -0
  188. package/examples/prealpha-control-plane/src/routes/health.js +27 -0
  189. package/examples/prealpha-control-plane/src/routes/projects.js +38 -0
  190. package/examples/prealpha-control-plane/src/services/diagnosticsSink.js +11 -0
  191. package/examples/prealpha-control-plane/src/services/repositories.js +9 -0
  192. package/examples/prealpha-control-plane/src/validation/schemas.js +6 -0
  193. package/examples/program-fs-process/README.md +31 -0
  194. package/examples/program-fs-process/sloppy.json +9 -0
  195. package/examples/program-fs-process/src/main.ts +27 -0
  196. package/examples/program-hello/README.md +32 -0
  197. package/examples/program-hello/main.ts +8 -0
  198. package/examples/program-hello/message.ts +1 -0
  199. package/examples/program-hello/sloppy.json +5 -0
  200. package/examples/rate-limit-auth/README.md +3 -0
  201. package/examples/rate-limit-auth/app.js +14 -0
  202. package/examples/rate-limit-basic/README.md +3 -0
  203. package/examples/rate-limit-basic/app.js +13 -0
  204. package/examples/rate-limit-redis/README.md +5 -0
  205. package/examples/rate-limit-redis/app.js +20 -0
  206. package/examples/rate-limit-testhost/README.md +4 -0
  207. package/examples/rate-limit-testhost/app.js +13 -0
  208. package/examples/rate-limit-websocket/README.md +3 -0
  209. package/examples/rate-limit-websocket/app.js +16 -0
  210. package/examples/realtime-auth/README.md +8 -0
  211. package/examples/realtime-auth/app.js +25 -0
  212. package/examples/realtime-auth/test.mjs +43 -0
  213. package/examples/realtime-chat/README.md +8 -0
  214. package/examples/realtime-chat/app.js +32 -0
  215. package/examples/realtime-chat/test.mjs +52 -0
  216. package/examples/realtime-dashboard/README.md +20 -0
  217. package/examples/realtime-dashboard/app.js +37 -0
  218. package/examples/realtime-presence/README.md +8 -0
  219. package/examples/realtime-presence/app.js +32 -0
  220. package/examples/realtime-presence/test.mjs +50 -0
  221. package/examples/realtime-testhost/README.md +8 -0
  222. package/examples/realtime-testhost/test.mjs +31 -0
  223. package/examples/redis-basic/README.md +17 -0
  224. package/examples/redis-basic/app.js +39 -0
  225. package/examples/redis-cache/README.md +14 -0
  226. package/examples/redis-cache/app.js +36 -0
  227. package/examples/redis-locks/README.md +13 -0
  228. package/examples/redis-locks/app.js +49 -0
  229. package/examples/request-context/README.md +32 -0
  230. package/examples/request-context/app.js +15 -0
  231. package/examples/sqlite-basic/README.md +52 -0
  232. package/examples/sqlite-basic/app.js +56 -0
  233. package/examples/sqlserver-basic/README.md +36 -0
  234. package/examples/sqlserver-basic/app.js +59 -0
  235. package/examples/static-files-basic/README.md +11 -0
  236. package/examples/static-files-basic/app.js +12 -0
  237. package/examples/static-files-basic/public/app.js +1 -0
  238. package/examples/static-files-basic/public/site.css +3 -0
  239. package/examples/static-files-package/README.md +12 -0
  240. package/examples/static-files-package/app.js +10 -0
  241. package/examples/static-files-package/public/index.html +2 -0
  242. package/examples/static-files-precompressed/README.md +12 -0
  243. package/examples/static-files-precompressed/app.js +11 -0
  244. package/examples/static-files-precompressed/public/app.js +1 -0
  245. package/examples/static-files-precompressed/public/app.js.br +0 -0
  246. package/examples/static-files-precompressed/public/app.js.gz +0 -0
  247. package/examples/static-files-spa/README.md +12 -0
  248. package/examples/static-files-spa/app.js +16 -0
  249. package/examples/static-files-spa/dist/assets/app.js +1 -0
  250. package/examples/static-files-spa/dist/index.html +4 -0
  251. package/examples/static-files-testhost/README.md +8 -0
  252. package/examples/static-files-testhost/app.js +13 -0
  253. package/examples/static-files-testhost/public/app.js +1 -0
  254. package/examples/static-files-testhost/public/app.js.gz +0 -0
  255. package/examples/static-files-testhost/test.mjs +38 -0
  256. package/examples/testhost-basic/README.md +26 -0
  257. package/examples/testhost-db/README.md +31 -0
  258. package/examples/testservices-postgres/README.md +68 -0
  259. package/examples/testservices-redis/README.md +71 -0
  260. package/examples/testservices-sqlserver/README.md +75 -0
  261. package/examples/time-basic/README.md +18 -0
  262. package/examples/time-basic/app.js +12 -0
  263. package/examples/time-deadline-cancellation/README.md +11 -0
  264. package/examples/time-deadline-cancellation/app.js +27 -0
  265. package/examples/time-fake-clock/README.md +14 -0
  266. package/examples/time-fake-clock/app.js +25 -0
  267. package/examples/time-interval-schedule/README.md +13 -0
  268. package/examples/time-interval-schedule/app.js +60 -0
  269. package/examples/users-api-sqlite/README.md +74 -0
  270. package/examples/users-api-sqlite/app.js +11 -0
  271. package/examples/users-api-sqlite/appsettings.Development.json +11 -0
  272. package/examples/users-api-sqlite/appsettings.json +11 -0
  273. package/examples/users-api-sqlite/modules/users.js +40 -0
  274. package/examples/users-api-sqlite/sloppy.json +5 -0
  275. package/examples/validation-errors/README.md +36 -0
  276. package/examples/validation-errors/app.js +14 -0
  277. package/examples/validation-errors/invalid-user.http +6 -0
  278. package/examples/validation-errors/sloppy.json +5 -0
  279. package/examples/web-dynamic-routes/README.md +17 -0
  280. package/examples/web-dynamic-routes/app.ts +27 -0
  281. package/examples/webhooks-basic/README.md +11 -0
  282. package/examples/webhooks-basic/app.js +48 -0
  283. package/examples/websocket-auth/README.md +8 -0
  284. package/examples/websocket-auth/app.js +16 -0
  285. package/examples/websocket-echo/README.md +9 -0
  286. package/examples/websocket-echo/app.js +36 -0
  287. package/examples/websocket-json-schema/README.md +5 -0
  288. package/examples/websocket-json-schema/app.js +25 -0
  289. package/examples/websocket-testhost/README.md +11 -0
  290. package/examples/websocket-testhost/test.mjs +49 -0
  291. package/examples/workers-background-service/README.md +7 -0
  292. package/examples/workers-background-service/app.js +16 -0
  293. package/examples/workers-js-isolate/README.md +8 -0
  294. package/examples/workers-js-isolate/app.js +19 -0
  295. package/examples/workers-js-isolate/workers/parser.ts +11 -0
  296. package/examples/workers-shutdown/README.md +6 -0
  297. package/examples/workers-shutdown/app.js +26 -0
  298. package/examples/workers-workerpool/README.md +6 -0
  299. package/examples/workers-workerpool/app.js +23 -0
  300. package/examples/workers-workqueue/README.md +8 -0
  301. package/examples/workers-workqueue/app.js +24 -0
  302. package/manifest.json +59 -0
  303. package/package.json +34 -0
  304. package/stdlib/sloppy/README.md +177 -0
  305. package/stdlib/sloppy/app.js +2142 -0
  306. package/stdlib/sloppy/auth.js +1813 -0
  307. package/stdlib/sloppy/bootstrap.manifest.json +83 -0
  308. package/stdlib/sloppy/cache.js +1542 -0
  309. package/stdlib/sloppy/codec.js +1153 -0
  310. package/stdlib/sloppy/config.js +61 -0
  311. package/stdlib/sloppy/crypto.js +312 -0
  312. package/stdlib/sloppy/data.js +2945 -0
  313. package/stdlib/sloppy/ffi.js +185 -0
  314. package/stdlib/sloppy/fs.js +795 -0
  315. package/stdlib/sloppy/health.js +603 -0
  316. package/stdlib/sloppy/http.js +1595 -0
  317. package/stdlib/sloppy/index.js +59 -0
  318. package/stdlib/sloppy/internal/bytes.js +31 -0
  319. package/stdlib/sloppy/internal/capabilities.js +155 -0
  320. package/stdlib/sloppy/internal/config.js +640 -0
  321. package/stdlib/sloppy/internal/disposable.js +31 -0
  322. package/stdlib/sloppy/internal/headers.js +63 -0
  323. package/stdlib/sloppy/internal/intrinsics.js +2 -0
  324. package/stdlib/sloppy/internal/json.js +20 -0
  325. package/stdlib/sloppy/internal/logging.js +278 -0
  326. package/stdlib/sloppy/internal/modules.js +405 -0
  327. package/stdlib/sloppy/internal/redaction.js +87 -0
  328. package/stdlib/sloppy/internal/routes.js +2279 -0
  329. package/stdlib/sloppy/internal/runtime-classic.js +19837 -0
  330. package/stdlib/sloppy/internal/services.js +690 -0
  331. package/stdlib/sloppy/internal/shared.js +32 -0
  332. package/stdlib/sloppy/internal/testhost-diagnostics.js +88 -0
  333. package/stdlib/sloppy/internal/testhost-http-server.js +238 -0
  334. package/stdlib/sloppy/internal/testhost-http.js +118 -0
  335. package/stdlib/sloppy/internal/testhost-loopback.js +50 -0
  336. package/stdlib/sloppy/internal/testservices-docker.js +154 -0
  337. package/stdlib/sloppy/internal/validation.js +117 -0
  338. package/stdlib/sloppy/metrics.js +427 -0
  339. package/stdlib/sloppy/net.js +5208 -0
  340. package/stdlib/sloppy/node/assert/strict.js +39 -0
  341. package/stdlib/sloppy/node/assert.js +228 -0
  342. package/stdlib/sloppy/node/buffer.js +247 -0
  343. package/stdlib/sloppy/node/console.js +33 -0
  344. package/stdlib/sloppy/node/constants.js +9 -0
  345. package/stdlib/sloppy/node/crypto.js +89 -0
  346. package/stdlib/sloppy/node/diagnostics_channel.js +41 -0
  347. package/stdlib/sloppy/node/events.js +113 -0
  348. package/stdlib/sloppy/node/fs/promises.js +27 -0
  349. package/stdlib/sloppy/node/fs.js +280 -0
  350. package/stdlib/sloppy/node/http.js +11 -0
  351. package/stdlib/sloppy/node/https.js +11 -0
  352. package/stdlib/sloppy/node/module.js +40 -0
  353. package/stdlib/sloppy/node/os.js +22 -0
  354. package/stdlib/sloppy/node/path.js +78 -0
  355. package/stdlib/sloppy/node/perf_hooks.js +12 -0
  356. package/stdlib/sloppy/node/process.js +129 -0
  357. package/stdlib/sloppy/node/querystring.js +21 -0
  358. package/stdlib/sloppy/node/stream/promises.js +3 -0
  359. package/stdlib/sloppy/node/stream.js +132 -0
  360. package/stdlib/sloppy/node/string_decoder.js +23 -0
  361. package/stdlib/sloppy/node/timers.js +26 -0
  362. package/stdlib/sloppy/node/tty.js +18 -0
  363. package/stdlib/sloppy/node/url.js +17 -0
  364. package/stdlib/sloppy/node/util.js +95 -0
  365. package/stdlib/sloppy/node/zlib.js +72 -0
  366. package/stdlib/sloppy/orm.js +2188 -0
  367. package/stdlib/sloppy/os.js +580 -0
  368. package/stdlib/sloppy/problem-details.js +29 -0
  369. package/stdlib/sloppy/providers/sqlite.js +26 -0
  370. package/stdlib/sloppy/rate-limit.js +856 -0
  371. package/stdlib/sloppy/realtime.js +1508 -0
  372. package/stdlib/sloppy/redis.js +1272 -0
  373. package/stdlib/sloppy/request-id.js +184 -0
  374. package/stdlib/sloppy/request-logging.js +101 -0
  375. package/stdlib/sloppy/results.js +933 -0
  376. package/stdlib/sloppy/schema.js +546 -0
  377. package/stdlib/sloppy/testing.js +4081 -0
  378. package/stdlib/sloppy/testservices.js +1041 -0
  379. package/stdlib/sloppy/time.js +894 -0
  380. package/stdlib/sloppy/webhooks.js +1330 -0
  381. package/stdlib/sloppy/workers.js +986 -0
  382. package/templates/api/README.md +82 -0
  383. package/templates/api/appsettings.Development.json +14 -0
  384. package/templates/api/appsettings.json +13 -0
  385. package/templates/api/data/.gitkeep +1 -0
  386. package/templates/api/gitignore +4 -0
  387. package/templates/api/migrations/0001_create_users.sql +1 -0
  388. package/templates/api/package.json +16 -0
  389. package/templates/api/public/hello.txt +1 -0
  390. package/templates/api/sloppy.json +14 -0
  391. package/templates/api/src/config.ts +1 -0
  392. package/templates/api/src/db/migrate.ts +14 -0
  393. package/templates/api/src/db/schema.ts +4 -0
  394. package/templates/api/src/db/usersRepository.ts +23 -0
  395. package/templates/api/src/main.ts +18 -0
  396. package/templates/api/src/models/user.ts +7 -0
  397. package/templates/api/src/routes/health.ts +20 -0
  398. package/templates/api/src/routes/users.ts +40 -0
  399. package/templates/api/src/services/usersService.ts +21 -0
  400. package/templates/api/tsconfig.json +15 -0
  401. package/templates/cli/README.md +16 -0
  402. package/templates/cli/gitignore +2 -0
  403. package/templates/cli/package.json +13 -0
  404. package/templates/cli/sloppy.json +6 -0
  405. package/templates/cli/src/commands/echo.ts +9 -0
  406. package/templates/cli/src/commands/inspect.ts +20 -0
  407. package/templates/cli/src/main.ts +50 -0
  408. package/templates/cli/tsconfig.json +15 -0
  409. package/templates/minimal-api/README.md +14 -0
  410. package/templates/minimal-api/gitignore +3 -0
  411. package/templates/minimal-api/package.json +14 -0
  412. package/templates/minimal-api/sloppy.json +5 -0
  413. package/templates/minimal-api/src/main.ts +9 -0
  414. package/templates/minimal-api/tsconfig.json +15 -0
  415. package/templates/node-compat/README.md +40 -0
  416. package/templates/node-compat/gitignore +2 -0
  417. package/templates/node-compat/package.json +11 -0
  418. package/templates/node-compat/sloppy.json +6 -0
  419. package/templates/node-compat/src/main.ts +40 -0
  420. package/templates/package-api/README.md +44 -0
  421. package/templates/package-api/fixtures/validator-lite/index.js +7 -0
  422. package/templates/package-api/fixtures/validator-lite/package.json +6 -0
  423. package/templates/package-api/gitignore +3 -0
  424. package/templates/package-api/package.json +17 -0
  425. package/templates/package-api/sloppy.json +5 -0
  426. package/templates/package-api/src/main.ts +10 -0
  427. package/templates/package-api/src/routes/health.ts +5 -0
  428. package/templates/package-api/src/routes/users.ts +12 -0
  429. package/templates/package-api/tsconfig.json +15 -0
  430. package/templates/program/README.md +12 -0
  431. package/templates/program/gitignore +1 -0
  432. package/templates/program/package.json +10 -0
  433. package/templates/program/sloppy.json +6 -0
  434. package/templates/program/src/main.ts +9 -0
@@ -0,0 +1,4 @@
1
+ # HTTP Client Resilience
2
+
3
+ This example configures retry, circuit-breaker, and bulkhead policies for a
4
+ named outbound client. Unsafe methods are not retried by default.
@@ -0,0 +1,38 @@
1
+ import { Http } from "sloppy/http";
2
+
3
+ const orders = Http.client("orders", {
4
+ baseUrl: "https://orders.internal",
5
+ timeoutMs: 2000,
6
+ retry: Http.retry.exponential({
7
+ maxAttempts: 3,
8
+ initialDelayMs: 100,
9
+ maxDelayMs: 2000,
10
+ jitter: true,
11
+ retryOnStatus: [408, 429, 500, 502, 503, 504],
12
+ retryOnMethods: ["GET", "HEAD", "PUT", "DELETE"],
13
+ }),
14
+ circuitBreaker: Http.circuitBreaker({
15
+ failureRatio: 0.5,
16
+ minimumThroughput: 20,
17
+ samplingWindowMs: 30000,
18
+ breakDurationMs: 30000,
19
+ }),
20
+ bulkhead: Http.bulkhead({
21
+ maxConcurrent: 32,
22
+ maxQueue: 128,
23
+ queueTimeoutMs: 1000,
24
+ }),
25
+ pool: {
26
+ maxConnectionsPerOrigin: 32,
27
+ idleTimeoutMs: 60000,
28
+ connectionLifetimeMs: 300000,
29
+ },
30
+ });
31
+
32
+ async function loadOrder(id, signal) {
33
+ return await orders
34
+ .get("/orders/{id}", { params: { id }, signal })
35
+ .json();
36
+ }
37
+
38
+ export { loadOrder, orders };
@@ -0,0 +1,24 @@
1
+ # Runtime Loopback HTTP Client
2
+
3
+ This example documents the native-backed outbound loopback path used by the
4
+ low-level HTTP client tests.
5
+
6
+ ```js
7
+ import { HttpClient } from "sloppy/net";
8
+
9
+ const client = HttpClient.create({
10
+ baseUrl: "http://127.0.0.1:8080",
11
+ pool: {
12
+ maxConnectionsPerOrigin: 4,
13
+ pendingQueueTimeoutMs: 1000,
14
+ },
15
+ });
16
+
17
+ const response = await client.get("/health");
18
+ console.log(await response.text());
19
+ await client.close();
20
+ ```
21
+
22
+ `tests/bootstrap/test_http_client.mjs` covers local loopback GET requests,
23
+ pool reuse, queue timeout/cancellation, client close behavior, and response body
24
+ limits using the runtime TCP bridge exposed to the bootstrap test harness.
@@ -0,0 +1,4 @@
1
+ # HTTP Client TestHost
2
+
3
+ This example tests a typed outbound client through `TestHost` with
4
+ `TestHttp.mock()`. No external HTTP mocking package is needed.
@@ -0,0 +1,27 @@
1
+ import assert from "node:assert/strict";
2
+
3
+ import { app } from "../http-client-typed/app.js";
4
+ import { TestHost, TestHttp } from "sloppy";
5
+
6
+ const billing = TestHttp.mock()
7
+ .get("/invoices/inv_1")
8
+ .replyJson(200, { id: "inv_1", status: "paid", amount: 42 });
9
+
10
+ const host = await TestHost.create(app, {
11
+ config: {
12
+ "Billing:BaseUrl": "http://billing.test",
13
+ },
14
+ httpClients: {
15
+ billing,
16
+ },
17
+ });
18
+
19
+ try {
20
+ const response = await host.get("/invoices/inv_1").expectStatus(200);
21
+ await response.expectJson({ id: "inv_1", status: "paid", amount: 42 });
22
+ billing.expectCalled("GET", "/invoices/inv_1").expectNoUnexpectedCalls();
23
+ } finally {
24
+ await host.close();
25
+ }
26
+
27
+ assert.equal(true, true);
@@ -0,0 +1,26 @@
1
+ # TestHost Package HTTP Mock
2
+
3
+ `TestHost.fromArtifacts(...)`, `TestHost.fromPackage(...)`, and loopback modes
4
+ accept `httpClients` overrides.
5
+
6
+ ```js
7
+ import { TestHost, TestHttp } from "sloppy";
8
+
9
+ const billing = TestHttp.mock()
10
+ .get("/invoices/inv_1")
11
+ .replyJson(200, { id: "inv_1", status: "paid", amount: 42 });
12
+
13
+ const host = await TestHost.fromArtifacts(".sloppy", {
14
+ httpClients: { billing },
15
+ });
16
+
17
+ await host.get("/route-that-calls-billing").expectStatus(200);
18
+ billing.expectCalled("GET", "/invoices/inv_1").expectNoUnexpectedCalls();
19
+ await host.close();
20
+ ```
21
+
22
+ For artifact and package hosts, TestHost starts a local loopback mock server and
23
+ injects the generated base URL through config environment variables such as
24
+ `Billing__BaseUrl`. Handler execution in this example requires a V8-enabled
25
+ `sloppy` CLI; the process-host harness is covered by
26
+ `tests/bootstrap/test_testhost_process_modes.mjs`.
@@ -0,0 +1,5 @@
1
+ # HTTP Client Typed
2
+
3
+ This example shows a typed outbound client registered with Sloppy services.
4
+ The typed client validates path params before sending and validates the JSON
5
+ response before returning it to the route handler.
@@ -0,0 +1,33 @@
1
+ import { Config, Http, Results, schema, Sloppy } from "sloppy";
2
+
3
+ const BillingInvoice = schema.object({
4
+ id: schema.string(),
5
+ status: schema.string(),
6
+ amount: schema.number(),
7
+ });
8
+
9
+ const Billing = Http.typedClient("billing", {
10
+ baseUrl: Config.required("Billing:BaseUrl"),
11
+ timeoutMs: 2000,
12
+ endpoints: {
13
+ getInvoice: Http.get("/invoices/{id}")
14
+ .params(schema.object({ id: schema.string() }))
15
+ .returns(200, BillingInvoice),
16
+ },
17
+ });
18
+
19
+ const app = Sloppy.create();
20
+
21
+ app.services.addHttpClient(Billing);
22
+
23
+ app.get("/invoices/{id}", async (ctx) => {
24
+ const billing = ctx.services.get(Billing);
25
+ const invoice = await billing.getInvoice(
26
+ { id: ctx.route.id },
27
+ { signal: ctx.signal, correlationId: ctx.requestId },
28
+ );
29
+
30
+ return Results.json(invoice);
31
+ });
32
+
33
+ export { app, Billing };
@@ -0,0 +1,30 @@
1
+ # Modules API Example
2
+
3
+ This is a compile-time source-input example for multi-file function modules.
4
+ Run from this directory:
5
+
6
+ ```powershell
7
+ ..\..\build\windows-dev\sloppy.exe run
8
+ ```
9
+
10
+ The command compiles through `sloppy.json` and emits `.sloppy\app.plan.json`. Non-V8 builds
11
+ stop at the expected V8-required diagnostic after artifact emission; V8 builds can execute
12
+ the emitted route handlers.
13
+
14
+ Routes:
15
+
16
+ - `GET /health`
17
+ - `GET /users`
18
+ - `GET /users/{id}`
19
+
20
+ The example demonstrates relative module imports, multiple function modules from one module file,
21
+ route groups, module-attributed Plan routes, route binding, explicit `Results` helpers, and
22
+ routes/doctor/openapi metadata over a multi-file source graph.
23
+
24
+ This is the function-module source-input subset. It is intentionally distinct from the
25
+ bootstrap `Sloppy.module(...)` capability/service module shape used by other examples.
26
+
27
+ ## Limitations
28
+
29
+ Controller/decorator routing, DI container behavior, dynamic imports, package
30
+ resolution, and runtime module loading are outside this example.
@@ -0,0 +1,9 @@
1
+ import { Sloppy } from "sloppy";
2
+ import { healthModule, usersModule } from "./modules/routes.js";
3
+
4
+ const app = Sloppy.create();
5
+
6
+ app.useModule(healthModule);
7
+ app.useModule(usersModule);
8
+
9
+ export default app;
@@ -0,0 +1,16 @@
1
+ import { Results } from "sloppy";
2
+
3
+ export function healthModule(app) {
4
+ const health = app.group("/health");
5
+
6
+ health.get("/", () => Results.text("ok")).withName("Health.Get");
7
+ }
8
+
9
+ export function usersModule(app) {
10
+ const users = app.group("/users");
11
+
12
+ users.get("/", () => Results.json([{ id: "demo", name: "Demo User" }]))
13
+ .withName("Users.List");
14
+ users.get("/{id}", (ctx) => Results.json({ id: ctx.route.id, name: "Demo User" }))
15
+ .withName("Users.Get");
16
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "entry": "app.js",
3
+ "outDir": ".sloppy",
4
+ "environment": "Development"
5
+ }
@@ -0,0 +1,32 @@
1
+ # Modules Basic Example
2
+
3
+ Bootstrap module example.
4
+ This example shows module composition with `Sloppy.module(...)`, `dependsOn`, services,
5
+ routes, metadata, and `builder.addModule(...)`.
6
+
7
+ - `DataModule` registers a fake in-memory service.
8
+ - `UsersModule` declares `.dependsOn("data")`.
9
+ - module services and routes are applied by `builder.addModule(...)` during `builder.build()`.
10
+ - module-created routes and services appear in bootstrap debug metadata.
11
+
12
+ What to inspect:
13
+
14
+ - import from the checked-in bootstrap stdlib source path;
15
+ - create modules with dependencies, services, routes, and metadata;
16
+ - add modules to a builder;
17
+ - inspect routes with `app.__getRoutes()`;
18
+ - inspect module debug metadata with `app.__debug().modules`.
19
+
20
+ Current product state:
21
+
22
+ - This source-stdlib example is a checked-in API-shape fixture.
23
+ - `sloppy run --artifacts` currently runs emitted artifacts such as
24
+ `examples/compiler-hello`.
25
+ - `sloppyc` compilation and `app.plan.json` emission for this module shape are future
26
+ source-extraction work.
27
+ - The bounded `sloppy run` path currently loads generated artifacts, not this
28
+ source-stdlib module example.
29
+ - The `data` module is an in-memory service example. Real providers are covered by the
30
+ provider examples and data API tests.
31
+ - Module package loading and native plugins belong to later module/package work.
32
+ - Bare `"sloppy"` imports are the current source shape for this example.
@@ -0,0 +1,41 @@
1
+ import { Sloppy, Results } from "sloppy";
2
+
3
+ export const DataModule = Sloppy.module("data")
4
+ .metadata("description", "in-memory demo data service")
5
+ .services((services) => {
6
+ services.addSingleton("data.users", () => new Map([
7
+ ["demo", { id: "demo", name: "Demo User" }],
8
+ ]));
9
+ });
10
+
11
+ export const UsersModule = Sloppy.module("users")
12
+ .dependsOn("data")
13
+ .metadata("area", "users")
14
+ .services((services) => {
15
+ services.addSingleton("users.message", () => "hello from a module");
16
+ })
17
+ .routes((app) => {
18
+ app.mapGroup("/users")
19
+ .withTags("Users")
20
+ .mapGet("/{id:int}", ({ route, services }) => {
21
+ const users = services.get("data.users");
22
+ const id = route.id ?? "demo";
23
+
24
+ return Results.ok({
25
+ ...users.get(id),
26
+ id,
27
+ message: services.get("users.message"),
28
+ });
29
+ })
30
+ .withName("Users.Get");
31
+ });
32
+
33
+ const builder = Sloppy.createBuilder();
34
+
35
+ builder
36
+ .addModule(UsersModule)
37
+ .addModule(DataModule);
38
+
39
+ const app = builder.build();
40
+
41
+ export default app;
@@ -0,0 +1,13 @@
1
+ # TCP Deadline And Cancellation Example
2
+
3
+ This source example shows `TcpClient.connect` with `Deadline.after`,
4
+ `CancellationController`, connect timeout, read/write deadline options, signal options,
5
+ and cleanup after timeout or cancellation.
6
+
7
+ Late completions are cleanup-only in the runtime contract.
8
+
9
+ ## Limitations
10
+
11
+ This example is limited to TCP deadlines and cancellation. TLS, HTTP, UDP,
12
+ WebSocket, local IPC, and external live-network behavior are outside this
13
+ example.
@@ -0,0 +1,34 @@
1
+ import { TcpClient } from "sloppy/net";
2
+ import { CancellationController, Deadline } from "sloppy/time";
3
+
4
+ export async function pingWithDeadline(appSignal) {
5
+ const deadline = Deadline.after(500);
6
+ const conn = await TcpClient.connect({
7
+ host: "127.0.0.1",
8
+ port: 6379,
9
+ timeoutMs: 500,
10
+ deadline,
11
+ signal: appSignal
12
+ });
13
+
14
+ try {
15
+ await conn.writeText("PING\r\n", { deadline, signal: appSignal });
16
+ return await conn.readLine({ deadline, signal: appSignal });
17
+ }
18
+ finally {
19
+ await conn.close();
20
+ }
21
+ }
22
+
23
+ export async function cancelPendingConnect() {
24
+ const controller = new CancellationController();
25
+ const pending = TcpClient.connect({
26
+ host: "127.0.0.1",
27
+ port: 6379,
28
+ timeoutMs: 5000,
29
+ signal: controller.signal
30
+ });
31
+
32
+ controller.cancel("request cancelled");
33
+ return await pending;
34
+ }
@@ -0,0 +1,12 @@
1
+ # Local IPC Example
2
+
3
+ This source example shows the scoped `sloppy/net` local IPC API shape:
4
+ `LocalEndpoint.listen`, `LocalEndpoint.connect`, async iterable accept, bounded byte
5
+ reads/writes, delimiter reads that preserve binary data, deadline/cancellation options,
6
+ stale cleanup intent, permissions where supported, and explicit `UnixSocket`/`NamedPipe`
7
+ entry points.
8
+
9
+ ## Limitations
10
+
11
+ TLS, HTTP, UDP, WebSocket, external live-network behavior, and Windows AF_UNIX
12
+ portability are outside this example.
@@ -0,0 +1,46 @@
1
+ import { LocalEndpoint, NamedPipe, UnixSocket } from "sloppy/net";
2
+ import { CancellationController, Deadline } from "sloppy/time";
3
+
4
+ export async function runLocalEcho() {
5
+ const controller = new CancellationController();
6
+ const signal = controller.signal;
7
+ const deadline = Deadline.after(1000);
8
+ const server = await LocalEndpoint.listen({
9
+ path: "runtime:/local-echo.sock",
10
+ unlinkExisting: true,
11
+ permissions: "0600",
12
+ backlog: 8
13
+ });
14
+
15
+ const accepted = (async () => {
16
+ for await (const conn of server.accept({ signal, deadline })) {
17
+ try {
18
+ const payload = await conn.readUntil(new Uint8Array([0]), { maxBytes: 65536, deadline, signal });
19
+ await conn.write(payload, { deadline, signal });
20
+ }
21
+ finally {
22
+ await conn.close();
23
+ }
24
+ break;
25
+ }
26
+ })();
27
+
28
+ const client = await LocalEndpoint.connect({ path: "runtime:/local-echo.sock", deadline, signal });
29
+ try {
30
+ await client.write(new Uint8Array([1, 2, 0]), { deadline, signal });
31
+ return await client.read({ maxBytes: 3, deadline, signal });
32
+ }
33
+ finally {
34
+ await client.close();
35
+ controller.cancel("local echo complete");
36
+ await accepted;
37
+ await server.close();
38
+ controller.dispose();
39
+ }
40
+ }
41
+
42
+ export async function connectPlatformSpecific() {
43
+ const unix = UnixSocket.connect({ path: "runtime:/daemon.sock" });
44
+ const pipe = NamedPipe.connect({ path: "runtime:/daemon.sock" });
45
+ return { unix, pipe };
46
+ }
@@ -0,0 +1,12 @@
1
+ # Strict Network Policy Example
2
+
3
+ This source example shows the intended Plan-visible shape for strict network access:
4
+ literal connect/listen targets, explicit access grants, loopback listen metadata, and
5
+ bounded admission before socket work.
6
+
7
+ The policy object is example metadata, not a package manifest or an OS sandbox.
8
+
9
+ ## Limitations
10
+
11
+ External live-network access, TLS, HTTP, UDP, WebSocket, local IPC, and secret
12
+ endpoint handling are outside this example.
@@ -0,0 +1,34 @@
1
+ import { TcpClient, TcpListener } from "sloppy/net";
2
+
3
+ export const strictNetworkPolicy = {
4
+ mode: "strict",
5
+ allow: [
6
+ { access: "connect", host: "10.0.0.25", port: 6379 },
7
+ { access: "listen", host: "127.0.0.1", port: 9000 }
8
+ ]
9
+ };
10
+
11
+ export async function connectToAllowedCache() {
12
+ return await TcpClient.connect({
13
+ host: "10.0.0.25",
14
+ port: 6379,
15
+ timeoutMs: 1000
16
+ });
17
+ }
18
+
19
+ export async function listenOnAllowedLoopback(signal) {
20
+ const listener = await TcpListener.listen({
21
+ host: "127.0.0.1",
22
+ port: 9000,
23
+ backlog: 16
24
+ });
25
+
26
+ try {
27
+ for await (const conn of listener.accept({ signal })) {
28
+ await conn.close();
29
+ }
30
+ }
31
+ finally {
32
+ await listener.close();
33
+ }
34
+ }
@@ -0,0 +1,10 @@
1
+ # TCP Client Example
2
+
3
+ This source example shows the scoped `sloppy/net` TCP client API shape for a
4
+ loopback service: `NetworkAddress.parse`, `TcpClient.connect`, `writeText`,
5
+ `readLine`, deadline propagation, `noDelay`, `keepAlive`, and deterministic close.
6
+
7
+ ## Limitations
8
+
9
+ TLS, HTTP, UDP, WebSocket, and external live-network behavior are outside this
10
+ example.
@@ -0,0 +1,23 @@
1
+ import { TcpClient, NetworkAddress } from "sloppy/net";
2
+ import { Deadline } from "sloppy/time";
3
+
4
+ export async function pingRedisLikeService() {
5
+ const target = NetworkAddress.parse("127.0.0.1:6379");
6
+ const deadline = Deadline.after(1000);
7
+ const conn = await TcpClient.connect({
8
+ host: target.host,
9
+ port: target.port,
10
+ timeoutMs: 1000,
11
+ noDelay: true,
12
+ keepAlive: { enabled: true, delayMs: 30000 },
13
+ deadline
14
+ });
15
+
16
+ try {
17
+ await conn.writeText("PING\r\n");
18
+ return await conn.readLine({ deadline });
19
+ }
20
+ finally {
21
+ await conn.close();
22
+ }
23
+ }
@@ -0,0 +1,11 @@
1
+ # TCP Echo Example
2
+
3
+ This source example keeps the echo loop in scoped TCP runtime behavior: ephemeral loopback
4
+ listen, async accept, `readChunks`, bounded read/write calls, endpoint metadata, and
5
+ cleanup for accepted and outbound connections.
6
+
7
+ ## Limitations
8
+
9
+ This example is limited to scoped TCP echo behavior. Throughput benchmarks,
10
+ stress/torture runs, TLS, HTTP, UDP, WebSocket, local IPC, and external
11
+ live-network behavior are outside this example.
@@ -0,0 +1,45 @@
1
+ import { TcpClient, TcpListener } from "sloppy/net";
2
+
3
+ export async function startEcho(signal) {
4
+ const listener = await TcpListener.listen({
5
+ host: "127.0.0.1",
6
+ port: 0,
7
+ backlog: 32
8
+ });
9
+
10
+ runEchoAcceptLoop(listener, signal);
11
+ return listener;
12
+ }
13
+
14
+ async function runEchoAcceptLoop(listener, signal) {
15
+ for await (const conn of listener.accept({ signal })) {
16
+ echoConnection(conn);
17
+ }
18
+ }
19
+
20
+ async function echoConnection(conn) {
21
+ try {
22
+ for await (const chunk of conn.readChunks({ maxBytes: 65536 })) {
23
+ await conn.write(chunk);
24
+ }
25
+ }
26
+ finally {
27
+ await conn.close();
28
+ }
29
+ }
30
+
31
+ export async function echoOnce(listener, payload) {
32
+ const endpoint = listener.localAddress;
33
+ const conn = await TcpClient.connect({
34
+ host: endpoint.host,
35
+ port: endpoint.port
36
+ });
37
+
38
+ try {
39
+ await conn.write(payload);
40
+ return await conn.read({ maxBytes: payload.length });
41
+ }
42
+ finally {
43
+ await conn.close();
44
+ }
45
+ }
@@ -0,0 +1,10 @@
1
+ # TCP Server Example
2
+
3
+ This source example shows `TcpListener.listen`, loopback binding, backlog metadata,
4
+ async iterable `accept`, accepted connection ownership, line reads, text writes, and
5
+ listener cleanup.
6
+
7
+ ## Limitations
8
+
9
+ This example is limited to scoped TCP listener behavior. Local IPC, TLS, HTTP,
10
+ UDP, WebSocket, and external live-network behavior are outside this example.
@@ -0,0 +1,28 @@
1
+ import { TcpListener } from "sloppy/net";
2
+
3
+ export async function serveLines(appSignal) {
4
+ const listener = await TcpListener.listen({
5
+ host: "127.0.0.1",
6
+ port: 9000,
7
+ backlog: 128
8
+ });
9
+
10
+ try {
11
+ for await (const conn of listener.accept({ signal: appSignal })) {
12
+ handleConnection(conn);
13
+ }
14
+ }
15
+ finally {
16
+ await listener.close();
17
+ }
18
+ }
19
+
20
+ async function handleConnection(conn) {
21
+ try {
22
+ const line = await conn.readLine();
23
+ await conn.writeText(line);
24
+ }
25
+ finally {
26
+ await conn.close();
27
+ }
28
+ }
@@ -0,0 +1,15 @@
1
+ # Node Shims: path and events
2
+
3
+ This example imports two supported Node compatibility shims:
4
+
5
+ - `node:path`
6
+ - `node:events`
7
+
8
+ It demonstrates explicit compatibility modules. Sloppy does not provide a full
9
+ Node runtime or implicit Node globals.
10
+
11
+ ```sh
12
+ sloppy build
13
+ sloppy deps .sloppy
14
+ sloppy run
15
+ ```
@@ -0,0 +1,6 @@
1
+ {
2
+ "kind": "program",
3
+ "entry": "src/main.ts",
4
+ "outDir": ".sloppy",
5
+ "environment": "Development"
6
+ }
@@ -0,0 +1,15 @@
1
+ import path from "node:path";
2
+ import { EventEmitter } from "node:events";
3
+
4
+ export function main() {
5
+ const bus = new EventEmitter();
6
+ let seen = "";
7
+
8
+ bus.on("ready", (value) => {
9
+ seen = path.join("plugins", value);
10
+ });
11
+
12
+ bus.emit("ready", "alpha.js");
13
+ console.log(seen);
14
+ return 0;
15
+ }
@@ -0,0 +1,9 @@
1
+ # Ops Compiler Example
2
+
3
+ This example uses compiler-visible health and management configuration so Plan,
4
+ routes, doctor, audit, package, and run tooling can see the operations endpoints.
5
+
6
+ This is a test-only audit fixture. It intentionally leaves detailed management
7
+ endpoints unprotected in source so doctor and audit can report the exposure in
8
+ generated artifact checks. Recommended application code should use the protected
9
+ app-host pattern shown in `examples/ops-health-metrics-management`.