@lasterp/shared 1.0.0-beta.18 → 1.0.0-beta.19

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.
package/dist/index.cjs CHANGED
@@ -63,16 +63,70 @@ __export(exports_src, {
63
63
  useFrappeDeleteCall: () => useFrappeDeleteCall,
64
64
  useFrappeCreateDoc: () => useFrappeCreateDoc,
65
65
  useFrappeAuth: () => useFrappeAuth,
66
+ screenFormSchema: () => screenFormSchema,
67
+ modelFormSchema: () => modelFormSchema,
68
+ itemFormSchema: () => itemFormSchema,
66
69
  equalsIgnoreCase: () => equalsIgnoreCase,
67
70
  decamelizeKeys: () => import_humps.decamelizeKeys,
68
71
  decamelize: () => import_humps.decamelize,
72
+ colourFormSchema: () => colourFormSchema,
69
73
  camelizeKeys: () => import_humps.camelizeKeys,
70
74
  camelize: () => import_humps.camelize,
71
75
  LocaleProvider: () => LocaleProvider,
72
76
  FrappeProvider: () => FrappeProvider,
73
- FrappeContext: () => FrappeContext
77
+ FrappeContext: () => FrappeContext,
78
+ COLOR_SYSTEMS: () => COLOR_SYSTEMS,
79
+ ATTRIBUTES: () => ATTRIBUTES
74
80
  });
75
81
  module.exports = __toCommonJS(exports_src);
82
+ // src/catalog/schema.ts
83
+ var import_zod = require("zod");
84
+ var ATTRIBUTES = ["Colour", "Storage", "Memory", "Screen"];
85
+ var COLOR_SYSTEMS = [
86
+ "White",
87
+ "Black",
88
+ "Yellow",
89
+ "Red",
90
+ "Green",
91
+ "Blue",
92
+ "Purple",
93
+ "Orange",
94
+ "Pink",
95
+ "Brown",
96
+ "Gray",
97
+ "Silver",
98
+ "Gold"
99
+ ];
100
+ var colourFormSchema = import_zod.z.object({
101
+ color: import_zod.z.string().min(1, "Color is required"),
102
+ color_hex: import_zod.z.string().optional(),
103
+ color_system: import_zod.z.enum(COLOR_SYSTEMS).optional(),
104
+ images: import_zod.z.array(import_zod.z.union([import_zod.z.instanceof(File), import_zod.z.string()])).default([])
105
+ });
106
+ var screenFormSchema = import_zod.z.object({
107
+ screen: import_zod.z.string().min(1, "Screen is required"),
108
+ height: import_zod.z.number().positive().optional(),
109
+ width: import_zod.z.number().positive().optional(),
110
+ weight: import_zod.z.number().positive().optional()
111
+ });
112
+ var modelFormSchema = import_zod.z.object({
113
+ model: import_zod.z.string().min(1, "Model is required"),
114
+ sim_card_type: import_zod.z.string().optional(),
115
+ connectivity: import_zod.z.array(import_zod.z.string())
116
+ });
117
+ var itemFormSchema = import_zod.z.object({
118
+ item_code: import_zod.z.string().min(1, "Item code is required"),
119
+ item_group: import_zod.z.string().optional(),
120
+ brand: import_zod.z.string().optional(),
121
+ os: import_zod.z.string().optional(),
122
+ release_year: import_zod.z.number().int().min(1900).max(2100).optional(),
123
+ attributes: import_zod.z.array(import_zod.z.enum(ATTRIBUTES)),
124
+ colours: import_zod.z.array(colourFormSchema),
125
+ storages: import_zod.z.array(import_zod.z.string()),
126
+ memories: import_zod.z.array(import_zod.z.string()),
127
+ screens: import_zod.z.array(screenFormSchema),
128
+ models: import_zod.z.array(modelFormSchema)
129
+ });
76
130
  // src/frappe/provider.tsx
77
131
  var import_react = require("react");
78
132
  var import_frappe_js_sdk = require("frappe-js-sdk");
@@ -456,7 +510,7 @@ var useFrappeGetDoc = (doctype, name, options) => {
456
510
  const { data, error, isLoading, isFetching, refetch } = import_react_query7.useQuery({
457
511
  queryKey,
458
512
  queryFn: () => db.getDoc(doctype, name),
459
- enabled: !!name,
513
+ enabled: options?.enabled ?? true,
460
514
  staleTime: options?.staleTime ?? 5 * 60 * 1000,
461
515
  retry: options?.retry ?? false
462
516
  });
package/dist/index.d.cts CHANGED
@@ -38,6 +38,14 @@ interface Image {
38
38
  image: string;
39
39
  color: string;
40
40
  }
41
+ import { z } from "zod";
42
+ declare const ATTRIBUTES: readonly ["Colour", "Storage", "Memory", "Screen"];
43
+ declare const COLOR_SYSTEMS: readonly ["White", "Black", "Yellow", "Red", "Green", "Blue", "Purple", "Orange", "Pink", "Brown", "Gray", "Silver", "Gold"];
44
+ declare const colourFormSchema: unknown;
45
+ declare const screenFormSchema: unknown;
46
+ declare const modelFormSchema: unknown;
47
+ declare const itemFormSchema: unknown;
48
+ type ItemFormValues = z.infer<typeof itemFormSchema>;
41
49
  interface Globals {
42
50
  header: Header;
43
51
  footer: Footer;
@@ -511,6 +519,7 @@ import { FrappeDoc as FrappeDoc2 } from "frappe-js-sdk/lib/db/types";
511
519
  * return <div>{data?.name} - {data?.email}</div>
512
520
  */
513
521
  declare const useFrappeGetDoc: <T = any>(doctype: string, name?: string, options?: {
522
+ enabled?: boolean;
514
523
  staleTime?: number;
515
524
  retry?: boolean | number;
516
525
  }) => {
@@ -710,4 +719,4 @@ interface ProductContext {
710
719
  }
711
720
  import { camelize, decamelize, camelizeKeys, decamelizeKeys } from "humps";
712
721
  declare function equalsIgnoreCase(str1: string, str2: string): boolean;
713
- export { useVariantSelector, useSearch, useLocale, useFrappeUpdateDoc, useFrappePutCall, useFrappePrefetchDoc, useFrappePostCall, useFrappeGetMeta, useFrappeGetDocList, useFrappeGetDocCount, useFrappeGetDoc, useFrappeGetCall, useFrappeFileUpload, useFrappeEventListener, useFrappeDocumentEventListener, useFrappeDocTypeEventListener, useFrappeDeleteDoc, useFrappeDeleteCall, useFrappeCreateDoc, useFrappeAuth, equalsIgnoreCase, decamelizeKeys, decamelize, camelizeKeys, camelize, WorkspaceSidebarItem, WorkspaceSidebar, ViewerEventData, VariantSelectorResult, VariantSelectorProps, VariantSelectorOption, UseFrappeFileUploadReturnType, TopbarItem, Topbar, TokenParams, ShopContext, SearchResult, ScreenSpec, ProductVariant, ProductContext, Product, Page, NavbarSubItemGroup, NavbarSubItem, NavbarItem, Model, LocaleProvider, Item, Image, Hero, Header, Globals, FrappeResult, FrappeProviderProps, FrappeProvider, FrappeMutationResult, FrappeMetaField, FrappeMeta, FrappeFileUploadResponse, FrappeError, FrappeContext, FrappeConfig, FooterItemGroup, FooterItem, Footer, DocumentUpdateEventData, DocTypeListUpdateEventData, Colour, Category, Brand, Block };
722
+ export { useVariantSelector, useSearch, useLocale, useFrappeUpdateDoc, useFrappePutCall, useFrappePrefetchDoc, useFrappePostCall, useFrappeGetMeta, useFrappeGetDocList, useFrappeGetDocCount, useFrappeGetDoc, useFrappeGetCall, useFrappeFileUpload, useFrappeEventListener, useFrappeDocumentEventListener, useFrappeDocTypeEventListener, useFrappeDeleteDoc, useFrappeDeleteCall, useFrappeCreateDoc, useFrappeAuth, screenFormSchema, modelFormSchema, itemFormSchema, equalsIgnoreCase, decamelizeKeys, decamelize, colourFormSchema, camelizeKeys, camelize, WorkspaceSidebarItem, WorkspaceSidebar, ViewerEventData, VariantSelectorResult, VariantSelectorProps, VariantSelectorOption, UseFrappeFileUploadReturnType, TopbarItem, Topbar, TokenParams, ShopContext, SearchResult, ScreenSpec, ProductVariant, ProductContext, Product, Page, NavbarSubItemGroup, NavbarSubItem, NavbarItem, Model, LocaleProvider, ItemFormValues, Item, Image, Hero, Header, Globals, FrappeResult, FrappeProviderProps, FrappeProvider, FrappeMutationResult, FrappeMetaField, FrappeMeta, FrappeFileUploadResponse, FrappeError, FrappeContext, FrappeConfig, FooterItemGroup, FooterItem, Footer, DocumentUpdateEventData, DocTypeListUpdateEventData, Colour, Category, COLOR_SYSTEMS, Brand, Block, ATTRIBUTES };
package/dist/index.d.ts CHANGED
@@ -38,6 +38,14 @@ interface Image {
38
38
  image: string;
39
39
  color: string;
40
40
  }
41
+ import { z } from "zod";
42
+ declare const ATTRIBUTES: readonly ["Colour", "Storage", "Memory", "Screen"];
43
+ declare const COLOR_SYSTEMS: readonly ["White", "Black", "Yellow", "Red", "Green", "Blue", "Purple", "Orange", "Pink", "Brown", "Gray", "Silver", "Gold"];
44
+ declare const colourFormSchema: unknown;
45
+ declare const screenFormSchema: unknown;
46
+ declare const modelFormSchema: unknown;
47
+ declare const itemFormSchema: unknown;
48
+ type ItemFormValues = z.infer<typeof itemFormSchema>;
41
49
  interface Globals {
42
50
  header: Header;
43
51
  footer: Footer;
@@ -511,6 +519,7 @@ import { FrappeDoc as FrappeDoc2 } from "frappe-js-sdk/lib/db/types";
511
519
  * return <div>{data?.name} - {data?.email}</div>
512
520
  */
513
521
  declare const useFrappeGetDoc: <T = any>(doctype: string, name?: string, options?: {
522
+ enabled?: boolean;
514
523
  staleTime?: number;
515
524
  retry?: boolean | number;
516
525
  }) => {
@@ -710,4 +719,4 @@ interface ProductContext {
710
719
  }
711
720
  import { camelize, decamelize, camelizeKeys, decamelizeKeys } from "humps";
712
721
  declare function equalsIgnoreCase(str1: string, str2: string): boolean;
713
- export { useVariantSelector, useSearch, useLocale, useFrappeUpdateDoc, useFrappePutCall, useFrappePrefetchDoc, useFrappePostCall, useFrappeGetMeta, useFrappeGetDocList, useFrappeGetDocCount, useFrappeGetDoc, useFrappeGetCall, useFrappeFileUpload, useFrappeEventListener, useFrappeDocumentEventListener, useFrappeDocTypeEventListener, useFrappeDeleteDoc, useFrappeDeleteCall, useFrappeCreateDoc, useFrappeAuth, equalsIgnoreCase, decamelizeKeys, decamelize, camelizeKeys, camelize, WorkspaceSidebarItem, WorkspaceSidebar, ViewerEventData, VariantSelectorResult, VariantSelectorProps, VariantSelectorOption, UseFrappeFileUploadReturnType, TopbarItem, Topbar, TokenParams, ShopContext, SearchResult, ScreenSpec, ProductVariant, ProductContext, Product, Page, NavbarSubItemGroup, NavbarSubItem, NavbarItem, Model, LocaleProvider, Item, Image, Hero, Header, Globals, FrappeResult, FrappeProviderProps, FrappeProvider, FrappeMutationResult, FrappeMetaField, FrappeMeta, FrappeFileUploadResponse, FrappeError, FrappeContext, FrappeConfig, FooterItemGroup, FooterItem, Footer, DocumentUpdateEventData, DocTypeListUpdateEventData, Colour, Category, Brand, Block };
722
+ export { useVariantSelector, useSearch, useLocale, useFrappeUpdateDoc, useFrappePutCall, useFrappePrefetchDoc, useFrappePostCall, useFrappeGetMeta, useFrappeGetDocList, useFrappeGetDocCount, useFrappeGetDoc, useFrappeGetCall, useFrappeFileUpload, useFrappeEventListener, useFrappeDocumentEventListener, useFrappeDocTypeEventListener, useFrappeDeleteDoc, useFrappeDeleteCall, useFrappeCreateDoc, useFrappeAuth, screenFormSchema, modelFormSchema, itemFormSchema, equalsIgnoreCase, decamelizeKeys, decamelize, colourFormSchema, camelizeKeys, camelize, WorkspaceSidebarItem, WorkspaceSidebar, ViewerEventData, VariantSelectorResult, VariantSelectorProps, VariantSelectorOption, UseFrappeFileUploadReturnType, TopbarItem, Topbar, TokenParams, ShopContext, SearchResult, ScreenSpec, ProductVariant, ProductContext, Product, Page, NavbarSubItemGroup, NavbarSubItem, NavbarItem, Model, LocaleProvider, ItemFormValues, Item, Image, Hero, Header, Globals, FrappeResult, FrappeProviderProps, FrappeProvider, FrappeMutationResult, FrappeMetaField, FrappeMeta, FrappeFileUploadResponse, FrappeError, FrappeContext, FrappeConfig, FooterItemGroup, FooterItem, Footer, DocumentUpdateEventData, DocTypeListUpdateEventData, Colour, Category, COLOR_SYSTEMS, Brand, Block, ATTRIBUTES };
package/dist/index.js CHANGED
@@ -1,4 +1,52 @@
1
1
  "use client";
2
+ // src/catalog/schema.ts
3
+ import { z } from "zod";
4
+ var ATTRIBUTES = ["Colour", "Storage", "Memory", "Screen"];
5
+ var COLOR_SYSTEMS = [
6
+ "White",
7
+ "Black",
8
+ "Yellow",
9
+ "Red",
10
+ "Green",
11
+ "Blue",
12
+ "Purple",
13
+ "Orange",
14
+ "Pink",
15
+ "Brown",
16
+ "Gray",
17
+ "Silver",
18
+ "Gold"
19
+ ];
20
+ var colourFormSchema = z.object({
21
+ color: z.string().min(1, "Color is required"),
22
+ color_hex: z.string().optional(),
23
+ color_system: z.enum(COLOR_SYSTEMS).optional(),
24
+ images: z.array(z.union([z.instanceof(File), z.string()])).default([])
25
+ });
26
+ var screenFormSchema = z.object({
27
+ screen: z.string().min(1, "Screen is required"),
28
+ height: z.number().positive().optional(),
29
+ width: z.number().positive().optional(),
30
+ weight: z.number().positive().optional()
31
+ });
32
+ var modelFormSchema = z.object({
33
+ model: z.string().min(1, "Model is required"),
34
+ sim_card_type: z.string().optional(),
35
+ connectivity: z.array(z.string())
36
+ });
37
+ var itemFormSchema = z.object({
38
+ item_code: z.string().min(1, "Item code is required"),
39
+ item_group: z.string().optional(),
40
+ brand: z.string().optional(),
41
+ os: z.string().optional(),
42
+ release_year: z.number().int().min(1900).max(2100).optional(),
43
+ attributes: z.array(z.enum(ATTRIBUTES)),
44
+ colours: z.array(colourFormSchema),
45
+ storages: z.array(z.string()),
46
+ memories: z.array(z.string()),
47
+ screens: z.array(screenFormSchema),
48
+ models: z.array(modelFormSchema)
49
+ });
2
50
  // src/frappe/provider.tsx
3
51
  import { useMemo, createContext } from "react";
4
52
  import { FrappeApp } from "frappe-js-sdk";
@@ -382,7 +430,7 @@ var useFrappeGetDoc = (doctype, name, options) => {
382
430
  const { data, error, isLoading, isFetching, refetch } = useQuery4({
383
431
  queryKey,
384
432
  queryFn: () => db.getDoc(doctype, name),
385
- enabled: !!name,
433
+ enabled: options?.enabled ?? true,
386
434
  staleTime: options?.staleTime ?? 5 * 60 * 1000,
387
435
  retry: options?.retry ?? false
388
436
  });
@@ -679,12 +727,18 @@ export {
679
727
  useFrappeDeleteCall,
680
728
  useFrappeCreateDoc,
681
729
  useFrappeAuth,
730
+ screenFormSchema,
731
+ modelFormSchema,
732
+ itemFormSchema,
682
733
  equalsIgnoreCase,
683
734
  decamelizeKeys,
684
735
  decamelize,
736
+ colourFormSchema,
685
737
  camelizeKeys,
686
738
  camelize,
687
739
  LocaleProvider,
688
740
  FrappeProvider,
689
- FrappeContext
741
+ FrappeContext,
742
+ COLOR_SYSTEMS,
743
+ ATTRIBUTES
690
744
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lasterp/shared",
3
- "version": "1.0.0-beta.18",
3
+ "version": "1.0.0-beta.19",
4
4
  "description": "Shared repo for webapp and native app",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -46,6 +46,7 @@
46
46
  "frappe-js-sdk": "^1.12.0",
47
47
  "humps": "^2.0.1",
48
48
  "socket.io-client": "^4.8.3",
49
+ "zod": "^4.3.6",
49
50
  "zustand": "^5.0.11"
50
51
  }
51
52
  }