@undefineds.co/xpod 0.3.31 → 0.3.33

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 (218) hide show
  1. package/dist/api/auth/AuthContext.d.ts +3 -2
  2. package/dist/api/auth/AuthContext.js +2 -1
  3. package/dist/api/auth/AuthContext.js.map +1 -1
  4. package/dist/api/auth/ClientCredentialsAuthenticator.d.ts +2 -12
  5. package/dist/api/auth/ClientCredentialsAuthenticator.js +4 -4
  6. package/dist/api/auth/ClientCredentialsAuthenticator.js.map +1 -1
  7. package/dist/api/auth/ServiceTokenAuthenticator.d.ts +2 -2
  8. package/dist/api/auth/ServiceTokenAuthenticator.js.map +1 -1
  9. package/dist/api/chatkit/pod-store.d.ts +3 -0
  10. package/dist/api/chatkit/pod-store.js +93 -59
  11. package/dist/api/chatkit/pod-store.js.map +1 -1
  12. package/dist/api/chatkit/schema.d.ts +5 -6
  13. package/dist/api/container/business-token.d.ts +1 -1
  14. package/dist/api/container/business-token.js +5 -1
  15. package/dist/api/container/business-token.js.map +1 -1
  16. package/dist/api/container/common.js +14 -10
  17. package/dist/api/container/common.js.map +1 -1
  18. package/dist/api/container/routes.js +16 -3
  19. package/dist/api/container/routes.js.map +1 -1
  20. package/dist/api/container/types.d.ts +2 -4
  21. package/dist/api/container/types.js.map +1 -1
  22. package/dist/api/handlers/ChatHandler.d.ts +1 -1
  23. package/dist/api/handlers/ChatHandler.js +1 -1
  24. package/dist/api/handlers/ChatHandler.js.map +1 -1
  25. package/dist/api/handlers/EdgeNodeSignalHandler.js +3 -1
  26. package/dist/api/handlers/EdgeNodeSignalHandler.js.map +1 -1
  27. package/dist/api/handlers/PodManagementHandler.d.ts +2 -0
  28. package/dist/api/handlers/PodManagementHandler.js +114 -12
  29. package/dist/api/handlers/PodManagementHandler.js.map +1 -1
  30. package/dist/api/handlers/ProvisionHandler.d.ts +27 -0
  31. package/dist/api/handlers/ProvisionHandler.js +339 -32
  32. package/dist/api/handlers/ProvisionHandler.js.map +1 -1
  33. package/dist/api/handlers/QuotaHandler.js +0 -12
  34. package/dist/api/handlers/QuotaHandler.js.map +1 -1
  35. package/dist/api/handlers/index.d.ts +0 -1
  36. package/dist/api/handlers/index.js +0 -1
  37. package/dist/api/handlers/index.js.map +1 -1
  38. package/dist/api/matrix/PodMatrixStore.js +26 -21
  39. package/dist/api/matrix/PodMatrixStore.js.map +1 -1
  40. package/dist/api/runs/InngestRunExecutionBackend.d.ts +2 -2
  41. package/dist/api/runs/schema.d.ts +5 -7
  42. package/dist/api/runs/store.js +6 -4
  43. package/dist/api/runs/store.js.map +1 -1
  44. package/dist/api/runtime.js +3 -3
  45. package/dist/api/runtime.js.map +1 -1
  46. package/dist/api/tasks/InngestTaskScheduler.d.ts +4 -4
  47. package/dist/api/tasks/schema.d.ts +17 -13
  48. package/dist/api/tasks/schema.js +7 -2
  49. package/dist/api/tasks/schema.js.map +1 -1
  50. package/dist/api/tasks/store.js +1 -2
  51. package/dist/api/tasks/store.js.map +1 -1
  52. package/dist/components/context.jsonld +12 -0
  53. package/dist/edge/EdgeNodeAgent.d.ts +1 -1
  54. package/dist/edge/EdgeNodeAgent.js +1 -1
  55. package/dist/edge/EdgeNodeAgent.js.map +1 -1
  56. package/dist/edge/EdgeNodeDnsCoordinator.d.ts +1 -0
  57. package/dist/edge/EdgeNodeDnsCoordinator.js +9 -3
  58. package/dist/edge/EdgeNodeDnsCoordinator.js.map +1 -1
  59. package/dist/edge/EdgeNodeDnsCoordinator.jsonld +4 -0
  60. package/dist/edge/EdgeNodeHealthProbeService.d.ts +3 -0
  61. package/dist/edge/EdgeNodeHealthProbeService.js +22 -2
  62. package/dist/edge/EdgeNodeHealthProbeService.js.map +1 -1
  63. package/dist/edge/EdgeNodeHealthProbeService.jsonld +12 -0
  64. package/dist/http/ClusterIngressRouter.js +6 -3
  65. package/dist/http/ClusterIngressRouter.js.map +1 -1
  66. package/dist/http/ClusterWebSocketConfigurator.js +6 -2
  67. package/dist/http/ClusterWebSocketConfigurator.js.map +1 -1
  68. package/dist/http/EdgeNodeDirectDebugHttpHandler.d.ts +2 -0
  69. package/dist/http/EdgeNodeDirectDebugHttpHandler.js +18 -3
  70. package/dist/http/EdgeNodeDirectDebugHttpHandler.js.map +1 -1
  71. package/dist/http/EdgeNodeDirectDebugHttpHandler.jsonld +8 -0
  72. package/dist/http/EdgeNodeProxyHttpHandler.js +6 -2
  73. package/dist/http/EdgeNodeProxyHttpHandler.js.map +1 -1
  74. package/dist/http/cluster/PodMigrationHttpHandler.d.ts +2 -2
  75. package/dist/http/cluster/PodMigrationHttpHandler.js +2 -2
  76. package/dist/http/cluster/PodMigrationHttpHandler.js.map +1 -1
  77. package/dist/http/quota/QuotaAdminHttpHandler.js +27 -21
  78. package/dist/http/quota/QuotaAdminHttpHandler.js.map +1 -1
  79. package/dist/http/search/SearchHttpHandler.js +2 -2
  80. package/dist/http/search/SearchHttpHandler.js.map +1 -1
  81. package/dist/identity/drizzle/AccountRepository.d.ts +4 -22
  82. package/dist/identity/drizzle/AccountRepository.js +9 -113
  83. package/dist/identity/drizzle/AccountRepository.js.map +1 -1
  84. package/dist/identity/drizzle/AccountRoleRepository.d.ts +5 -5
  85. package/dist/identity/drizzle/AccountRoleRepository.js +204 -97
  86. package/dist/identity/drizzle/AccountRoleRepository.js.map +1 -1
  87. package/dist/identity/drizzle/DdnsRepository.d.ts +5 -20
  88. package/dist/identity/drizzle/DdnsRepository.js +13 -49
  89. package/dist/identity/drizzle/DdnsRepository.js.map +1 -1
  90. package/dist/identity/drizzle/EdgeNodeRepository.d.ts +13 -6
  91. package/dist/identity/drizzle/EdgeNodeRepository.js +167 -66
  92. package/dist/identity/drizzle/EdgeNodeRepository.js.map +1 -1
  93. package/dist/identity/drizzle/PodLookupRepository.d.ts +7 -36
  94. package/dist/identity/drizzle/PodLookupRepository.js +103 -126
  95. package/dist/identity/drizzle/PodLookupRepository.js.map +1 -1
  96. package/dist/identity/drizzle/ServiceTokenRepository.d.ts +13 -1
  97. package/dist/identity/drizzle/ServiceTokenRepository.js +7 -0
  98. package/dist/identity/drizzle/ServiceTokenRepository.js.map +1 -1
  99. package/dist/identity/drizzle/db.d.ts +2 -1
  100. package/dist/identity/drizzle/db.js +173 -297
  101. package/dist/identity/drizzle/db.js.map +1 -1
  102. package/dist/identity/drizzle/schema.pg.d.ts +3 -11
  103. package/dist/identity/drizzle/schema.pg.js +10 -45
  104. package/dist/identity/drizzle/schema.pg.js.map +1 -1
  105. package/dist/identity/drizzle/schema.sqlite.d.ts +88 -531
  106. package/dist/identity/drizzle/schema.sqlite.js +13 -46
  107. package/dist/identity/drizzle/schema.sqlite.js.map +1 -1
  108. package/dist/identity/oidc/ScopedPickWebIdHandler.d.ts +3 -0
  109. package/dist/identity/oidc/ScopedPickWebIdHandler.js +18 -6
  110. package/dist/identity/oidc/ScopedPickWebIdHandler.js.map +1 -1
  111. package/dist/identity/oidc/ScopedPickWebIdHandler.jsonld +22 -0
  112. package/dist/provision/ProvisionCodeCodec.js +10 -1
  113. package/dist/provision/ProvisionCodeCodec.js.map +1 -1
  114. package/dist/provision/ProvisionPodCreator.d.ts +8 -2
  115. package/dist/provision/ProvisionPodCreator.js +134 -41
  116. package/dist/provision/ProvisionPodCreator.js.map +1 -1
  117. package/dist/provision/ProvisionPodCreator.jsonld +38 -3
  118. package/dist/quota/DrizzleQuotaService.d.ts +0 -4
  119. package/dist/quota/DrizzleQuotaService.js +1 -21
  120. package/dist/quota/DrizzleQuotaService.js.map +1 -1
  121. package/dist/quota/DrizzleQuotaService.jsonld +0 -16
  122. package/dist/quota/NoopQuotaService.d.ts +0 -4
  123. package/dist/quota/NoopQuotaService.js +0 -8
  124. package/dist/quota/NoopQuotaService.js.map +1 -1
  125. package/dist/quota/NoopQuotaService.jsonld +0 -16
  126. package/dist/quota/QuotaService.d.ts +0 -4
  127. package/dist/quota/QuotaService.js.map +1 -1
  128. package/dist/quota/QuotaService.jsonld +0 -16
  129. package/dist/service/EdgeNodeSignalClient.d.ts +0 -2
  130. package/dist/service/EdgeNodeSignalClient.js +0 -4
  131. package/dist/service/EdgeNodeSignalClient.js.map +1 -1
  132. package/dist/service/PodMigrationService.d.ts +2 -2
  133. package/dist/service/PodMigrationService.js +4 -4
  134. package/dist/service/PodMigrationService.js.map +1 -1
  135. package/dist/setup/LocalSetupServiceTokenRepository.d.ts +22 -0
  136. package/dist/setup/LocalSetupServiceTokenRepository.js +68 -0
  137. package/dist/setup/LocalSetupServiceTokenRepository.js.map +1 -0
  138. package/dist/storage/quota/PerAccountQuotaStrategy.js +2 -2
  139. package/dist/storage/quota/PerAccountQuotaStrategy.js.map +1 -1
  140. package/dist/storage/quota/UsageRepository.d.ts +10 -32
  141. package/dist/storage/quota/UsageRepository.js +84 -281
  142. package/dist/storage/quota/UsageRepository.js.map +1 -1
  143. package/dist/storage/vector/VectorIndexingListener.js +2 -2
  144. package/dist/storage/vector/VectorIndexingListener.js.map +1 -1
  145. package/dist/subdomain/SubdomainService.d.ts +1 -1
  146. package/dist/subdomain/SubdomainService.js +1 -1
  147. package/dist/subdomain/SubdomainService.js.map +1 -1
  148. package/dist/subdomain/SubdomainService.jsonld +1 -1
  149. package/node_modules/@undefineds.co/drizzle-solid/dist/core/exact-records.d.ts +21 -0
  150. package/node_modules/@undefineds.co/drizzle-solid/dist/core/exact-records.d.ts.map +1 -0
  151. package/node_modules/@undefineds.co/drizzle-solid/dist/core/exact-records.js +85 -0
  152. package/node_modules/@undefineds.co/drizzle-solid/dist/core/exact-records.js.map +1 -0
  153. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/default-id-template.d.ts +10 -0
  154. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/default-id-template.d.ts.map +1 -0
  155. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/default-id-template.js +365 -0
  156. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/default-id-template.js.map +1 -0
  157. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/index.d.ts +1 -0
  158. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/index.d.ts.map +1 -1
  159. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/index.js +3 -1
  160. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/index.js.map +1 -1
  161. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.d.ts.map +1 -1
  162. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.js +5 -1
  163. package/node_modules/@undefineds.co/drizzle-solid/dist/core/query-builders/insert-query-builder.js.map +1 -1
  164. package/node_modules/@undefineds.co/drizzle-solid/dist/core/repository.d.ts +2 -0
  165. package/node_modules/@undefineds.co/drizzle-solid/dist/core/repository.d.ts.map +1 -1
  166. package/node_modules/@undefineds.co/drizzle-solid/dist/core/repository.js +2 -1
  167. package/node_modules/@undefineds.co/drizzle-solid/dist/core/repository.js.map +1 -1
  168. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.d.ts +18 -0
  169. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.d.ts.map +1 -1
  170. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.js +234 -10
  171. package/node_modules/@undefineds.co/drizzle-solid/dist/core/resource-reference.js.map +1 -1
  172. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.d.ts +13 -0
  173. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.d.ts.map +1 -1
  174. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.js +19 -0
  175. package/node_modules/@undefineds.co/drizzle-solid/dist/core/schema/pod-table.js.map +1 -1
  176. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/exact-records.d.ts +21 -0
  177. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/exact-records.d.ts.map +1 -0
  178. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/exact-records.js +78 -0
  179. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/exact-records.js.map +1 -0
  180. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/default-id-template.d.ts +10 -0
  181. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/default-id-template.d.ts.map +1 -0
  182. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/default-id-template.js +362 -0
  183. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/default-id-template.js.map +1 -0
  184. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/index.d.ts +1 -0
  185. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/index.d.ts.map +1 -1
  186. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/index.js +1 -0
  187. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/index.js.map +1 -1
  188. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.d.ts.map +1 -1
  189. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.js +5 -1
  190. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/query-builders/insert-query-builder.js.map +1 -1
  191. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/repository.d.ts +2 -0
  192. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/repository.d.ts.map +1 -1
  193. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/repository.js +1 -0
  194. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/repository.js.map +1 -1
  195. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts +18 -0
  196. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.d.ts.map +1 -1
  197. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.js +225 -10
  198. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/resource-reference.js.map +1 -1
  199. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts +13 -0
  200. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.d.ts.map +1 -1
  201. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.js +19 -0
  202. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/schema/pod-table.js.map +1 -1
  203. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/index.d.ts +5 -4
  204. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/index.d.ts.map +1 -1
  205. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/index.js +4 -3
  206. package/node_modules/@undefineds.co/drizzle-solid/dist/esm/index.js.map +1 -1
  207. package/node_modules/@undefineds.co/drizzle-solid/dist/index.d.ts +5 -4
  208. package/node_modules/@undefineds.co/drizzle-solid/dist/index.d.ts.map +1 -1
  209. package/node_modules/@undefineds.co/drizzle-solid/dist/index.js +20 -3
  210. package/node_modules/@undefineds.co/drizzle-solid/dist/index.js.map +1 -1
  211. package/node_modules/@undefineds.co/drizzle-solid/package.json +1 -1
  212. package/package.json +3 -3
  213. package/dist/api/handlers/ApiKeyHandler.d.ts +0 -15
  214. package/dist/api/handlers/ApiKeyHandler.js +0 -153
  215. package/dist/api/handlers/ApiKeyHandler.js.map +0 -1
  216. package/dist/api/store/DrizzleClientCredentialsStore.d.ts +0 -51
  217. package/dist/api/store/DrizzleClientCredentialsStore.js +0 -115
  218. package/dist/api/store/DrizzleClientCredentialsStore.js.map +0 -1
