@statezero/core 0.2.38 → 0.2.39
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/actions/backend1/django_app/calculate-hash.d.ts +57 -0
- package/dist/actions/backend1/django_app/calculate-hash.js +80 -0
- package/dist/actions/backend1/django_app/calculate-hash.schema.json +148 -0
- package/dist/actions/backend1/django_app/get-current-username.d.ts +29 -0
- package/dist/actions/backend1/django_app/get-current-username.js +65 -0
- package/dist/actions/backend1/django_app/get-current-username.schema.json +47 -0
- package/dist/actions/backend1/django_app/get-server-status.d.ts +38 -0
- package/dist/actions/backend1/django_app/get-server-status.js +68 -0
- package/dist/actions/backend1/django_app/get-server-status.schema.json +93 -0
- package/dist/actions/backend1/django_app/get-user-info.d.ts +44 -0
- package/dist/actions/backend1/django_app/get-user-info.js +70 -0
- package/dist/actions/backend1/django_app/get-user-info.schema.json +127 -0
- package/dist/actions/backend1/django_app/index.d.ts +1 -0
- package/dist/actions/backend1/django_app/index.js +6 -0
- package/dist/actions/backend1/django_app/process-data.d.ts +51 -0
- package/dist/actions/backend1/django_app/process-data.js +78 -0
- package/dist/actions/backend1/django_app/process-data.schema.json +117 -0
- package/dist/actions/backend1/django_app/send-notification.d.ts +55 -0
- package/dist/actions/backend1/django_app/send-notification.js +81 -0
- package/dist/actions/backend1/django_app/send-notification.schema.json +175 -0
- package/dist/actions/backend1/index.d.ts +1 -0
- package/dist/actions/backend1/index.js +1 -0
- package/dist/actions/default/django_app/calculate-hash.d.ts +57 -0
- package/dist/actions/default/django_app/calculate-hash.js +80 -0
- package/dist/actions/default/django_app/calculate-hash.schema.json +148 -0
- package/dist/actions/default/django_app/get-current-username.d.ts +29 -0
- package/dist/actions/default/django_app/get-current-username.js +65 -0
- package/dist/actions/default/django_app/get-current-username.schema.json +47 -0
- package/dist/actions/default/django_app/get-server-status.d.ts +38 -0
- package/dist/actions/default/django_app/get-server-status.js +68 -0
- package/dist/actions/default/django_app/get-server-status.schema.json +93 -0
- package/dist/actions/default/django_app/get-user-info.d.ts +44 -0
- package/dist/actions/default/django_app/get-user-info.js +70 -0
- package/dist/actions/default/django_app/get-user-info.schema.json +127 -0
- package/dist/actions/default/django_app/index.d.ts +1 -0
- package/dist/actions/default/django_app/index.js +6 -0
- package/dist/actions/default/django_app/process-data.d.ts +51 -0
- package/dist/actions/default/django_app/process-data.js +78 -0
- package/dist/actions/default/django_app/process-data.schema.json +117 -0
- package/dist/actions/default/django_app/send-notification.d.ts +55 -0
- package/dist/actions/default/django_app/send-notification.js +81 -0
- package/dist/actions/default/django_app/send-notification.schema.json +175 -0
- package/dist/actions/default/index.d.ts +1 -0
- package/dist/actions/default/index.js +1 -0
- package/dist/actions/index.d.ts +1 -0
- package/dist/actions/index.js +5 -0
- package/dist/adaptors/react/composables.d.ts +1 -0
- package/dist/adaptors/react/composables.js +4 -0
- package/dist/adaptors/react/index.d.ts +1 -0
- package/dist/adaptors/react/index.js +1 -0
- package/dist/adaptors/vue/components/LayoutRenderer.js +46 -49
- package/dist/adaptors/vue/components/defaults/index.d.ts +7 -0
- package/dist/adaptors/vue/components/defaults/index.js +31 -0
- package/dist/adaptors/vue/components/index.d.ts +1 -0
- package/dist/adaptors/vue/components/index.js +7 -0
- package/dist/adaptors/vue/composables.d.ts +2 -0
- package/dist/adaptors/vue/composables.js +44 -0
- package/dist/adaptors/vue/index.d.ts +3 -0
- package/dist/adaptors/vue/index.js +4 -0
- package/dist/adaptors/vue/reactivity.d.ts +18 -0
- package/dist/adaptors/vue/reactivity.js +132 -0
- package/dist/cli/commands/sync.d.ts +6 -0
- package/dist/cli/commands/sync.js +30 -0
- package/dist/cli/commands/syncActions.d.ts +46 -0
- package/dist/cli/commands/syncActions.js +717 -0
- package/dist/cli/commands/syncModels.d.ts +132 -0
- package/dist/cli/commands/syncModels.js +1120 -0
- package/dist/cli/configFileLoader.d.ts +10 -0
- package/dist/cli/configFileLoader.js +85 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +22 -0
- package/dist/config.d.ts +57 -0
- package/dist/config.js +273 -0
- package/dist/core/eventReceivers.d.ts +185 -0
- package/dist/core/eventReceivers.js +266 -0
- package/dist/core/utils.d.ts +8 -0
- package/dist/core/utils.js +62 -0
- package/dist/errorHandler.d.ts +21 -0
- package/dist/errorHandler.js +27 -0
- package/dist/filtering/localFiltering.d.ts +110 -0
- package/dist/filtering/localFiltering.js +1080 -0
- package/dist/flavours/django/dates.d.ts +34 -0
- package/dist/flavours/django/dates.js +113 -0
- package/dist/flavours/django/errors.d.ts +138 -0
- package/dist/flavours/django/errors.js +195 -0
- package/dist/flavours/django/f.d.ts +6 -0
- package/dist/flavours/django/f.js +91 -0
- package/dist/flavours/django/files.d.ts +62 -0
- package/dist/flavours/django/files.js +355 -0
- package/dist/flavours/django/makeApiCall.d.ts +36 -0
- package/dist/flavours/django/makeApiCall.js +169 -0
- package/dist/flavours/django/manager.d.ts +204 -0
- package/dist/flavours/django/manager.js +222 -0
- package/dist/flavours/django/model.d.ts +137 -0
- package/dist/flavours/django/model.js +366 -0
- package/dist/flavours/django/operationFactory.d.ts +73 -0
- package/dist/flavours/django/operationFactory.js +248 -0
- package/dist/flavours/django/q.d.ts +70 -0
- package/dist/flavours/django/q.js +43 -0
- package/dist/flavours/django/queryExecutor.d.ts +149 -0
- package/dist/flavours/django/queryExecutor.js +590 -0
- package/dist/flavours/django/querySet.d.ts +301 -0
- package/dist/flavours/django/querySet.js +736 -0
- package/dist/flavours/django/serializers.d.ts +39 -0
- package/dist/flavours/django/serializers.js +296 -0
- package/dist/flavours/django/tempPk.d.ts +31 -0
- package/dist/flavours/django/tempPk.js +92 -0
- package/dist/flavours/django/utils.d.ts +19 -0
- package/dist/flavours/django/utils.js +29 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.js +48 -0
- package/dist/models/backend1/django_app/comprehensivemodel.d.ts +894 -0
- package/dist/models/backend1/django_app/comprehensivemodel.js +71 -0
- package/dist/models/backend1/django_app/comprehensivemodel.schema.json +870 -0
- package/dist/models/backend1/django_app/custompkmodel.d.ts +92 -0
- package/dist/models/backend1/django_app/custompkmodel.js +69 -0
- package/dist/models/backend1/django_app/custompkmodel.schema.json +71 -0
- package/dist/models/backend1/django_app/dailyrate.d.ts +230 -0
- package/dist/models/backend1/django_app/dailyrate.js +71 -0
- package/dist/models/backend1/django_app/dailyrate.schema.json +212 -0
- package/dist/models/backend1/django_app/deepmodellevel1.d.ts +140 -0
- package/dist/models/backend1/django_app/deepmodellevel1.js +72 -0
- package/dist/models/backend1/django_app/deepmodellevel1.schema.json +114 -0
- package/dist/models/backend1/django_app/deepmodellevel2.d.ts +118 -0
- package/dist/models/backend1/django_app/deepmodellevel2.js +71 -0
- package/dist/models/backend1/django_app/deepmodellevel2.schema.json +92 -0
- package/dist/models/backend1/django_app/deepmodellevel3.d.ts +92 -0
- package/dist/models/backend1/django_app/deepmodellevel3.js +69 -0
- package/dist/models/backend1/django_app/deepmodellevel3.schema.json +69 -0
- package/dist/models/backend1/django_app/dummymodel.d.ts +134 -0
- package/dist/models/backend1/django_app/dummymodel.js +71 -0
- package/dist/models/backend1/django_app/dummymodel.schema.json +109 -0
- package/dist/models/backend1/django_app/dummyrelatedmodel.d.ts +92 -0
- package/dist/models/backend1/django_app/dummyrelatedmodel.js +69 -0
- package/dist/models/backend1/django_app/dummyrelatedmodel.schema.json +69 -0
- package/dist/models/backend1/django_app/filetest.d.ts +140 -0
- package/dist/models/backend1/django_app/filetest.js +69 -0
- package/dist/models/backend1/django_app/filetest.schema.json +111 -0
- package/dist/models/backend1/django_app/index.d.ts +1 -0
- package/dist/models/backend1/django_app/index.js +21 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel1.d.ts +118 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel1.js +71 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel1.schema.json +94 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel2.d.ts +118 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel2.js +71 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel2.schema.json +94 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel3.d.ts +134 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel3.js +71 -0
- package/dist/models/backend1/django_app/m2mdepthtestlevel3.schema.json +112 -0
- package/dist/models/backend1/django_app/modelwithcustompkrelation.d.ts +118 -0
- package/dist/models/backend1/django_app/modelwithcustompkrelation.js +71 -0
- package/dist/models/backend1/django_app/modelwithcustompkrelation.schema.json +93 -0
- package/dist/models/backend1/django_app/modelwithrestrictedfields.d.ts +134 -0
- package/dist/models/backend1/django_app/modelwithrestrictedfields.js +71 -0
- package/dist/models/backend1/django_app/modelwithrestrictedfields.schema.json +111 -0
- package/dist/models/backend1/django_app/namefiltercustompkmodel.d.ts +92 -0
- package/dist/models/backend1/django_app/namefiltercustompkmodel.js +69 -0
- package/dist/models/backend1/django_app/namefiltercustompkmodel.schema.json +71 -0
- package/dist/models/backend1/django_app/order.d.ts +220 -0
- package/dist/models/backend1/django_app/order.js +71 -0
- package/dist/models/backend1/django_app/order.schema.json +203 -0
- package/dist/models/backend1/django_app/orderitem.d.ts +172 -0
- package/dist/models/backend1/django_app/orderitem.js +72 -0
- package/dist/models/backend1/django_app/orderitem.schema.json +149 -0
- package/dist/models/backend1/django_app/product.d.ts +254 -0
- package/dist/models/backend1/django_app/product.js +71 -0
- package/dist/models/backend1/django_app/product.schema.json +277 -0
- package/dist/models/backend1/django_app/productcategory.d.ts +92 -0
- package/dist/models/backend1/django_app/productcategory.js +69 -0
- package/dist/models/backend1/django_app/productcategory.schema.json +70 -0
- package/dist/models/backend1/django_app/rateplan.d.ts +92 -0
- package/dist/models/backend1/django_app/rateplan.js +69 -0
- package/dist/models/backend1/django_app/rateplan.schema.json +70 -0
- package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.d.ts +108 -0
- package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.js +69 -0
- package/dist/models/backend1/django_app/restrictedfieldrelatedmodel.schema.json +87 -0
- package/dist/models/backend1/fileobject.d.ts +4 -0
- package/dist/models/backend1/fileobject.js +9 -0
- package/dist/models/backend1/index.d.ts +2 -0
- package/dist/models/backend1/index.js +2 -0
- package/dist/models/default/django_app/comprehensivemodel.d.ts +894 -0
- package/dist/models/default/django_app/comprehensivemodel.js +71 -0
- package/dist/models/default/django_app/comprehensivemodel.schema.json +870 -0
- package/dist/models/default/django_app/custompkmodel.d.ts +92 -0
- package/dist/models/default/django_app/custompkmodel.js +69 -0
- package/dist/models/default/django_app/custompkmodel.schema.json +71 -0
- package/dist/models/default/django_app/dailyrate.d.ts +230 -0
- package/dist/models/default/django_app/dailyrate.js +71 -0
- package/dist/models/default/django_app/dailyrate.schema.json +212 -0
- package/dist/models/default/django_app/deepmodellevel1.d.ts +128 -0
- package/dist/models/default/django_app/deepmodellevel1.js +72 -0
- package/dist/models/default/django_app/deepmodellevel1.schema.json +102 -0
- package/dist/models/default/django_app/deepmodellevel2.d.ts +106 -0
- package/dist/models/default/django_app/deepmodellevel2.js +71 -0
- package/dist/models/default/django_app/deepmodellevel2.schema.json +80 -0
- package/dist/models/default/django_app/deepmodellevel3.d.ts +80 -0
- package/dist/models/default/django_app/deepmodellevel3.js +69 -0
- package/dist/models/default/django_app/deepmodellevel3.schema.json +57 -0
- package/dist/models/default/django_app/dummymodel.d.ts +122 -0
- package/dist/models/default/django_app/dummymodel.js +71 -0
- package/dist/models/default/django_app/dummymodel.schema.json +97 -0
- package/dist/models/default/django_app/dummyrelatedmodel.d.ts +80 -0
- package/dist/models/default/django_app/dummyrelatedmodel.js +69 -0
- package/dist/models/default/django_app/dummyrelatedmodel.schema.json +57 -0
- package/dist/models/default/django_app/filetest.d.ts +128 -0
- package/dist/models/default/django_app/filetest.js +69 -0
- package/dist/models/default/django_app/filetest.schema.json +99 -0
- package/dist/models/default/django_app/index.d.ts +1 -0
- package/dist/models/default/django_app/index.js +21 -0
- package/dist/models/default/django_app/m2mdepthtestlevel1.d.ts +118 -0
- package/dist/models/default/django_app/m2mdepthtestlevel1.js +71 -0
- package/dist/models/default/django_app/m2mdepthtestlevel1.schema.json +94 -0
- package/dist/models/default/django_app/m2mdepthtestlevel2.d.ts +118 -0
- package/dist/models/default/django_app/m2mdepthtestlevel2.js +71 -0
- package/dist/models/default/django_app/m2mdepthtestlevel2.schema.json +94 -0
- package/dist/models/default/django_app/m2mdepthtestlevel3.d.ts +134 -0
- package/dist/models/default/django_app/m2mdepthtestlevel3.js +71 -0
- package/dist/models/default/django_app/m2mdepthtestlevel3.schema.json +112 -0
- package/dist/models/default/django_app/modelwithcustompkrelation.d.ts +118 -0
- package/dist/models/default/django_app/modelwithcustompkrelation.js +71 -0
- package/dist/models/default/django_app/modelwithcustompkrelation.schema.json +93 -0
- package/dist/models/default/django_app/modelwithrestrictedfields.d.ts +134 -0
- package/dist/models/default/django_app/modelwithrestrictedfields.js +71 -0
- package/dist/models/default/django_app/modelwithrestrictedfields.schema.json +111 -0
- package/dist/models/default/django_app/namefiltercustompkmodel.d.ts +92 -0
- package/dist/models/default/django_app/namefiltercustompkmodel.js +69 -0
- package/dist/models/default/django_app/namefiltercustompkmodel.schema.json +71 -0
- package/dist/models/default/django_app/order.d.ts +220 -0
- package/dist/models/default/django_app/order.js +71 -0
- package/dist/models/default/django_app/order.schema.json +203 -0
- package/dist/models/default/django_app/orderitem.d.ts +172 -0
- package/dist/models/default/django_app/orderitem.js +72 -0
- package/dist/models/default/django_app/orderitem.schema.json +149 -0
- package/dist/models/default/django_app/product.d.ts +254 -0
- package/dist/models/default/django_app/product.js +71 -0
- package/dist/models/default/django_app/product.schema.json +277 -0
- package/dist/models/default/django_app/productcategory.d.ts +92 -0
- package/dist/models/default/django_app/productcategory.js +69 -0
- package/dist/models/default/django_app/productcategory.schema.json +70 -0
- package/dist/models/default/django_app/rateplan.d.ts +92 -0
- package/dist/models/default/django_app/rateplan.js +69 -0
- package/dist/models/default/django_app/rateplan.schema.json +70 -0
- package/dist/models/default/django_app/restrictedfieldrelatedmodel.d.ts +108 -0
- package/dist/models/default/django_app/restrictedfieldrelatedmodel.js +69 -0
- package/dist/models/default/django_app/restrictedfieldrelatedmodel.schema.json +87 -0
- package/dist/models/default/fileobject.d.ts +4 -0
- package/dist/models/default/fileobject.js +9 -0
- package/dist/models/default/index.d.ts +2 -0
- package/dist/models/default/index.js +2 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.js +5 -0
- package/dist/react-entry.d.ts +2 -0
- package/dist/react-entry.js +2 -0
- package/dist/reactiveAdaptor.d.ts +24 -0
- package/dist/reactiveAdaptor.js +38 -0
- package/dist/reset.d.ts +15 -0
- package/dist/reset.js +97 -0
- package/dist/setup.d.ts +15 -0
- package/dist/setup.js +33 -0
- package/dist/syncEngine/cache/cache.d.ts +75 -0
- package/dist/syncEngine/cache/cache.js +355 -0
- package/dist/syncEngine/metrics/metricOptCalcs.d.ts +79 -0
- package/dist/syncEngine/metrics/metricOptCalcs.js +284 -0
- package/dist/syncEngine/registries/metricRegistry.d.ts +58 -0
- package/dist/syncEngine/registries/metricRegistry.js +171 -0
- package/dist/syncEngine/registries/modelStoreRegistry.d.ts +11 -0
- package/dist/syncEngine/registries/modelStoreRegistry.js +63 -0
- package/dist/syncEngine/registries/querysetStoreGraph.d.ts +41 -0
- package/dist/syncEngine/registries/querysetStoreGraph.js +174 -0
- package/dist/syncEngine/registries/querysetStoreRegistry.d.ts +72 -0
- package/dist/syncEngine/registries/querysetStoreRegistry.js +335 -0
- package/dist/syncEngine/stores/metricStore.d.ts +55 -0
- package/dist/syncEngine/stores/metricStore.js +222 -0
- package/dist/syncEngine/stores/modelStore.d.ts +53 -0
- package/dist/syncEngine/stores/modelStore.js +565 -0
- package/dist/syncEngine/stores/operation.d.ts +139 -0
- package/dist/syncEngine/stores/operation.js +291 -0
- package/dist/syncEngine/stores/operationEventHandlers.d.ts +8 -0
- package/dist/syncEngine/stores/operationEventHandlers.js +322 -0
- package/dist/syncEngine/stores/querysetStore.d.ts +60 -0
- package/dist/syncEngine/stores/querysetStore.js +294 -0
- package/dist/syncEngine/stores/reactivity.d.ts +3 -0
- package/dist/syncEngine/stores/reactivity.js +4 -0
- package/dist/syncEngine/stores/utils.d.ts +14 -0
- package/dist/syncEngine/stores/utils.js +32 -0
- package/dist/syncEngine/sync.d.ts +46 -0
- package/dist/syncEngine/sync.js +389 -0
- package/dist/testing.d.ts +63 -0
- package/dist/testing.js +175 -0
- package/dist/vue-entry.d.ts +15 -0
- package/dist/vue-entry.js +7 -0
- package/package.json +6 -7
- package/dist/adaptors/vue/components/layout.tailwind.css +0 -51
- /package/{dist → src}/adaptors/vue/components/layout.css +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Send notifications to multiple recipients
|
|
3
|
+
*
|
|
4
|
+
* @param string message - Notification message to send
|
|
5
|
+
* @param any[] recipients - List of email addresses to notify
|
|
6
|
+
* @param 'low' | 'high' priority - Notification priority level
|
|
7
|
+
* @param {Object} [axiosOverrides] - Allows overriding Axios request parameters.
|
|
8
|
+
* @returns {Promise<Object>} A promise that resolves with the action's result.
|
|
9
|
+
*/
|
|
10
|
+
export function sendNotification(message: any, recipients: any, priority?: string, axiosOverrides?: Object): Promise<Object>;
|
|
11
|
+
export namespace sendNotification {
|
|
12
|
+
let actionName: string;
|
|
13
|
+
let title: string;
|
|
14
|
+
let app: string;
|
|
15
|
+
let permissions: string[];
|
|
16
|
+
let configKey: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Zod schema for the input of sendNotification.
|
|
20
|
+
* NOTE: This is an object schema for validating the data payload.
|
|
21
|
+
*/
|
|
22
|
+
export const sendNotificationInputSchema: z.ZodObject<{
|
|
23
|
+
message: z.ZodString;
|
|
24
|
+
recipients: z.ZodArray<z.ZodAny, "many">;
|
|
25
|
+
priority: z.ZodDefault<z.ZodOptional<z.ZodEnum<["low", "high"]>>>;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
message: string;
|
|
28
|
+
priority: "low" | "high";
|
|
29
|
+
recipients: any[];
|
|
30
|
+
}, {
|
|
31
|
+
message: string;
|
|
32
|
+
recipients: any[];
|
|
33
|
+
priority?: "low" | "high" | undefined;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* Zod schema for the response of sendNotification.
|
|
37
|
+
*/
|
|
38
|
+
export const sendNotificationResponseSchema: z.ZodObject<{
|
|
39
|
+
success: z.ZodBoolean;
|
|
40
|
+
message_id: z.ZodString;
|
|
41
|
+
sent_to: z.ZodNumber;
|
|
42
|
+
queued_at: z.ZodString;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
success: boolean;
|
|
45
|
+
message_id: string;
|
|
46
|
+
sent_to: number;
|
|
47
|
+
queued_at: string;
|
|
48
|
+
}, {
|
|
49
|
+
success: boolean;
|
|
50
|
+
message_id: string;
|
|
51
|
+
sent_to: number;
|
|
52
|
+
queued_at: string;
|
|
53
|
+
}>;
|
|
54
|
+
export default sendNotification;
|
|
55
|
+
import { z } from 'zod';
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated. Do not make direct changes to the file.
|
|
3
|
+
* Action: Send Notification
|
|
4
|
+
* App: django_app
|
|
5
|
+
*/
|
|
6
|
+
import axios from 'axios';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { configInstance, parseStateZeroError, serializeActionPayload } from '../../../../src';
|
|
9
|
+
import actionSchema from './send-notification.schema.json' assert { type: 'json' };
|
|
10
|
+
/**
|
|
11
|
+
* Zod schema for the input of sendNotification.
|
|
12
|
+
* NOTE: This is an object schema for validating the data payload.
|
|
13
|
+
*/
|
|
14
|
+
export const sendNotificationInputSchema = z.object({ message: z.string().max(500),
|
|
15
|
+
recipients: z.array(z.any()),
|
|
16
|
+
priority: z.enum(["low", "high"]).optional().default("low") });
|
|
17
|
+
/**
|
|
18
|
+
* Zod schema for the response of sendNotification.
|
|
19
|
+
*/
|
|
20
|
+
export const sendNotificationResponseSchema = z.object({ success: z.boolean(),
|
|
21
|
+
message_id: z.string(),
|
|
22
|
+
sent_to: z.number().int(),
|
|
23
|
+
queued_at: z.string().datetime({ message: "Invalid ISO 8601 datetime string" }) });
|
|
24
|
+
/**
|
|
25
|
+
* Send notifications to multiple recipients
|
|
26
|
+
*
|
|
27
|
+
* @param string message - Notification message to send
|
|
28
|
+
* @param any[] recipients - List of email addresses to notify
|
|
29
|
+
* @param 'low' | 'high' priority - Notification priority level
|
|
30
|
+
* @param {Object} [axiosOverrides] - Allows overriding Axios request parameters.
|
|
31
|
+
* @returns {Promise<Object>} A promise that resolves with the action's result.
|
|
32
|
+
*/
|
|
33
|
+
export async function sendNotification(message, recipients, priority = "low", axiosOverrides = {}) {
|
|
34
|
+
// Construct the data payload from the function arguments
|
|
35
|
+
const rawPayload = {
|
|
36
|
+
message,
|
|
37
|
+
recipients,
|
|
38
|
+
priority
|
|
39
|
+
};
|
|
40
|
+
// Serialize payload - handles model instances (extracts PK), files, dates, etc.
|
|
41
|
+
const payload = serializeActionPayload(rawPayload, actionSchema.input_properties);
|
|
42
|
+
const config = configInstance.getConfig();
|
|
43
|
+
const backend = config.backendConfigs['default'];
|
|
44
|
+
if (!backend) {
|
|
45
|
+
throw new Error(`No backend configuration found for key: default`);
|
|
46
|
+
}
|
|
47
|
+
const baseUrl = backend.API_URL.replace(/\/+$/, '');
|
|
48
|
+
const actionUrl = `${baseUrl}/actions/send_notification/`;
|
|
49
|
+
const headers = backend.getAuthHeaders ? backend.getAuthHeaders() : {};
|
|
50
|
+
try {
|
|
51
|
+
const response = await axios.post(actionUrl, payload, {
|
|
52
|
+
headers: { 'Content-Type': 'application/json', ...headers },
|
|
53
|
+
...axiosOverrides,
|
|
54
|
+
});
|
|
55
|
+
return sendNotificationResponseSchema.parse(response.data);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error instanceof z.ZodError) {
|
|
59
|
+
throw new Error(`Send Notification failed: Invalid response from server. Details: ${error.message}`);
|
|
60
|
+
}
|
|
61
|
+
if (error.response && error.response.data) {
|
|
62
|
+
const parsedError = parseStateZeroError(error.response.data);
|
|
63
|
+
if (Error.captureStackTrace) {
|
|
64
|
+
Error.captureStackTrace(parsedError, sendNotification);
|
|
65
|
+
}
|
|
66
|
+
throw parsedError;
|
|
67
|
+
}
|
|
68
|
+
else if (error.request) {
|
|
69
|
+
throw new Error(`Send Notification failed: No response received from server.`);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
throw new Error(`Send Notification failed: ${error.message}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export default sendNotification;
|
|
77
|
+
sendNotification.actionName = 'send_notification';
|
|
78
|
+
sendNotification.title = 'Send Notification';
|
|
79
|
+
sendNotification.app = 'django_app';
|
|
80
|
+
sendNotification.permissions = ['ValidatedCanSendNotifications'];
|
|
81
|
+
sendNotification.configKey = 'default';
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
{
|
|
2
|
+
"action_name": "send_notification",
|
|
3
|
+
"app": "django_app",
|
|
4
|
+
"title": "Send Notification",
|
|
5
|
+
"docstring": "Send notifications to multiple recipients",
|
|
6
|
+
"class_name": "SendNotification",
|
|
7
|
+
"input_properties": {
|
|
8
|
+
"message": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"title": "Message",
|
|
11
|
+
"required": true,
|
|
12
|
+
"description": "Notification message to send",
|
|
13
|
+
"nullable": false,
|
|
14
|
+
"format": null,
|
|
15
|
+
"max_length": 500,
|
|
16
|
+
"choices": null,
|
|
17
|
+
"default": null,
|
|
18
|
+
"validators": [],
|
|
19
|
+
"max_digits": null,
|
|
20
|
+
"decimal_places": null,
|
|
21
|
+
"read_only": false,
|
|
22
|
+
"ref": null
|
|
23
|
+
},
|
|
24
|
+
"recipients": {
|
|
25
|
+
"type": "array",
|
|
26
|
+
"title": "Recipients",
|
|
27
|
+
"required": true,
|
|
28
|
+
"description": "List of email addresses to notify",
|
|
29
|
+
"nullable": false,
|
|
30
|
+
"format": null,
|
|
31
|
+
"max_length": null,
|
|
32
|
+
"choices": null,
|
|
33
|
+
"default": null,
|
|
34
|
+
"validators": [],
|
|
35
|
+
"max_digits": null,
|
|
36
|
+
"decimal_places": null,
|
|
37
|
+
"read_only": false,
|
|
38
|
+
"ref": null
|
|
39
|
+
},
|
|
40
|
+
"priority": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"title": "Priority",
|
|
43
|
+
"required": false,
|
|
44
|
+
"description": "Notification priority level",
|
|
45
|
+
"nullable": false,
|
|
46
|
+
"format": null,
|
|
47
|
+
"max_length": null,
|
|
48
|
+
"choices": {
|
|
49
|
+
"low": "Low",
|
|
50
|
+
"high": "High"
|
|
51
|
+
},
|
|
52
|
+
"default": "low",
|
|
53
|
+
"validators": [],
|
|
54
|
+
"max_digits": null,
|
|
55
|
+
"decimal_places": null,
|
|
56
|
+
"read_only": false,
|
|
57
|
+
"ref": null
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"response_properties": {
|
|
61
|
+
"success": {
|
|
62
|
+
"type": "boolean",
|
|
63
|
+
"title": "Success",
|
|
64
|
+
"required": true,
|
|
65
|
+
"description": null,
|
|
66
|
+
"nullable": false,
|
|
67
|
+
"format": null,
|
|
68
|
+
"max_length": null,
|
|
69
|
+
"choices": null,
|
|
70
|
+
"default": null,
|
|
71
|
+
"validators": [],
|
|
72
|
+
"max_digits": null,
|
|
73
|
+
"decimal_places": null,
|
|
74
|
+
"read_only": false,
|
|
75
|
+
"ref": null
|
|
76
|
+
},
|
|
77
|
+
"message_id": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"title": "Message id",
|
|
80
|
+
"required": true,
|
|
81
|
+
"description": null,
|
|
82
|
+
"nullable": false,
|
|
83
|
+
"format": null,
|
|
84
|
+
"max_length": null,
|
|
85
|
+
"choices": null,
|
|
86
|
+
"default": null,
|
|
87
|
+
"validators": [],
|
|
88
|
+
"max_digits": null,
|
|
89
|
+
"decimal_places": null,
|
|
90
|
+
"read_only": false,
|
|
91
|
+
"ref": null
|
|
92
|
+
},
|
|
93
|
+
"sent_to": {
|
|
94
|
+
"type": "integer",
|
|
95
|
+
"title": "Sent to",
|
|
96
|
+
"required": true,
|
|
97
|
+
"description": null,
|
|
98
|
+
"nullable": false,
|
|
99
|
+
"format": null,
|
|
100
|
+
"max_length": null,
|
|
101
|
+
"choices": null,
|
|
102
|
+
"default": null,
|
|
103
|
+
"validators": [],
|
|
104
|
+
"max_digits": null,
|
|
105
|
+
"decimal_places": null,
|
|
106
|
+
"read_only": false,
|
|
107
|
+
"ref": null
|
|
108
|
+
},
|
|
109
|
+
"queued_at": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"title": "Queued at",
|
|
112
|
+
"required": true,
|
|
113
|
+
"description": null,
|
|
114
|
+
"nullable": false,
|
|
115
|
+
"format": "date-time",
|
|
116
|
+
"max_length": null,
|
|
117
|
+
"choices": null,
|
|
118
|
+
"default": null,
|
|
119
|
+
"validators": [],
|
|
120
|
+
"max_digits": null,
|
|
121
|
+
"decimal_places": null,
|
|
122
|
+
"read_only": false,
|
|
123
|
+
"ref": null
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"relationships": {},
|
|
127
|
+
"permissions": [
|
|
128
|
+
"ValidatedCanSendNotifications"
|
|
129
|
+
],
|
|
130
|
+
"display": {
|
|
131
|
+
"display_title": "Send Notifications",
|
|
132
|
+
"display_description": "Send notifications to multiple recipients with priority control",
|
|
133
|
+
"field_groups": [
|
|
134
|
+
{
|
|
135
|
+
"display_title": "Message Content",
|
|
136
|
+
"display_description": "The notification message and priority level",
|
|
137
|
+
"field_names": [
|
|
138
|
+
"message",
|
|
139
|
+
"priority"
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"display_title": "Recipients",
|
|
144
|
+
"display_description": "Email addresses to send notifications to",
|
|
145
|
+
"field_names": [
|
|
146
|
+
"recipients"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"field_display_configs": [
|
|
151
|
+
{
|
|
152
|
+
"field_name": "message",
|
|
153
|
+
"display_component": "TextArea",
|
|
154
|
+
"filter_queryset": null,
|
|
155
|
+
"display_help_text": "Enter your notification message here (max 500 characters)",
|
|
156
|
+
"extra": null
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"field_name": "priority",
|
|
160
|
+
"display_component": "RadioGroup",
|
|
161
|
+
"filter_queryset": null,
|
|
162
|
+
"display_help_text": "High priority notifications are processed first",
|
|
163
|
+
"extra": null
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"field_name": "recipients",
|
|
167
|
+
"display_component": "EmailListInput",
|
|
168
|
+
"filter_queryset": null,
|
|
169
|
+
"display_help_text": "Add one or more email addresses",
|
|
170
|
+
"extra": null
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"extra": null
|
|
174
|
+
}
|
|
175
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./django_app/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './django_app/index.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./default/index.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function useQueryset(querysetFactory: any): any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useQueryset } from "./composables.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useQueryset } from './composables.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computed as
|
|
1
|
+
import { computed as y, provide as q, unref as m, inject as G, onMounted as T, resolveComponent as U, createElementBlock as d, openBlock as l, Fragment as v, createBlock as u, createCommentVNode as g, resolveDynamicComponent as i, normalizeClass as F, renderList as b, withCtx as z, createVNode as H, toDisplayString as M } from "vue";
|
|
2
2
|
const N = {
|
|
3
3
|
key: 11,
|
|
4
4
|
class: "text-red-500 text-sm"
|
|
@@ -25,25 +25,24 @@ const N = {
|
|
|
25
25
|
},
|
|
26
26
|
emits: ["update:formData"],
|
|
27
27
|
setup(e, { emit: E }) {
|
|
28
|
-
const t = e, D = E, h =
|
|
29
|
-
var l, a;
|
|
28
|
+
const t = e, D = E, h = y(() => {
|
|
30
29
|
if (t.nonFieldErrors !== null)
|
|
31
30
|
return t.nonFieldErrors;
|
|
32
|
-
const n =
|
|
33
|
-
return n ? Array.isArray(n) ? n.map((o) => typeof o == "string" ? o : o
|
|
34
|
-
}), L =
|
|
31
|
+
const n = t.errors?.non_field_errors || t.errors?.__all__;
|
|
32
|
+
return n ? Array.isArray(n) ? n.map((o) => typeof o == "string" ? o : o?.message ? o.message : String(o)) : [String(n)] : [];
|
|
33
|
+
}), L = y(() => t.components), j = y(() => t.schema), R = y(() => t.formData), A = y(() => t.context), S = y(() => t.errors);
|
|
35
34
|
t.isRoot && q("layoutRenderer", {
|
|
36
35
|
components: L,
|
|
37
|
-
schema:
|
|
36
|
+
schema: j,
|
|
38
37
|
formData: R,
|
|
39
|
-
context:
|
|
40
|
-
errors:
|
|
41
|
-
updateField: (n,
|
|
38
|
+
context: A,
|
|
39
|
+
errors: S,
|
|
40
|
+
updateField: (n, o) => {
|
|
42
41
|
const a = m(R) || {};
|
|
43
|
-
D("update:formData", { ...a, [n]:
|
|
42
|
+
D("update:formData", { ...a, [n]: o });
|
|
44
43
|
}
|
|
45
44
|
});
|
|
46
|
-
const s = t.isRoot ? null : G("layoutRenderer", null),
|
|
45
|
+
const s = t.isRoot ? null : G("layoutRenderer", null), r = y(() => t.isRoot ? t.components : s && m(s.components) || t.components), p = y(() => t.isRoot ? t.schema : s && m(s.schema) || t.schema), x = y(() => t.isRoot ? t.formData : s && m(s.formData) || t.formData), f = y(() => t.isRoot ? t.context : s && m(s.context) || t.context), B = y(() => t.isRoot ? t.errors : s && m(s.errors) || t.errors), O = t.isRoot ? (n, o) => D("update:formData", { ...t.formData, [n]: o }) : s?.updateField || (() => {
|
|
47
46
|
});
|
|
48
47
|
T(() => {
|
|
49
48
|
t.isRoot;
|
|
@@ -51,90 +50,88 @@ const N = {
|
|
|
51
50
|
function w(n) {
|
|
52
51
|
try {
|
|
53
52
|
return new Function("formData", "context", `return ${n}`)(x.value, f.value);
|
|
54
|
-
} catch (
|
|
55
|
-
return console.warn("[LayoutRenderer] Conditional eval failed:", n,
|
|
53
|
+
} catch (o) {
|
|
54
|
+
return console.warn("[LayoutRenderer] Conditional eval failed:", n, o), !1;
|
|
56
55
|
}
|
|
57
56
|
}
|
|
58
57
|
function V(n) {
|
|
59
|
-
|
|
60
|
-
return (((a = p.value) == null ? void 0 : a.properties) || ((o = p.value) == null ? void 0 : o.input_properties) || {})[n] || {};
|
|
58
|
+
return (p.value?.properties || p.value?.input_properties || {})[n] || {};
|
|
61
59
|
}
|
|
62
60
|
function $(n) {
|
|
63
|
-
var a;
|
|
64
61
|
if (n === "non_field_errors" || n === "__all__") return [];
|
|
65
|
-
const
|
|
66
|
-
return
|
|
62
|
+
const o = B.value?.[n];
|
|
63
|
+
return o ? Array.isArray(o) ? o.map((a) => typeof a == "string" ? a : a?.message ? a.message : String(a)) : [String(o)] : [];
|
|
67
64
|
}
|
|
68
65
|
function C(n) {
|
|
69
66
|
if (!n) return;
|
|
70
|
-
const
|
|
67
|
+
const o = n.split(".");
|
|
71
68
|
let a = f.value;
|
|
72
|
-
for (const
|
|
69
|
+
for (const c of o) {
|
|
73
70
|
if (a == null) return;
|
|
74
|
-
a = a[
|
|
71
|
+
a = a[c];
|
|
75
72
|
}
|
|
76
73
|
return a;
|
|
77
74
|
}
|
|
78
|
-
return (n,
|
|
75
|
+
return (n, o) => {
|
|
79
76
|
const a = U("LayoutRenderer", !0);
|
|
80
|
-
return
|
|
81
|
-
e.isRoot && h.value.length > 0 &&
|
|
77
|
+
return l(), d(v, null, [
|
|
78
|
+
e.isRoot && h.value.length > 0 && r.value.ErrorBlock ? (l(), u(i(r.value.ErrorBlock), {
|
|
82
79
|
key: 0,
|
|
83
80
|
errors: h.value
|
|
84
81
|
}, null, 8, ["errors"])) : g("", !0),
|
|
85
|
-
e.layout.type === "VerticalLayout" ? (
|
|
82
|
+
e.layout.type === "VerticalLayout" ? (l(), d("div", {
|
|
86
83
|
key: 1,
|
|
87
84
|
class: F(["sz-layout sz-layout-vertical", `sz-gap-${e.layout.gap || "md"}`])
|
|
88
85
|
}, [
|
|
89
|
-
(
|
|
86
|
+
(l(!0), d(v, null, b(e.layout.elements, (c, k) => (l(), u(a, {
|
|
90
87
|
key: k,
|
|
91
|
-
layout:
|
|
92
|
-
components:
|
|
88
|
+
layout: c,
|
|
89
|
+
components: r.value,
|
|
93
90
|
"is-root": !1
|
|
94
91
|
}, null, 8, ["layout", "components"]))), 128))
|
|
95
|
-
], 2)) : e.layout.type === "HorizontalLayout" ? (
|
|
92
|
+
], 2)) : e.layout.type === "HorizontalLayout" ? (l(), d("div", {
|
|
96
93
|
key: 2,
|
|
97
94
|
class: F(["sz-layout sz-layout-horizontal", [`sz-gap-${e.layout.gap || "md"}`, `sz-align-${e.layout.align || "start"}`]])
|
|
98
95
|
}, [
|
|
99
|
-
(
|
|
96
|
+
(l(!0), d(v, null, b(e.layout.elements, (c, k) => (l(), u(a, {
|
|
100
97
|
key: k,
|
|
101
|
-
layout:
|
|
102
|
-
components:
|
|
98
|
+
layout: c,
|
|
99
|
+
components: r.value,
|
|
103
100
|
"is-root": !1
|
|
104
101
|
}, null, 8, ["layout", "components"]))), 128))
|
|
105
|
-
], 2)) : e.layout.type === "Group" ? (
|
|
102
|
+
], 2)) : e.layout.type === "Group" ? (l(), u(i(r.value.Group), {
|
|
106
103
|
key: 3,
|
|
107
104
|
element: e.layout
|
|
108
105
|
}, {
|
|
109
106
|
default: z(() => [
|
|
110
|
-
e.layout.layout ? (
|
|
107
|
+
e.layout.layout ? (l(), u(a, {
|
|
111
108
|
key: 0,
|
|
112
109
|
layout: e.layout.layout,
|
|
113
|
-
components:
|
|
110
|
+
components: r.value,
|
|
114
111
|
"is-root": !1
|
|
115
112
|
}, null, 8, ["layout", "components"])) : g("", !0)
|
|
116
113
|
]),
|
|
117
114
|
_: 1
|
|
118
|
-
}, 8, ["element"])) : e.layout.type === "Tabs" ? (
|
|
115
|
+
}, 8, ["element"])) : e.layout.type === "Tabs" ? (l(), u(i(r.value.Tabs), {
|
|
119
116
|
key: 4,
|
|
120
117
|
element: e.layout
|
|
121
118
|
}, {
|
|
122
|
-
tab: z(({ tab:
|
|
119
|
+
tab: z(({ tab: c }) => [
|
|
123
120
|
H(a, {
|
|
124
|
-
layout:
|
|
125
|
-
components:
|
|
121
|
+
layout: c.layout,
|
|
122
|
+
components: r.value,
|
|
126
123
|
"is-root": !1
|
|
127
124
|
}, null, 8, ["layout", "components"])
|
|
128
125
|
]),
|
|
129
126
|
_: 1
|
|
130
|
-
}, 8, ["element"])) : e.layout.type === "Conditional" ? (
|
|
131
|
-
w(e.layout.when) ? (
|
|
127
|
+
}, 8, ["element"])) : e.layout.type === "Conditional" ? (l(), d(v, { key: 5 }, [
|
|
128
|
+
w(e.layout.when) ? (l(), u(a, {
|
|
132
129
|
key: 0,
|
|
133
130
|
layout: e.layout.layout,
|
|
134
|
-
components:
|
|
131
|
+
components: r.value,
|
|
135
132
|
"is-root": !1
|
|
136
133
|
}, null, 8, ["layout", "components"])) : g("", !0)
|
|
137
|
-
], 64)) : e.layout.type === "Control" ? (
|
|
134
|
+
], 64)) : e.layout.type === "Control" ? (l(), u(i(r.value.Control), {
|
|
138
135
|
key: 6,
|
|
139
136
|
element: e.layout,
|
|
140
137
|
"model-value": x.value[e.layout.field_name],
|
|
@@ -142,21 +139,21 @@ const N = {
|
|
|
142
139
|
context: f.value,
|
|
143
140
|
"form-data": x.value,
|
|
144
141
|
schema: V(e.layout.field_name),
|
|
145
|
-
"onUpdate:modelValue":
|
|
146
|
-
}, null, 8, ["element", "model-value", "errors", "context", "form-data", "schema"])) : e.layout.type === "Display" ? (
|
|
142
|
+
"onUpdate:modelValue": o[0] || (o[0] = (c) => m(O)(e.layout.field_name, c))
|
|
143
|
+
}, null, 8, ["element", "model-value", "errors", "context", "form-data", "schema"])) : e.layout.type === "Display" ? (l(), u(i(r.value.Display), {
|
|
147
144
|
key: 7,
|
|
148
145
|
element: e.layout,
|
|
149
146
|
context: f.value,
|
|
150
147
|
value: C(e.layout.context_path)
|
|
151
|
-
}, null, 8, ["element", "context", "value"])) : e.layout.type === "Alert" ? (
|
|
148
|
+
}, null, 8, ["element", "context", "value"])) : e.layout.type === "Alert" ? (l(), u(i(r.value.Alert), {
|
|
152
149
|
key: 8,
|
|
153
150
|
element: e.layout,
|
|
154
151
|
context: f.value,
|
|
155
152
|
text: e.layout.text || C(e.layout.context_path)
|
|
156
|
-
}, null, 8, ["element", "context", "text"])) : e.layout.type === "Label" ? (
|
|
153
|
+
}, null, 8, ["element", "context", "text"])) : e.layout.type === "Label" ? (l(), u(i(r.value.Label), {
|
|
157
154
|
key: 9,
|
|
158
155
|
element: e.layout
|
|
159
|
-
}, null, 8, ["element"])) : e.layout.type === "Divider" ? (
|
|
156
|
+
}, null, 8, ["element"])) : e.layout.type === "Divider" ? (l(), u(i(r.value.Divider), { key: 10 })) : (l(), d("div", N, " [LayoutRenderer] Unknown element type: " + M(e.layout.type), 1))
|
|
160
157
|
], 64);
|
|
161
158
|
};
|
|
162
159
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a default components registry (without Control - user must provide)
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} options - Override specific components
|
|
5
|
+
* @returns {Object} Components registry for LayoutRenderer
|
|
6
|
+
*/
|
|
7
|
+
export function createDefaultComponents(options?: Object): Object;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default component implementations for LayoutRenderer
|
|
3
|
+
*
|
|
4
|
+
* These are minimal, unstyled implementations that follow the contracts.
|
|
5
|
+
* Users can use these as-is or as reference for custom implementations.
|
|
6
|
+
*/
|
|
7
|
+
export { default as AlertElement } from './AlertElement.js';
|
|
8
|
+
export { default as LabelElement } from './LabelElement.js';
|
|
9
|
+
export { default as DividerElement } from './DividerElement.js';
|
|
10
|
+
export { default as DisplayElement } from './DisplayElement.js';
|
|
11
|
+
export { default as GroupElement } from './GroupElement.js';
|
|
12
|
+
export { default as TabsElement } from './TabsElement.js';
|
|
13
|
+
export { default as ErrorBlock } from './ErrorBlock.js';
|
|
14
|
+
/**
|
|
15
|
+
* Create a default components registry (without Control - user must provide)
|
|
16
|
+
*
|
|
17
|
+
* @param {Object} options - Override specific components
|
|
18
|
+
* @returns {Object} Components registry for LayoutRenderer
|
|
19
|
+
*/
|
|
20
|
+
export function createDefaultComponents(options = {}) {
|
|
21
|
+
return {
|
|
22
|
+
Alert: AlertElement,
|
|
23
|
+
Label: LabelElement,
|
|
24
|
+
Divider: DividerElement,
|
|
25
|
+
Display: DisplayElement,
|
|
26
|
+
Group: GroupElement,
|
|
27
|
+
Tabs: TabsElement,
|
|
28
|
+
ErrorBlock: ErrorBlock,
|
|
29
|
+
...options
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AlertElement, LabelElement, DividerElement, DisplayElement, GroupElement, TabsElement, ErrorBlock, createDefaultComponents } from "./defaults/index.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vue components for StateZero
|
|
3
|
+
*/
|
|
4
|
+
// Main layout renderer
|
|
5
|
+
export { default as LayoutRenderer } from './LayoutRenderer.js';
|
|
6
|
+
// Default component implementations
|
|
7
|
+
export { AlertElement, LabelElement, DividerElement, DisplayElement, GroupElement, TabsElement, ErrorBlock, createDefaultComponents } from './defaults/index.js';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { computed, getCurrentInstance, onBeforeUnmount } from 'vue';
|
|
2
|
+
import { querysetStoreRegistry } from '../../syncEngine/registries/querysetStoreRegistry.js';
|
|
3
|
+
import { metricRegistry } from '../../syncEngine/registries/metricRegistry.js';
|
|
4
|
+
import { syncManager } from '../../syncEngine/sync.js';
|
|
5
|
+
import { registerAdapterReset } from '../../reset.js';
|
|
6
|
+
import { v7 } from 'uuid';
|
|
7
|
+
syncManager.followAllQuerysets = false;
|
|
8
|
+
export const querysets = new Map(); // Map of composableId -> queryset
|
|
9
|
+
function updateSyncManager() {
|
|
10
|
+
// Get unique querysets from all active composables
|
|
11
|
+
const uniqueQuerysets = new Set(querysets.values());
|
|
12
|
+
syncManager.followedQuerysets = uniqueQuerysets;
|
|
13
|
+
}
|
|
14
|
+
export function useQueryset(querysetFactory) {
|
|
15
|
+
const instance = getCurrentInstance();
|
|
16
|
+
if (!instance) {
|
|
17
|
+
throw new Error('useQueryset must be called within a component setup function');
|
|
18
|
+
}
|
|
19
|
+
const composableId = v7();
|
|
20
|
+
let lastQueryset = null;
|
|
21
|
+
onBeforeUnmount(() => {
|
|
22
|
+
querysets.delete(composableId);
|
|
23
|
+
updateSyncManager();
|
|
24
|
+
});
|
|
25
|
+
return computed(() => {
|
|
26
|
+
const result = querysetFactory();
|
|
27
|
+
const original = result?.original || result;
|
|
28
|
+
const queryset = original?.queryset || original;
|
|
29
|
+
// Only update if queryset actually changed
|
|
30
|
+
if (lastQueryset !== queryset) {
|
|
31
|
+
querysets.set(composableId, queryset);
|
|
32
|
+
updateSyncManager();
|
|
33
|
+
lastQueryset = queryset;
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
registerAdapterReset(() => {
|
|
39
|
+
querysets.clear();
|
|
40
|
+
// Reset syncManager back to following all querysets since no composables are active
|
|
41
|
+
syncManager.followAllQuerysets = true;
|
|
42
|
+
syncManager.followedQuerysets.clear();
|
|
43
|
+
console.log("Vue composables state cleared");
|
|
44
|
+
});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { useQueryset, querysets } from "./composables.js";
|
|
2
|
+
export { ModelAdaptor, QuerySetAdaptor, MetricAdaptor } from "./reactivity.js";
|
|
3
|
+
export { LayoutRenderer, AlertElement, LabelElement, DividerElement, DisplayElement, GroupElement, TabsElement, ErrorBlock, createDefaultComponents } from "./components/index.js";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { useQueryset, querysets } from './composables.js';
|
|
2
|
+
export { ModelAdaptor, QuerySetAdaptor, MetricAdaptor } from './reactivity.js';
|
|
3
|
+
// Layout components
|
|
4
|
+
export { LayoutRenderer, AlertElement, LabelElement, DividerElement, DisplayElement, GroupElement, TabsElement, ErrorBlock, createDefaultComponents } from './components/index.js';
|