Skip to content

Feat/nova#1

Open
isma-is-dev wants to merge 4 commits intomainfrom
feat/nova
Open

Feat/nova#1
isma-is-dev wants to merge 4 commits intomainfrom
feat/nova

Conversation

@isma-is-dev
Copy link
Copy Markdown
Owner

No description provided.

…mands (test, new, generate)

- @nodeon/core: Result, Option, itertools, utils, assert, collections (HashMap, LinkedList, Stack, Queue)
- @nodeon/test: describe/it/expect (20+ matchers with .not), spy/stub/mock, runner with lifecycle hooks
- nodeon test: discover .test.no files, compile and run in sandboxed vm
- nodeon new: interactive project scaffolding (fullstack/api/library/cli)
- nodeon generate: entity/page/component/island/service/middleware/job/module generators
- CLI help updated with all new commands, generate alias 'g'
- Fixed parser compat: fn=expr in classes, reserved keyword methods, return fn(), object getters
- 571 vitest pass (0 regression), 14 stdlib verification tests pass
- Build: 35 .no files compiled, CLI bundle 226.5kb
…lint, jobs, validation

Phase 3.1: nodeon build --prod
- Multi-phase production build pipeline (clean, copy assets, compile, pre-render, bundle islands, server entry)
- src/cli/commands/build-prod.no with full Nova integration

Phase 3.2: nodeon deploy (Docker/Vercel/Fly)
- Dockerfile + docker-compose.yml generation with --run flag
- Vercel adapter (vercel.json), Fly adapter (fly.toml)
- Auto-builds if no dist/ found

Phase 3.3: Authentication module (packages/nova/src/auth.js)
- JWT sign/verify/decode (HS256, expiry, issuer, audience)
- Password hashing (PBKDF2 with timing-safe compare)
- Session store (in-memory with TTL, create/get/set/destroy/touch)
- Auth middleware (Bearer token, path exclusions)
- Session middleware (cookie-based, auto-create)
- CSRF protection middleware

Phase 3.4: Middleware pipeline (packages/nova/src/middleware.js)
- createPipeline() composable middleware chain
- CORS (origin whitelist, credentials, preflight)
- Rate limiting (token bucket, configurable window/max)
- JSON body parser (with size limit)
- Request logger (short/long format, colored status)
- Security headers (HSTS, X-Frame-Options, CSP, etc.)

Phase 3.5: Type system control flow narrowing
- Truthiness narrowing: if (x) removes null/undefined from unions
- Negated typeof: if (typeof x !== 'string') narrows in else branch
- Null/undefined check narrowing: if (x !== null)
- instanceof narrowing: if (x instanceof Dog)
- Positive/negative guard system with inverse guards for else branches
- Match/switch exhaustiveness warnings for union types
- 8 new type checker tests (89 total)
- Both TS bootstrap and .no self-hosted compilers updated

Phase 3.6: Cross-file type resolution
- extractExportedTypes() parses imported .no files for type info
- resolveModuleTypes() with module type cache
- ImportDeclaration now resolves named/default imports from .no files
- typeCheck() accepts optional filePath for resolution context

Phase 3.7: nodeon lint (src/cli/commands/lint.no)
- 7 built-in rules: no-unused-vars, no-any, no-implicit-return,
  prefer-const, max-line-length, no-console, no-empty-fn
- Configurable via nodeon.json lint section
- AST-based analysis with colored output

Phase 3.8: Incremental compilation (packages/nova/src/incremental.js)
- File content hashing (SHA-256) with persistent .nodeon-cache.json
- Dependency tracking (import analysis)
- needsRebuild(), filterChanged(), recordBuild(), finalize()

Phase 3.9: Jobs and queues (packages/nova/src/jobs.js)
- createJobQueue() with concurrency, retry, events
- createScheduler() with cron expression support
- Cron parser (@hourly/@daily aliases, ranges, steps)

Phase 3.10: Forms and validation (packages/nova/src/validation.js)
- schema() with composable validators
- 15 validators: required, optional, minLength, maxLength, min, max,
  email, pattern, number, string, boolean, oneOf, url, matches, custom
- Transformers: trim, toLowerCase, toNumber, defaultValue
- validateBody/validateQuery middleware for HTTP

CLI updates:
- lint command routed in index.no
- deploy command routed in index.no
- Help text updated with deploy/lint/build --prod
- Version bumped to 0.3.0

Tests: 594 passing (596 total, 2 skipped), 0 regressions
Build: 40 compiled, 0 failed | compiler 172.9kb | CLI 279.8kb
- Remove verbose historical analysis and completed items
- Consolidate into concise sections: Overview, Known Issues, Roadmap
- Strip 1100+ lines of outdated status tables and implementation details
- Keep only actionable bugs and future work items
- Update to reflect current state (self-hosting complete, Phase 3 shipped)
@isma-is-dev isma-is-dev self-assigned this Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant