letopis 0.20.3 → 1.0.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 (89) hide show
  1. package/AGENT-CHEATSHEET.en.md +368 -0
  2. package/AGENT-CHEATSHEET.md +354 -0
  3. package/CHANGELOG.md +348 -0
  4. package/MIGRATION.md +190 -0
  5. package/README.en.md +1937 -0
  6. package/README.md +1493 -3466
  7. package/dist/acl.d.ts +26 -50
  8. package/dist/acl.js +22 -267
  9. package/dist/admin.d.ts +138 -0
  10. package/dist/admin.js +170 -0
  11. package/dist/auth.d.ts +120 -73
  12. package/dist/auth.js +121 -306
  13. package/dist/cache.d.ts +73 -0
  14. package/dist/cache.js +148 -0
  15. package/dist/chain.d.ts +124 -191
  16. package/dist/chain.js +369 -551
  17. package/dist/cli.d.ts +2 -0
  18. package/dist/cli.js +164 -0
  19. package/dist/demo/booking.d.ts +289 -0
  20. package/dist/demo/booking.js +159 -0
  21. package/dist/errors.d.ts +29 -0
  22. package/dist/errors.js +70 -0
  23. package/dist/import.d.ts +179 -0
  24. package/dist/import.js +792 -0
  25. package/dist/index.d.ts +172 -26
  26. package/dist/index.js +304 -178
  27. package/dist/jsonschema.d.ts +22 -0
  28. package/dist/jsonschema.js +167 -0
  29. package/dist/load.d.ts +76 -0
  30. package/dist/load.js +884 -0
  31. package/dist/model.d.ts +166 -0
  32. package/dist/model.js +224 -0
  33. package/dist/ops.d.ts +7 -6
  34. package/dist/ops.js +7 -51
  35. package/dist/pglite.d.ts +22 -0
  36. package/dist/pglite.js +45 -0
  37. package/dist/registry.d.ts +57 -0
  38. package/dist/registry.js +82 -0
  39. package/dist/sql.d.ts +59 -142
  40. package/dist/sql.js +568 -654
  41. package/dist/sync.d.ts +31 -0
  42. package/dist/sync.js +108 -0
  43. package/dist/tx.d.ts +129 -8
  44. package/dist/tx.js +300 -73
  45. package/dist/typed.d.ts +97 -0
  46. package/dist/typed.js +1 -0
  47. package/dist/types.d.ts +71 -250
  48. package/dist/types.js +27 -108
  49. package/dist/up.d.ts +140 -47
  50. package/dist/up.js +339 -267
  51. package/dist/uuid.d.ts +21 -6
  52. package/dist/uuid.js +48 -64
  53. package/dist/validate.d.ts +24 -0
  54. package/dist/validate.js +251 -0
  55. package/dist/watch.d.ts +62 -0
  56. package/dist/watch.js +168 -0
  57. package/dist/write.d.ts +117 -74
  58. package/dist/write.js +658 -720
  59. package/llms.txt +26 -0
  60. package/package.json +49 -19
  61. package/sql/10-core.sql +136 -0
  62. package/sql/15-errors.sql +60 -0
  63. package/sql/20-context.sql +153 -0
  64. package/sql/30-validate.sql +423 -0
  65. package/sql/40-class.sql +259 -0
  66. package/sql/50-acl.sql +539 -0
  67. package/sql/60-write.sql +1369 -0
  68. package/sql/70-read.sql +245 -0
  69. package/sql/80-auth.sql +827 -0
  70. package/sql/90-time.sql +957 -0
  71. package/sql/95-seed.system.sql +178 -0
  72. package/sql/99-revision.sql +3 -0
  73. package/sql/README.md +56 -0
  74. package/sql/seed.booking.sql +39 -112
  75. package/dist/schema.d.ts +0 -15
  76. package/dist/schema.js +0 -351
  77. package/dist/sessions.d.ts +0 -32
  78. package/dist/sessions.js +0 -114
  79. package/dist/tables.d.ts +0 -105
  80. package/dist/tables.js +0 -248
  81. package/docker/Dockerfile +0 -40
  82. package/docker/start.sh +0 -18
  83. package/scripts/check-docs.mjs +0 -375
  84. package/scripts/gen-api-contract.mjs +0 -226
  85. package/scripts/gen-types.mjs +0 -350
  86. package/scripts/release-notes.mjs +0 -76
  87. package/scripts/schema-sync.mjs +0 -185
  88. package/sql/ddl.sql +0 -600
  89. package/sql/seed.auth.sql +0 -73