@@ -14,9 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.UpdateQueryBuilder = exports.InsertQueryBuilder = exports.SelectQueryBuilder = exports.createNodeModuleSparqlEngineFactory = exports.configureSparqlEngine = exports.ProfileManager = exports.isSolidSchema = exports.SolidSchema = exports.solidSchema = exports.relations = exports.id = exports.jsonb = exports.double = exports.float = exports.numeric = exports.decimal = exports.real = exports.serial = exports.mediumint = exports.tinyint = exports.smallint = exports.bigint = exports.datetime = exports.timestamp = exports.char = exports.varchar = exports.text = exports.iri = exports.uri = exports.object = exports.json = exports.date = exports.boolean = exports.integer = exports.int = exports.string = exports.alias = exports.podTable = exports.initSolidTables = exports.definePodRepository = exports.createRepositoryDescriptor = exports.extractPodResourceTemplateValue = exports.parsePodResourceRef = exports.resolveRowSubject = exports.findByIRI = exports.drizzle = exports.PodEntity = exports.PodCollection = exports.PodClient = exports.pod = void 0;
18
- exports.conditions = exports.notExists = exports.exists = exports.not = exports.or = exports.and = exports.isNotNull = exports.isNull = exports.notInArray = exports.inArray = exports.regex = exports.notBetween = exports.between = exports.ilike = exports.like = exports.lte = exports.lt = exports.gte = exports.gt = exports.ne = exports.eq = exports.getTableSchema = exports.TableSchemaBuilder = exports.createUpdateSchema = exports.createInsertSchema = exports.createTableSchema = exports.typedTable = exports.CommonFields = exports.field = exports.createTypedTable = exports.rdfTypeToTypeScript = exports.findPredicateType = exports.validatePredicateType = exports.getPredicateTypeScriptType = exports.parseRDFSchema = exports.extendNamespace = exports.parseRDFResponse = exports.validateRDFData = exports.batchThingOperations = exports.deleteThing = exports.updateThing = exports.readThing = exports.createThing = exports.SHAPETREES = exports.INTEROP = exports.ProviderCache = exports.SHACL = exports.XSD = exports.DrizzleShapeManager = exports.DeleteQueryBuilder = void 0;
19
- exports.federatedQueryExecutor = exports.FederatedQueryExecutor = exports.NotificationsClient = exports.saveWithConflictResolution = exports.createConflictResolver = exports.ConflictResolver = exports.max = exports.min = exports.avg = exports.sum = exports.count = exports.desc = exports.asc = void 0;
17
+ exports.decimal = exports.real = exports.serial = exports.mediumint = exports.tinyint = exports.smallint = exports.bigint = exports.datetime = exports.timestamp = exports.char = exports.varchar = exports.text = exports.iri = exports.uri = exports.object = exports.json = exports.date = exports.boolean = exports.integer = exports.int = exports.string = exports.alias = exports.podTable = exports.initSolidTables = exports.initSolidResources = exports.definePodRepository = exports.createRepositoryDescriptor = exports.resolvePodResourceTemplateValue = exports.resolvePodResourceId = exports.resolvePodResourceIriForDatabase = exports.resolvePodBaseUrlFromDatabase = exports.resolvePodBaseUrl = exports.normalizePodDataResourceId = exports.extractPodResourceTemplateValue = exports.parsePodResourceRef = exports.buildPodResourceIriForResource = exports.buildPodResourceIriForDatabase = exports.buildPodResourceIri = exports.upsertExactRecord = exports.updateExactRecord = exports.insertExactRecordOnce = exports.findExactRecord = exports.deleteExactRecord = exports.resolveRowSubject = exports.findByIRI = exports.drizzle = exports.PodEntity = exports.PodCollection = exports.PodClient = exports.pod = void 0;
18
+ exports.lt = exports.gte = exports.gt = exports.ne = exports.eq = exports.getTableSchema = exports.TableSchemaBuilder = exports.createUpdateSchema = exports.createInsertSchema = exports.createTableSchema = exports.typedTable = exports.CommonFields = exports.field = exports.createTypedTable = exports.rdfTypeToTypeScript = exports.findPredicateType = exports.validatePredicateType = exports.getPredicateTypeScriptType = exports.parseRDFSchema = exports.extendNamespace = exports.parseRDFResponse = exports.validateRDFData = exports.batchThingOperations = exports.deleteThing = exports.updateThing = exports.readThing = exports.createThing = exports.SHAPETREES = exports.INTEROP = exports.ProviderCache = exports.SHACL = exports.XSD = exports.DrizzleShapeManager = exports.renderDefaultIdTemplate = exports.DeleteQueryBuilder = exports.UpdateQueryBuilder = exports.InsertQueryBuilder = exports.SelectQueryBuilder = exports.createNodeModuleSparqlEngineFactory = exports.configureSparqlEngine = exports.ProfileManager = exports.isSolidSchema = exports.SolidSchema = exports.solidSchema = exports.relations = exports.id = exports.jsonb = exports.double = exports.float = exports.numeric = void 0;
19
+ exports.federatedQueryExecutor = exports.FederatedQueryExecutor = exports.NotificationsClient = exports.saveWithConflictResolution = exports.createConflictResolver = exports.ConflictResolver = exports.max = exports.min = exports.avg = exports.sum = exports.count = exports.desc = exports.asc = exports.conditions = exports.notExists = exports.exists = exports.not = exports.or = exports.and = exports.isNotNull = exports.isNull = exports.notInArray = exports.inArray = exports.regex = exports.notBetween = exports.between = exports.ilike = exports.like = exports.lte = void 0;
20
20
  // 主要公开入口
