@orjok/commons 1.0.2

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.
@@ -0,0 +1,52 @@
1
+ import { A as AuthProvider, U as UserAttributes, a as AuthSession, N as NetworkProvider, G as GraphQLResult, S as StorageProvider, b as UploadOptions } from './storage-DLqdJgQt.js';
2
+
3
+ declare class MockAuthProvider implements AuthProvider {
4
+ private currentUserId;
5
+ setCurrentUserId(userId: string | null): void;
6
+ signIn(_username: string, _password: string): Promise<{
7
+ isSignedIn: boolean;
8
+ }>;
9
+ signUp(_username: string, _password: string, _attributes: Record<string, string>): Promise<{
10
+ isSignUpComplete: boolean;
11
+ userId: string | undefined;
12
+ }>;
13
+ signOut(): Promise<void>;
14
+ signInWithRedirect(_provider: string): Promise<void>;
15
+ fetchUserAttributes(): Promise<UserAttributes>;
16
+ updateUserAttributes(_attributes: Record<string, string>): Promise<void>;
17
+ fetchAuthSession(): Promise<AuthSession>;
18
+ confirmSignUp(_username: string, _code: string): Promise<{
19
+ isSignUpComplete: boolean;
20
+ }>;
21
+ resendSignUpCode(_username: string): Promise<void>;
22
+ resetPassword(_username: string): Promise<void>;
23
+ confirmResetPassword(_username: string, _code: string, _newPassword: string): Promise<void>;
24
+ getCurrentUserId(): Promise<string | null>;
25
+ }
26
+ declare class MockNetworkProvider implements NetworkProvider {
27
+ private responses;
28
+ readonly calls: Array<{
29
+ type: "query" | "mutation";
30
+ query: string;
31
+ variables?: Record<string, unknown>;
32
+ }>;
33
+ setResponse<T>(operationKey: string, data: T): void;
34
+ reset(): void;
35
+ query<T>(query: string, variables?: Record<string, unknown>): Promise<GraphQLResult<T>>;
36
+ mutate<T>(mutation: string, variables?: Record<string, unknown>): Promise<GraphQLResult<T>>;
37
+ private findResponse;
38
+ }
39
+ declare class MockStorageProvider implements StorageProvider {
40
+ readonly calls: Array<{
41
+ method: string;
42
+ args: unknown[];
43
+ }>;
44
+ getFileUrl(path: string): Promise<{
45
+ url: string;
46
+ }>;
47
+ uploadFile(path: string, data: Blob | ArrayBuffer | string, options?: UploadOptions): Promise<{
48
+ path: string;
49
+ }>;
50
+ }
51
+
52
+ export { MockAuthProvider, MockNetworkProvider, MockStorageProvider };
@@ -0,0 +1,97 @@
1
+ // src/testing/mock-providers.ts
2
+ var MockAuthProvider = class {
3
+ constructor() {
4
+ this.currentUserId = "test-user-id";
5
+ }
6
+ setCurrentUserId(userId) {
7
+ this.currentUserId = userId;
8
+ }
9
+ async signIn(_username, _password) {
10
+ return { isSignedIn: true };
11
+ }
12
+ async signUp(_username, _password, _attributes) {
13
+ return { isSignUpComplete: true, userId: this.currentUserId ?? void 0 };
14
+ }
15
+ async signOut() {
16
+ }
17
+ async signInWithRedirect(_provider) {
18
+ }
19
+ async fetchUserAttributes() {
20
+ return { email: "test@test.com", sub: this.currentUserId ?? void 0 };
21
+ }
22
+ async updateUserAttributes(_attributes) {
23
+ }
24
+ async fetchAuthSession() {
25
+ return {
26
+ tokens: {
27
+ accessToken: { toString: () => "mock-access-token" },
28
+ idToken: { toString: () => "mock-id-token" }
29
+ }
30
+ };
31
+ }
32
+ async confirmSignUp(_username, _code) {
33
+ return { isSignUpComplete: true };
34
+ }
35
+ async resendSignUpCode(_username) {
36
+ }
37
+ async resetPassword(_username) {
38
+ }
39
+ async confirmResetPassword(_username, _code, _newPassword) {
40
+ }
41
+ async getCurrentUserId() {
42
+ return this.currentUserId;
43
+ }
44
+ };
45
+ var MockNetworkProvider = class {
46
+ constructor() {
47
+ this.responses = /* @__PURE__ */ new Map();
48
+ this.calls = [];
49
+ }
50
+ setResponse(operationKey, data) {
51
+ this.responses.set(operationKey, data);
52
+ }
53
+ reset() {
54
+ this.responses.clear();
55
+ this.calls.length = 0;
56
+ }
57
+ async query(query, variables) {
58
+ this.calls.push({ type: "query", query, variables });
59
+ return this.findResponse(query);
60
+ }
61
+ async mutate(mutation, variables) {
62
+ this.calls.push({ type: "mutation", query: mutation, variables });
63
+ return this.findResponse(mutation);
64
+ }
65
+ findResponse(queryString) {
66
+ for (const [key, value] of this.responses.entries()) {
67
+ if (queryString.includes(key)) {
68
+ return { data: value };
69
+ }
70
+ }
71
+ throw new Error(
72
+ `No mock response registered for query containing operation. Query starts with: "${queryString.slice(0, 80)}..."`
73
+ );
74
+ }
75
+ };
76
+ var MockStorageProvider = class {
77
+ constructor() {
78
+ this.calls = [];
79
+ }
80
+ async getFileUrl(path) {
81
+ this.calls.push({ method: "getFileUrl", args: [path] });
82
+ return { url: `https://mock-storage.test/${path}` };
83
+ }
84
+ async uploadFile(path, data, options) {
85
+ this.calls.push({ method: "uploadFile", args: [path, data, options] });
86
+ if (options?.onProgress) {
87
+ options.onProgress({ loaded: 100, total: 100 });
88
+ }
89
+ return { path };
90
+ }
91
+ };
92
+ export {
93
+ MockAuthProvider,
94
+ MockNetworkProvider,
95
+ MockStorageProvider
96
+ };
97
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing/mock-providers.ts"],"sourcesContent":["import type { AuthProvider, UserAttributes, AuthSession } from \"../providers/auth\";\nimport type { NetworkProvider, GraphQLResult } from \"../providers/network\";\nimport type { StorageProvider, UploadOptions } from \"../providers/storage\";\n\nexport class MockAuthProvider implements AuthProvider {\n private currentUserId: string | null = \"test-user-id\";\n\n setCurrentUserId(userId: string | null): void {\n this.currentUserId = userId;\n }\n\n async signIn(_username: string, _password: string) {\n return { isSignedIn: true };\n }\n\n async signUp(_username: string, _password: string, _attributes: Record<string, string>) {\n return { isSignUpComplete: true, userId: this.currentUserId ?? undefined };\n }\n\n async signOut() {}\n\n async signInWithRedirect(_provider: string) {}\n\n async fetchUserAttributes(): Promise<UserAttributes> {\n return { email: \"test@test.com\", sub: this.currentUserId ?? undefined };\n }\n\n async updateUserAttributes(_attributes: Record<string, string>) {}\n\n async fetchAuthSession(): Promise<AuthSession> {\n return {\n tokens: {\n accessToken: { toString: () => \"mock-access-token\" },\n idToken: { toString: () => \"mock-id-token\" },\n },\n };\n }\n\n async confirmSignUp(_username: string, _code: string) {\n return { isSignUpComplete: true };\n }\n\n async resendSignUpCode(_username: string) {}\n\n async resetPassword(_username: string) {}\n\n async confirmResetPassword(_username: string, _code: string, _newPassword: string) {}\n\n async getCurrentUserId(): Promise<string | null> {\n return this.currentUserId;\n }\n}\n\nexport class MockNetworkProvider implements NetworkProvider {\n private responses = new Map<string, unknown>();\n readonly calls: Array<{ type: \"query\" | \"mutation\"; query: string; variables?: Record<string, unknown> }> = [];\n\n setResponse<T>(operationKey: string, data: T): void {\n this.responses.set(operationKey, data);\n }\n\n reset(): void {\n this.responses.clear();\n this.calls.length = 0;\n }\n\n async query<T>(query: string, variables?: Record<string, unknown>): Promise<GraphQLResult<T>> {\n this.calls.push({ type: \"query\", query, variables });\n return this.findResponse<T>(query);\n }\n\n async mutate<T>(mutation: string, variables?: Record<string, unknown>): Promise<GraphQLResult<T>> {\n this.calls.push({ type: \"mutation\", query: mutation, variables });\n return this.findResponse<T>(mutation);\n }\n\n private findResponse<T>(queryString: string): GraphQLResult<T> {\n for (const [key, value] of this.responses.entries()) {\n if (queryString.includes(key)) {\n return { data: value as T };\n }\n }\n throw new Error(\n `No mock response registered for query containing operation. Query starts with: \"${queryString.slice(0, 80)}...\"`\n );\n }\n}\n\nexport class MockStorageProvider implements StorageProvider {\n readonly calls: Array<{ method: string; args: unknown[] }> = [];\n\n async getFileUrl(path: string): Promise<{ url: string }> {\n this.calls.push({ method: \"getFileUrl\", args: [path] });\n return { url: `https://mock-storage.test/${path}` };\n }\n\n async uploadFile(\n path: string,\n data: Blob | ArrayBuffer | string,\n options?: UploadOptions\n ): Promise<{ path: string }> {\n this.calls.push({ method: \"uploadFile\", args: [path, data, options] });\n if (options?.onProgress) {\n options.onProgress({ loaded: 100, total: 100 });\n }\n return { path };\n }\n}\n"],"mappings":";AAIO,IAAM,mBAAN,MAA+C;AAAA,EAA/C;AACL,SAAQ,gBAA+B;AAAA;AAAA,EAEvC,iBAAiB,QAA6B;AAC5C,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,MAAM,OAAO,WAAmB,WAAmB;AACjD,WAAO,EAAE,YAAY,KAAK;AAAA,EAC5B;AAAA,EAEA,MAAM,OAAO,WAAmB,WAAmB,aAAqC;AACtF,WAAO,EAAE,kBAAkB,MAAM,QAAQ,KAAK,iBAAiB,OAAU;AAAA,EAC3E;AAAA,EAEA,MAAM,UAAU;AAAA,EAAC;AAAA,EAEjB,MAAM,mBAAmB,WAAmB;AAAA,EAAC;AAAA,EAE7C,MAAM,sBAA+C;AACnD,WAAO,EAAE,OAAO,iBAAiB,KAAK,KAAK,iBAAiB,OAAU;AAAA,EACxE;AAAA,EAEA,MAAM,qBAAqB,aAAqC;AAAA,EAAC;AAAA,EAEjE,MAAM,mBAAyC;AAC7C,WAAO;AAAA,MACL,QAAQ;AAAA,QACN,aAAa,EAAE,UAAU,MAAM,oBAAoB;AAAA,QACnD,SAAS,EAAE,UAAU,MAAM,gBAAgB;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,cAAc,WAAmB,OAAe;AACpD,WAAO,EAAE,kBAAkB,KAAK;AAAA,EAClC;AAAA,EAEA,MAAM,iBAAiB,WAAmB;AAAA,EAAC;AAAA,EAE3C,MAAM,cAAc,WAAmB;AAAA,EAAC;AAAA,EAExC,MAAM,qBAAqB,WAAmB,OAAe,cAAsB;AAAA,EAAC;AAAA,EAEpF,MAAM,mBAA2C;AAC/C,WAAO,KAAK;AAAA,EACd;AACF;AAEO,IAAM,sBAAN,MAAqD;AAAA,EAArD;AACL,SAAQ,YAAY,oBAAI,IAAqB;AAC7C,SAAS,QAAmG,CAAC;AAAA;AAAA,EAE7G,YAAe,cAAsB,MAAe;AAClD,SAAK,UAAU,IAAI,cAAc,IAAI;AAAA,EACvC;AAAA,EAEA,QAAc;AACZ,SAAK,UAAU,MAAM;AACrB,SAAK,MAAM,SAAS;AAAA,EACtB;AAAA,EAEA,MAAM,MAAS,OAAe,WAAgE;AAC5F,SAAK,MAAM,KAAK,EAAE,MAAM,SAAS,OAAO,UAAU,CAAC;AACnD,WAAO,KAAK,aAAgB,KAAK;AAAA,EACnC;AAAA,EAEA,MAAM,OAAU,UAAkB,WAAgE;AAChG,SAAK,MAAM,KAAK,EAAE,MAAM,YAAY,OAAO,UAAU,UAAU,CAAC;AAChE,WAAO,KAAK,aAAgB,QAAQ;AAAA,EACtC;AAAA,EAEQ,aAAgB,aAAuC;AAC7D,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,UAAU,QAAQ,GAAG;AACnD,UAAI,YAAY,SAAS,GAAG,GAAG;AAC7B,eAAO,EAAE,MAAM,MAAW;AAAA,MAC5B;AAAA,IACF;AACA,UAAM,IAAI;AAAA,MACR,mFAAmF,YAAY,MAAM,GAAG,EAAE,CAAC;AAAA,IAC7G;AAAA,EACF;AACF;AAEO,IAAM,sBAAN,MAAqD;AAAA,EAArD;AACL,SAAS,QAAoD,CAAC;AAAA;AAAA,EAE9D,MAAM,WAAW,MAAwC;AACvD,SAAK,MAAM,KAAK,EAAE,QAAQ,cAAc,MAAM,CAAC,IAAI,EAAE,CAAC;AACtD,WAAO,EAAE,KAAK,6BAA6B,IAAI,GAAG;AAAA,EACpD;AAAA,EAEA,MAAM,WACJ,MACA,MACA,SAC2B;AAC3B,SAAK,MAAM,KAAK,EAAE,QAAQ,cAAc,MAAM,CAAC,MAAM,MAAM,OAAO,EAAE,CAAC;AACrE,QAAI,SAAS,YAAY;AACvB,cAAQ,WAAW,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,IAChD;AACA,WAAO,EAAE,KAAK;AAAA,EAChB;AACF;","names":[]}
package/package.json ADDED
@@ -0,0 +1,104 @@
1
+ {
2
+ "name": "@orjok/commons",
3
+ "version": "1.0.2",
4
+ "description": "Orjok platform shared business logic for React and React Native",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
19
+ },
20
+ "./adapters/amplify": {
21
+ "import": {
22
+ "types": "./dist/amplify.d.ts",
23
+ "default": "./dist/amplify.js"
24
+ },
25
+ "require": {
26
+ "types": "./dist/amplify.d.cts",
27
+ "default": "./dist/amplify.cjs"
28
+ }
29
+ },
30
+ "./testing": {
31
+ "import": {
32
+ "types": "./dist/testing.d.ts",
33
+ "default": "./dist/testing.js"
34
+ },
35
+ "require": {
36
+ "types": "./dist/testing.d.cts",
37
+ "default": "./dist/testing.cjs"
38
+ }
39
+ },
40
+ "./hooks": {
41
+ "import": {
42
+ "types": "./dist/hooks.d.ts",
43
+ "default": "./dist/hooks.js"
44
+ },
45
+ "require": {
46
+ "types": "./dist/hooks.d.cts",
47
+ "default": "./dist/hooks.cjs"
48
+ }
49
+ }
50
+ },
51
+ "files": [
52
+ "dist"
53
+ ],
54
+ "scripts": {
55
+ "sync-schema": "tsx scripts/sync-schema.ts",
56
+ "prebuild": "npm run sync-schema",
57
+ "build": "tsup",
58
+ "pretest": "npm run sync-schema",
59
+ "test": "vitest run",
60
+ "test:watch": "vitest",
61
+ "typecheck": "tsc --noEmit",
62
+ "prepublishOnly": "npm run build"
63
+ },
64
+ "peerDependencies": {
65
+ "react": ">=17.0.0",
66
+ "@tanstack/react-query": ">=5.0.0",
67
+ "papaparse": ">=5.0.0"
68
+ },
69
+ "peerDependenciesMeta": {
70
+ "react": {
71
+ "optional": true
72
+ },
73
+ "@tanstack/react-query": {
74
+ "optional": true
75
+ },
76
+ "papaparse": {
77
+ "optional": true
78
+ }
79
+ },
80
+ "devDependencies": {
81
+ "@tanstack/react-query": "^5.101.0",
82
+ "@types/papaparse": "^5.3.14",
83
+ "@types/react": "^18.2.0",
84
+ "aws-amplify": "^6.2.0",
85
+ "papaparse": "^5.4.1",
86
+ "tsup": "^8.0.0",
87
+ "tsx": "^4.7.2",
88
+ "typescript": "^5.4.5",
89
+ "vitest": "^3.0.0"
90
+ },
91
+ "keywords": [
92
+ "orjok",
93
+ "edtech",
94
+ "exam",
95
+ "bangladesh",
96
+ "react-native",
97
+ "react"
98
+ ],
99
+ "license": "MIT",
100
+ "repository": {
101
+ "type": "git",
102
+ "url": "https://github.com/orjok/orjok"
103
+ }
104
+ }