package/sql/seed.auth.sql DELETED
@@ -1,73 +0,0 @@
1
- -- =============================================================================
2
- -- Сид auth/ACL: System-аккаунт + Resource + Rule (перенос из legacy-дампа).
3
- -- Тест-пользователи и их креденшелы НЕ переносятся.
4
- -- Идемпотентен (ON CONFLICT).
5
- -- =============================================================================
6
-
7
- -- FILE: lib/sql/seed.auth.sql
8
- -- VERSION: 1.0.0
9
- -- START_MODULE_CONTRACT
10
- -- PURPOSE: Идемпотентный сид System-аккаунта и дефолтного набора ACL Resource/Rule для auth-эндпоинтов.
11
- -- SCOPE: 1 Account (System), 16 Resource (subjects+API), 12 Rule (allow/deny с весами).
12
- -- DEPENDS: none
13
- -- LINKS: M-SEED-AUTH, V-M-SEED-AUTH
14
- -- ROLE: CONFIG
15
- -- MAP_MODE: SUMMARY
16
- -- END_MODULE_CONTRACT
17
- --
18
- -- START_MODULE_MAP
19
- -- Account - один System-аккаунт (фикс. id 2eba6d0a-…)
20
- -- Resource - 16 ресурсов ACL (anonymous/authenticated/any, auth.*, payment/shop/billing/geo)
21
- -- Rule - 12 правил allow/deny, вес 0..105
22
- -- END_MODULE_MAP
23
- --
24
- -- START_CHANGE_SUMMARY
25
- -- LAST_CHANGE: [v1.0.0 - Documented existing module: reverse-engineered contract + markup]
26
- -- END_CHANGE_SUMMARY
27
-
28
- -- START_BLOCK_SEED_ACCOUNT
29
- -- Системный аккаунт (фиксированный id из дампа)
30
- INSERT INTO "<SCHEMA-NAME>"."Account" (id, categories, data, meta, avatar, enabled) VALUES
31
- ('2eba6d0a-1edd-4bb6-a85a-a703dab49035', '{System}', '{"id": "System", "name": "System"}', '{}', 'https://i.pravatar.cc/128?img=28', true)
32
- ON CONFLICT (id) DO NOTHING;
33
-
34
- -- END_BLOCK_SEED_ACCOUNT
35
- -- START_BLOCK_SEED_RESOURCES
36
- -- Ресурсы: субъекты (категории аккаунтов) и объекты (API-эндпоинты)
37
- INSERT INTO "<SCHEMA-NAME>"."Resource" (alias, category, pattern, meta) VALUES
38
- ('anonymous:ACCOUNT', 'ACCOUNT', '{"categories": "{Anonymous,Shadow}"}', '{"description": "Unauthenticated users (includes Anonymous and Shadow categories)"}'),
39
- ('authenticated:ACCOUNT', 'ACCOUNT', '{"categories": "!{Anonymous,Shadow}"}', '{"description": "Authenticated users (excludes Anonymous and Shadow)"}'),
40
- ('any:ACCOUNT', 'ACCOUNT', NULL, '{"description": "All account categories (no pattern = match all)"}'),
41
- ('auth.user.password:API', 'API', '{"endpoint": "v2.auth.password.change"}', '{"endpoints": ["v2.auth.password.change"], "description": "Change own password"}'),
42
- ('auth.user.session:API', 'API', '{"endpoint": "v2.auth.session.signout"}', '{"endpoints": ["v2.auth.session.signout"], "description": "Logout (revoke session)"}'),
43
- ('auth.user.apikey:API', 'API', '{"endpoint": "v2.auth.apikey.*"}', '{"endpoints": ["v2.auth.apikey.create", "v2.auth.apikey.list", "v2.auth.apikey.revoke"], "description": "Manage own API keys (auto-filtered by account)"}'),
44
- ('auth.user.basic:API', 'API', '{"endpoint": "v2.auth.basic.*"}', '{"endpoints": ["v2.auth.basic.create", "v2.auth.basic.list", "v2.auth.basic.revoke"], "description": "Manage own Basic Auth credentials (auto-filtered by account)"}'),
45
- ('any:API', 'API', NULL, '{"description": "All API endpoints (no pattern = match all, for default deny)"}'),
46
- ('chrono.user.events:API', 'API', '{"endpoint": "v2.chrono.*"}', '{"endpoint": "v2.chrono.*", "description": "User event management (auto-filtered by account)"}'),
47
- ('auth.anonymous:API', 'API', '{"endpoint": "v2.auth.password.{signup,signin,reset.*,email.*}"}', '{"endpoints": ["v2.auth.password.signup", "v2.auth.password.signin", "v2.auth.password.reset.request", "v2.auth.password.reset.complete", "v2.auth.password.email.verify", "v2.auth.password.email.resend"], "description": "Anonymous auth endpoints (signup, signin, reset, email verification)"}'),
48
- ('auth.telegram:API', 'API', '{"endpoint": "v2.auth.telegram.{initiate,poll}"}', '{"endpoints": ["v2.auth.telegram.initiate", "v2.auth.telegram.poll"], "description": "Telegram passwordless login (initiate, long polling)"}'),
49
- ('payment.callback:API', 'API', '{"endpoint": "v2.payment.callback.*"}', '{"endpoints": ["v2.payment.callback.yookassa", "v2.payment.callback.robokassa"], "description": "Payment provider webhooks (YOOKASSA, ROBOKASSA)"}'),
50
- ('shop:API', 'API', '{"endpoint": "booking.*"}', '{"description": "Booking service endpoints"}'),
51
- ('payment:API', 'API', '{"endpoint": "v2.payment.*"}', '{"endpoints": ["v2.payment.create"], "description": "Create payment (authenticated users only)"}'),
52
- ('billing:API', 'API', '{"endpoint": "v2.billing.*"}', NULL),
53
- ('geo:API', 'API', '{"endpoint": "v2.geo.*"}', NULL)
54
- ON CONFLICT (alias) DO UPDATE SET category = EXCLUDED.category, pattern = EXCLUDED.pattern, meta = EXCLUDED.meta;
55
-
56
- -- END_BLOCK_SEED_RESOURCES
57
- -- START_BLOCK_SEED_RULES
58
- -- Правила: субъект → объект → allow|deny (weight — приоритет)
59
- INSERT INTO "<SCHEMA-NAME>"."Rule" (account, resource, permission, weight, meta, enabled) VALUES
60
- ('authenticated:ACCOUNT', 'auth.user.password:API', 'allow', 90, '{"description": "Users can change their own password"}', true),
61
- ('authenticated:ACCOUNT', 'auth.user.session:API', 'allow', 90, '{"description": "Users can logout (revoke their session)"}', true),
62
- ('authenticated:ACCOUNT', 'auth.user.apikey:API', 'allow', 90, '{"description": "Users can manage their own API keys (service auto-filters by ctx.meta.$account.id)"}', true),
63
- ('authenticated:ACCOUNT', 'auth.user.basic:API', 'allow', 90, '{"description": "Users can manage their own Basic Auth (service auto-filters by ctx.meta.$account.id)"}', true),
64
- ('any:ACCOUNT', 'any:API', 'deny', 0, '{"code": 403, "message": "Access denied - default for any ACCOUNT to any API"}', true),
65
- ('authenticated:ACCOUNT', 'chrono.user.events:API', 'allow', 90, '{"description": "Users can manage their own scheduled events (filtered by ctx.meta.$account.id)"}', true),
66
- ('any:ACCOUNT', 'auth.anonymous:API', 'allow', 105, '{"description": "Anonymous users can signup, signin, reset password, use OTP"}', true),
67
- ('anonymous:ACCOUNT', 'auth.telegram:API', 'allow', 105, '{"description": "Anonymous users can login via Telegram (initiate, poll)"}', true),
68
- ('authenticated:ACCOUNT', 'payment:API', 'allow', 90, '{"description": "Users can create payments (uses ctx.meta.$account.id)"}', true),
69
- ('authenticated:ACCOUNT', 'shop:API', 'allow', 90, '{"description": "Users can access booking"}', true),
70
- ('authenticated:ACCOUNT', 'billing:API', 'allow', 90, '{"description": "Users can access billing (uses ctx.meta.$account.id)"}', true),
71
- ('authenticated:ACCOUNT', 'geo:API', 'allow', 90, '{"description": "Users can access geo (uses ctx.meta.$account.id)"}', true)
72
- ON CONFLICT (account, resource) DO UPDATE SET permission = EXCLUDED.permission, weight = EXCLUDED.weight, meta = EXCLUDED.meta, enabled = EXCLUDED.enabled;
73
- -- END_BLOCK_SEED_RULES