@saasicat/ui-vue 0.26.0 → 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/README.md +23 -0
- 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-BPF2BMCQ.js → chunk-4IZWT4UY.js} +414 -2
- package/dist/{chunk-O3J3ITF2.js → chunk-LK6YJDXC.js} +1 -1
- package/dist/{chunk-NEXTZZRQ.js → chunk-NRVF3JJJ.js} +2 -2
- package/dist/client/index.cjs +426 -5
- package/dist/client/index.d.cts +70 -4
- package/dist/client/index.d.ts +70 -4
- package/dist/client/index.js +22 -4
- package/dist/index.cjs +429 -8
- 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 +411 -2
- 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 +5 -4
- package/src/client/admin-error.ts +18 -1
- package/src/client/attach-cause.ts +21 -0
- package/src/client/nav-builder.ts +3 -1
- 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/src/pages-standard/SuperAdminSetupWizard.vue +7 -4
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,13 +207,24 @@ __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
|
|
|
206
215
|
// src/client/version.ts
|
|
207
216
|
var ADMIN_UI_VERSION = "1.2.0";
|
|
208
217
|
|
|
218
|
+
// src/client/attach-cause.ts
|
|
219
|
+
function attachCause(error, cause) {
|
|
220
|
+
Object.defineProperty(error, "cause", {
|
|
221
|
+
value: cause,
|
|
222
|
+
configurable: true,
|
|
223
|
+
writable: true
|
|
224
|
+
});
|
|
225
|
+
return error;
|
|
226
|
+
}
|
|
227
|
+
|
|
209
228
|
// src/client/i18n/format.ts
|
|
210
229
|
var import_types = require("@saasicat/types");
|
|
211
230
|
function formatMessage(template, params) {
|
|
@@ -271,7 +290,8 @@ var AdminError = class extends Error {
|
|
|
271
290
|
/** The request never reached the server. See `AdminErrorInit`. */
|
|
272
291
|
transportFailure;
|
|
273
292
|
constructor(init = {}) {
|
|
274
|
-
super(init.message ?? describe(init)
|
|
293
|
+
super(init.message ?? describe(init));
|
|
294
|
+
if (init.cause !== void 0) attachCause(this, init.cause);
|
|
275
295
|
this.name = "AdminError";
|
|
276
296
|
this.status = init.status ?? 0;
|
|
277
297
|
this.code = init.code;
|
|
@@ -831,9 +851,392 @@ var planVersionsResource = defineResource("planVersions", {
|
|
|
831
851
|
)
|
|
832
852
|
});
|
|
833
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
|
+
|
|
834
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
|
+
}
|
|
835
1198
|
var tenantsResource = defineResource("tenants", {
|
|
836
|
-
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)) ?? []
|
|
837
1240
|
});
|
|
838
1241
|
|
|
839
1242
|
// src/client/resources/audit.resource.ts
|
|
@@ -845,7 +1248,16 @@ var auditResource = defineResource("audit", {
|
|
|
845
1248
|
var platformResources = {
|
|
846
1249
|
plans: plansResource,
|
|
847
1250
|
planVersions: planVersionsResource,
|
|
1251
|
+
bundles: bundlesResource,
|
|
1252
|
+
bundleVersions: bundleVersionsResource,
|
|
1253
|
+
catalog: catalogResource,
|
|
1254
|
+
discovery: discoveryResource,
|
|
1255
|
+
marketing: marketingResource,
|
|
1256
|
+
promoCodes: promoCodesResource,
|
|
1257
|
+
promotions: promotionsResource,
|
|
848
1258
|
tenants: tenantsResource,
|
|
1259
|
+
users: usersResource,
|
|
1260
|
+
subscriptions: subscriptionsResource,
|
|
849
1261
|
audit: auditResource
|
|
850
1262
|
};
|
|
851
1263
|
|
|
@@ -1098,7 +1510,7 @@ var DEFAULT_STANDARD_PAGE_ROUTES = {
|
|
|
1098
1510
|
platformEmailHistory: "/admin/platform-email-history"
|
|
1099
1511
|
};
|
|
1100
1512
|
function isSupportedStandardPageKey(key) {
|
|
1101
|
-
return Object.
|
|
1513
|
+
return Object.prototype.hasOwnProperty.call(DEFAULT_STANDARD_PAGE_ROUTES, key);
|
|
1102
1514
|
}
|
|
1103
1515
|
var DEFAULT_ICONS = {
|
|
1104
1516
|
dashboard: "dashboard",
|
|
@@ -6385,7 +6797,7 @@ function useBundleVersions(options) {
|
|
|
6385
6797
|
const versions = (0, import_vue24.ref)([]);
|
|
6386
6798
|
const loading = (0, import_vue24.ref)(false);
|
|
6387
6799
|
const error = (0, import_vue24.ref)(null);
|
|
6388
|
-
const
|
|
6800
|
+
const bundleVersionsUrl2 = `${options.adminEndpoint}/catalog/bundles/${options.bundleId}/versions`;
|
|
6389
6801
|
const versionUrlBase = `${options.adminEndpoint}/catalog/bundle-versions`;
|
|
6390
6802
|
function authHeaders() {
|
|
6391
6803
|
const token = options.getAuthToken?.();
|
|
@@ -6419,7 +6831,7 @@ function useBundleVersions(options) {
|
|
|
6419
6831
|
loading.value = true;
|
|
6420
6832
|
error.value = null;
|
|
6421
6833
|
try {
|
|
6422
|
-
const data = await fetchJson(
|
|
6834
|
+
const data = await fetchJson(bundleVersionsUrl2);
|
|
6423
6835
|
versions.value = data ?? [];
|
|
6424
6836
|
} catch (err) {
|
|
6425
6837
|
error.value = err instanceof Error ? err : new Error(String(err));
|
|
@@ -6428,7 +6840,7 @@ function useBundleVersions(options) {
|
|
|
6428
6840
|
}
|
|
6429
6841
|
}
|
|
6430
6842
|
async function createDraft(data) {
|
|
6431
|
-
const result = await fetchJson(
|
|
6843
|
+
const result = await fetchJson(bundleVersionsUrl2, {
|
|
6432
6844
|
method: "POST",
|
|
6433
6845
|
body: JSON.stringify(data)
|
|
6434
6846
|
});
|
|
@@ -8020,6 +8432,9 @@ function planChangeWizardI18n(i18n) {
|
|
|
8020
8432
|
buildQuotaRegistry,
|
|
8021
8433
|
buildRoutes,
|
|
8022
8434
|
buildSidebar,
|
|
8435
|
+
bundleVersionsResource,
|
|
8436
|
+
bundlesResource,
|
|
8437
|
+
catalogResource,
|
|
8023
8438
|
clampListPage,
|
|
8024
8439
|
clampListPageSize,
|
|
8025
8440
|
countPlans,
|
|
@@ -8043,6 +8458,7 @@ function planChangeWizardI18n(i18n) {
|
|
|
8043
8458
|
defineListOp,
|
|
8044
8459
|
defineMessages,
|
|
8045
8460
|
defineResource,
|
|
8461
|
+
discoveryResource,
|
|
8046
8462
|
filterQueryString,
|
|
8047
8463
|
formatCurrency,
|
|
8048
8464
|
formatMessage,
|
|
@@ -8065,12 +8481,15 @@ function planChangeWizardI18n(i18n) {
|
|
|
8065
8481
|
markEmptyResponse,
|
|
8066
8482
|
markPlatformError,
|
|
8067
8483
|
markTransportFailure,
|
|
8484
|
+
marketingResource,
|
|
8068
8485
|
mergeMessages,
|
|
8069
8486
|
planChangeWizardI18n,
|
|
8070
8487
|
planVersionsResource,
|
|
8071
8488
|
plansResource,
|
|
8072
8489
|
platformResources,
|
|
8073
8490
|
postJson,
|
|
8491
|
+
promoCodesResource,
|
|
8492
|
+
promotionsResource,
|
|
8074
8493
|
provideEntitlement,
|
|
8075
8494
|
readErrorCode,
|
|
8076
8495
|
readErrorDetail,
|
|
@@ -8083,6 +8502,7 @@ function planChangeWizardI18n(i18n) {
|
|
|
8083
8502
|
resolveMessages,
|
|
8084
8503
|
resolvePlans,
|
|
8085
8504
|
resolveSuperAdminEndpoints,
|
|
8505
|
+
subscriptionsResource,
|
|
8086
8506
|
tenantsResource,
|
|
8087
8507
|
toAdminError,
|
|
8088
8508
|
todayIsoDate,
|
|
@@ -8130,5 +8550,6 @@ function planChangeWizardI18n(i18n) {
|
|
|
8130
8550
|
useTenantBillingCatalog,
|
|
8131
8551
|
useTenantManifest,
|
|
8132
8552
|
useTenantSubscriptionBundles,
|
|
8133
|
-
useTenants
|
|
8553
|
+
useTenants,
|
|
8554
|
+
usersResource
|
|
8134
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';
|