21
21
  var pod_1 = require("./pod");
22
22
  Object.defineProperty(exports, "pod", { enumerable: true, get: function () { return pod_1.pod; } });
@@ -31,12 +31,28 @@ var find_by_iri_1 = require("./utils/find-by-iri");
31
31
  Object.defineProperty(exports, "findByIRI", { enumerable: true, get: function () { return find_by_iri_1.findByIRI; } });
32
32
  var helpers_1 = require("./core/query-builders/helpers");
33
33
  Object.defineProperty(exports, "resolveRowSubject", { enumerable: true, get: function () { return helpers_1.resolveRowSubject; } });
34
+ var exact_records_1 = require("./core/exact-records");
35
+ Object.defineProperty(exports, "deleteExactRecord", { enumerable: true, get: function () { return exact_records_1.deleteExactRecord; } });
36
+ Object.defineProperty(exports, "findExactRecord", { enumerable: true, get: function () { return exact_records_1.findExactRecord; } });
37
+ Object.defineProperty(exports, "insertExactRecordOnce", { enumerable: true, get: function () { return exact_records_1.insertExactRecordOnce; } });
38
+ Object.defineProperty(exports, "updateExactRecord", { enumerable: true, get: function () { return exact_records_1.updateExactRecord; } });
39
+ Object.defineProperty(exports, "upsertExactRecord", { enumerable: true, get: function () { return exact_records_1.upsertExactRecord; } });
34
40
  var resource_reference_1 = require("./core/resource-reference");
