@thewhateverapp/platform 0.0.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 (122) hide show
  1. package/README.md +223 -0
  2. package/dist/ai/mock.d.ts +14 -0
  3. package/dist/ai/mock.d.ts.map +1 -0
  4. package/dist/ai/mock.js +38 -0
  5. package/dist/ai/mock.js.map +1 -0
  6. package/dist/ai/production.d.ts +17 -0
  7. package/dist/ai/production.d.ts.map +1 -0
  8. package/dist/ai/production.js +41 -0
  9. package/dist/ai/production.js.map +1 -0
  10. package/dist/analytics/client.d.ts +21 -0
  11. package/dist/analytics/client.d.ts.map +1 -0
  12. package/dist/analytics/client.js +60 -0
  13. package/dist/analytics/client.js.map +1 -0
  14. package/dist/assets/client.d.ts +23 -0
  15. package/dist/assets/client.d.ts.map +1 -0
  16. package/dist/assets/client.js +105 -0
  17. package/dist/assets/client.js.map +1 -0
  18. package/dist/auth/client.d.ts +20 -0
  19. package/dist/auth/client.d.ts.map +1 -0
  20. package/dist/auth/client.js +53 -0
  21. package/dist/auth/client.js.map +1 -0
  22. package/dist/auth/types.d.ts +50 -0
  23. package/dist/auth/types.d.ts.map +1 -0
  24. package/dist/auth/types.js +5 -0
  25. package/dist/auth/types.js.map +1 -0
  26. package/dist/db/mock.d.ts +43 -0
  27. package/dist/db/mock.d.ts.map +1 -0
  28. package/dist/db/mock.js +343 -0
  29. package/dist/db/mock.js.map +1 -0
  30. package/dist/db/production.d.ts +16 -0
  31. package/dist/db/production.d.ts.map +1 -0
  32. package/dist/db/production.js +77 -0
  33. package/dist/db/production.js.map +1 -0
  34. package/dist/edge/database/index.d.ts +46 -0
  35. package/dist/edge/database/index.d.ts.map +1 -0
  36. package/dist/edge/database/index.js +82 -0
  37. package/dist/edge/database/index.js.map +1 -0
  38. package/dist/edge/database/providers/flex-db.d.ts +22 -0
  39. package/dist/edge/database/providers/flex-db.d.ts.map +1 -0
  40. package/dist/edge/database/providers/flex-db.js +351 -0
  41. package/dist/edge/database/providers/flex-db.js.map +1 -0
  42. package/dist/edge/database/providers/index.d.ts +7 -0
  43. package/dist/edge/database/providers/index.d.ts.map +1 -0
  44. package/dist/edge/database/providers/index.js +11 -0
  45. package/dist/edge/database/providers/index.js.map +1 -0
  46. package/dist/edge/database/types.d.ts +148 -0
  47. package/dist/edge/database/types.d.ts.map +1 -0
  48. package/dist/edge/database/types.js +8 -0
  49. package/dist/edge/database/types.js.map +1 -0
  50. package/dist/edge/index.d.ts +12 -0
  51. package/dist/edge/index.d.ts.map +1 -0
  52. package/dist/edge/index.js +12 -0
  53. package/dist/edge/index.js.map +1 -0
  54. package/dist/edge/kv/index.d.ts +50 -0
  55. package/dist/edge/kv/index.d.ts.map +1 -0
  56. package/dist/edge/kv/index.js +83 -0
  57. package/dist/edge/kv/index.js.map +1 -0
  58. package/dist/edge/kv/providers/cloudflare-kv.d.ts +31 -0
  59. package/dist/edge/kv/providers/cloudflare-kv.d.ts.map +1 -0
  60. package/dist/edge/kv/providers/cloudflare-kv.js +115 -0
  61. package/dist/edge/kv/providers/cloudflare-kv.js.map +1 -0
  62. package/dist/edge/kv/providers/index.d.ts +7 -0
  63. package/dist/edge/kv/providers/index.d.ts.map +1 -0
  64. package/dist/edge/kv/providers/index.js +10 -0
  65. package/dist/edge/kv/providers/index.js.map +1 -0
  66. package/dist/edge/kv/types.d.ts +155 -0
  67. package/dist/edge/kv/types.d.ts.map +1 -0
  68. package/dist/edge/kv/types.js +8 -0
  69. package/dist/edge/kv/types.js.map +1 -0
  70. package/dist/edge/storage/index.d.ts +50 -0
  71. package/dist/edge/storage/index.d.ts.map +1 -0
  72. package/dist/edge/storage/index.js +83 -0
  73. package/dist/edge/storage/index.js.map +1 -0
  74. package/dist/edge/storage/providers/cloudflare-r2.d.ts +28 -0
  75. package/dist/edge/storage/providers/cloudflare-r2.d.ts.map +1 -0
  76. package/dist/edge/storage/providers/cloudflare-r2.js +178 -0
  77. package/dist/edge/storage/providers/cloudflare-r2.js.map +1 -0
  78. package/dist/edge/storage/providers/index.d.ts +7 -0
  79. package/dist/edge/storage/providers/index.d.ts.map +1 -0
  80. package/dist/edge/storage/providers/index.js +10 -0
  81. package/dist/edge/storage/providers/index.js.map +1 -0
  82. package/dist/edge/storage/types.d.ts +305 -0
  83. package/dist/edge/storage/types.d.ts.map +1 -0
  84. package/dist/edge/storage/types.js +8 -0
  85. package/dist/edge/storage/types.js.map +1 -0
  86. package/dist/identity/client.d.ts +20 -0
  87. package/dist/identity/client.d.ts.map +1 -0
  88. package/dist/identity/client.js +40 -0
  89. package/dist/identity/client.js.map +1 -0
  90. package/dist/index.d.ts +21 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +25 -0
  93. package/dist/index.js.map +1 -0
  94. package/dist/notifications/client.d.ts +20 -0
  95. package/dist/notifications/client.d.ts.map +1 -0
  96. package/dist/notifications/client.js +38 -0
  97. package/dist/notifications/client.js.map +1 -0
  98. package/dist/payments/client.d.ts +21 -0
  99. package/dist/payments/client.d.ts.map +1 -0
  100. package/dist/payments/client.js +52 -0
  101. package/dist/payments/client.js.map +1 -0
  102. package/dist/platform.d.ts +65 -0
  103. package/dist/platform.d.ts.map +1 -0
  104. package/dist/platform.js +254 -0
  105. package/dist/platform.js.map +1 -0
  106. package/dist/social/client.d.ts +29 -0
  107. package/dist/social/client.d.ts.map +1 -0
  108. package/dist/social/client.js +83 -0
  109. package/dist/social/client.js.map +1 -0
  110. package/dist/storage/mock.d.ts +27 -0
  111. package/dist/storage/mock.d.ts.map +1 -0
  112. package/dist/storage/mock.js +102 -0
  113. package/dist/storage/mock.js.map +1 -0
  114. package/dist/storage/production.d.ts +28 -0
  115. package/dist/storage/production.d.ts.map +1 -0
  116. package/dist/storage/production.js +75 -0
  117. package/dist/storage/production.js.map +1 -0
  118. package/dist/types.d.ts +399 -0
  119. package/dist/types.d.ts.map +1 -0
  120. package/dist/types.js +5 -0
  121. package/dist/types.js.map +1 -0
  122. package/package.json +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/auth/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,OAAO,OAAO;IACE;IAApB,YAAoB,MAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;IAAG,CAAC;IAElC,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAU;QAEV,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,QAAQ,IAAI,EAAE,EAAE;YAChE,MAAM;YACN,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;aAChC;YACD,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAuB,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,eAAe,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAa;QACjC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,MAAyB;QAEzB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,KAAa,EACb,MAAyB;QAEzB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE;YAChD,MAAM;YACN,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,KAAa,EACb,MAAyB;QAEzB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE;YAC/C,MAAM;YACN,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,KAAa;QACnD,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;CACF"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Authentication and permission types
