@sekolaos/shared-schema 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +117 -3
  2. package/dist/cjs/academic/academic-year.schema.js +16 -0
  3. package/dist/cjs/academic/academic-year.schema.js.map +1 -0
  4. package/dist/cjs/academic/class-room.schema.js +15 -0
  5. package/dist/cjs/academic/class-room.schema.js.map +1 -0
  6. package/dist/cjs/attendance/attendance-class.schema.js +19 -0
  7. package/dist/cjs/attendance/attendance-class.schema.js.map +1 -0
  8. package/dist/cjs/attendance/attendance-kiosk.schema.js +35 -0
  9. package/dist/cjs/attendance/attendance-kiosk.schema.js.map +1 -0
  10. package/dist/cjs/attendance/barcode-rolling.schema.js +18 -0
  11. package/dist/cjs/attendance/barcode-rolling.schema.js.map +1 -0
  12. package/dist/cjs/auth/auth.schema.js +25 -0
  13. package/dist/cjs/auth/auth.schema.js.map +1 -0
  14. package/dist/cjs/auth/role.schema.js +34 -0
  15. package/dist/cjs/auth/role.schema.js.map +1 -0
  16. package/dist/cjs/common/common.schema.js +21 -0
  17. package/dist/cjs/common/common.schema.js.map +1 -0
  18. package/dist/cjs/common/pagination.schema.js +22 -0
  19. package/dist/cjs/common/pagination.schema.js.map +1 -0
  20. package/dist/cjs/index.js +29 -0
  21. package/dist/cjs/index.js.map +1 -0
  22. package/dist/cjs/package.json +3 -0
  23. package/dist/cjs/tenant/tenant.schema.js +23 -0
  24. package/dist/cjs/tenant/tenant.schema.js.map +1 -0
  25. package/dist/cjs/user/student.schema.js +26 -0
  26. package/dist/cjs/user/student.schema.js.map +1 -0
  27. package/dist/cjs/user/user.schema.js +14 -0
  28. package/dist/cjs/user/user.schema.js.map +1 -0
  29. package/dist/esm/academic/academic-year.schema.js +13 -0
  30. package/dist/esm/academic/academic-year.schema.js.map +1 -0
  31. package/dist/esm/academic/class-room.schema.js +12 -0
  32. package/dist/esm/academic/class-room.schema.js.map +1 -0
  33. package/dist/esm/attendance/attendance-class.schema.js +16 -0
  34. package/dist/esm/attendance/attendance-class.schema.js.map +1 -0
  35. package/dist/esm/attendance/attendance-kiosk.schema.js +32 -0
  36. package/dist/esm/attendance/attendance-kiosk.schema.js.map +1 -0
  37. package/dist/esm/attendance/barcode-rolling.schema.js +15 -0
  38. package/dist/esm/attendance/barcode-rolling.schema.js.map +1 -0
  39. package/dist/esm/auth/auth.schema.js +22 -0
  40. package/dist/esm/auth/auth.schema.js.map +1 -0
  41. package/dist/esm/auth/role.schema.js +31 -0
  42. package/dist/esm/auth/role.schema.js.map +1 -0
  43. package/dist/esm/common/common.schema.js +17 -0
  44. package/dist/esm/common/common.schema.js.map +1 -0
  45. package/dist/esm/common/pagination.schema.js +18 -0
  46. package/dist/esm/common/pagination.schema.js.map +1 -0
  47. package/dist/esm/index.js +13 -0
  48. package/dist/esm/index.js.map +1 -0
  49. package/dist/esm/tenant/tenant.schema.js +20 -0
  50. package/dist/esm/tenant/tenant.schema.js.map +1 -0
  51. package/dist/esm/user/student.schema.js +23 -0
  52. package/dist/esm/user/student.schema.js.map +1 -0
  53. package/dist/esm/user/user.schema.js +11 -0
  54. package/dist/esm/user/user.schema.js.map +1 -0
  55. package/dist/types/academic/academic-year.schema.d.ts +29 -0
  56. package/dist/types/academic/class-room.schema.d.ts +27 -0
  57. package/dist/types/attendance/attendance-class.schema.d.ts +55 -0
  58. package/dist/types/attendance/attendance-kiosk.schema.d.ts +108 -0
  59. package/dist/types/attendance/barcode-rolling.schema.d.ts +35 -0
  60. package/dist/types/auth/auth.schema.d.ts +105 -0
  61. package/dist/types/auth/role.schema.d.ts +57 -0
  62. package/dist/types/common/common.schema.d.ts +47 -0
  63. package/dist/types/common/pagination.schema.d.ts +58 -0
  64. package/dist/types/index.d.ts +12 -0
  65. package/dist/types/tenant/tenant.schema.d.ts +54 -0
  66. package/dist/types/user/student.schema.d.ts +63 -0
  67. package/dist/types/user/user.schema.d.ts +24 -0
  68. package/package.json +55 -6
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ export declare const uuidSchema: z.ZodString;
3
+ export declare const timestampSchema: z.ZodString;
4
+ export declare const baseResponseSchema: <T extends z.ZodTypeAny>(dataSchema: T) => z.ZodObject<{
5
+ success: z.ZodBoolean;
6
+ message: z.ZodString;
7
+ data: T;
8
+ }, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
9
+ success: z.ZodBoolean;
10
+ message: z.ZodString;
11
+ data: T;
12
+ }>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<{
13
+ success: z.ZodBoolean;
14
+ message: z.ZodString;
15
+ data: T;
16
+ }> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>;
17
+ export declare const apiErrorResponseSchema: z.ZodObject<{
18
+ success: z.ZodLiteral<false>;
19
+ message: z.ZodString;
20
+ errors: z.ZodOptional<z.ZodArray<z.ZodObject<{
21
+ field: z.ZodOptional<z.ZodString>;
22
+ message: z.ZodString;
23
+ }, "strip", z.ZodTypeAny, {
24
+ message: string;
25
+ field?: string | undefined;
26
+ }, {
27
+ message: string;
28
+ field?: string | undefined;
29
+ }>, "many">>;
30
+ }, "strip", z.ZodTypeAny, {
31
+ message: string;
32
+ success: false;
33
+ errors?: {
34
+ message: string;
35
+ field?: string | undefined;
36
+ }[] | undefined;
37
+ }, {
38
+ message: string;
39
+ success: false;
40
+ errors?: {
41
+ message: string;
42
+ field?: string | undefined;
43
+ }[] | undefined;
44
+ }>;
45
+ export type Uuid = z.infer<typeof uuidSchema>;
46
+ export type BaseResponse<T extends z.ZodTypeAny> = z.infer<ReturnType<typeof baseResponseSchema<T>>>;
47
+ export type ApiErrorResponse = z.infer<typeof apiErrorResponseSchema>;
@@ -0,0 +1,58 @@
1
+ import { z } from "zod";
2
+ export declare const paginationQuerySchema: z.ZodObject<{
3
+ page: z.ZodDefault<z.ZodNumber>;
4
+ limit: z.ZodDefault<z.ZodNumber>;
5
+ search: z.ZodOptional<z.ZodString>;
6
+ sortBy: z.ZodOptional<z.ZodString>;
7
+ sortOrder: z.ZodDefault<z.ZodEnum<["asc", "desc"]>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ page: number;
10
+ limit: number;
11
+ sortOrder: "asc" | "desc";
12
+ search?: string | undefined;
13
+ sortBy?: string | undefined;
14
+ }, {
15
+ page?: number | undefined;
16
+ limit?: number | undefined;
17
+ search?: string | undefined;
18
+ sortBy?: string | undefined;
19
+ sortOrder?: "asc" | "desc" | undefined;
20
+ }>;
21
+ export declare const paginatedDataSchema: <T extends z.ZodTypeAny>(itemSchema: T) => z.ZodObject<{
22
+ items: z.ZodArray<T, "many">;
23
+ meta: z.ZodObject<{
24
+ currentPage: z.ZodNumber;
25
+ pageSize: z.ZodNumber;
26
+ totalItems: z.ZodNumber;
27
+ totalPages: z.ZodNumber;
28
+ }, "strip", z.ZodTypeAny, {
29
+ currentPage: number;
30
+ pageSize: number;
31
+ totalItems: number;
32
+ totalPages: number;
33
+ }, {
34
+ currentPage: number;
35
+ pageSize: number;
36
+ totalItems: number;
37
+ totalPages: number;
38
+ }>;
39
+ }, "strip", z.ZodTypeAny, {
40
+ items: T["_output"][];
41
+ meta: {
42
+ currentPage: number;
43
+ pageSize: number;
44
+ totalItems: number;
45
+ totalPages: number;
46
+ };
47
+ }, {
48
+ items: T["_input"][];
49
+ meta: {
50
+ currentPage: number;
51
+ pageSize: number;
52
+ totalItems: number;
53
+ totalPages: number;
54
+ };
55
+ }>;
56
+ export type PaginationQuery = z.infer<typeof paginationQuerySchema>;
57
+ export type PaginationQueryInput = z.input<typeof paginationQuerySchema>;
58
+ export type PaginatedData<T extends z.ZodTypeAny> = z.infer<ReturnType<typeof paginatedDataSchema<T>>>;
@@ -0,0 +1,12 @@
1
+ export * from "./common/common.schema.js";
2
+ export * from "./common/pagination.schema.js";
3
+ export * from "./tenant/tenant.schema.js";
4
+ export * from "./auth/role.schema.js";
5
+ export * from "./auth/auth.schema.js";
6
+ export * from "./academic/academic-year.schema.js";
7
+ export * from "./academic/class-room.schema.js";
8
+ export * from "./user/user.schema.js";
9
+ export * from "./user/student.schema.js";
10
+ export * from "./attendance/attendance-kiosk.schema.js";
11
+ export * from "./attendance/attendance-class.schema.js";
12
+ export * from "./attendance/barcode-rolling.schema.js";
@@ -0,0 +1,54 @@
1
+ import { z } from "zod";
2
+ export declare const tenantSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ slug: z.ZodString;
5
+ name: z.ZodString;
6
+ npsn: z.ZodNullable<z.ZodOptional<z.ZodString>>;
7
+ logoUrl: z.ZodNullable<z.ZodOptional<z.ZodString>>;
8
+ timezone: z.ZodDefault<z.ZodString>;
9
+ createdAt: z.ZodString;
10
+ updatedAt: z.ZodString;
11
+ }, "strip", z.ZodTypeAny, {
12
+ id: string;
13
+ slug: string;
14
+ name: string;
15
+ timezone: string;
16
+ createdAt: string;
17
+ updatedAt: string;
18
+ npsn?: string | null | undefined;
19
+ logoUrl?: string | null | undefined;
20
+ }, {
21
+ id: string;
22
+ slug: string;
23
+ name: string;
24
+ createdAt: string;
25
+ updatedAt: string;
26
+ npsn?: string | null | undefined;
27
+ logoUrl?: string | null | undefined;
28
+ timezone?: string | undefined;
29
+ }>;
30
+ export declare const createTenantSchema: z.ZodObject<Pick<{
31
+ id: z.ZodString;
32
+ slug: z.ZodString;
33
+ name: z.ZodString;
34
+ npsn: z.ZodNullable<z.ZodOptional<z.ZodString>>;
35
+ logoUrl: z.ZodNullable<z.ZodOptional<z.ZodString>>;
36
+ timezone: z.ZodDefault<z.ZodString>;
37
+ createdAt: z.ZodString;
38
+ updatedAt: z.ZodString;
39
+ }, "slug" | "name" | "npsn" | "logoUrl" | "timezone">, "strip", z.ZodTypeAny, {
40
+ slug: string;
41
+ name: string;
42
+ timezone: string;
43
+ npsn?: string | null | undefined;
44
+ logoUrl?: string | null | undefined;
45
+ }, {
46
+ slug: string;
47
+ name: string;
48
+ npsn?: string | null | undefined;
49
+ logoUrl?: string | null | undefined;
50
+ timezone?: string | undefined;
51
+ }>;
52
+ export type Tenant = z.infer<typeof tenantSchema>;
53
+ export type CreateTenantInput = z.infer<typeof createTenantSchema>;
54
+ export type CreateTenantSchemaInput = z.input<typeof createTenantSchema>;
@@ -0,0 +1,63 @@
1
+ import { z } from "zod";
2
+ export declare const studentSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ tenantId: z.ZodString;
5
+ nis: z.ZodString;
6
+ nisn: z.ZodNullable<z.ZodOptional<z.ZodString>>;
7
+ fullName: z.ZodString;
8
+ gender: z.ZodEnum<["L", "P"]>;
9
+ classRoomId: z.ZodString;
10
+ classRoomName: z.ZodString;
11
+ barcodeValue: z.ZodString;
12
+ isActive: z.ZodDefault<z.ZodBoolean>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ id: string;
15
+ tenantId: string;
16
+ isActive: boolean;
17
+ fullName: string;
18
+ nis: string;
19
+ gender: "L" | "P";
20
+ classRoomId: string;
21
+ classRoomName: string;
22
+ barcodeValue: string;
23
+ nisn?: string | null | undefined;
24
+ }, {
25
+ id: string;
26
+ tenantId: string;
27
+ fullName: string;
28
+ nis: string;
29
+ gender: "L" | "P";
30
+ classRoomId: string;
31
+ classRoomName: string;
32
+ barcodeValue: string;
33
+ isActive?: boolean | undefined;
34
+ nisn?: string | null | undefined;
35
+ }>;
36
+ export declare const studentOfflineSyncCacheSchema: z.ZodObject<Pick<{
37
+ id: z.ZodString;
38
+ tenantId: z.ZodString;
39
+ nis: z.ZodString;
40
+ nisn: z.ZodNullable<z.ZodOptional<z.ZodString>>;
41
+ fullName: z.ZodString;
42
+ gender: z.ZodEnum<["L", "P"]>;
43
+ classRoomId: z.ZodString;
44
+ classRoomName: z.ZodString;
45
+ barcodeValue: z.ZodString;
46
+ isActive: z.ZodDefault<z.ZodBoolean>;
47
+ }, "id" | "fullName" | "nis" | "classRoomId" | "classRoomName" | "barcodeValue">, "strip", z.ZodTypeAny, {
48
+ id: string;
49
+ fullName: string;
50
+ nis: string;
51
+ classRoomId: string;
52
+ classRoomName: string;
53
+ barcodeValue: string;
54
+ }, {
55
+ id: string;
56
+ fullName: string;
57
+ nis: string;
58
+ classRoomId: string;
59
+ classRoomName: string;
60
+ barcodeValue: string;
61
+ }>;
62
+ export type Student = z.infer<typeof studentSchema>;
63
+ export type StudentOfflineCache = z.infer<typeof studentOfflineSyncCacheSchema>;
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ export declare const userSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ tenantId: z.ZodString;
5
+ username: z.ZodString;
6
+ email: z.ZodNullable<z.ZodOptional<z.ZodString>>;
7
+ fullName: z.ZodString;
8
+ isActive: z.ZodDefault<z.ZodBoolean>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ id: string;
11
+ tenantId: string;
12
+ isActive: boolean;
13
+ username: string;
14
+ fullName: string;
15
+ email?: string | null | undefined;
16
+ }, {
17
+ id: string;
18
+ tenantId: string;
19
+ username: string;
20
+ fullName: string;
21
+ isActive?: boolean | undefined;
22
+ email?: string | null | undefined;
23
+ }>;
24
+ export type User = z.infer<typeof userSchema>;
package/package.json CHANGED
@@ -1,6 +1,55 @@
1
- {
2
- "name": "@sekolaos/shared-schema",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
1
+ {
2
+ "name": "@sekolaos/shared-schema",
3
+ "version": "1.0.0",
4
+ "description": "Single source of truth untuk validasi skema data dan inferensi tipe TypeScript pada ekosistem Sekolaos (backend Express, kiosk presensi, dan modul lainnya).",
5
+ "license": "ISC",
6
+ "author": "Sekolaos",
7
+ "type": "module",
8
+ "main": "./dist/cjs/index.js",
9
+ "module": "./dist/esm/index.js",
10
+ "types": "./dist/types/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/types/index.d.ts",
14
+ "import": "./dist/esm/index.js",
15
+ "require": "./dist/cjs/index.js"
16
+ },
17
+ "./package.json": "./package.json"
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
22
+ "sideEffects": false,
23
+ "engines": {
24
+ "node": ">=18.0.0"
25
+ },
26
+ "scripts": {
27
+ "clean": "rimraf dist",
28
+ "build": "pnpm run clean && pnpm run build:esm && pnpm run build:cjs && pnpm run build:types && node ./scripts/write-cjs-pkg.cjs",
29
+ "build:esm": "tsc -p tsconfig.esm.json",
30
+ "build:cjs": "tsc -p tsconfig.cjs.json",
31
+ "build:types": "tsc -p tsconfig.types.json",
32
+ "typecheck": "tsc -p tsconfig.json --noEmit",
33
+ "test": "vitest run",
34
+ "test:watch": "vitest",
35
+ "prepublishOnly": "pnpm run build && pnpm run test"
36
+ },
37
+ "peerDependencies": {
38
+ "zod": "^3.23.0"
39
+ },
40
+ "devDependencies": {
41
+ "rimraf": "^6.0.1",
42
+ "typescript": "^5.6.3",
43
+ "vitest": "^2.1.8",
44
+ "zod": "^3.23.8"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "keywords": [
50
+ "sekolaos",
51
+ "zod",
52
+ "schema",
53
+ "shared"
54
+ ]
55
+ }