@nodefony/drizzle 10.0.0-alpha.1

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 (143) hide show
  1. package/LICENSE +544 -0
  2. package/README.md +162 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorate.js +9 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.148.0/helpers/esm/decorateMetadata.js +6 -0
  5. package/dist/index.js +105 -0
  6. package/dist/nodefony/command/migrateShared.js +247 -0
  7. package/dist/nodefony/command/orm-generate.js +356 -0
  8. package/dist/nodefony/command/orm-migrate-baseline.js +208 -0
  9. package/dist/nodefony/command/orm-migrate-repair.js +114 -0
  10. package/dist/nodefony/command/orm-migrate-status.js +67 -0
  11. package/dist/nodefony/command/orm-migrate.js +141 -0
  12. package/dist/nodefony/command/orm-reset.js +166 -0
  13. package/dist/nodefony/config/config.js +107 -0
  14. package/dist/nodefony/config/defineModuleConfig.js +63 -0
  15. package/dist/nodefony/entity/auditEventEntity.js +93 -0
  16. package/dist/nodefony/entity/colKit.js +260 -0
  17. package/dist/nodefony/entity/idempotencyEntity.js +74 -0
  18. package/dist/nodefony/entity/sessionEntity.js +75 -0
  19. package/dist/nodefony/entity/tokenEntity.js +198 -0
  20. package/dist/nodefony/entity/totpSecretEntity.js +98 -0
  21. package/dist/nodefony/entity/userTable.js +141 -0
  22. package/dist/nodefony/entity/webAuthnCredentialEntity.js +114 -0
  23. package/dist/nodefony/entity/webhookEndpointEntity.js +106 -0
  24. package/dist/nodefony/interfaces/IDrizzleConfig.js +1 -0
  25. package/dist/nodefony/interfaces/index.js +1 -0
  26. package/dist/nodefony/migrations-schema/mysql.js +48 -0
  27. package/dist/nodefony/migrations-schema/postgres.js +48 -0
  28. package/dist/nodefony/migrations-schema/sqlite.js +48 -0
  29. package/dist/nodefony/registerStores.js +218 -0
  30. package/dist/nodefony/service/DrizzleService.js +282 -0
  31. package/dist/nodefony/src/DrizzleAuditStore.js +203 -0
  32. package/dist/nodefony/src/DrizzleIdempotencyStore.js +278 -0
  33. package/dist/nodefony/src/DrizzleTokenStore.js +244 -0
  34. package/dist/nodefony/src/DrizzleTotpSecretStore.js +151 -0
  35. package/dist/nodefony/src/DrizzleUserRepository.js +217 -0
  36. package/dist/nodefony/src/DrizzleWebAuthnCredentialStore.js +159 -0
  37. package/dist/nodefony/src/DrizzleWebhookStore.js +169 -0
  38. package/dist/nodefony/src/SessionStorage.js +259 -0
  39. package/dist/nodefony/src/connectorTarget.js +59 -0
  40. package/dist/nodefony/src/likeSql.js +50 -0
  41. package/dist/nodefony/src/migrator/DrizzleMigrator.js +775 -0
  42. package/dist/nodefony/src/migrator/adopt.js +553 -0
  43. package/dist/nodefony/src/migrator/appSchema.js +414 -0
  44. package/dist/nodefony/src/migrator/catalog.js +76 -0
  45. package/dist/nodefony/src/migrator/destructive.js +213 -0
  46. package/dist/nodefony/src/migrator/divergence.js +84 -0
  47. package/dist/nodefony/src/migrator/drivers/index.js +39 -0
  48. package/dist/nodefony/src/migrator/drivers/mysqlDriver.js +147 -0
  49. package/dist/nodefony/src/migrator/drivers/postgresDriver.js +151 -0
  50. package/dist/nodefony/src/migrator/drivers/sqliteDriver.js +121 -0
  51. package/dist/nodefony/src/migrator/explain.js +565 -0
  52. package/dist/nodefony/src/migrator/hash.js +47 -0
  53. package/dist/nodefony/src/migrator/history.js +219 -0
  54. package/dist/nodefony/src/migrator/index.js +16 -0
  55. package/dist/nodefony/src/migrator/kit.js +296 -0
  56. package/dist/nodefony/src/migrator/name.js +68 -0
  57. package/dist/nodefony/src/migrator/paths.js +88 -0
  58. package/dist/nodefony/src/migrator/refusals.js +143 -0
  59. package/dist/nodefony/src/migrator/resolve.js +281 -0
  60. package/dist/nodefony/src/migrator/schemaDiff.js +86 -0
  61. package/dist/nodefony/src/migrator/sources.js +419 -0
  62. package/dist/nodefony/src/migrator/status.js +231 -0
  63. package/dist/nodefony/src/migrator/types.js +91 -0
  64. package/dist/nodefony/src/orm-core/DrizzleOrm.js +1154 -0
  65. package/dist/nodefony/src/orm-core/DrizzleRepository.js +610 -0
  66. package/dist/nodefony/src/orm-core/DrizzleTransaction.js +106 -0
  67. package/dist/nodefony/src/orm-core/index.js +4 -0
  68. package/dist/nodefony/src/queryKit.js +318 -0
  69. package/dist/nodefony/src/safeTarget.js +55 -0
  70. package/dist/types/index.d.ts +76 -0
  71. package/dist/types/nodefony/command/migrateShared.d.ts +137 -0
  72. package/dist/types/nodefony/command/orm-generate.d.ts +53 -0
  73. package/dist/types/nodefony/command/orm-migrate-baseline.d.ts +87 -0
  74. package/dist/types/nodefony/command/orm-migrate-repair.d.ts +66 -0
  75. package/dist/types/nodefony/command/orm-migrate-status.d.ts +38 -0
  76. package/dist/types/nodefony/command/orm-migrate.d.ts +65 -0
  77. package/dist/types/nodefony/command/orm-reset.d.ts +55 -0
  78. package/dist/types/nodefony/config/config.d.ts +110 -0
  79. package/dist/types/nodefony/config/defineModuleConfig.d.ts +24 -0
  80. package/dist/types/nodefony/entity/auditEventEntity.d.ts +56 -0
  81. package/dist/types/nodefony/entity/colKit.d.ts +130 -0
  82. package/dist/types/nodefony/entity/idempotencyEntity.d.ts +52 -0
  83. package/dist/types/nodefony/entity/sessionEntity.d.ts +50 -0
  84. package/dist/types/nodefony/entity/tokenEntity.d.ts +53 -0
  85. package/dist/types/nodefony/entity/totpSecretEntity.d.ts +61 -0
  86. package/dist/types/nodefony/entity/userTable.d.ts +65 -0
  87. package/dist/types/nodefony/entity/webAuthnCredentialEntity.d.ts +57 -0
  88. package/dist/types/nodefony/entity/webhookEndpointEntity.d.ts +58 -0
  89. package/dist/types/nodefony/interfaces/IDrizzleConfig.d.ts +17 -0
  90. package/dist/types/nodefony/interfaces/index.d.ts +1 -0
  91. package/dist/types/nodefony/migrations-schema/mysql.d.ts +9 -0
  92. package/dist/types/nodefony/migrations-schema/postgres.d.ts +9 -0
  93. package/dist/types/nodefony/migrations-schema/sqlite.d.ts +9 -0
  94. package/dist/types/nodefony/registerStores.d.ts +52 -0
  95. package/dist/types/nodefony/service/DrizzleService.d.ts +27 -0
  96. package/dist/types/nodefony/src/DrizzleAuditStore.d.ts +65 -0
  97. package/dist/types/nodefony/src/DrizzleIdempotencyStore.d.ts +129 -0
  98. package/dist/types/nodefony/src/DrizzleTokenStore.d.ts +146 -0
  99. package/dist/types/nodefony/src/DrizzleTotpSecretStore.d.ts +60 -0
  100. package/dist/types/nodefony/src/DrizzleUserRepository.d.ts +67 -0
  101. package/dist/types/nodefony/src/DrizzleWebAuthnCredentialStore.d.ts +62 -0
  102. package/dist/types/nodefony/src/DrizzleWebhookStore.d.ts +79 -0
  103. package/dist/types/nodefony/src/SessionStorage.d.ts +72 -0
  104. package/dist/types/nodefony/src/connectorTarget.d.ts +48 -0
  105. package/dist/types/nodefony/src/likeSql.d.ts +29 -0
  106. package/dist/types/nodefony/src/migrator/DrizzleMigrator.d.ts +94 -0
  107. package/dist/types/nodefony/src/migrator/adopt.d.ts +280 -0
  108. package/dist/types/nodefony/src/migrator/appSchema.d.ts +223 -0
  109. package/dist/types/nodefony/src/migrator/catalog.d.ts +100 -0
  110. package/dist/types/nodefony/src/migrator/destructive.d.ts +123 -0
  111. package/dist/types/nodefony/src/migrator/divergence.d.ts +61 -0
  112. package/dist/types/nodefony/src/migrator/drivers/index.d.ts +26 -0
  113. package/dist/types/nodefony/src/migrator/drivers/mysqlDriver.d.ts +83 -0
  114. package/dist/types/nodefony/src/migrator/drivers/postgresDriver.d.ts +81 -0
  115. package/dist/types/nodefony/src/migrator/drivers/sqliteDriver.d.ts +53 -0
  116. package/dist/types/nodefony/src/migrator/explain.d.ts +424 -0
  117. package/dist/types/nodefony/src/migrator/hash.d.ts +39 -0
  118. package/dist/types/nodefony/src/migrator/history.d.ts +139 -0
  119. package/dist/types/nodefony/src/migrator/index.d.ts +20 -0
  120. package/dist/types/nodefony/src/migrator/kit.d.ts +141 -0
  121. package/dist/types/nodefony/src/migrator/name.d.ts +52 -0
  122. package/dist/types/nodefony/src/migrator/paths.d.ts +54 -0
  123. package/dist/types/nodefony/src/migrator/refusals.d.ts +170 -0
  124. package/dist/types/nodefony/src/migrator/resolve.d.ts +201 -0
  125. package/dist/types/nodefony/src/migrator/schemaDiff.d.ts +112 -0
  126. package/dist/types/nodefony/src/migrator/sources.d.ts +119 -0
  127. package/dist/types/nodefony/src/migrator/status.d.ts +132 -0
  128. package/dist/types/nodefony/src/migrator/types.d.ts +273 -0
  129. package/dist/types/nodefony/src/orm-core/DrizzleOrm.d.ts +241 -0
  130. package/dist/types/nodefony/src/orm-core/DrizzleRepository.d.ts +98 -0
  131. package/dist/types/nodefony/src/orm-core/DrizzleTransaction.d.ts +71 -0
  132. package/dist/types/nodefony/src/orm-core/index.d.ts +11 -0
  133. package/dist/types/nodefony/src/queryKit.d.ts +136 -0
  134. package/dist/types/nodefony/src/safeTarget.d.ts +42 -0
  135. package/docs/index.md +954 -0
  136. package/docs/migrations.md +691 -0
  137. package/migrations/mysql/0000_framework_init.sql +137 -0
  138. package/migrations/mysql/meta/_journal.json +13 -0
  139. package/migrations/postgres/0000_framework_init.sql +128 -0
  140. package/migrations/postgres/meta/_journal.json +13 -0
  141. package/migrations/sqlite/0000_framework_init.sql +127 -0
  142. package/migrations/sqlite/meta/_journal.json +13 -0
  143. package/package.json +126 -0