3
+ */
4
+ export type PermissionScope = 'id' | 'profile' | 'email' | 'wallet' | 'analytics:read' | 'analytics:write' | 'storage:read' | 'storage:write';
5
+ export interface UserContext {
6
+ authenticated: boolean;
7
+ userId: string;
8
+ scopes: PermissionScope[];
9
+ username?: string;
10
+ avatar?: string;
11
+ displayName?: string;
12
+ email?: string;
13
+ walletAddresses?: string[];
14
+ grantedAt?: string;
15
+ lastUsedAt?: string;
16
+ }
17
+ export interface PermissionGrant {
18
+ userId: string;
19
+ appId: string;
20
+ scopes: PermissionScope[];
21
+ grantedAt: string;
22
+ expiresAt?: string;
23
+ lastUsedAt?: string;
24
+ }
25
+ export interface PermissionRequest {
26
+ appId: string;
27
+ appName: string;
28
+ requestedScopes: PermissionScope[];
29
+ reason?: string;
30
+ }
31
+ export interface AccessTokenPayload {
32
+ userId: string;
33
+ appId: string;
34
+ scopes: PermissionScope[];
35
+ iat: number;
36
+ exp: number;
37
+ }
38
+ export interface AuthService {
39
+ verifyUserToken(token: string): Promise<AccessTokenPayload | null>;
40
+ getUserContext(userId: string, scopes: PermissionScope[]): Promise<UserContext>;
41
+ checkPermissions(userId: string, appId: string, scopes: PermissionScope[]): Promise<CheckPermissionsResult>;
42
+ grantPermissions(userId: string, appId: string, scopes: PermissionScope[]): Promise<void>;
43
+ revokePermissions(userId: string, appId: string): Promise<void>;
44
+ }
45
+ export interface CheckPermissionsResult {
46
+ granted: PermissionScope[];
47
+ pending: PermissionScope[];
48
+ denied: PermissionScope[];
49
+ }
50
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,MAAM,eAAe,GACvB,IAAI,GACJ,SAAS,GACT,OAAO,GACP,QAAQ,GACR,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,eAAe,CAAC;AAGpB,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAG1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAG3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAGD,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACnE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAChF,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5G,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Authentication and permission types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Mock database service with in-memory storage
3
+ * Implements MongoDB-like query semantics
4
+ */
5
+ import type { DatabaseService, DBCollection, DBDocument, DBQuery, DBUpdate, QueryOptions, InsertOneResult, InsertManyResult, UpdateResult, DeleteResult } from '../types';
6
+ declare class MockDBCollection implements DBCollection {
7
+ private collectionName;
8
+ private debug;
9
+ private documents;
10
+ private nextId;
11
+ constructor(collectionName: string, debug: boolean);
12
+ private log;
13
+ private generateId;
14
+ private matchesQuery;
15
+ private getNestedValue;
16
+ private setNestedValue;
17
+ private applyUpdate;
18
+ private sortDocuments;
19
+ insertOne(document: DBDocument): Promise<InsertOneResult>;
20
+ insertMany(documents: DBDocument[]): Promise<InsertManyResult>;
21
+ find(query?: DBQuery, options?: QueryOptions): Promise<DBDocument[]>;
22
+ findOne(query?: DBQuery): Promise<DBDocument | null>;
23
+ updateOne(query: DBQuery, update: DBUpdate): Promise<UpdateResult>;
24
+ updateMany(query: DBQuery, update: DBUpdate): Promise<UpdateResult>;
25
+ replaceOne(query: DBQuery, document: DBDocument): Promise<UpdateResult>;
26
+ deleteOne(query: DBQuery): Promise<DeleteResult>;
27
+ deleteMany(query: DBQuery): Promise<DeleteResult>;
28
+ countDocuments(query?: DBQuery): Promise<number>;
29
+ clear(): void;
30
+ size(): number;
31
+ }
32
+ export declare class MockDB implements DatabaseService {
33
+ private collections;
34
+ private debug;
35
+ constructor(config?: {
36
+ debug?: boolean;
37
+ });
38
+ collection(name: string): DBCollection;
39
+ clearAll(): void;
40
+ getCollection(name: string): MockDBCollection | undefined;
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/db/mock.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,UAAU,EACV,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,cAAM,gBAAiB,YAAW,YAAY;IAK1C,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,KAAK;IALf,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,MAAM,CAAK;gBAGT,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO;IAGxB,OAAO,CAAC,GAAG;IAMX,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,aAAa;IAef,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC;IAWzD,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAa9D,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAqCpE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKpD,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBlE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBnE,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBvE,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBhD,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBjD,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAS/C,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,MAAM;CAGtB;AAED,qBAAa,MAAO,YAAW,eAAe;IAC5C,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,KAAK,CAAU;gBAEX,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;IAI5C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IAQ/B,QAAQ,IAAI,IAAI;IAMhB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;CAGjE"}
@@ -0,0 +1,343 @@
1
+ /**
2
+ * Mock database service with in-memory storage
3
+ * Implements MongoDB-like query semantics
4
+ */
5
+ class MockDBCollection {
6
+ collectionName;
7
+ debug;
8
+ documents = new Map();
9
+ nextId = 1;
10
+ constructor(collectionName, debug) {
11
+ this.collectionName = collectionName;
12
+ this.debug = debug;
13
+ }
14
+ log(message, ...args) {
15
+ if (this.debug) {
16
+ console.log(`[MockDB:${this.collectionName}] ${message}`, ...args);
17
+ }
18
+ }
19
+ generateId() {
20
+ return `${this.collectionName}_${this.nextId++}`;
21
+ }
22
+ matchesQuery(document, query) {
23
+ if (!query || Object.keys(query).length === 0) {
24
+ return true;
25
+ }
26
+ for (const [key, value] of Object.entries(query)) {
27
+ // MongoDB operators
28
+ if (key.startsWith('$')) {
29
+ if (key === '$and') {
30
+ return value.every((q) => this.matchesQuery(document, q));
31
+ }
32
+ if (key === '$or') {
33
+ return value.some((q) => this.matchesQuery(document, q));
34
+ }
35
+ continue;
36
+ }
37
+ const docValue = this.getNestedValue(document, key);
38
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
39
+ // Handle query operators
40
+ for (const [op, opValue] of Object.entries(value)) {
41
+ const val = opValue;
42
+ if (op === '$eq' && docValue !== val)
43
+ return false;
44
+ if (op === '$ne' && docValue === val)
45
+ return false;
46
+ if (op === '$gt' && !(docValue > val))
47
+ return false;
48
+ if (op === '$gte' && !(docValue >= val))
49
+ return false;
50
+ if (op === '$lt' && !(docValue < val))
51
+ return false;
52
+ if (op === '$lte' && !(docValue <= val))
53
+ return false;
54
+ if (op === '$in' && !val.includes(docValue))
55
+ return false;
56
+ if (op === '$nin' && val.includes(docValue))
57
+ return false;
58
+ if (op === '$exists' && (docValue !== undefined) !== val)
59
+ return false;
60
+ }
61
+ }
62
+ else {
63
+ // Direct equality
64
+ if (docValue !== value) {
65
+ return false;
66
+ }
67
+ }
68
+ }
69
+ return true;
70
+ }
71
+ getNestedValue(obj, path) {
72
+ const parts = path.split('.');
73
+ let current = obj;
74
+ for (const part of parts) {
75
+ if (current === null || current === undefined) {
76
+ return undefined;
77
+ }
78
+ current = current[part];
79
+ }
80
+ return current;
81
+ }
82
+ setNestedValue(obj, path, value) {
83
+ const parts = path.split('.');
84
+ let current = obj;
85
+ for (let i = 0; i < parts.length - 1; i++) {
86
+ if (!(parts[i] in current)) {
87
+ current[parts[i]] = {};
88
+ }
89
+ current = current[parts[i]];
90
+ }
91
+ current[parts[parts.length - 1]] = value;
92
+ }
93
+ applyUpdate(document, update) {
94
+ const result = JSON.parse(JSON.stringify(document)); // Deep clone
95
+ for (const [key, value] of Object.entries(update)) {
96
+ if (key === '$set') {
97
+ for (const [field, val] of Object.entries(value)) {
98
+ this.setNestedValue(result, field, val);
99
+ }
100
+ }
101
+ else if (key === '$inc') {
102
+ for (const [field, val] of Object.entries(value)) {
103
+ const current = this.getNestedValue(result, field) || 0;
104
+ this.setNestedValue(result, field, current + val);
105
+ }
106
+ }
107
+ else if (key === '$unset') {
108
+ for (const field of Object.keys(value)) {
109
+ const parts = field.split('.');
110
+ let current = result;
111
+ for (let i = 0; i < parts.length - 1; i++) {
112
+ current = current[parts[i]];
113
+ if (!current)
114
+ break;
115
+ }
116
+ if (current) {
117
+ delete current[parts[parts.length - 1]];
118
+ }
119
+ }
120
+ }
121
+ else if (key === '$push') {
122
+ for (const [field, val] of Object.entries(value)) {
123
+ const current = this.getNestedValue(result, field);
124
+ if (Array.isArray(current)) {
125
+ current.push(val);
126
+ }
127
+ else {
128
+ this.setNestedValue(result, field, [val]);
129
+ }
130
+ }
131
+ }
132
+ else if (key === '$pull') {
133
+ for (const [field, val] of Object.entries(value)) {
134
+ const current = this.getNestedValue(result, field);
135
+ if (Array.isArray(current)) {
136
+ this.setNestedValue(result, field, current.filter((item) => item !== val));
137
+ }
138
+ }
139
+ }
140
+ else {
141
+ // Direct field update
142
+ this.setNestedValue(result, key, value);
143
+ }
144
+ }
145
+ return result;
146
+ }
147
+ sortDocuments(documents, sort) {
148
+ if (!sort)
149
+ return documents;
150
+ return documents.slice().sort((a, b) => {
151
+ for (const [field, order] of Object.entries(sort)) {
152
+ const aVal = this.getNestedValue(a, field);
153
+ const bVal = this.getNestedValue(b, field);
154
+ if (aVal < bVal)
155
+ return order === 1 ? -1 : 1;
156
+ if (aVal > bVal)
157
+ return order === 1 ? 1 : -1;
158
+ }
159
+ return 0;
160
+ });
161
+ }
162
+ async insertOne(document) {
163
+ const id = document._id || this.generateId();
164
+ const doc = { ...document, _id: id };
165
+ this.documents.set(id, doc);
166
+ this.log('Inserted document:', id);
167
+ return {
168
+ insertedId: id,
169
+ acknowledged: true,
170
+ };
171
+ }
172
+ async insertMany(documents) {
173
+ const ids = [];
174
+ for (const document of documents) {
175
+ const result = await this.insertOne(document);
176
+ ids.push(result.insertedId);
177
+ }
178
+ return {
179
+ insertedIds: ids,
180
+ insertedCount: ids.length,
181
+ acknowledged: true,
182
+ };
183
+ }
184
+ async find(query, options) {
185
+ let results = Array.from(this.documents.values()).filter((doc) => this.matchesQuery(doc, query));
186
+ // Sort
187
+ if (options?.sort) {
188
+ results = this.sortDocuments(results, options.sort);
189
+ }
190
+ // Skip
191
+ if (options?.skip) {
192
+ results = results.slice(options.skip);
193
+ }
194
+ // Limit
195
+ if (options?.limit) {
196
+ results = results.slice(0, options.limit);
197
+ }
198
+ // Projection
199
+ if (options?.projection) {
200
+ results = results.map((doc) => {
201
+ const projected = {};
202
+ for (const [field, include] of Object.entries(options.projection)) {
203
+ if (include === 1) {
204
+ projected[field] = doc[field];
205
+ }
206
+ }
207
+ return Object.keys(projected).length > 0 ? projected : doc;
208
+ });
209
+ }
210
+ this.log('Find:', { query, count: results.length });
211
+ return results;
212
+ }
213
+ async findOne(query) {
214
+ const results = await this.find(query, { limit: 1 });
215
+ return results[0] || null;
216
+ }
217
+ async updateOne(query, update) {
218
+ for (const [id, doc] of this.documents.entries()) {
219
+ if (this.matchesQuery(doc, query)) {
220
+ this.documents.set(id, this.applyUpdate(doc, update));
221
+ this.log('Updated one document:', id);
222
+ return {
223
+ matchedCount: 1,
224
+ modifiedCount: 1,
225
+ acknowledged: true,
226
+ };
227
+ }
228
+ }
229
+ return {
230
+ matchedCount: 0,
231
+ modifiedCount: 0,
232
+ acknowledged: true,
233
+ };
234
+ }
235
+ async updateMany(query, update) {
236
+ let matchedCount = 0;
237
+ let modifiedCount = 0;
238
+ for (const [id, doc] of this.documents.entries()) {
239
+ if (this.matchesQuery(doc, query)) {
240
+ matchedCount++;
241
+ const updated = this.applyUpdate(doc, update);
242
+ if (JSON.stringify(updated) !== JSON.stringify(doc)) {
243
+ this.documents.set(id, updated);
244
+ modifiedCount++;
245
+ }
246
+ }
247
+ }
248
+ this.log('Updated many documents:', { matchedCount, modifiedCount });
249
+ return {
250
+ matchedCount,
251
+ modifiedCount,
252
+ acknowledged: true,
253
+ };
254
+ }
255
+ async replaceOne(query, document) {
256
+ for (const [id, doc] of this.documents.entries()) {
257
+ if (this.matchesQuery(doc, query)) {
258
+ this.documents.set(id, { ...document, _id: id });
259
+ this.log('Replaced document:', id);
260
+ return {
261
+ matchedCount: 1,
262
+ modifiedCount: 1,
263
+ acknowledged: true,
264
+ };
265
+ }
266
+ }
267
+ return {
268
+ matchedCount: 0,
269
+ modifiedCount: 0,
270
+ acknowledged: true,
271
+ };
272
+ }
273
+ async deleteOne(query) {
274
+ for (const [id, doc] of this.documents.entries()) {
275
+ if (this.matchesQuery(doc, query)) {
276
+ this.documents.delete(id);
277
+ this.log('Deleted document:', id);
278
+ return {
279
+ deletedCount: 1,
280
+ acknowledged: true,
281
+ };
282
+ }
283
+ }
284
+ return {
285
+ deletedCount: 0,
286
+ acknowledged: true,
287
+ };
288
+ }
289
+ async deleteMany(query) {
290
+ let deletedCount = 0;
291
+ const toDelete = [];
292
+ for (const [id, doc] of this.documents.entries()) {
293
+ if (this.matchesQuery(doc, query)) {
294
+ toDelete.push(id);
295
+ }
296
+ }
297
+ for (const id of toDelete) {
298
+ this.documents.delete(id);
299
+ deletedCount++;
300
+ }
301
+ this.log('Deleted many documents:', deletedCount);
302
+ return {
303
+ deletedCount,
304
+ acknowledged: true,
305
+ };
306
+ }
307
+ async countDocuments(query) {
308
+ const count = Array.from(this.documents.values()).filter((doc) => this.matchesQuery(doc, query)).length;
309
+ this.log('Count:', count);
310
+ return count;
311
+ }
312
+ // Testing utilities
313
+ clear() {
314
+ this.documents.clear();
315
+ this.log('Cleared all documents');
316
+ }
317
+ size() {
318
+ return this.documents.size;
319
+ }
320
+ }
321
+ export class MockDB {
322
+ collections = new Map();
323
+ debug;
324
+ constructor(config = {}) {
325
+ this.debug = config.debug || false;
326
+ }
327
+ collection(name) {
328
+ if (!this.collections.has(name)) {
329
+ this.collections.set(name, new MockDBCollection(name, this.debug));
330
+ }
331
+ return this.collections.get(name);
332
+ }
333
+ // Testing utilities
334
+ clearAll() {
335
+ for (const collection of this.collections.values()) {
336
+ collection.clear();
337
+ }
338
+ }
339
+ getCollection(name) {
340
+ return this.collections.get(name);
341
+ }
342
+ }
343
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/db/mock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Production database service with HTTP API client
3
+ */
4
+ import type { DatabaseService, DBCollection } from '../types';
5
+ interface ProductionDBConfig {
6
+ apiUrl: string;
7
+ appId: string;
8
+ apiKey?: string;
9
+ }
10
+ export declare class ProductionDB implements DatabaseService {
11
+ private config;
12
+ constructor(config: ProductionDBConfig);
13
+ collection(name: string): DBCollection;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=production.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production.d.ts","sourceRoot":"","sources":["../../src/db/production.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EASb,MAAM,UAAU,CAAC;AAElB,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmFD,qBAAa,YAAa,YAAW,eAAe;IACtC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,kBAAkB;IAE9C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;CAQvC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Production database service with HTTP API client
3
+ */
4
+ class ProductionDBCollection {
5
+ apiUrl;
6
+ appId;
7
+ collectionName;
8
+ apiKey;
9
+ constructor(apiUrl, appId, collectionName, apiKey) {
10
+ this.apiUrl = apiUrl;
11
+ this.appId = appId;
12
+ this.collectionName = collectionName;
13
+ this.apiKey = apiKey;
14
+ }
15
+ async request(method, path, body) {
16
+ const url = `${this.apiUrl}/db/${this.appId}/${this.collectionName}${path}`;
17
+ const headers = {
18
+ 'Content-Type': 'application/json',
19
+ };
20
+ if (this.apiKey) {
21
+ headers['X-API-Key'] = this.apiKey;
22
+ }
23
+ const response = await fetch(url, {
24
+ method,
25
+ headers,
26
+ body: body ? JSON.stringify(body) : undefined,
27
+ });
28
+ if (!response.ok) {
29
+ const error = await response.json().catch(() => ({}));
30
+ throw new Error(error.error || `Database error: ${response.statusText}`);
31
+ }
32
+ return response.json();
33
+ }
34
+ async insertOne(document) {
35
+ return this.request('POST', '/insertOne', { document });
36
+ }
37
+ async insertMany(documents) {
38
+ return this.request('POST', '/insertMany', { documents });
39
+ }
40
+ async find(query, options) {
41
+ return this.request('POST', '/find', { query, options });
42
+ }
43
+ async findOne(query) {
44
+ return this.request('POST', '/findOne', { query });
45
+ }
46
+ async updateOne(query, update) {
47
+ return this.request('POST', '/updateOne', { query, update });
48
+ }
49
+ async updateMany(query, update) {
50
+ return this.request('POST', '/updateMany', { query, update });
51
+ }
52
+ async replaceOne(query, document) {
53
+ return this.request('POST', '/replaceOne', { query, document });
54
+ }
55
+ async deleteOne(query) {
56
+ return this.request('POST', '/deleteOne', { query });
57
+ }
58
+ async deleteMany(query) {
59
+ return this.request('POST', '/deleteMany', { query });
60
+ }
61
+ async countDocuments(query) {
62
+ const result = await this.request('POST', '/count', {
63
+ query,
64
+ });
65
+ return result.count;
66
+ }
67
+ }
68
+ export class ProductionDB {
69
+ config;
70
+ constructor(config) {
71
+ this.config = config;
72
+ }
73
+ collection(name) {
74
+ return new ProductionDBCollection(this.config.apiUrl, this.config.appId, name, this.config.apiKey);
75
+ }
76
+ }
77
+ //# sourceMappingURL=production.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"production.js","sourceRoot":"","sources":["../../src/db/production.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Edge Database API
3
+ *
4
+ * Provides a MongoDB-like schemaless database interface for user-generated apps.
5
+ * Automatically selects the appropriate provider based on environment configuration.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { getDatabase } from '@thewhateverapp/platform/edge';
10
+ *
11
+ * export async function GET(req: NextRequest) {
12
+ * const db = await getDatabase(req);
13
+ * const todos = db.collection('todos');
14
+ * const result = await todos.find({ completed: false });
15
+ * return NextResponse.json(result);
16
+ * }
17
+ * ```
18
+ */
19
+ import type { DatabaseProvider, CloudflareEnv, DatabaseRequest } from './types';
20
+ export type * from './types';
21
+ /**
22
+ * Get a database instance for the current request
23
+ *
24
+ * Automatically selects the appropriate provider based on environment:
25
+ * - 'flex' (default): FlexDB using Cloudflare D1
26
+ * - 'turso': TursoDB for high-scale apps
27
+ * - 'mongo-atlas': MongoDB Atlas for complex queries
28
+ * - 'planetscale': PlanetScale for relational needs
29
+ *
30
+ * @param req - NextRequest or object with env property
31
+ * @returns Database provider instance
32
+ */
33
+ export declare function getDatabase(req: DatabaseRequest | {
34
+ env: CloudflareEnv;
35
+ }): Promise<DatabaseProvider>;
36
+ /**
37
+ * Create a database instance directly (for advanced usage)
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const db = createDatabase({ DB: env.DB });
42
+ * const todos = db.collection('todos');
43
+ * ```
44
+ */
45
+ export declare function createDatabase(env: CloudflareEnv): DatabaseProvider;
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/edge/database/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAIhF,mBAAmB,SAAS,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,eAAe,GAAG;IAAE,GAAG,EAAE,aAAa,CAAA;CAAE,GAC5C,OAAO,CAAC,gBAAgB,CAAC,CA2C3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,gBAAgB,CAenE"}