41
+ Object.defineProperty(exports, "buildPodResourceIri", { enumerable: true, get: function () { return resource_reference_1.buildPodResourceIri; } });
42
+ Object.defineProperty(exports, "buildPodResourceIriForDatabase", { enumerable: true, get: function () { return resource_reference_1.buildPodResourceIriForDatabase; } });
43
+ Object.defineProperty(exports, "buildPodResourceIriForResource", { enumerable: true, get: function () { return resource_reference_1.buildPodResourceIriForResource; } });
35
44
  Object.defineProperty(exports, "parsePodResourceRef", { enumerable: true, get: function () { return resource_reference_1.parsePodResourceRef; } });
36
45
  Object.defineProperty(exports, "extractPodResourceTemplateValue", { enumerable: true, get: function () { return resource_reference_1.extractPodResourceTemplateValue; } });
46
+ Object.defineProperty(exports, "normalizePodDataResourceId", { enumerable: true, get: function () { return resource_reference_1.normalizePodDataResourceId; } });
47
+ Object.defineProperty(exports, "resolvePodBaseUrl", { enumerable: true, get: function () { return resource_reference_1.resolvePodBaseUrl; } });
48
+ Object.defineProperty(exports, "resolvePodBaseUrlFromDatabase", { enumerable: true, get: function () { return resource_reference_1.resolvePodBaseUrlFromDatabase; } });
49
+ Object.defineProperty(exports, "resolvePodResourceIriForDatabase", { enumerable: true, get: function () { return resource_reference_1.resolvePodResourceIriForDatabase; } });
50
+ Object.defineProperty(exports, "resolvePodResourceId", { enumerable: true, get: function () { return resource_reference_1.resolvePodResourceId; } });
51
+ Object.defineProperty(exports, "resolvePodResourceTemplateValue", { enumerable: true, get: function () { return resource_reference_1.resolvePodResourceTemplateValue; } });
37
52
  var repository_1 = require("./core/repository");
38
53
  Object.defineProperty(exports, "createRepositoryDescriptor", { enumerable: true, get: function () { return repository_1.createRepositoryDescriptor; } });
39
54
  Object.defineProperty(exports, "definePodRepository", { enumerable: true, get: function () { return repository_1.definePodRepository; } });