@@ -0,0 +1,137 @@
1
+ -- nodefony:migration format=1
2
+ CREATE TABLE `access_token` (
3
+ `id` varchar(512) NOT NULL,
4
+ `kind` text NOT NULL,
5
+ `name` text NOT NULL,
6
+ `prefix` text,
7
+ `subjectId` varchar(512) NOT NULL,
8
+ `subjectType` text NOT NULL,
9
+ `tenantId` text,
10
+ `scopes` json NOT NULL,
11
+ `audience` json NOT NULL,
12
+ `resources` json,
13
+ `secretHash` varchar(512) NOT NULL,
14
+ `hashAlg` text NOT NULL,
15
+ `clientId` text,
16
+ `cnf` text,
17
+ `family` varchar(512),
18
+ `replacedBy` text,
19
+ `createdAt` bigint NOT NULL,
20
+ `expiresAt` bigint,
21
+ `lastUsedAt` bigint,
22
+ `lastUsedIp` text,
23
+ `lastUsedUserAgent` text,
24
+ `revokedAt` bigint,
25
+ `revokedReason` text,
26
+ `metadata` json NOT NULL,
27
+ CONSTRAINT `access_token_id` PRIMARY KEY(`id`),
28
+ CONSTRAINT `access_token_secretHash_unique` UNIQUE(`secretHash`)
29
+ );
30
+ --> statement-breakpoint
31
+ CREATE TABLE `audit_event` (
32
+ `id` varchar(512) NOT NULL,
33
+ `ts` bigint NOT NULL,
34
+ `category` varchar(512) NOT NULL,
35
+ `action` text NOT NULL,
36
+ `outcome` text NOT NULL,
37
+ `actor` varchar(512),
38
+ `resource` text,
39
+ `reason` text,
40
+ `ip` text,
41
+ `userAgent` text,
42
+ `requestId` varchar(512),
43
+ `flags` json,
44
+ `metadata` json,
45
+ CONSTRAINT `audit_event_id` PRIMARY KEY(`id`)
46
+ );
47
+ --> statement-breakpoint
48
+ CREATE TABLE `denied_jti` (
49
+ `jti` varchar(512) NOT NULL,
50
+ `expiresAt` bigint NOT NULL,
51
+ CONSTRAINT `denied_jti_jti` PRIMARY KEY(`jti`)
52
+ );
53
+ --> statement-breakpoint
54
+ CREATE TABLE `idempotency_key` (
55
+ `key` varchar(512) NOT NULL,
56
+ `fingerprint` text NOT NULL,
57
+ `state` varchar(64) NOT NULL,
58
+ `response` json,
59
+ `expiresAt` bigint NOT NULL,
60
+ CONSTRAINT `idempotency_key_key` PRIMARY KEY(`key`),
61
+ CONSTRAINT `idempotency_key_state_check` CHECK(`state` IN ('if', 'done'))
62
+ );
63
+ --> statement-breakpoint
64
+ CREATE TABLE `session` (
65
+ `session_id` varchar(512) NOT NULL,
66
+ `Attributes` json,
67
+ `flashBag` json,
68
+ `metaBag` json,
69
+ `user` varchar(512),
70
+ `createdAt` bigint NOT NULL,
71
+ `updatedAt` bigint NOT NULL,
72
+ CONSTRAINT `session_session_id` PRIMARY KEY(`session_id`)
73
+ );
74
+ --> statement-breakpoint
75
+ CREATE TABLE `subject_revocation` (
76
+ `subjectId` varchar(512) NOT NULL,
77
+ `invalidBefore` bigint NOT NULL,
78
+ CONSTRAINT `subject_revocation_subjectId` PRIMARY KEY(`subjectId`)
79
+ );
80
+ --> statement-breakpoint
81
+ CREATE TABLE `totp_secret` (
82
+ `userId` varchar(512) NOT NULL,
83
+ `secretEnc` text NOT NULL,
84
+ `algorithm` text NOT NULL,
85
+ `digits` int NOT NULL,
86
+ `period` int NOT NULL,
87
+ `recoveryCodes` json NOT NULL,
88
+ `confirmedAt` bigint,
89
+ `lastUsedStep` bigint,
90
+ `createdAt` bigint NOT NULL,
91
+ `lastUsedAt` bigint,
92
+ CONSTRAINT `totp_secret_userId` PRIMARY KEY(`userId`)
93
+ );
94
+ --> statement-breakpoint
95
+ CREATE TABLE `webauthn_credential` (
96
+ `id` varchar(512) NOT NULL,
97
+ `userId` varchar(512) NOT NULL,
98
+ `publicKey` text NOT NULL,
99
+ `signCount` bigint NOT NULL,
100
+ `transports` json NOT NULL,
101
+ `backupEligible` boolean NOT NULL,
102
+ `backupState` boolean NOT NULL,
103
+ `uvInitialized` boolean NOT NULL,
104
+ `nickname` text,
105
+ `createdAt` bigint NOT NULL,
106
+ `lastUsedAt` bigint,
107
+ CONSTRAINT `webauthn_credential_id` PRIMARY KEY(`id`)
108
+ );
109
+ --> statement-breakpoint
110
+ CREATE TABLE `webhook_endpoint` (
111
+ `id` varchar(512) NOT NULL,
112
+ `url` text NOT NULL,
113
+ `secretEnc` text NOT NULL,
114
+ `events` json NOT NULL,
115
+ `enabled` boolean NOT NULL,
116
+ `description` text,
117
+ `tenantId` text,
118
+ `createdBy` text,
119
+ `createdAt` bigint NOT NULL,
120
+ `updatedAt` bigint NOT NULL,
121
+ `lastDeliveryAt` bigint,
122
+ `lastDeliveryStatus` int,
123
+ `lastDeliveryError` text,
124
+ `failureCount` int NOT NULL,
125
+ `metadata` json NOT NULL,
126
+ CONSTRAINT `webhook_endpoint_id` PRIMARY KEY(`id`)
127
+ );
128
+ --> statement-breakpoint
129
+ CREATE INDEX `access_token_subjectId_idx` ON `access_token` (`subjectId`);--> statement-breakpoint
130
+ CREATE INDEX `access_token_family_idx` ON `access_token` (`family`);--> statement-breakpoint
131
+ CREATE INDEX `audit_event_ts_idx` ON `audit_event` (`ts`);--> statement-breakpoint
132
+ CREATE INDEX `audit_event_category_idx` ON `audit_event` (`category`);--> statement-breakpoint
133
+ CREATE INDEX `audit_event_actor_idx` ON `audit_event` (`actor`);--> statement-breakpoint
134
+ CREATE INDEX `audit_event_requestId_idx` ON `audit_event` (`requestId`);--> statement-breakpoint
135
+ CREATE INDEX `idempotency_key_expiresAt_idx` ON `idempotency_key` (`expiresAt`);--> statement-breakpoint
136
+ CREATE INDEX `session_user_idx` ON `session` (`user`);--> statement-breakpoint
137
+ CREATE INDEX `webauthn_credential_userId_idx` ON `webauthn_credential` (`userId`);
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "mysql",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "5",
8
+ "when": 1788277073654,
9
+ "tag": "0000_framework_init",
10
+ "breakpoints": true
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,128 @@
1
+ -- nodefony:migration format=1
2
+ CREATE TABLE "access_token" (
3
+ "id" text PRIMARY KEY NOT NULL,
4
+ "kind" text NOT NULL,
5
+ "name" text NOT NULL,
6
+ "prefix" text,
7
+ "subjectId" text NOT NULL,
8
+ "subjectType" text NOT NULL,
9
+ "tenantId" text,
10
+ "scopes" jsonb NOT NULL,
11
+ "audience" jsonb NOT NULL,
12
+ "resources" jsonb,
13
+ "secretHash" text NOT NULL,
14
+ "hashAlg" text NOT NULL,
15
+ "clientId" text,
16
+ "cnf" text,
17
+ "family" text,
18
+ "replacedBy" text,
19
+ "createdAt" bigint NOT NULL,
20
+ "expiresAt" bigint,
21
+ "lastUsedAt" bigint,
22
+ "lastUsedIp" text,
23
+ "lastUsedUserAgent" text,
24
+ "revokedAt" bigint,
25
+ "revokedReason" text,
26
+ "metadata" jsonb NOT NULL,
27
+ CONSTRAINT "access_token_secretHash_unique" UNIQUE("secretHash")
28
+ );
29
+ --> statement-breakpoint
30
+ CREATE TABLE "audit_event" (
31
+ "id" text PRIMARY KEY NOT NULL,
32
+ "ts" bigint NOT NULL,
33
+ "category" text NOT NULL,
34
+ "action" text NOT NULL,
35
+ "outcome" text NOT NULL,
36
+ "actor" text,
37
+ "resource" text,
38
+ "reason" text,
39
+ "ip" text,
40
+ "userAgent" text,
41
+ "requestId" text,
42
+ "flags" jsonb,
43
+ "metadata" jsonb
44
+ );
45
+ --> statement-breakpoint
46
+ CREATE TABLE "denied_jti" (
47
+ "jti" text PRIMARY KEY NOT NULL,
48
+ "expiresAt" bigint NOT NULL
49
+ );
50
+ --> statement-breakpoint
51
+ CREATE TABLE "idempotency_key" (
52
+ "key" text PRIMARY KEY NOT NULL,
53
+ "fingerprint" text NOT NULL,
54
+ "state" text NOT NULL,
55
+ "response" jsonb,
56
+ "expiresAt" bigint NOT NULL,
57
+ CONSTRAINT "idempotency_key_state_check" CHECK ("state" IN ('if', 'done'))
58
+ );
59
+ --> statement-breakpoint
60
+ CREATE TABLE "session" (
61
+ "session_id" text PRIMARY KEY NOT NULL,
62
+ "Attributes" jsonb,
63
+ "flashBag" jsonb,
64
+ "metaBag" jsonb,
65
+ "user" text,
66
+ "createdAt" bigint NOT NULL,
67
+ "updatedAt" bigint NOT NULL
68
+ );
69
+ --> statement-breakpoint
70
+ CREATE TABLE "subject_revocation" (
71
+ "subjectId" text PRIMARY KEY NOT NULL,
72
+ "invalidBefore" bigint NOT NULL
73
+ );
74
+ --> statement-breakpoint
75
+ CREATE TABLE "totp_secret" (
76
+ "userId" text PRIMARY KEY NOT NULL,
77
+ "secretEnc" text NOT NULL,
78
+ "algorithm" text NOT NULL,
79
+ "digits" integer NOT NULL,
80
+ "period" integer NOT NULL,
81
+ "recoveryCodes" jsonb NOT NULL,
82
+ "confirmedAt" bigint,
83
+ "lastUsedStep" bigint,
84
+ "createdAt" bigint NOT NULL,
85
+ "lastUsedAt" bigint
86
+ );
87
+ --> statement-breakpoint
88
+ CREATE TABLE "webauthn_credential" (
89
+ "id" text PRIMARY KEY NOT NULL,
90
+ "userId" text NOT NULL,
91
+ "publicKey" text NOT NULL,
92
+ "signCount" bigint NOT NULL,
93
+ "transports" jsonb NOT NULL,
94
+ "backupEligible" boolean NOT NULL,
95
+ "backupState" boolean NOT NULL,
96
+ "uvInitialized" boolean NOT NULL,
97
+ "nickname" text,
98
+ "createdAt" bigint NOT NULL,
99
+ "lastUsedAt" bigint
100
+ );
101
+ --> statement-breakpoint
102
+ CREATE TABLE "webhook_endpoint" (
103
+ "id" text PRIMARY KEY NOT NULL,
104
+ "url" text NOT NULL,
105
+ "secretEnc" text NOT NULL,
106
+ "events" jsonb NOT NULL,
107
+ "enabled" boolean NOT NULL,
108
+ "description" text,
109
+ "tenantId" text,
110
+ "createdBy" text,
111
+ "createdAt" bigint NOT NULL,
112
+ "updatedAt" bigint NOT NULL,
113
+ "lastDeliveryAt" bigint,
114
+ "lastDeliveryStatus" integer,
115
+ "lastDeliveryError" text,
116
+ "failureCount" integer NOT NULL,
117
+ "metadata" jsonb NOT NULL
118
+ );
119
+ --> statement-breakpoint
120
+ CREATE INDEX "access_token_subjectId_idx" ON "access_token" USING btree ("subjectId");--> statement-breakpoint
121
+ CREATE INDEX "access_token_family_idx" ON "access_token" USING btree ("family");--> statement-breakpoint
122
+ CREATE INDEX "audit_event_ts_idx" ON "audit_event" USING btree ("ts");--> statement-breakpoint
123
+ CREATE INDEX "audit_event_category_idx" ON "audit_event" USING btree ("category");--> statement-breakpoint
124
+ CREATE INDEX "audit_event_actor_idx" ON "audit_event" USING btree ("actor");--> statement-breakpoint
125
+ CREATE INDEX "audit_event_requestId_idx" ON "audit_event" USING btree ("requestId");--> statement-breakpoint
126
+ CREATE INDEX "idempotency_key_expiresAt_idx" ON "idempotency_key" USING btree ("expiresAt");--> statement-breakpoint
127
+ CREATE INDEX "session_user_idx" ON "session" USING btree ("user");--> statement-breakpoint
128
+ CREATE INDEX "webauthn_credential_userId_idx" ON "webauthn_credential" USING btree ("userId");
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "postgresql",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "7",
8
+ "when": 1788277072486,
9
+ "tag": "0000_framework_init",
10
+ "breakpoints": true
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,127 @@
1
+ -- nodefony:migration format=1
2
+ CREATE TABLE `access_token` (
3
+ `id` text PRIMARY KEY NOT NULL,
4
+ `kind` text NOT NULL,
5
+ `name` text NOT NULL,
6
+ `prefix` text,
7
+ `subjectId` text NOT NULL,
8
+ `subjectType` text NOT NULL,
9
+ `tenantId` text,
10
+ `scopes` text NOT NULL,
11
+ `audience` text NOT NULL,
12
+ `resources` text,
13
+ `secretHash` text NOT NULL,
14
+ `hashAlg` text NOT NULL,
15
+ `clientId` text,
16
+ `cnf` text,
17
+ `family` text,
18
+ `replacedBy` text,
19
+ `createdAt` integer NOT NULL,
20
+ `expiresAt` integer,
21
+ `lastUsedAt` integer,
22
+ `lastUsedIp` text,
23
+ `lastUsedUserAgent` text,
24
+ `revokedAt` integer,
25
+ `revokedReason` text,
26
+ `metadata` text NOT NULL
27
+ );
28
+ --> statement-breakpoint
29
+ CREATE UNIQUE INDEX `access_token_secretHash_unique` ON `access_token` (`secretHash`);--> statement-breakpoint
30
+ CREATE INDEX `access_token_subjectId_idx` ON `access_token` (`subjectId`);--> statement-breakpoint
31
+ CREATE INDEX `access_token_family_idx` ON `access_token` (`family`);--> statement-breakpoint
32
+ CREATE TABLE `audit_event` (
33
+ `id` text PRIMARY KEY NOT NULL,
34
+ `ts` integer NOT NULL,
35
+ `category` text NOT NULL,
36
+ `action` text NOT NULL,
37
+ `outcome` text NOT NULL,
38
+ `actor` text,
39
+ `resource` text,
40
+ `reason` text,
41
+ `ip` text,
42
+ `userAgent` text,
43
+ `requestId` text,
44
+ `flags` text,
45
+ `metadata` text
46
+ );
47
+ --> statement-breakpoint
48
+ CREATE INDEX `audit_event_ts_idx` ON `audit_event` (`ts`);--> statement-breakpoint
49
+ CREATE INDEX `audit_event_category_idx` ON `audit_event` (`category`);--> statement-breakpoint
50
+ CREATE INDEX `audit_event_actor_idx` ON `audit_event` (`actor`);--> statement-breakpoint
51
+ CREATE INDEX `audit_event_requestId_idx` ON `audit_event` (`requestId`);--> statement-breakpoint
52
+ CREATE TABLE `denied_jti` (
53
+ `jti` text PRIMARY KEY NOT NULL,
54
+ `expiresAt` integer NOT NULL
55
+ );
56
+ --> statement-breakpoint
57
+ CREATE TABLE `idempotency_key` (
58
+ `key` text PRIMARY KEY NOT NULL,
59
+ `fingerprint` text NOT NULL,
60
+ `state` text NOT NULL,
61
+ `response` text,
62
+ `expiresAt` integer NOT NULL,
63
+ CONSTRAINT "idempotency_key_state_check" CHECK("state" IN ('if', 'done'))
64
+ );
65
+ --> statement-breakpoint
66
+ CREATE INDEX `idempotency_key_expiresAt_idx` ON `idempotency_key` (`expiresAt`);--> statement-breakpoint
67
+ CREATE TABLE `session` (
68
+ `session_id` text PRIMARY KEY NOT NULL,
69
+ `Attributes` text,
70
+ `flashBag` text,
71
+ `metaBag` text,
72
+ `user` text,
73
+ `createdAt` integer NOT NULL,
74
+ `updatedAt` integer NOT NULL
75
+ );
76
+ --> statement-breakpoint
77
+ CREATE INDEX `session_user_idx` ON `session` (`user`);--> statement-breakpoint
78
+ CREATE TABLE `subject_revocation` (
79
+ `subjectId` text PRIMARY KEY NOT NULL,
80
+ `invalidBefore` integer NOT NULL
81
+ );
82
+ --> statement-breakpoint
83
+ CREATE TABLE `totp_secret` (
84
+ `userId` text PRIMARY KEY NOT NULL,
85
+ `secretEnc` text NOT NULL,
86
+ `algorithm` text NOT NULL,
87
+ `digits` integer NOT NULL,
88
+ `period` integer NOT NULL,
89
+ `recoveryCodes` text NOT NULL,
90
+ `confirmedAt` integer,
91
+ `lastUsedStep` integer,
92
+ `createdAt` integer NOT NULL,
93
+ `lastUsedAt` integer
94
+ );
95
+ --> statement-breakpoint
96
+ CREATE TABLE `webauthn_credential` (
97
+ `id` text PRIMARY KEY NOT NULL,
98
+ `userId` text NOT NULL,
99
+ `publicKey` text NOT NULL,
100
+ `signCount` integer NOT NULL,
101
+ `transports` text NOT NULL,
102
+ `backupEligible` integer NOT NULL,
103
+ `backupState` integer NOT NULL,
104
+ `uvInitialized` integer NOT NULL,
105
+ `nickname` text,
106
+ `createdAt` integer NOT NULL,
107
+ `lastUsedAt` integer
108
+ );
109
+ --> statement-breakpoint
110
+ CREATE INDEX `webauthn_credential_userId_idx` ON `webauthn_credential` (`userId`);--> statement-breakpoint
111
+ CREATE TABLE `webhook_endpoint` (
112
+ `id` text PRIMARY KEY NOT NULL,
113
+ `url` text NOT NULL,
114
+ `secretEnc` text NOT NULL,
115
+ `events` text NOT NULL,
116
+ `enabled` integer NOT NULL,
117
+ `description` text,
118
+ `tenantId` text,
119
+ `createdBy` text,
120
+ `createdAt` integer NOT NULL,
121
+ `updatedAt` integer NOT NULL,
122
+ `lastDeliveryAt` integer,
123
+ `lastDeliveryStatus` integer,
124
+ `lastDeliveryError` text,
125
+ `failureCount` integer NOT NULL,
126
+ `metadata` text NOT NULL
127
+ );
@@ -0,0 +1,13 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "sqlite",
4
+ "entries": [
5
+ {
6
+ "idx": 0,
7
+ "version": "6",
8
+ "when": 1788277071454,
9
+ "tag": "0000_framework_init",
10
+ "breakpoints": true
11
+ }
12
+ ]
13
+ }
package/package.json ADDED
@@ -0,0 +1,126 @@
1
+ {
2
+ "name": "@nodefony/drizzle",
3
+ "version": "10.0.0-alpha.1",
4
+ "description": "Moteur SQL de Nodefony sur Drizzle ORM (SQLite, PostgreSQL, MySQL) : dépôts typés, migrations de schéma et adoption d'une base existante",
5
+ "nodefony": {
6
+ "storeKind": "durable",
7
+ "stores": [
8
+ "session",
9
+ "user",
10
+ "tokens",
11
+ "passkeys",
12
+ "totp",
13
+ "audit",
14
+ "webhooks",
15
+ "idempotency"
16
+ ]
17
+ },
18
+ "contributors": [],
19
+ "type": "module",
20
+ "main": "./dist/index.js",
21
+ "types": "./dist/types/index.d.ts",
22
+ "exports": {
23
+ ".": {
24
+ "types": "./dist/types/index.d.ts",
25
+ "import": "./dist/index.js",
26
+ "default": "./dist/index.js"
27
+ }
28
+ },
29
+ "scripts": {
30
+ "start": "node dist/index.js",
31
+ "build": "rimraf dist && rolldown -c rolldown.config.ts && tsgo -p tsconfig.declarations.json",
32
+ "clean": "rimraf dist",
33
+ "generate:migrations": "tsx scripts/generate-migrations.ts",
34
+ "check:migrations": "tsx scripts/check-migrations-drift.ts",
35
+ "dev": "rolldown -c rolldown.config.ts --watch",
36
+ "test": "vitest run",
37
+ "coverage": "vitest run --coverage",
38
+ "test:load": "vitest run --config vitest.config.load.ts",
39
+ "typecheck": "tsgo --noEmit -p tsconfig.json && tsgo --noEmit -p tsconfig.tests.json"
40
+ },
41
+ "private": false,
42
+ "engines": {
43
+ "node": ">=24.0.0"
44
+ },
45
+ "keywords": [
46
+ "nodefony",
47
+ "orm",
48
+ "drizzle",
49
+ "sql",
50
+ "sqlite",
51
+ "postgresql",
52
+ "mysql",
53
+ "migrations",
54
+ "typescript",
55
+ "esm"
56
+ ],
57
+ "dependencies": {
58
+ "drizzle-orm": "0.45.2",
59
+ "tslib": "2.8.1",
60
+ "zod": "^4.4.3"
61
+ },
62
+ "devDependencies": {
63
+ "@nodefony/framework": "*",
64
+ "@nodefony/http": "*",
65
+ "@nodefony/orm-core": "*",
66
+ "@nodefony/security": "*",
67
+ "@nodefony/user": "*",
68
+ "@types/better-sqlite3": "9.6.0",
69
+ "@types/node": "26.4.1",
70
+ "@types/pg": "8.23.1",
71
+ "better-sqlite3": "13.0.3",
72
+ "drizzle-kit": "0.31.10",
73
+ "mysql2": "3.24.3",
74
+ "nodefony": "*",
75
+ "pg": "8.23.0",
76
+ "rimraf": "6.1.3"
77
+ },
78
+ "peerDependencies": {
79
+ "@nodefony/framework": "*",
80
+ "@nodefony/http": "*",
81
+ "@nodefony/orm-core": "*",
82
+ "@nodefony/security": "*",
83
+ "@nodefony/user": "*",
84
+ "better-sqlite3": "^13.0.0",
85
+ "mysql2": "^3.24.0",
86
+ "nodefony": "*",
87
+ "pg": "^8.23.0"
88
+ },
89
+ "repository": {
90
+ "type": "git",
91
+ "url": "git+https://github.com/nodefony/nodefony-core.git",
92
+ "directory": "src/packages/@nodefony/drizzle"
93
+ },
94
+ "license": "CECILL-B",
95
+ "licenses": [
96
+ {
97
+ "type": "CECILL-B",
98
+ "url": "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html"
99
+ }
100
+ ],
101
+ "author": "Christophe CAMENSULI <ccamensuli@gmail.com>",
102
+ "files": [
103
+ "dist",
104
+ "docs",
105
+ "migrations/*/*.sql",
106
+ "migrations/*/meta/_journal.json"
107
+ ],
108
+ "publishConfig": {
109
+ "access": "public"
110
+ },
111
+ "homepage": "https://nodefony.github.io/nodefony-core/",
112
+ "bugs": {
113
+ "url": "https://github.com/nodefony/nodefony-core/issues"
114
+ },
115
+ "peerDependenciesMeta": {
116
+ "better-sqlite3": {
117
+ "optional": true
118
+ },
119
+ "mysql2": {
120
+ "optional": true
121
+ },
122
+ "pg": {
123
+ "optional": true
124
+ }
125
+ }
126
+ }