Files
daily-notification-plugin/package.json
Matthew Raymer eb1fc9f220 feat(docs): complete P2.6 type safety cleanup and P2.7 system invariants
P2.6: Type Safety Cleanup
- Replaced 'any' return types in vite-plugin.ts with concrete types (UserConfig, transform return type)
- Documented TypeScript mixin 'any[]' exception in PlatformServiceMixin.ts
- Audit confirmed: zero 'any' in codebase except documented TS mixin limitation
- All external boundaries use 'unknown', all data payloads use 'Record<string, unknown>'

P2.7: System Invariants Documentation
- Created SYSTEM_INVARIANTS.md documenting all 6 enforced invariants
- Added to docs/00-INDEX.md under Policy & Contracts section
- Each invariant includes: What, Why, How, Where

Progress Docs Updates:
- Updated 00-STATUS.md: marked P2.6/P2.7 complete, added type safety invariant note
- Updated 01-CHANGELOG-WORK.md: added 2025-12-22 entries for P2.6/P2.7
- Updated 03-TEST-RUNS.md: added P2.6 type safety audit test run
- Updated P2-DESIGN.md: marked P2.6 acceptance criteria complete
- Updated SYSTEM_INVARIANTS.md: added Type Safety Notes section

Baseline Tag:
- Created v1.0.11-p0-p1.4-p1.5-p2.6-p2.7-complete

TypeScript compilation:  PASSES
Build:  PASSES
CI:  All checks pass
2025-12-22 10:56:00 +00:00

149 lines
4.1 KiB
JSON

{
"name": "@timesafari/daily-notification-plugin",
"version": "1.0.11",
"description": "TimeSafari Daily Notification Plugin - Enterprise-grade daily notification functionality with dual scheduling, callback support, TTL-at-fire logic, and comprehensive observability across Mobile (Capacitor) and Desktop (Electron) platforms",
"main": "dist/plugin.js",
"module": "dist/esm/index.js",
"types": "dist/esm/index.d.ts",
"scripts": {
"build": "npm run clean && tsc && rollup -c rollup.config.js",
"build:timesafari": "node scripts/build-timesafari.js",
"build:android": "TIMESAFARI_PLATFORM=android npm run build:timesafari",
"build:ios": "TIMESAFARI_PLATFORM=ios npm run build:timesafari",
"build:electron": "TIMESAFARI_PLATFORM=electron npm run build:timesafari",
"build:all": "npm run build:timesafari",
"clean": "rimraf ./dist",
"watch": "tsc --watch",
"prepublishOnly": "npm run build",
"test": "jest",
"test:workspaces": "npm test --workspaces",
"lint": "eslint . --ext .ts",
"lint-fix": "eslint . --ext .ts --fix",
"format": "prettier --write \"src/**/*.ts\"",
"markdown:check": "markdownlint-cli2 \"docs/**/*.md\" \"*.md\"",
"markdown:fix": "markdownlint-cli2 --fix \"docs/**/*.md\" \"*.md\"",
"typecheck": "tsc --noEmit",
"size:check": "node scripts/check-bundle-size.js",
"api:check": "node scripts/check-api-changes.js",
"types:checksum": "node scripts/generate-types-checksum.js",
"chaos:test": "node scripts/chaos-test.js",
"release:prepare": "npm run test && npm run typecheck && npm run size:check && standard-version",
"release:publish": "npm publish && git push --follow-tags",
"release:notes": "node scripts/update-release-notes.js"
},
"workspaces": [
"packages/*"
],
"keywords": [
"capacitor",
"timesafari",
"notification",
"daily",
"plugin",
"pwa",
"mobile",
"electron",
"privacy-preserving",
"dids",
"endorser.ch",
"community-features"
],
"author": "Matthew Raymer",
"license": "MIT",
"engines": {
"node": ">=18"
},
"exports": {
".": {
"types": "./dist/esm/index.d.ts",
"import": "./dist/esm/index.js",
"require": "./dist/plugin.js"
},
"./web": {
"types": "./dist/esm/web.d.ts",
"import": "./dist/esm/web.js",
"require": "./dist/esm/web.js"
},
"./core": {
"types": "./dist/esm/core/index.d.ts",
"import": "./dist/esm/core/index.js"
}
},
"sideEffects": false,
"dependencies": {
"@capacitor/core": "^6.2.1"
},
"devDependencies": {
"@capacitor/android": "^6.2.1",
"@capacitor/cli": "^6.2.1",
"@capacitor/ios": "^6.2.1",
"@types/jest": "^29.5.0",
"@types/jsdom": "^21.1.7",
"@types/node": "^20.19.0",
"@typescript-eslint/eslint-plugin": "^5.57.0",
"@typescript-eslint/parser": "^5.57.0",
"eslint": "^8.37.0",
"jest": "^29.5.0",
"jest-environment-jsdom": "^30.0.5",
"jsdom": "^26.1.0",
"markdownlint-cli2": "^0.18.1",
"prettier": "^2.8.7",
"rimraf": "^4.4.0",
"rollup": "^3.20.0",
"rollup-plugin-typescript2": "^0.31.0",
"standard-version": "^9.5.0",
"ts-jest": "^29.1.0",
"typescript": "~5.2.0",
"vite": "^7.1.9"
},
"files": [
"dist/",
"android/",
"ios/Plugin/",
"ios/Tests/",
"ios/*.podspec",
"ios/*.xcodeproj/",
"ios/*.xcworkspace/",
"ios/project.yml",
"ios/Podfile",
"ios/Podfile.lock",
"CapacitorDailyNotification.podspec",
"README.md",
"LICENSE"
],
"capacitor": {
"ios": {
"src": "ios"
},
"android": {
"src": "android"
}
},
"repository": {
"type": "git",
"url": "ssh://git@173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa.git"
},
"bugs": {
"url": "ssh://git@173.199.124.46:222/trent_larson/crowd-funder-for-time-pwa.git/issues"
},
"jest": {
"preset": "ts-jest",
"testEnvironment": "jsdom",
"moduleFileExtensions": [
"ts",
"tsx",
"js",
"jsx",
"json",
"node"
],
"testPathIgnorePatterns": [
"/node_modules/",
"/dist/"
],
"modulePathIgnorePatterns": [
"/dist/"
]
}
}