55
+ Object.defineProperty(exports, "initSolidResources", { enumerable: true, get: function () { return repository_1.initSolidResources; } });
40
56
  Object.defineProperty(exports, "initSolidTables", { enumerable: true, get: function () { return repository_1.initSolidTables; } });
41
57
  // 表和列构建器
42
58
  var schema_1 = require("./core/schema");
@@ -88,6 +104,7 @@ Object.defineProperty(exports, "SelectQueryBuilder", { enumerable: true, get: fu
88
104
  Object.defineProperty(exports, "InsertQueryBuilder", { enumerable: true, get: function () { return query_builders_1.InsertQueryBuilder; } });
89
105
  Object.defineProperty(exports, "UpdateQueryBuilder", { enumerable: true, get: function () { return query_builders_1.UpdateQueryBuilder; } });
90
106
  Object.defineProperty(exports, "DeleteQueryBuilder", { enumerable: true, get: function () { return query_builders_1.DeleteQueryBuilder; } });
107
+ Object.defineProperty(exports, "renderDefaultIdTemplate", { enumerable: true, get: function () { return query_builders_1.renderDefaultIdTemplate; } });
91
108
  // Shape 管理
92
109
  var shape_1 = require("./core/shape");
93
110
  Object.defineProperty(exports, "DrizzleShapeManager", { enumerable: true, get: function () { return shape_1.DrizzleShapeManager; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@undefineds.co/drizzle-solid",
3
- "version": "0.3.13",
3
+ "version": "0.3.14",
4
4
  "description": "Drizzle ORM adapter for Solid Pods",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@undefineds.co/xpod",
3
- "version": "0.3.31",
3
+ "version": "0.3.33",
4
4
  "description": "Xpod is an extended Community Solid Server, offering rich-feature, production-level Solid Pod and identity management.",
5
5
  "repository": "https://github.com/undefinedsco/xpod",
6
6
  "author": "developer@undefineds.co",
@@ -161,8 +161,8 @@
161
161
  "@inrupt/solid-client-authn-node": "^3.1.0",
162
162
  "@mariozechner/pi-coding-agent": "^0.55.1",
163
163
  "@solid/community-server": "8.0.0-alpha.1",
164
- "@undefineds.co/drizzle-solid": "0.3.13",
165
- "@undefineds.co/models": "0.2.34",
164
+ "@undefineds.co/drizzle-solid": "0.3.14",
165
+ "@undefineds.co/models": "0.2.38",
166
166
  "abstract-level": "^1.0.4",
167
167
  "acme-client": "^5.1.3",
168
168
  "ai": "^6.0.6",
@@ -1,15 +0,0 @@
1
- import type { ApiServer } from '../ApiServer';
2
- import type { DrizzleClientCredentialsStore } from '../store/DrizzleClientCredentialsStore';
3
- export interface ApiKeyHandlerOptions {
4
- store: DrizzleClientCredentialsStore;
5
- }
6
- /**
7
- * Handler for API Key management
8
- *
9
- * GET /v1/keys - List user's API keys
10
- * POST /v1/keys - Store a new API key (after creating in CSS)
11
- * DELETE /v1/keys/:clientId - Delete an API key
12
- *
13
- * All endpoints require Solid Token (only frontend can manage keys)
14
- */
15
- export declare function registerApiKeyRoutes(server: ApiServer, options: ApiKeyHandlerOptions): void;
@@ -1,153 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerApiKeyRoutes = registerApiKeyRoutes;
4
- const global_logger_factory_1 = require("global-logger-factory");
5
- const AuthContext_1 = require("../auth/AuthContext");
6
- /**
7
- * Handler for API Key management
8
- *
9
- * GET /v1/keys - List user's API keys
10
- * POST /v1/keys - Store a new API key (after creating in CSS)
11
- * DELETE /v1/keys/:clientId - Delete an API key
12
- *
13
- * All endpoints require Solid Token (only frontend can manage keys)
14
- */
15
- function registerApiKeyRoutes(server, options) {
16
- const logger = (0, global_logger_factory_1.getLoggerFor)('ApiKeyHandler');
17
- const store = options.store;
18
- const rejectApiKey = (request, response) => {
19
- const auth = request.auth;
20
- if (auth && (0, AuthContext_1.isSolidAuth)(auth) && auth.viaApiKey) {
21
- sendJson(response, 403, { error: 'API key is not allowed for this endpoint' });
22
- return true;
23
- }
24
- return false;
25
- };
26
- // GET /v1/keys - List user's API keys
27
- server.get('/v1/keys', async (request, response, _params) => {
28
- if (rejectApiKey(request, response)) {
29
- return;
30
- }
31
- const auth = request.auth;
32
- const webId = (0, AuthContext_1.getWebId)(auth);
33
- if (!webId) {
34
- sendJson(response, 400, { error: 'Cannot determine user' });
35
- return;
36
- }
37
- try {
38
- // Use webId as account identifier
39
- const keys = await store.listByAccount(webId);
40
- sendJson(response, 200, {
41
- keys: keys.map((k) => ({
42
- clientId: k.clientId,
43
- webId: k.webId,
44
- displayName: k.displayName,
45
- createdAt: k.createdAt.toISOString(),
46
- })),
47
- });
48
- }
49
- catch (error) {
50
- logger.error(`Failed to list API keys: ${error}`);
51
- sendJson(response, 500, { error: 'Failed to list keys' });
52
- }
53
- });
54
- // POST /v1/keys - Store API key (frontend calls this after creating credentials in CSS)
55
- server.post('/v1/keys', async (request, response, _params) => {
56
- if (rejectApiKey(request, response)) {
57
- return;
58
- }
59
- const auth = request.auth;
60
- const webId = (0, AuthContext_1.getWebId)(auth);
61
- if (!webId) {
62
- sendJson(response, 400, { error: 'Cannot determine user' });
63
- return;
64
- }
65
- const body = await readJsonBody(request);
66
- if (!body || typeof body !== 'object') {
67
- sendJson(response, 400, { error: 'Request body must be a JSON object' });
68
- return;
69
- }
70
- const payload = body;
71
- // These come from CSS client credentials creation
72
- const clientId = payload.clientId;
73
- const displayName = typeof payload.displayName === 'string' ? payload.displayName : undefined;
74
- if (typeof clientId !== 'string' || !clientId.trim()) {
75
- sendJson(response, 400, { error: 'clientId is required' });
76
- return;
77
- }
78
- try {
79
- // Use webId as account identifier
80
- await store.store({
81
- clientId,
82
- webId,
83
- accountId: webId,
84
- displayName,
85
- });
86
- logger.info(`Stored API key ${clientId} for user ${webId}`);
87
- sendJson(response, 201, {
88
- clientId,
89
- displayName,
90
- message: 'API key stored successfully.',
91
- });
92
- }
93
- catch (error) {
94
- logger.error(`Failed to store API key: ${error}`);
95
- sendJson(response, 500, { error: 'Failed to store key' });
96
- }
97
- });
98
- // DELETE /v1/keys/:clientId - Delete an API key
99
- server.delete('/v1/keys/:clientId', async (request, response, params) => {
100
- if (rejectApiKey(request, response)) {
101
- return;
102
- }
103
- const auth = request.auth;
104
- const webId = (0, AuthContext_1.getWebId)(auth);
105
- const clientId = decodeURIComponent(params.clientId);
106
- if (!webId) {
107
- sendJson(response, 400, { error: 'Cannot determine user' });
108
- return;
109
- }
110
- try {
111
- // Delete with webId check to ensure ownership
112
- const deleted = await store.delete(clientId, webId);
113
- if (!deleted) {
114
- sendJson(response, 404, { error: 'Key not found or access denied' });
115
- return;
116
- }
117
- logger.info(`Deleted API key ${clientId}`);
118
- sendJson(response, 200, { status: 'deleted', clientId });
119
- }
120
- catch (error) {
121
- logger.error(`Failed to delete API key: ${error}`);
122
- sendJson(response, 500, { error: 'Failed to delete key' });
123
- }
124
- });
125
- }
126
- async function readJsonBody(request) {
127
- return new Promise((resolve, reject) => {
128
- let data = '';
129
- request.setEncoding('utf8');
130
- request.on('data', (chunk) => {
131
- data += chunk;
132
- });
133
- request.on('end', () => {
134
- if (!data) {
135
- resolve(undefined);
136
- return;
137
- }
138
- try {
139
- resolve(JSON.parse(data));
140
- }
141
- catch {
142
- resolve(undefined);
143
- }
144
- });
145
- request.on('error', reject);
146
- });
147
- }
148
- function sendJson(response, status, data) {
149
- response.statusCode = status;
150
- response.setHeader('Content-Type', 'application/json');
151
- response.end(JSON.stringify(data));
152
- }
153
- //# sourceMappingURL=ApiKeyHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ApiKeyHandler.js","sourceRoot":"","sources":["../../../src/api/handlers/ApiKeyHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ServerResponse } from 'node:http';\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { AuthenticatedRequest } from '../middleware/AuthMiddleware';\nimport type { ApiServer } from '../ApiServer';\nimport type { DrizzleClientCredentialsStore } from '../store/DrizzleClientCredentialsStore';\nimport { getWebId, isSolidAuth } from '../auth/AuthContext';\n\nexport interface ApiKeyHandlerOptions {\n store: DrizzleClientCredentialsStore;\n}\n\n/**\n * Handler for API Key management\n * \n * GET /v1/keys - List user's API keys\n * POST /v1/keys - Store a new API key (after creating in CSS)\n * DELETE /v1/keys/:clientId - Delete an API key\n * \n * All endpoints require Solid Token (only frontend can manage keys)\n */\nexport function registerApiKeyRoutes(server: ApiServer, options: ApiKeyHandlerOptions): void {\n const logger = getLoggerFor('ApiKeyHandler');\n const store = options.store;\n\n const rejectApiKey = (request: AuthenticatedRequest, response: ServerResponse): boolean => {\n const auth = request.auth;\n if (auth && isSolidAuth(auth) && auth.viaApiKey) {\n sendJson(response, 403, { error: 'API key is not allowed for this endpoint' });\n return true;\n }\n return false;\n };\n\n // GET /v1/keys - List user's API keys\n server.get('/v1/keys', async (request, response, _params) => {\n if (rejectApiKey(request, response)) {\n return;\n }\n const auth = request.auth!;\n const webId = getWebId(auth);\n\n if (!webId) {\n sendJson(response, 400, { error: 'Cannot determine user' });\n return;\n }\n\n try {\n // Use webId as account identifier\n const keys = await store.listByAccount(webId);\n sendJson(response, 200, {\n keys: keys.map((k) => ({\n clientId: k.clientId,\n webId: k.webId,\n displayName: k.displayName,\n createdAt: k.createdAt.toISOString(),\n })),\n });\n } catch (error) {\n logger.error(`Failed to list API keys: ${error}`);\n sendJson(response, 500, { error: 'Failed to list keys' });\n }\n });\n\n // POST /v1/keys - Store API key (frontend calls this after creating credentials in CSS)\n server.post('/v1/keys', async (request, response, _params) => {\n if (rejectApiKey(request, response)) {\n return;\n }\n const auth = request.auth!;\n const webId = getWebId(auth);\n\n if (!webId) {\n sendJson(response, 400, { error: 'Cannot determine user' });\n return;\n }\n\n const body = await readJsonBody(request);\n if (!body || typeof body !== 'object') {\n sendJson(response, 400, { error: 'Request body must be a JSON object' });\n return;\n }\n\n const payload = body as Record<string, unknown>;\n\n // These come from CSS client credentials creation\n const clientId = payload.clientId;\n const displayName = typeof payload.displayName === 'string' ? payload.displayName : undefined;\n\n if (typeof clientId !== 'string' || !clientId.trim()) {\n sendJson(response, 400, { error: 'clientId is required' });\n return;\n }\n\n try {\n // Use webId as account identifier\n await store.store({\n clientId,\n webId,\n accountId: webId,\n displayName,\n });\n\n logger.info(`Stored API key ${clientId} for user ${webId}`);\n\n sendJson(response, 201, {\n clientId,\n displayName,\n message: 'API key stored successfully.',\n });\n } catch (error) {\n logger.error(`Failed to store API key: ${error}`);\n sendJson(response, 500, { error: 'Failed to store key' });\n }\n });\n\n // DELETE /v1/keys/:clientId - Delete an API key\n server.delete('/v1/keys/:clientId', async (request, response, params) => {\n if (rejectApiKey(request, response)) {\n return;\n }\n const auth = request.auth!;\n const webId = getWebId(auth);\n const clientId = decodeURIComponent(params.clientId);\n\n if (!webId) {\n sendJson(response, 400, { error: 'Cannot determine user' });\n return;\n }\n\n try {\n // Delete with webId check to ensure ownership\n const deleted = await store.delete(clientId, webId);\n if (!deleted) {\n sendJson(response, 404, { error: 'Key not found or access denied' });\n return;\n }\n\n logger.info(`Deleted API key ${clientId}`);\n sendJson(response, 200, { status: 'deleted', clientId });\n } catch (error) {\n logger.error(`Failed to delete API key: ${error}`);\n sendJson(response, 500, { error: 'Failed to delete key' });\n }\n });\n}\n\nasync function readJsonBody(request: AuthenticatedRequest): Promise<unknown> {\n return new Promise((resolve, reject) => {\n let data = '';\n request.setEncoding('utf8');\n request.on('data', (chunk: string) => {\n data += chunk;\n });\n request.on('end', () => {\n if (!data) {\n resolve(undefined);\n return;\n }\n try {\n resolve(JSON.parse(data));\n } catch {\n resolve(undefined);\n }\n });\n request.on('error', reject);\n });\n}\n\nfunction sendJson(response: ServerResponse, status: number, data: unknown): void {\n response.statusCode = status;\n response.setHeader('Content-Type', 'application/json');\n response.end(JSON.stringify(data));\n}"]}
@@ -1,51 +0,0 @@
1
- import type { IdentityDatabase } from '../../identity/drizzle/db';
2
- import type { ClientCredentialsRecord, ClientCredentialsStore } from '../auth/ClientCredentialsAuthenticator';
3
- export interface DrizzleClientCredentialsStoreOptions {
4
- db: IdentityDatabase;
5
- /**
6
- * Whether using SQLite (default: false for PostgreSQL)
7
- */
8
- isSqlite?: boolean;
9
- }
10
- /**
11
- * Storage for API Keys (client credentials) using Drizzle ORM
12
- *
13
- * Only stores clientId → webId/accountId mapping.
14
- * The actual clientSecret lives in the sk-xxx token and is never persisted.
15
- */
16
- export declare class DrizzleClientCredentialsStore implements ClientCredentialsStore {
17
- private readonly logger;
18
- private readonly db;
19
- private readonly apiClientCredentials;
20
- constructor(options: DrizzleClientCredentialsStoreOptions);
21
- /**
22
- * Store API Key registration (called when user creates API Key via frontend)
23
- */
24
- store(options: {
25
- clientId: string;
26
- webId: string;
27
- accountId: string;
28
- displayName?: string;
29
- }): Promise<void>;
30
- /**
31
- * Find by client_id (the "API Key")
32
- */
33
- findByClientId(clientId: string): Promise<ClientCredentialsRecord | undefined>;
34
- /**
35
- * List API Keys for an account
36
- */
37
- listByAccount(accountId: string): Promise<Array<{
38
- clientId: string;
39
- webId: string;
40
- displayName?: string;
41
- createdAt: Date;
42
- }>>;
43
- /**
44
- * Find the most recently created API Key for an account.
45
- */
46
- findByAccountId(accountId: string): Promise<ClientCredentialsRecord | undefined>;
47
- /**
48
- * Delete an API Key
49
- */
50
- delete(clientId: string, accountId?: string): Promise<boolean>;
51
- }
@@ -1,115 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DrizzleClientCredentialsStore = void 0;
4
- const drizzle_orm_1 = require("drizzle-orm");
5
- const global_logger_factory_1 = require("global-logger-factory");
6
- const schema_pg_1 = require("../../identity/drizzle/schema.pg");
7
- const schema_sqlite_1 = require("../../identity/drizzle/schema.sqlite");
8
- /**
9
- * Storage for API Keys (client credentials) using Drizzle ORM
10
- *
11
- * Only stores clientId → webId/accountId mapping.
12
- * The actual clientSecret lives in the sk-xxx token and is never persisted.
13
- */
14
- class DrizzleClientCredentialsStore {
15
- constructor(options) {
16
- this.logger = (0, global_logger_factory_1.getLoggerFor)(this);
17
- this.db = options.db;
18
- this.apiClientCredentials = options.isSqlite ? schema_sqlite_1.apiClientCredentials : schema_pg_1.apiClientCredentials;
19
- }
20
- /**
21
- * Store API Key registration (called when user creates API Key via frontend)
22
- */
23
- async store(options) {
24
- await this.db
25
- .insert(this.apiClientCredentials)
26
- .values({
27
- clientId: options.clientId,
28
- webId: options.webId,
29
- accountId: options.accountId,
30
- displayName: options.displayName ?? null,
31
- })
32
- .onConflictDoUpdate({
33
- target: this.apiClientCredentials.clientId,
34
- set: {
35
- displayName: options.displayName ?? null,
36
- },
37
- });
38
- this.logger.info(`Stored API Key: ${options.clientId}`);
39
- }
40
- /**
41
- * Find by client_id (the "API Key")
42
- */
43
- async findByClientId(clientId) {
44
- const rows = await this.db
45
- .select()
46
- .from(this.apiClientCredentials)
47
- .where((0, drizzle_orm_1.eq)(this.apiClientCredentials.clientId, clientId))
48
- .limit(1);
49
- if (rows.length === 0) {
50
- return undefined;
51
- }
52
- const row = rows[0];
53
- return {
54
- clientId: row.clientId,
55
- webId: row.webId,
56
- accountId: row.accountId,
57
- displayName: row.displayName ?? undefined,
58
- createdAt: row.createdAt,
59
- };
60
- }
61
- /**
62
- * List API Keys for an account
63
- */
64
- async listByAccount(accountId) {
65
- const rows = await this.db
66
- .select({
67
- clientId: this.apiClientCredentials.clientId,
68
- webId: this.apiClientCredentials.webId,
69
- displayName: this.apiClientCredentials.displayName,
70
- createdAt: this.apiClientCredentials.createdAt,
71
- })
72
- .from(this.apiClientCredentials)
73
- .where((0, drizzle_orm_1.eq)(this.apiClientCredentials.accountId, accountId))
74
- .orderBy((0, drizzle_orm_1.sql) `${this.apiClientCredentials.createdAt} DESC`);
75
- return rows.map((row) => ({
76
- clientId: row.clientId,
77
- webId: row.webId,
78
- displayName: row.displayName ?? undefined,
79
- createdAt: row.createdAt,
80
- }));
81
- }
82
- /**
83
- * Find the most recently created API Key for an account.
84
- */
85
- async findByAccountId(accountId) {
86
- const rows = await this.db
87
- .select()
88
- .from(this.apiClientCredentials)
89
- .where((0, drizzle_orm_1.eq)(this.apiClientCredentials.accountId, accountId))
90
- .orderBy((0, drizzle_orm_1.sql) `${this.apiClientCredentials.createdAt} DESC`)
91
- .limit(1);
92
- if (rows.length === 0) {
93
- return undefined;
94
- }
95
- const row = rows[0];
96
- return {
97
- clientId: row.clientId,
98
- webId: row.webId,
99
- accountId: row.accountId,
100
- displayName: row.displayName ?? undefined,
101
- createdAt: row.createdAt,
102
- };
103
- }
104
- /**
105
- * Delete an API Key
106
- */
107
- async delete(clientId, accountId) {
108
- await this.db
109
- .delete(this.apiClientCredentials)
110
- .where((0, drizzle_orm_1.eq)(this.apiClientCredentials.clientId, clientId));
111
- return true;
112
- }
113
- }
114
- exports.DrizzleClientCredentialsStore = DrizzleClientCredentialsStore;
115
- //# sourceMappingURL=DrizzleClientCredentialsStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DrizzleClientCredentialsStore.js","sourceRoot":"","sources":["../../../src/api/store/DrizzleClientCredentialsStore.ts"],"names":[],"mappings":"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","sourcesContent":["import { eq, sql } from 'drizzle-orm';\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { IdentityDatabase } from '../../identity/drizzle/db';\nimport { apiClientCredentials as pgApiClientCredentials } from '../../identity/drizzle/schema.pg';\nimport { apiClientCredentials as sqliteApiClientCredentials } from '../../identity/drizzle/schema.sqlite';\nimport type { ClientCredentialsRecord, ClientCredentialsStore } from '../auth/ClientCredentialsAuthenticator';\n\nexport interface DrizzleClientCredentialsStoreOptions {\n db: IdentityDatabase;\n /**\n * Whether using SQLite (default: false for PostgreSQL)\n */\n isSqlite?: boolean;\n}\n\n/**\n * Storage for API Keys (client credentials) using Drizzle ORM\n *\n * Only stores clientId → webId/accountId mapping.\n * The actual clientSecret lives in the sk-xxx token and is never persisted.\n */\nexport class DrizzleClientCredentialsStore implements ClientCredentialsStore {\n private readonly logger = getLoggerFor(this);\n private readonly db: IdentityDatabase;\n private readonly apiClientCredentials: typeof pgApiClientCredentials | typeof sqliteApiClientCredentials;\n\n public constructor(options: DrizzleClientCredentialsStoreOptions) {\n this.db = options.db;\n this.apiClientCredentials = options.isSqlite ? sqliteApiClientCredentials : pgApiClientCredentials;\n }\n\n /**\n * Store API Key registration (called when user creates API Key via frontend)\n */\n public async store(options: {\n clientId: string;\n webId: string;\n accountId: string;\n displayName?: string;\n }): Promise<void> {\n await this.db\n .insert(this.apiClientCredentials)\n .values({\n clientId: options.clientId,\n webId: options.webId,\n accountId: options.accountId,\n displayName: options.displayName ?? null,\n })\n .onConflictDoUpdate({\n target: this.apiClientCredentials.clientId,\n set: {\n displayName: options.displayName ?? null,\n },\n });\n\n this.logger.info(`Stored API Key: ${options.clientId}`);\n }\n\n /**\n * Find by client_id (the \"API Key\")\n */\n public async findByClientId(clientId: string): Promise<ClientCredentialsRecord | undefined> {\n const rows = await this.db\n .select()\n .from(this.apiClientCredentials)\n .where(eq(this.apiClientCredentials.clientId, clientId))\n .limit(1);\n\n if (rows.length === 0) {\n return undefined;\n }\n\n const row = rows[0];\n return {\n clientId: row.clientId,\n webId: row.webId,\n accountId: row.accountId,\n displayName: row.displayName ?? undefined,\n createdAt: row.createdAt,\n };\n }\n\n /**\n * List API Keys for an account\n */\n public async listByAccount(accountId: string): Promise<Array<{\n clientId: string;\n webId: string;\n displayName?: string;\n createdAt: Date;\n }>> {\n const rows = await this.db\n .select({\n clientId: this.apiClientCredentials.clientId,\n webId: this.apiClientCredentials.webId,\n displayName: this.apiClientCredentials.displayName,\n createdAt: this.apiClientCredentials.createdAt,\n })\n .from(this.apiClientCredentials)\n .where(eq(this.apiClientCredentials.accountId, accountId))\n .orderBy(sql`${this.apiClientCredentials.createdAt} DESC`);\n\n return rows.map((row: typeof rows[number]) => ({\n clientId: row.clientId,\n webId: row.webId,\n displayName: row.displayName ?? undefined,\n createdAt: row.createdAt,\n }));\n }\n\n /**\n * Find the most recently created API Key for an account.\n */\n public async findByAccountId(accountId: string): Promise<ClientCredentialsRecord | undefined> {\n const rows = await this.db\n .select()\n .from(this.apiClientCredentials)\n .where(eq(this.apiClientCredentials.accountId, accountId))\n .orderBy(sql`${this.apiClientCredentials.createdAt} DESC`)\n .limit(1);\n\n if (rows.length === 0) {\n return undefined;\n }\n\n const row = rows[0];\n return {\n clientId: row.clientId,\n webId: row.webId,\n accountId: row.accountId,\n displayName: row.displayName ?? undefined,\n createdAt: row.createdAt,\n };\n }\n\n /**\n * Delete an API Key\n */\n public async delete(clientId: string, accountId?: string): Promise<boolean> {\n await this.db\n .delete(this.apiClientCredentials)\n .where(eq(this.apiClientCredentials.clientId, clientId));\n return true;\n }\n}\n"]}