@saasicat/ui-vue 0.26.1 → 0.27.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.
- package/LICENSE +90 -201
- package/dist/{catalog-Dch1Ryw0.d.cts → catalog-Dv2twuNi.d.cts} +205 -4
- package/dist/{catalog-Dch1Ryw0.d.ts → catalog-Dv2twuNi.d.ts} +205 -4
- package/dist/{chunk-COVQLDBZ.js → chunk-4IZWT4UY.js} +402 -1
- package/dist/{chunk-DT25QAU2.js → chunk-LK6YJDXC.js} +1 -1
- package/dist/{chunk-O3Y3BYYS.js → chunk-NRVF3JJJ.js} +1 -1
- package/dist/client/index.cjs +413 -3
- package/dist/client/index.d.cts +55 -4
- package/dist/client/index.d.ts +55 -4
- package/dist/client/index.js +22 -4
- package/dist/index.cjs +416 -6
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- package/dist/index.js +23 -5
- package/dist/quasar/index.cjs +399 -1
- package/dist/quasar/index.d.cts +2 -2
- package/dist/quasar/index.d.ts +2 -2
- package/dist/quasar/index.js +2 -2
- package/dist/{resource-registry-D7Xjs-5f.d.cts → resource-registry-BxFpnzHY.d.cts} +1 -1
- package/dist/{resource-registry-TaR7rtq0.d.ts → resource-registry-Cn1Gy2LE.d.ts} +1 -1
- package/package.json +3 -3
- package/src/client/resources/bundles.resource.ts +145 -0
- package/src/client/resources/catalog.resource.ts +160 -0
- package/src/client/resources/discovery.resource.ts +108 -0
- package/src/client/resources/index.ts +52 -14
- package/src/client/resources/marketing.resource.ts +121 -0
- package/src/client/resources/promo-codes.resource.ts +63 -0
- package/src/client/resources/promotions.resource.ts +44 -0
- package/src/client/resources/subscriptions.resource.ts +19 -0
- package/src/client/resources/tenants.resource.ts +35 -9
- package/src/client/resources/users.resource.ts +31 -0
package/dist/index.cjs
CHANGED
|
@@ -89,6 +89,9 @@ __export(src_exports, {
|
|
|
89
89
|
buildQuotaRegistry: () => buildQuotaRegistry,
|
|
90
90
|
buildRoutes: () => buildRoutes,
|
|
91
91
|
buildSidebar: () => buildSidebar,
|
|
92
|
+
bundleVersionsResource: () => bundleVersionsResource,
|
|
93
|
+
bundlesResource: () => bundlesResource,
|
|
94
|
+
catalogResource: () => catalogResource,
|
|
92
95
|
clampListPage: () => clampListPage,
|
|
93
96
|
clampListPageSize: () => clampListPageSize,
|
|
94
97
|
countPlans: () => countPlans,
|
|
@@ -112,6 +115,7 @@ __export(src_exports, {
|
|
|
112
115
|
defineListOp: () => defineListOp,
|
|
113
116
|
defineMessages: () => defineMessages,
|
|
114
117
|
defineResource: () => defineResource,
|
|
118
|
+
discoveryResource: () => discoveryResource,
|
|
115
119
|
filterQueryString: () => filterQueryString,
|
|
116
120
|
formatCurrency: () => formatCurrency,
|
|
117
121
|
formatMessage: () => formatMessage,
|
|
@@ -134,12 +138,15 @@ __export(src_exports, {
|
|
|
134
138
|
markEmptyResponse: () => markEmptyResponse,
|
|
135
139
|
markPlatformError: () => markPlatformError,
|
|
136
140
|
markTransportFailure: () => markTransportFailure,
|
|
141
|
+
marketingResource: () => marketingResource,
|
|
137
142
|
mergeMessages: () => mergeMessages,
|
|
138
143
|
planChangeWizardI18n: () => planChangeWizardI18n,
|
|
139
144
|
planVersionsResource: () => planVersionsResource,
|
|
140
145
|
plansResource: () => plansResource,
|
|
141
146
|
platformResources: () => platformResources,
|
|
142
147
|
postJson: () => postJson,
|
|
148
|
+
promoCodesResource: () => promoCodesResource,
|
|
149
|
+
promotionsResource: () => promotionsResource,
|
|
143
150
|
provideEntitlement: () => provideEntitlement,
|
|
144
151
|
readErrorCode: () => readErrorCode,
|
|
145
152
|
readErrorDetail: () => readErrorDetail,
|
|
@@ -152,6 +159,7 @@ __export(src_exports, {
|
|
|
152
159
|
resolveMessages: () => resolveMessages,
|
|
153
160
|
resolvePlans: () => resolvePlans,
|
|
154
161
|
resolveSuperAdminEndpoints: () => resolveSuperAdminEndpoints,
|
|
162
|
+
subscriptionsResource: () => subscriptionsResource,
|
|
155
163
|
tenantsResource: () => tenantsResource,
|
|
156
164
|
toAdminError: () => toAdminError,
|
|
157
165
|
todayIsoDate: () => todayIsoDate,
|
|
@@ -199,7 +207,8 @@ __export(src_exports, {
|
|
|
199
207
|
useTenantBillingCatalog: () => useTenantBillingCatalog,
|
|
200
208
|
useTenantManifest: () => useTenantManifest,
|
|
201
209
|
useTenantSubscriptionBundles: () => useTenantSubscriptionBundles,
|
|
202
|
-
useTenants: () => useTenants
|
|
210
|
+
useTenants: () => useTenants,
|
|
211
|
+
usersResource: () => usersResource
|
|
203
212
|
});
|
|
204
213
|
module.exports = __toCommonJS(src_exports);
|
|
205
214
|
|
|
@@ -842,9 +851,392 @@ var planVersionsResource = defineResource("planVersions", {
|
|
|
842
851
|
)
|
|
843
852
|
});
|
|
844
853
|
|
|
854
|
+
// src/client/resources/bundles.resource.ts
|
|
855
|
+
function bundlesUrl(ctx) {
|
|
856
|
+
return `${ctx.apiBase}/catalog/bundles`;
|
|
857
|
+
}
|
|
858
|
+
function bundleVersionsUrl(ctx) {
|
|
859
|
+
return `${ctx.apiBase}/catalog/bundle-versions`;
|
|
860
|
+
}
|
|
861
|
+
function scoped2(url, ctx) {
|
|
862
|
+
return `${url}?projectKey=${encodeURIComponent(ctx.projectKey)}`;
|
|
863
|
+
}
|
|
864
|
+
var bundlesResource = defineResource(
|
|
865
|
+
"bundles",
|
|
866
|
+
{
|
|
867
|
+
list: async (http, ctx) => await requestJson(http, scoped2(bundlesUrl(ctx), ctx)) ?? [],
|
|
868
|
+
create: (http, ctx, data) => requestJsonBody(http, bundlesUrl(ctx), "Create returned no body", {
|
|
869
|
+
method: "POST",
|
|
870
|
+
body: { ...data, projectKey: ctx.projectKey }
|
|
871
|
+
}),
|
|
872
|
+
update: (http, ctx, bundleId, data) => requestJsonBody(
|
|
873
|
+
http,
|
|
874
|
+
`${bundlesUrl(ctx)}/${bundleId}`,
|
|
875
|
+
"Update returned no body",
|
|
876
|
+
{ method: "PATCH", body: data }
|
|
877
|
+
),
|
|
878
|
+
/** Marks the bundle deleted. */
|
|
879
|
+
softDelete: async (http, ctx, bundleId) => {
|
|
880
|
+
await requestJson(http, `${bundlesUrl(ctx)}/${bundleId}`, { method: "DELETE" });
|
|
881
|
+
}
|
|
882
|
+
},
|
|
883
|
+
{ projectScoped: true }
|
|
884
|
+
);
|
|
885
|
+
var bundleVersionsResource = defineResource("bundleVersions", {
|
|
886
|
+
listForBundle: async (http, ctx, bundleId) => await requestJson(http, `${bundlesUrl(ctx)}/${bundleId}/versions`) ?? [],
|
|
887
|
+
createDraft: (http, ctx, bundleId, data) => requestJsonBody(
|
|
888
|
+
http,
|
|
889
|
+
`${bundlesUrl(ctx)}/${bundleId}/versions`,
|
|
890
|
+
"CreateDraft returned no body",
|
|
891
|
+
{ method: "POST", body: data }
|
|
892
|
+
),
|
|
893
|
+
updateDraft: (http, ctx, versionId, data) => requestJsonBody(
|
|
894
|
+
http,
|
|
895
|
+
`${bundleVersionsUrl(ctx)}/${versionId}`,
|
|
896
|
+
"UpdateDraft returned no body",
|
|
897
|
+
{ method: "PATCH", body: data }
|
|
898
|
+
),
|
|
899
|
+
publish: (http, ctx, versionId, options = {}) => requestJsonBody(
|
|
900
|
+
http,
|
|
901
|
+
`${bundleVersionsUrl(ctx)}/${versionId}/publish`,
|
|
902
|
+
"Publish returned no body",
|
|
903
|
+
{ method: "POST", body: options }
|
|
904
|
+
),
|
|
905
|
+
/**
|
|
906
|
+
* Discards a draft. A published version cannot be discarded — the API
|
|
907
|
+
* answers 422 `BUNDLE_VERSION_ALREADY_PUBLISHED`.
|
|
908
|
+
*/
|
|
909
|
+
discardDraft: async (http, ctx, versionId) => {
|
|
910
|
+
await requestJson(http, `${bundleVersionsUrl(ctx)}/${versionId}`, { method: "DELETE" });
|
|
911
|
+
}
|
|
912
|
+
});
|
|
913
|
+
|
|
914
|
+
// src/client/resources/catalog.resource.ts
|
|
915
|
+
function catalogUrl(ctx) {
|
|
916
|
+
return `${ctx.apiBase}/catalog`;
|
|
917
|
+
}
|
|
918
|
+
function scoped3(url, ctx) {
|
|
919
|
+
return `${url}?projectKey=${encodeURIComponent(ctx.projectKey)}`;
|
|
920
|
+
}
|
|
921
|
+
var catalogResource = defineResource(
|
|
922
|
+
"catalog",
|
|
923
|
+
{
|
|
924
|
+
capabilities: async (http, ctx) => await requestJson(
|
|
925
|
+
http,
|
|
926
|
+
scoped3(`${catalogUrl(ctx)}/capabilities`, ctx)
|
|
927
|
+
) ?? [],
|
|
928
|
+
features: async (http, ctx) => await requestJson(
|
|
929
|
+
http,
|
|
930
|
+
scoped3(`${catalogUrl(ctx)}/features`, ctx)
|
|
931
|
+
) ?? [],
|
|
932
|
+
quotas: async (http, ctx) => await requestJson(
|
|
933
|
+
http,
|
|
934
|
+
scoped3(`${catalogUrl(ctx)}/quotas`, ctx)
|
|
935
|
+
) ?? [],
|
|
936
|
+
reviewFeature: (http, ctx, featureKey, data) => requestJsonBody(
|
|
937
|
+
http,
|
|
938
|
+
scoped3(`${catalogUrl(ctx)}/features/${encodeURIComponent(featureKey)}/review`, ctx),
|
|
939
|
+
"Review returned no body",
|
|
940
|
+
{ method: "PATCH", body: data }
|
|
941
|
+
),
|
|
942
|
+
reviewQuota: (http, ctx, quotaKey, data) => requestJsonBody(
|
|
943
|
+
http,
|
|
944
|
+
scoped3(`${catalogUrl(ctx)}/quotas/${encodeURIComponent(quotaKey)}/review`, ctx),
|
|
945
|
+
"Review returned no body",
|
|
946
|
+
{ method: "PATCH", body: data }
|
|
947
|
+
),
|
|
948
|
+
/** The translations are wrapped in `{ i18n }` here, not by the caller. */
|
|
949
|
+
setFeatureI18n: (http, ctx, featureKey, i18n) => requestJsonBody(
|
|
950
|
+
http,
|
|
951
|
+
scoped3(`${catalogUrl(ctx)}/features/${encodeURIComponent(featureKey)}/i18n`, ctx),
|
|
952
|
+
"i18n returned no body",
|
|
953
|
+
{ method: "PATCH", body: { i18n } }
|
|
954
|
+
),
|
|
955
|
+
setQuotaI18n: (http, ctx, quotaKey, i18n) => requestJsonBody(
|
|
956
|
+
http,
|
|
957
|
+
scoped3(`${catalogUrl(ctx)}/quotas/${encodeURIComponent(quotaKey)}/i18n`, ctx),
|
|
958
|
+
"i18n returned no body",
|
|
959
|
+
{ method: "PATCH", body: { i18n } }
|
|
960
|
+
),
|
|
961
|
+
setFeatureBase: (http, ctx, featureKey, data) => requestJsonBody(
|
|
962
|
+
http,
|
|
963
|
+
scoped3(`${catalogUrl(ctx)}/features/${encodeURIComponent(featureKey)}`, ctx),
|
|
964
|
+
"Base returned no body",
|
|
965
|
+
{ method: "PATCH", body: data }
|
|
966
|
+
),
|
|
967
|
+
setQuotaBase: (http, ctx, quotaKey, data) => requestJsonBody(
|
|
968
|
+
http,
|
|
969
|
+
scoped3(`${catalogUrl(ctx)}/quotas/${encodeURIComponent(quotaKey)}`, ctx),
|
|
970
|
+
"Base returned no body",
|
|
971
|
+
{ method: "PATCH", body: data }
|
|
972
|
+
),
|
|
973
|
+
/**
|
|
974
|
+
* Writes a discovery snapshot into the catalogue.
|
|
975
|
+
*
|
|
976
|
+
* The request only. `useCatalogEntries.syncDiscovery` reloads the three
|
|
977
|
+
* lists afterwards, which is that composable keeping its refs true —
|
|
978
|
+
* not part of the call, and not something an override should inherit
|
|
979
|
+
* invisibly.
|
|
980
|
+
*/
|
|
981
|
+
syncDiscovery: (http, ctx, snapshot) => requestJsonBody(
|
|
982
|
+
http,
|
|
983
|
+
`${catalogUrl(ctx)}/discovery/sync`,
|
|
984
|
+
"Sync returned no body",
|
|
985
|
+
{ method: "POST", body: { snapshot } }
|
|
986
|
+
)
|
|
987
|
+
},
|
|
988
|
+
{ projectScoped: true }
|
|
989
|
+
);
|
|
990
|
+
|
|
991
|
+
// src/client/resources/discovery.resource.ts
|
|
992
|
+
function discoveryUrl(ctx) {
|
|
993
|
+
return `${ctx.apiBase}/discovery`;
|
|
994
|
+
}
|
|
995
|
+
function fail(status, method, url, message) {
|
|
996
|
+
return new AdminError({ status, url, method, message });
|
|
997
|
+
}
|
|
998
|
+
var discoveryResource = defineResource("discovery", {
|
|
999
|
+
/**
|
|
1000
|
+
* Reads the snapshot, revalidating against `etag` when one is passed.
|
|
1001
|
+
*
|
|
1002
|
+
* Pass `null` (or nothing) to force a full read — that is what
|
|
1003
|
+
* `useDiscovery.reload()` does when the operator asks for fresh data.
|
|
1004
|
+
*/
|
|
1005
|
+
read: async (http, ctx, etag = null) => {
|
|
1006
|
+
const url = discoveryUrl(ctx);
|
|
1007
|
+
const headers = {};
|
|
1008
|
+
if (etag) headers["If-None-Match"] = etag;
|
|
1009
|
+
const response = await http(url, { method: "GET", headers });
|
|
1010
|
+
requireServerAnswer(
|
|
1011
|
+
response.status,
|
|
1012
|
+
"GET",
|
|
1013
|
+
url,
|
|
1014
|
+
(diagnostic) => fail(response.status, "GET", url, diagnostic)
|
|
1015
|
+
);
|
|
1016
|
+
if (response.status === 304) return { status: "unchanged" };
|
|
1017
|
+
if (response.status !== 200) {
|
|
1018
|
+
throw fail(
|
|
1019
|
+
response.status,
|
|
1020
|
+
"GET",
|
|
1021
|
+
url,
|
|
1022
|
+
`Discovery endpoint responded with HTTP ${response.status}`
|
|
1023
|
+
);
|
|
1024
|
+
}
|
|
1025
|
+
return {
|
|
1026
|
+
status: "loaded",
|
|
1027
|
+
snapshot: await response.json(),
|
|
1028
|
+
etag: response.headers.get("ETag")
|
|
1029
|
+
};
|
|
1030
|
+
},
|
|
1031
|
+
/**
|
|
1032
|
+
* Re-runs the scan and returns what it found.
|
|
1033
|
+
*
|
|
1034
|
+
* Unconditional by construction: a rescan asks the server to look again,
|
|
1035
|
+
* so revalidating against a tag the previous scan produced would answer
|
|
1036
|
+
* with the snapshot the rescan was meant to replace.
|
|
1037
|
+
*/
|
|
1038
|
+
rescan: async (http, ctx) => {
|
|
1039
|
+
const url = `${discoveryUrl(ctx)}/rescan`;
|
|
1040
|
+
const response = await http(url, {
|
|
1041
|
+
method: "POST",
|
|
1042
|
+
headers: { "content-type": "application/json" }
|
|
1043
|
+
});
|
|
1044
|
+
requireServerAnswer(
|
|
1045
|
+
response.status,
|
|
1046
|
+
"POST",
|
|
1047
|
+
url,
|
|
1048
|
+
(diagnostic) => fail(response.status, "POST", url, diagnostic)
|
|
1049
|
+
);
|
|
1050
|
+
if (response.status !== 200 && response.status !== 201) {
|
|
1051
|
+
throw fail(
|
|
1052
|
+
response.status,
|
|
1053
|
+
"POST",
|
|
1054
|
+
url,
|
|
1055
|
+
`Discovery rescan responded with HTTP ${response.status}`
|
|
1056
|
+
);
|
|
1057
|
+
}
|
|
1058
|
+
return {
|
|
1059
|
+
snapshot: await response.json(),
|
|
1060
|
+
etag: response.headers.get("ETag")
|
|
1061
|
+
};
|
|
1062
|
+
}
|
|
1063
|
+
});
|
|
1064
|
+
|
|
1065
|
+
// src/client/resources/marketing.resource.ts
|
|
1066
|
+
function projectionsUrl(ctx) {
|
|
1067
|
+
return `${ctx.apiBase}/catalog/marketing-projections`;
|
|
1068
|
+
}
|
|
1069
|
+
function settingsUrl(ctx) {
|
|
1070
|
+
return `${ctx.apiBase}/catalog/marketing-settings`;
|
|
1071
|
+
}
|
|
1072
|
+
var marketingResource = defineResource(
|
|
1073
|
+
"marketing",
|
|
1074
|
+
{
|
|
1075
|
+
listProjections: async (http, ctx, filter = {}) => {
|
|
1076
|
+
const params = new URLSearchParams();
|
|
1077
|
+
params.set("projectKey", ctx.projectKey);
|
|
1078
|
+
if (filter.targetType) params.set("targetType", filter.targetType);
|
|
1079
|
+
if (filter.targetVersionId) params.set("targetVersionId", filter.targetVersionId);
|
|
1080
|
+
if (filter.locale) params.set("locale", filter.locale);
|
|
1081
|
+
return await requestJson(
|
|
1082
|
+
http,
|
|
1083
|
+
`${projectionsUrl(ctx)}?${params.toString()}`
|
|
1084
|
+
) ?? [];
|
|
1085
|
+
},
|
|
1086
|
+
/**
|
|
1087
|
+
* The request only. `useMarketingProjections.create` reloads the list
|
|
1088
|
+
* afterwards because a unique-tuple insert can change what the filter
|
|
1089
|
+
* matches — that is the composable keeping its refs true, not part of
|
|
1090
|
+
* the call.
|
|
1091
|
+
*/
|
|
1092
|
+
createProjection: (http, ctx, data) => requestJsonBody(
|
|
1093
|
+
http,
|
|
1094
|
+
projectionsUrl(ctx),
|
|
1095
|
+
"Create returned no body",
|
|
1096
|
+
{ method: "POST", body: data }
|
|
1097
|
+
),
|
|
1098
|
+
updateProjection: (http, ctx, id, data) => requestJsonBody(
|
|
1099
|
+
http,
|
|
1100
|
+
`${projectionsUrl(ctx)}/${id}`,
|
|
1101
|
+
"Update returned no body",
|
|
1102
|
+
{ method: "PATCH", body: data }
|
|
1103
|
+
),
|
|
1104
|
+
deleteProjection: async (http, ctx, id) => {
|
|
1105
|
+
await requestJson(http, `${projectionsUrl(ctx)}/${id}`, { method: "DELETE" });
|
|
1106
|
+
},
|
|
1107
|
+
/**
|
|
1108
|
+
* The activated locale subset, or `null` when none was ever stored.
|
|
1109
|
+
*
|
|
1110
|
+
* `null` means the full pool is active — the server's answer for "no
|
|
1111
|
+
* row", and the state the page falls back to.
|
|
1112
|
+
*/
|
|
1113
|
+
settings: (http, ctx) => requestJson(
|
|
1114
|
+
http,
|
|
1115
|
+
`${settingsUrl(ctx)}?projectKey=${encodeURIComponent(ctx.projectKey)}`
|
|
1116
|
+
),
|
|
1117
|
+
/** `PUT`, not `PATCH`: the endpoint replaces the set it is given. */
|
|
1118
|
+
saveSettings: async (http, ctx, activeLocales) => {
|
|
1119
|
+
await requestJson(http, settingsUrl(ctx), {
|
|
1120
|
+
method: "PUT",
|
|
1121
|
+
body: { projectKey: ctx.projectKey, activeLocales }
|
|
1122
|
+
});
|
|
1123
|
+
}
|
|
1124
|
+
},
|
|
1125
|
+
{ projectScoped: true }
|
|
1126
|
+
);
|
|
1127
|
+
|
|
1128
|
+
// src/client/resources/promo-codes.resource.ts
|
|
1129
|
+
function promoCodesUrl(ctx) {
|
|
1130
|
+
return `${ctx.apiBase}/promo-codes`;
|
|
1131
|
+
}
|
|
1132
|
+
var promoCodesResource = defineResource("promoCodes", {
|
|
1133
|
+
list: async (http, ctx, filter = {}) => await requestJson(
|
|
1134
|
+
http,
|
|
1135
|
+
`${promoCodesUrl(ctx)}${filterQueryString({
|
|
1136
|
+
search: filter.search,
|
|
1137
|
+
status: filter.status
|
|
1138
|
+
})}`
|
|
1139
|
+
) ?? [],
|
|
1140
|
+
/**
|
|
1141
|
+
* Returns nothing, matching `createAdminResourceClient.createPromo`.
|
|
1142
|
+
*
|
|
1143
|
+
* The endpoint does answer with the created record, but the page it feeds
|
|
1144
|
+
* reloads the list rather than reading it, and promising a body a caller
|
|
1145
|
+
* would then have to trust is a wider contract than anything holds today.
|
|
1146
|
+
*/
|
|
1147
|
+
create: async (http, ctx, payload) => {
|
|
1148
|
+
await requestJson(http, promoCodesUrl(ctx), { method: "POST", body: payload });
|
|
1149
|
+
},
|
|
1150
|
+
update: async (http, ctx, id, payload) => {
|
|
1151
|
+
await requestJson(http, `${promoCodesUrl(ctx)}/${encodeURIComponent(id)}`, {
|
|
1152
|
+
method: "PATCH",
|
|
1153
|
+
body: payload
|
|
1154
|
+
});
|
|
1155
|
+
},
|
|
1156
|
+
remove: async (http, ctx, id) => {
|
|
1157
|
+
await requestJson(http, `${promoCodesUrl(ctx)}/${encodeURIComponent(id)}`, {
|
|
1158
|
+
method: "DELETE"
|
|
1159
|
+
});
|
|
1160
|
+
}
|
|
1161
|
+
});
|
|
1162
|
+
|
|
1163
|
+
// src/client/resources/promotions.resource.ts
|
|
1164
|
+
function promotionsUrl(ctx) {
|
|
1165
|
+
return `${ctx.apiBase}/catalog/promotions`;
|
|
1166
|
+
}
|
|
1167
|
+
var promotionsResource = defineResource(
|
|
1168
|
+
"promotions",
|
|
1169
|
+
{
|
|
1170
|
+
list: async (http, ctx) => await requestJson(
|
|
1171
|
+
http,
|
|
1172
|
+
`${promotionsUrl(ctx)}?projectKey=${encodeURIComponent(ctx.projectKey)}`
|
|
1173
|
+
) ?? [],
|
|
1174
|
+
create: (http, ctx, data) => requestJsonBody(http, promotionsUrl(ctx), "Create returned no body", {
|
|
1175
|
+
method: "POST",
|
|
1176
|
+
body: data
|
|
1177
|
+
}),
|
|
1178
|
+
update: (http, ctx, id, data) => requestJsonBody(
|
|
1179
|
+
http,
|
|
1180
|
+
`${promotionsUrl(ctx)}/${id}`,
|
|
1181
|
+
"Update returned no body",
|
|
1182
|
+
{ method: "PATCH", body: data }
|
|
1183
|
+
),
|
|
1184
|
+
remove: async (http, ctx, id) => {
|
|
1185
|
+
await requestJson(http, `${promotionsUrl(ctx)}/${id}`, { method: "DELETE" });
|
|
1186
|
+
}
|
|
1187
|
+
},
|
|
1188
|
+
{ projectScoped: true }
|
|
1189
|
+
);
|
|
1190
|
+
|
|
845
1191
|
// src/client/resources/tenants.resource.ts
|
|
1192
|
+
function tenantsUrl(ctx) {
|
|
1193
|
+
return `${ctx.apiBase}/tenants`;
|
|
1194
|
+
}
|
|
1195
|
+
function tenantUrl(ctx, slug) {
|
|
1196
|
+
return `${tenantsUrl(ctx)}/${encodeURIComponent(slug)}`;
|
|
1197
|
+
}
|
|
846
1198
|
var tenantsResource = defineResource("tenants", {
|
|
847
|
-
list: defineListOp((ctx) =>
|
|
1199
|
+
list: defineListOp((ctx) => tenantsUrl(ctx)),
|
|
1200
|
+
detail: async (http, ctx, slug) => requestJson(http, tenantUrl(ctx, slug)),
|
|
1201
|
+
/**
|
|
1202
|
+
* Suspends a tenant. The reason is recorded on the audit trail, so it is a
|
|
1203
|
+
* required argument rather than an option with a default.
|
|
1204
|
+
*/
|
|
1205
|
+
suspend: async (http, ctx, slug, reason) => {
|
|
1206
|
+
await requestJson(http, `${tenantUrl(ctx, slug)}/suspend`, {
|
|
1207
|
+
method: "POST",
|
|
1208
|
+
body: { reason }
|
|
1209
|
+
});
|
|
1210
|
+
},
|
|
1211
|
+
reactivate: async (http, ctx, slug) => {
|
|
1212
|
+
await requestJson(http, `${tenantUrl(ctx, slug)}/reactivate`, { method: "POST" });
|
|
1213
|
+
}
|
|
1214
|
+
});
|
|
1215
|
+
|
|
1216
|
+
// src/client/resources/users.resource.ts
|
|
1217
|
+
function usersUrl(ctx) {
|
|
1218
|
+
return `${ctx.apiBase}/users`;
|
|
1219
|
+
}
|
|
1220
|
+
var usersResource = defineResource("users", {
|
|
1221
|
+
/**
|
|
1222
|
+
* `q` searches name and mail, `tenant` narrows to one tenant's members.
|
|
1223
|
+
*
|
|
1224
|
+
* Both are dropped when empty rather than sent as `q=` — see
|
|
1225
|
+
* `isSentInQuery`; an empty search that reached the server would filter
|
|
1226
|
+
* every row away on an endpoint that treats the parameter as a substring.
|
|
1227
|
+
*/
|
|
1228
|
+
list: async (http, ctx, filter = {}) => await requestJson(
|
|
1229
|
+
http,
|
|
1230
|
+
`${usersUrl(ctx)}${filterQueryString({ q: filter.q, tenant: filter.tenant })}`
|
|
1231
|
+
) ?? []
|
|
1232
|
+
});
|
|
1233
|
+
|
|
1234
|
+
// src/client/resources/subscriptions.resource.ts
|
|
1235
|
+
function subscriptionsUrl(ctx) {
|
|
1236
|
+
return `${ctx.apiBase}/subscriptions`;
|
|
1237
|
+
}
|
|
1238
|
+
var subscriptionsResource = defineResource("subscriptions", {
|
|
1239
|
+
list: async (http, ctx) => await requestJson(http, subscriptionsUrl(ctx)) ?? []
|
|
848
1240
|
});
|
|
849
1241
|
|
|
850
1242
|
// src/client/resources/audit.resource.ts
|
|
@@ -856,7 +1248,16 @@ var auditResource = defineResource("audit", {
|
|
|
856
1248
|
var platformResources = {
|
|
857
1249
|
plans: plansResource,
|
|
858
1250
|
planVersions: planVersionsResource,
|
|
1251
|
+
bundles: bundlesResource,
|
|
1252
|
+
bundleVersions: bundleVersionsResource,
|
|
1253
|
+
catalog: catalogResource,
|
|
1254
|
+
discovery: discoveryResource,
|
|
1255
|
+
marketing: marketingResource,
|
|
1256
|
+
promoCodes: promoCodesResource,
|
|
1257
|
+
promotions: promotionsResource,
|
|
859
1258
|
tenants: tenantsResource,
|
|
1259
|
+
users: usersResource,
|
|
1260
|
+
subscriptions: subscriptionsResource,
|
|
860
1261
|
audit: auditResource
|
|
861
1262
|
};
|
|
862
1263
|
|
|
@@ -6396,7 +6797,7 @@ function useBundleVersions(options) {
|
|
|
6396
6797
|
const versions = (0, import_vue24.ref)([]);
|
|
6397
6798
|
const loading = (0, import_vue24.ref)(false);
|
|
6398
6799
|
const error = (0, import_vue24.ref)(null);
|
|
6399
|
-
const
|
|
6800
|
+
const bundleVersionsUrl2 = `${options.adminEndpoint}/catalog/bundles/${options.bundleId}/versions`;
|
|
6400
6801
|
const versionUrlBase = `${options.adminEndpoint}/catalog/bundle-versions`;
|
|
6401
6802
|
function authHeaders() {
|
|
6402
6803
|
const token = options.getAuthToken?.();
|
|
@@ -6430,7 +6831,7 @@ function useBundleVersions(options) {
|
|
|
6430
6831
|
loading.value = true;
|
|
6431
6832
|
error.value = null;
|
|
6432
6833
|
try {
|
|
6433
|
-
const data = await fetchJson(
|
|
6834
|
+
const data = await fetchJson(bundleVersionsUrl2);
|
|
6434
6835
|
versions.value = data ?? [];
|
|
6435
6836
|
} catch (err) {
|
|
6436
6837
|
error.value = err instanceof Error ? err : new Error(String(err));
|
|
@@ -6439,7 +6840,7 @@ function useBundleVersions(options) {
|
|
|
6439
6840
|
}
|
|
6440
6841
|
}
|
|
6441
6842
|
async function createDraft(data) {
|
|
6442
|
-
const result = await fetchJson(
|
|
6843
|
+
const result = await fetchJson(bundleVersionsUrl2, {
|
|
6443
6844
|
method: "POST",
|
|
6444
6845
|
body: JSON.stringify(data)
|
|
6445
6846
|
});
|
|
@@ -8031,6 +8432,9 @@ function planChangeWizardI18n(i18n) {
|
|
|
8031
8432
|
buildQuotaRegistry,
|
|
8032
8433
|
buildRoutes,
|
|
8033
8434
|
buildSidebar,
|
|
8435
|
+
bundleVersionsResource,
|
|
8436
|
+
bundlesResource,
|
|
8437
|
+
catalogResource,
|
|
8034
8438
|
clampListPage,
|
|
8035
8439
|
clampListPageSize,
|
|
8036
8440
|
countPlans,
|
|
@@ -8054,6 +8458,7 @@ function planChangeWizardI18n(i18n) {
|
|
|
8054
8458
|
defineListOp,
|
|
8055
8459
|
defineMessages,
|
|
8056
8460
|
defineResource,
|
|
8461
|
+
discoveryResource,
|
|
8057
8462
|
filterQueryString,
|
|
8058
8463
|
formatCurrency,
|
|
8059
8464
|
formatMessage,
|
|
@@ -8076,12 +8481,15 @@ function planChangeWizardI18n(i18n) {
|
|
|
8076
8481
|
markEmptyResponse,
|
|
8077
8482
|
markPlatformError,
|
|
8078
8483
|
markTransportFailure,
|
|
8484
|
+
marketingResource,
|
|
8079
8485
|
mergeMessages,
|
|
8080
8486
|
planChangeWizardI18n,
|
|
8081
8487
|
planVersionsResource,
|
|
8082
8488
|
plansResource,
|
|
8083
8489
|
platformResources,
|
|
8084
8490
|
postJson,
|
|
8491
|
+
promoCodesResource,
|
|
8492
|
+
promotionsResource,
|
|
8085
8493
|
provideEntitlement,
|
|
8086
8494
|
readErrorCode,
|
|
8087
8495
|
readErrorDetail,
|
|
@@ -8094,6 +8502,7 @@ function planChangeWizardI18n(i18n) {
|
|
|
8094
8502
|
resolveMessages,
|
|
8095
8503
|
resolvePlans,
|
|
8096
8504
|
resolveSuperAdminEndpoints,
|
|
8505
|
+
subscriptionsResource,
|
|
8097
8506
|
tenantsResource,
|
|
8098
8507
|
toAdminError,
|
|
8099
8508
|
todayIsoDate,
|
|
@@ -8141,5 +8550,6 @@ function planChangeWizardI18n(i18n) {
|
|
|
8141
8550
|
useTenantBillingCatalog,
|
|
8142
8551
|
useTenantManifest,
|
|
8143
8552
|
useTenantSubscriptionBundles,
|
|
8144
|
-
useTenants
|
|
8553
|
+
useTenants,
|
|
8554
|
+
usersResource
|
|
8145
8555
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AdminError, BootLoaderOptions, ManifestLoaderOptions, BuildRouteEntry, SidebarSection, NavBuilderOptions, BatchColumnData, BatchColumnFetcherOptions, BootLoader, ManifestLoader } from './client/index.cjs';
|
|
2
|
-
export { ADMIN_UI_VERSION, AdminErrorInit, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, AxiosHttpClientOptions, AxiosLike, AxiosLikeConfig, AxiosLikeResponse, AxiosLikeResponseConfig, AxiosResponseBody, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, FetchHttpClientOptions, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, ResourceRequestInit, SidebarItem, adminErrorMessage, buildRoutes, buildSidebar, countPlans, createAdminResourceClient, createAxiosHttpClient, createFetchHttpClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isAdminError, isAxiosNoResponseError, isCurrentlyValid, isEmptyResponse, isExpired, isFutureScheduled, isPlatformError, isProductionBoot, isTransportFailure, markEmptyResponse, markPlatformError, markTransportFailure, postJson, readErrorCode, readErrorDetail, requestJson, requestJsonBody, requireServerAnswer, resolveExtension, resolveLoginBranding, resolvePlans, toAdminError, todayIsoDate, trimTrailingSlashes } from './client/index.cjs';
|
|
3
|
-
import { H as HttpClient, g as ResourceListPage, e as ResourceOps, P as PlatformResources, h as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-
|
|
4
|
-
export { i as ActionDefNotInManifestError, j as AuditListFilter, B as Bound, D as DEFAULT_SA_LOCALE, k as DefineResourceOptions, l as HttpResponse, L as LIST_FIRST_PAGE,
|
|
5
|
-
import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter, U as UiNotify, j as ResourceMap } from './resource-registry-
|
|
6
|
-
export { C as CreateResourceRegistryOptions, k as ExtensionLoader, I as InstallPlugin, O as OpOverride, l as ResourceOverride, R as ResourceOverrides, m as ResourceRegistry, n as SA_COLOR_SCHEMES, o as SA_LOCALE_STORAGE_KEY, p as SA_THEME_KEY, q as SA_THEME_STORAGE_KEY, r as SUPER_ADMIN_ACTIONS_KEY, s as SUPER_ADMIN_BRAND_KEY, t as SUPER_ADMIN_CONFIRM_KEY, u as SUPER_ADMIN_ENDPOINTS_KEY, v as SUPER_ADMIN_EXTENSIONS_KEY, w as SUPER_ADMIN_HTTP_KEY, x as SUPER_ADMIN_I18N_KEY, y as SUPER_ADMIN_LOGIN_ADAPTER_KEY, z as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, B as SUPER_ADMIN_MANIFEST_KEY, D as SUPER_ADMIN_NOTIFY_KEY, F as SUPER_ADMIN_RESOURCES_KEY, G as SaColorScheme, H as SaResolvedScheme, h as SaTheme, f as SaThemeOptions, J as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, g as SuperAdminI18n, e as SuperAdminI18nOptions, K as SuperAdminLoginResult, L as SuperAdminManifestGuardOptions, d as UiConfirm, M as UiConfirmPrompt, i as UiConfirmRequest, N as UiConfirmResult, P as UiConfirmTone, Q as UiNotifyKind, T as UiNotifyOptions, V as buildNavigationGuard, W as createResourceRegistry, X as createSaTheme, Y as createSuperAdminI18n, Z as useResource, _ as useSaMessages, $ as useSaTheme, a0 as useSuperAdminI18n } from './resource-registry-
|
|
2
|
+
export { ADMIN_UI_VERSION, AdminErrorInit, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, AxiosHttpClientOptions, AxiosLike, AxiosLikeConfig, AxiosLikeResponse, AxiosLikeResponseConfig, AxiosResponseBody, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, FetchHttpClientOptions, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, ResourceRequestInit, SidebarItem, adminErrorMessage, buildRoutes, buildSidebar, catalogResource, countPlans, createAdminResourceClient, createAxiosHttpClient, createFetchHttpClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isAdminError, isAxiosNoResponseError, isCurrentlyValid, isEmptyResponse, isExpired, isFutureScheduled, isPlatformError, isProductionBoot, isTransportFailure, markEmptyResponse, markPlatformError, markTransportFailure, postJson, promotionsResource, readErrorCode, readErrorDetail, requestJson, requestJsonBody, requireServerAnswer, resolveExtension, resolveLoginBranding, resolvePlans, subscriptionsResource, toAdminError, todayIsoDate, trimTrailingSlashes, usersResource } from './client/index.cjs';
|
|
3
|
+
import { H as HttpClient, g as ResourceListPage, e as ResourceOps, P as PlatformResources, h as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-Dv2twuNi.cjs';
|
|
4
|
+
export { i as ActionDefNotInManifestError, j as AuditListFilter, B as Bound, D as DEFAULT_SA_LOCALE, k as DefineResourceOptions, l as DiscoveryRead, m as HttpResponse, L as LIST_FIRST_PAGE, n as LIST_PAGE_SIZE_DEFAULT, o as LIST_PAGE_SIZE_MAX, q as LIST_PAGINATION_PARAMS, r as ListFilterOf, s as ListOp, t as ListQuery, M as MarketingProjectionsFilter, u as MessageTree, v as MissingHandlerError, w as PartialMessages, x as PromoCodesFilter, y as PublishBundleVersionOptions, z as PublishPlanVersionOptions, C as ResolvedAction, f as ResourceContext, R as ResourceDef, E as ResourceOp, F as SA_INTL_LOCALES, G as SA_LOCALES, I as SA_LOCALE_LABELS, J as SA_MESSAGES, N as SaBuiltinLocale, O as SaCatalog, Q as SaCatalogOptions, c as SaLocaleDefinition, b as SaLocaleOption, a as SaMessages, d as SaMessagesOverrides, T as TenantsListFilter, U as TranslationOf, V as auditResource, W as bindResource, X as bundleVersionsResource, Y as bundlesResource, Z as clampListPage, _ as clampListPageSize, $ as createSaCatalog, a0 as defaultHttpClient, a1 as defaultKvStore, a2 as defineListOp, a3 as defineMessages, a4 as defineResource, a5 as discoveryResource, a6 as filterQueryString, a7 as isSaBuiltinLocale, a8 as isSentInQuery, a9 as listUrl, aa as marketingResource, ab as mergeMessages, ac as planVersionsResource, ad as plansResource, p as platformResources, ae as promoCodesResource, af as readListPage, ag as resolveMessages, ah as tenantsResource } from './catalog-Dv2twuNi.cjs';
|
|
5
|
+
import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter, U as UiNotify, j as ResourceMap } from './resource-registry-BxFpnzHY.cjs';
|
|
6
|
+
export { C as CreateResourceRegistryOptions, k as ExtensionLoader, I as InstallPlugin, O as OpOverride, l as ResourceOverride, R as ResourceOverrides, m as ResourceRegistry, n as SA_COLOR_SCHEMES, o as SA_LOCALE_STORAGE_KEY, p as SA_THEME_KEY, q as SA_THEME_STORAGE_KEY, r as SUPER_ADMIN_ACTIONS_KEY, s as SUPER_ADMIN_BRAND_KEY, t as SUPER_ADMIN_CONFIRM_KEY, u as SUPER_ADMIN_ENDPOINTS_KEY, v as SUPER_ADMIN_EXTENSIONS_KEY, w as SUPER_ADMIN_HTTP_KEY, x as SUPER_ADMIN_I18N_KEY, y as SUPER_ADMIN_LOGIN_ADAPTER_KEY, z as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, B as SUPER_ADMIN_MANIFEST_KEY, D as SUPER_ADMIN_NOTIFY_KEY, F as SUPER_ADMIN_RESOURCES_KEY, G as SaColorScheme, H as SaResolvedScheme, h as SaTheme, f as SaThemeOptions, J as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, g as SuperAdminI18n, e as SuperAdminI18nOptions, K as SuperAdminLoginResult, L as SuperAdminManifestGuardOptions, d as UiConfirm, M as UiConfirmPrompt, i as UiConfirmRequest, N as UiConfirmResult, P as UiConfirmTone, Q as UiNotifyKind, T as UiNotifyOptions, V as buildNavigationGuard, W as createResourceRegistry, X as createSaTheme, Y as createSuperAdminI18n, Z as useResource, _ as useSaMessages, $ as useSaTheme, a0 as useSuperAdminI18n } from './resource-registry-BxFpnzHY.cjs';
|
|
7
7
|
import { AdminManifest, TenantListFilter, TenantDto, AuditQuery, AuditEntry, FeatureUiRegistry, PromoPreviewResponse, OnboardingSelectionRequest, PublicMarketingBundle, FeatureDef, FeatureKey, PublicBootResponse, DiscoverySnapshot, CapabilityCatalogEntryRow, FeatureCatalogEntryRow, QuotaCatalogEntryRow, ReviewCatalogEntryData, CatalogEntryI18n, UpdateCatalogEntryBaseData, SyncDiscoveryResult, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, SubscriptionBundleRecord, MarketingProjectionFilter, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, PromotionRow, CreatePromotionData, UpdatePromotionData, PlanVersionRow, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, TenantActionDef } from '@saasicat/types';
|
|
8
8
|
import { RouteRecordRaw, NavigationGuardWithThis } from 'vue-router';
|
|
9
9
|
import * as vue from 'vue';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AdminError, BootLoaderOptions, ManifestLoaderOptions, BuildRouteEntry, SidebarSection, NavBuilderOptions, BatchColumnData, BatchColumnFetcherOptions, BootLoader, ManifestLoader } from './client/index.js';
|
|
2
|
-
export { ADMIN_UI_VERSION, AdminErrorInit, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, AxiosHttpClientOptions, AxiosLike, AxiosLikeConfig, AxiosLikeResponse, AxiosLikeResponseConfig, AxiosResponseBody, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, FetchHttpClientOptions, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, ResourceRequestInit, SidebarItem, adminErrorMessage, buildRoutes, buildSidebar, countPlans, createAdminResourceClient, createAxiosHttpClient, createFetchHttpClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isAdminError, isAxiosNoResponseError, isCurrentlyValid, isEmptyResponse, isExpired, isFutureScheduled, isPlatformError, isProductionBoot, isTransportFailure, markEmptyResponse, markPlatformError, markTransportFailure, postJson, readErrorCode, readErrorDetail, requestJson, requestJsonBody, requireServerAnswer, resolveExtension, resolveLoginBranding, resolvePlans, toAdminError, todayIsoDate, trimTrailingSlashes } from './client/index.js';
|
|
3
|
-
import { H as HttpClient, g as ResourceListPage, e as ResourceOps, P as PlatformResources, h as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-
|
|
4
|
-
export { i as ActionDefNotInManifestError, j as AuditListFilter, B as Bound, D as DEFAULT_SA_LOCALE, k as DefineResourceOptions, l as HttpResponse, L as LIST_FIRST_PAGE,
|
|
5
|
-
import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter, U as UiNotify, j as ResourceMap } from './resource-registry-
|
|
6
|
-
export { C as CreateResourceRegistryOptions, k as ExtensionLoader, I as InstallPlugin, O as OpOverride, l as ResourceOverride, R as ResourceOverrides, m as ResourceRegistry, n as SA_COLOR_SCHEMES, o as SA_LOCALE_STORAGE_KEY, p as SA_THEME_KEY, q as SA_THEME_STORAGE_KEY, r as SUPER_ADMIN_ACTIONS_KEY, s as SUPER_ADMIN_BRAND_KEY, t as SUPER_ADMIN_CONFIRM_KEY, u as SUPER_ADMIN_ENDPOINTS_KEY, v as SUPER_ADMIN_EXTENSIONS_KEY, w as SUPER_ADMIN_HTTP_KEY, x as SUPER_ADMIN_I18N_KEY, y as SUPER_ADMIN_LOGIN_ADAPTER_KEY, z as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, B as SUPER_ADMIN_MANIFEST_KEY, D as SUPER_ADMIN_NOTIFY_KEY, F as SUPER_ADMIN_RESOURCES_KEY, G as SaColorScheme, H as SaResolvedScheme, h as SaTheme, f as SaThemeOptions, J as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, g as SuperAdminI18n, e as SuperAdminI18nOptions, K as SuperAdminLoginResult, L as SuperAdminManifestGuardOptions, d as UiConfirm, M as UiConfirmPrompt, i as UiConfirmRequest, N as UiConfirmResult, P as UiConfirmTone, Q as UiNotifyKind, T as UiNotifyOptions, V as buildNavigationGuard, W as createResourceRegistry, X as createSaTheme, Y as createSuperAdminI18n, Z as useResource, _ as useSaMessages, $ as useSaTheme, a0 as useSuperAdminI18n } from './resource-registry-
|
|
2
|
+
export { ADMIN_UI_VERSION, AdminErrorInit, AdminPromoListFilter, AdminPromoListRow, AdminResourceClientOptions, AxiosHttpClientOptions, AxiosLike, AxiosLikeConfig, AxiosLikeResponse, AxiosLikeResponseConfig, AxiosResponseBody, BatchColumnDriftError, BatchColumnFetcher, BatchColumnRow, BatchColumnValue, BootLoadError, CachedManifestEntry, DEFAULT_STANDARD_PAGE_ROUTES, FetchHttpClientOptions, HttpJsonError, IDENTITY_ACCENTS, IDENTITY_ACCENT_VALUES, IDENTITY_NEUTRAL, IDENTITY_NEUTRAL_VALUE, LoginBootProject, LoginBrandFallback, LoginBranding, ManifestLoadError, MessageParams, ParamStyle, PlanCounts, PlanRowLike, PlanVersionLike, ResolvePlansInput, ResolvedPlan, ResourceRequestInit, SidebarItem, adminErrorMessage, buildRoutes, buildSidebar, catalogResource, countPlans, createAdminResourceClient, createAxiosHttpClient, createFetchHttpClient, defaultSectionOrder, formatCurrency, formatMessage, getJson, identityAccentAt, identityAccentFor, identityChipStyle, isAdminError, isAxiosNoResponseError, isCurrentlyValid, isEmptyResponse, isExpired, isFutureScheduled, isPlatformError, isProductionBoot, isTransportFailure, markEmptyResponse, markPlatformError, markTransportFailure, postJson, promotionsResource, readErrorCode, readErrorDetail, requestJson, requestJsonBody, requireServerAnswer, resolveExtension, resolveLoginBranding, resolvePlans, subscriptionsResource, toAdminError, todayIsoDate, trimTrailingSlashes, usersResource } from './client/index.js';
|
|
3
|
+
import { H as HttpClient, g as ResourceListPage, e as ResourceOps, P as PlatformResources, h as ActionRegistry, A as ActionHandler, K as KvStore, S as SaLocale } from './catalog-Dv2twuNi.js';
|
|
4
|
+
export { i as ActionDefNotInManifestError, j as AuditListFilter, B as Bound, D as DEFAULT_SA_LOCALE, k as DefineResourceOptions, l as DiscoveryRead, m as HttpResponse, L as LIST_FIRST_PAGE, n as LIST_PAGE_SIZE_DEFAULT, o as LIST_PAGE_SIZE_MAX, q as LIST_PAGINATION_PARAMS, r as ListFilterOf, s as ListOp, t as ListQuery, M as MarketingProjectionsFilter, u as MessageTree, v as MissingHandlerError, w as PartialMessages, x as PromoCodesFilter, y as PublishBundleVersionOptions, z as PublishPlanVersionOptions, C as ResolvedAction, f as ResourceContext, R as ResourceDef, E as ResourceOp, F as SA_INTL_LOCALES, G as SA_LOCALES, I as SA_LOCALE_LABELS, J as SA_MESSAGES, N as SaBuiltinLocale, O as SaCatalog, Q as SaCatalogOptions, c as SaLocaleDefinition, b as SaLocaleOption, a as SaMessages, d as SaMessagesOverrides, T as TenantsListFilter, U as TranslationOf, V as auditResource, W as bindResource, X as bundleVersionsResource, Y as bundlesResource, Z as clampListPage, _ as clampListPageSize, $ as createSaCatalog, a0 as defaultHttpClient, a1 as defaultKvStore, a2 as defineListOp, a3 as defineMessages, a4 as defineResource, a5 as discoveryResource, a6 as filterQueryString, a7 as isSaBuiltinLocale, a8 as isSentInQuery, a9 as listUrl, aa as marketingResource, ab as mergeMessages, ac as planVersionsResource, ad as plansResource, p as platformResources, ae as promoCodesResource, af as readListPage, ag as resolveMessages, ah as tenantsResource } from './catalog-Dv2twuNi.js';
|
|
5
|
+
import { A as ActionsMap, a as SuperAdminBrand, b as SuperAdminEndpoints, E as ExtensionsMap, c as SuperAdminLoginAdapter, U as UiNotify, j as ResourceMap } from './resource-registry-Cn1Gy2LE.js';
|
|
6
|
+
export { C as CreateResourceRegistryOptions, k as ExtensionLoader, I as InstallPlugin, O as OpOverride, l as ResourceOverride, R as ResourceOverrides, m as ResourceRegistry, n as SA_COLOR_SCHEMES, o as SA_LOCALE_STORAGE_KEY, p as SA_THEME_KEY, q as SA_THEME_STORAGE_KEY, r as SUPER_ADMIN_ACTIONS_KEY, s as SUPER_ADMIN_BRAND_KEY, t as SUPER_ADMIN_CONFIRM_KEY, u as SUPER_ADMIN_ENDPOINTS_KEY, v as SUPER_ADMIN_EXTENSIONS_KEY, w as SUPER_ADMIN_HTTP_KEY, x as SUPER_ADMIN_I18N_KEY, y as SUPER_ADMIN_LOGIN_ADAPTER_KEY, z as SUPER_ADMIN_MANIFEST_CLEAR_CACHE_KEY, B as SUPER_ADMIN_MANIFEST_KEY, D as SUPER_ADMIN_NOTIFY_KEY, F as SUPER_ADMIN_RESOURCES_KEY, G as SaColorScheme, H as SaResolvedScheme, h as SaTheme, f as SaThemeOptions, J as SuperAdminAuthGuardOptions, S as SuperAdminGuardOptions, g as SuperAdminI18n, e as SuperAdminI18nOptions, K as SuperAdminLoginResult, L as SuperAdminManifestGuardOptions, d as UiConfirm, M as UiConfirmPrompt, i as UiConfirmRequest, N as UiConfirmResult, P as UiConfirmTone, Q as UiNotifyKind, T as UiNotifyOptions, V as buildNavigationGuard, W as createResourceRegistry, X as createSaTheme, Y as createSuperAdminI18n, Z as useResource, _ as useSaMessages, $ as useSaTheme, a0 as useSuperAdminI18n } from './resource-registry-Cn1Gy2LE.js';
|
|
7
7
|
import { AdminManifest, TenantListFilter, TenantDto, AuditQuery, AuditEntry, FeatureUiRegistry, PromoPreviewResponse, OnboardingSelectionRequest, PublicMarketingBundle, FeatureDef, FeatureKey, PublicBootResponse, DiscoverySnapshot, CapabilityCatalogEntryRow, FeatureCatalogEntryRow, QuotaCatalogEntryRow, ReviewCatalogEntryData, CatalogEntryI18n, UpdateCatalogEntryBaseData, SyncDiscoveryResult, BundleVersionRow, CreateBundleVersionDraftData, BundleVersionMutationResult, UpdateBundleVersionDraftData, BundleRow, CreateBundleData, UpdateBundleData, SubscriptionBundleRecord, MarketingProjectionFilter, MarketingProjectionRow, CreateMarketingProjectionData, UpdateMarketingProjectionData, PromotionRow, CreatePromotionData, UpdatePromotionData, PlanVersionRow, CreatePlanVersionDraftData, PlanVersionMutationResult, UpdatePlanVersionDraftData, PlanRow, CreatePlanData, UpdatePlanData, TenantActionDef } from '@saasicat/types';
|
|
8
8
|
import { RouteRecordRaw, NavigationGuardWithThis } from 'vue-router';
|
|
9
9
|
import * as vue from 'vue';
|