@antelopejs/dms 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +1 -1
  3. package/dist/config/internal/state.d.ts +5 -0
  4. package/dist/config/internal/state.js.map +1 -1
  5. package/dist/frontend-module.js +1 -0
  6. package/dist/frontend-module.js.map +1 -1
  7. package/dist/implementations/dms/page/quick-action-access.js +4 -1
  8. package/dist/implementations/dms/page/quick-action-access.js.map +1 -1
  9. package/dist/store/operations.js +3 -1
  10. package/dist/store/operations.js.map +1 -1
  11. package/dist/store/runtime.d.ts +1 -0
  12. package/dist/store/runtime.js +9 -0
  13. package/dist/store/runtime.js.map +1 -1
  14. package/frontend-vue/layers/dms-auth/app/build/composables/useAuthFormError.ts +3 -0
  15. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/login.vue +3 -1
  16. package/frontend-vue/layers/dms-auth/server/oauth.ts +5 -3
  17. package/frontend-vue/layers/dms-core/app/composables/auth/useAuthFetch.ts +4 -2
  18. package/frontend-vue/layers/dms-core/app/composables/useApiError.ts +1 -0
  19. package/frontend-vue/layers/dms-core/app/composables/useFieldErrors.ts +3 -0
  20. package/frontend-vue/layers/dms-core/app/composables/useReadOnlyRefusal.ts +49 -0
  21. package/frontend-vue/layers/dms-core/app/utils/composedText.ts +11 -4
  22. package/frontend-vue/layers/dms-core/app/utils/row-action-rule-evaluator.ts +8 -36
  23. package/frontend-vue/layers/dms-core/i18n/locales/core-en-GB.json +1 -0
  24. package/frontend-vue/layers/dms-core/i18n/locales/core-fr-FR.json +1 -0
  25. package/frontend-vue/layers/dms-core/shared/types/runtime-config.d.ts +6 -0
  26. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardSidePanel.vue +3 -2
  27. package/frontend-vue/layers/dms-layout/app/build/components/layout/Footer.vue +14 -0
  28. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/profile/ProfilePersonalInfo.vue +2 -2
  29. package/frontend-vue/layers/dms-layout/app/build/utils/github-repository.ts +1 -1
  30. package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +2 -0
  31. package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +2 -0
  32. package/frontend-vue/layers/dms-layout/server/render-token.ts +5 -3
  33. package/frontend-vue/layers/dms-ui/app/build/composables/chart/groupPoints.ts +40 -0
  34. package/frontend-vue/layers/dms-ui/app/build/composables/confirm/useActionConfirm.ts +2 -0
  35. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/defaultPrimitiveTypes.ts +6 -8
  36. package/frontend-vue/layers/dms-ui/app/build/composables/page/blockAnchors.ts +2 -3
  37. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/tableViewGrouping.ts +5 -2
  38. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRecordLink.ts +4 -2
  39. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRows.ts +53 -5
  40. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts +2 -0
  41. package/frontend-vue/layers/dms-ui/app/components/chart/Chart.vue +4 -1
  42. package/frontend-vue/layers/dms-ui/app/components/confirm/ConfirmModal.vue +3 -0
  43. package/frontend-vue/layers/dms-ui/app/components/form/components/DatePicker.vue +2 -4
  44. package/frontend-vue/layers/dms-ui/app/components/table-view/KanbanBoard.vue +2 -0
  45. package/frontend-vue/layers/dms-ui/app/composables/chart/types.ts +11 -1
  46. package/frontend-vue/layers/dms-ui/app/composables/form/useForm.ts +4 -0
  47. package/frontend-vue/package.json +2 -2
  48. package/package.json +15 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.12.1
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/v0.12.0...v0.12.1)
6
+
7
+ ### 🚀 Enhancements
8
+
9
+ - **dms-layout:** Restore a static GitHub star link in the footer ([#546](https://github.com/AntelopeJS/dms/pull/546))
10
+ - **dms:** Support a read-only public demo ([#581](https://github.com/AntelopeJS/dms/pull/581))
11
+
12
+ ### 🩹 Fixes
13
+
14
+ - **store:** Reuse the runtime id of an uninstalled module on reinstall ([#547](https://github.com/AntelopeJS/dms/pull/547))
15
+ - **chart:** Draw the one point per group a series data source answers ([#586](https://github.com/AntelopeJS/dms/pull/586))
16
+
17
+ ### 💅 Refactors
18
+
19
+ - **frontend:** Remove type assertions in tests ([#525](https://github.com/AntelopeJS/dms/pull/525))
20
+ - **frontend:** Remove type assertions in core, auth and layout ([#526](https://github.com/AntelopeJS/dms/pull/526))
21
+ - **frontend:** Remove type assertions in ui components and composables ([#527](https://github.com/AntelopeJS/dms/pull/527))
22
+ - **frontend:** Remove type assertions in ui data types ([#528](https://github.com/AntelopeJS/dms/pull/528))
23
+ - **backend:** Remove SAFETY assertions in test fixtures ([#542](https://github.com/AntelopeJS/dms/pull/542))
24
+ - **backend:** Remove SAFETY assertions in serialized-option and fixture tests ([#543](https://github.com/AntelopeJS/dms/pull/543))
25
+ - **agents:** Fix the lint findings in dms's own agent files ([#548](https://github.com/AntelopeJS/dms/pull/548))
26
+
27
+ ### 📖 Documentation
28
+
29
+ - **readme:** Rewrite the README as a landing page ([#554](https://github.com/AntelopeJS/dms/pull/554))
30
+
31
+ ### 🏡 Chore
32
+
33
+ - **package:** Update the npm description and keywords ([#580](https://github.com/AntelopeJS/dms/pull/580))
34
+ - **package:** Restore realtime in the npm description ([#588](https://github.com/AntelopeJS/dms/pull/588))
35
+ - **release:** @antelopejs/interface-dms v0.10.1 ([6fd39d98](https://github.com/AntelopeJS/dms/commit/6fd39d98))
36
+
37
+ ### ❤️ Contributors
38
+
39
+ - Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
40
+
3
41
  ## v0.12.0
4
42
 
5
43
  [compare changes](https://github.com/AntelopeJS/dms/compare/v0.11.1...v0.12.0)
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  <a href="https://www.npmjs.com/package/@antelopejs/dms"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/dms?style=for-the-badge&labelColor=000000&color=000000"></a>
11
11
  <a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/dms?style=for-the-badge&labelColor=000000&color=000000"></a>
12
- <a href="https://discord.gg/sjK28QHrA7"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
12
+ <a href="https://discord.gg/g4pFt6eXqu"><img alt="Discord" src="https://img.shields.io/badge/Discord-18181B?logo=discord&style=for-the-badge&color=000000"></a>
13
13
  <a href="https://dms.antelopejs.com/docs"><img alt="Documentation" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
14
14
 
15
15
  **Admin dashboards for AntelopeJS, declared in TypeScript on the backend.**
@@ -44,10 +44,15 @@ export interface FrontendConfig {
44
44
  export interface StoreConfig {
45
45
  catalogUrl?: string;
46
46
  }
47
+ export interface LoginPrefillConfig {
48
+ email: string;
49
+ password: string;
50
+ }
47
51
  export interface Config {
48
52
  auth?: AuthConfig;
49
53
  htmlRender?: HtmlRenderConfig;
50
54
  homepage?: string;
55
+ loginPrefill?: LoginPrefillConfig;
51
56
  apiBaseUrl?: string;
52
57
  clientBaseUrl?: string;
53
58
  realtime?: RealtimeConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/config/internal/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/config/internal/state.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ const frontendModule = (config) => ({
31
31
  time_1.MILLISECONDS_PER_SECOND,
32
32
  },
33
33
  homepage: config.homepage ?? DEFAULT_HOMEPAGE,
34
+ ...(config.loginPrefill && { loginPrefill: { ...config.loginPrefill } }),
34
35
  oauthProviders: (0, oauth_config_1.describeEnabledOAuthProviders)(config.auth?.oauth).map(({ id, label, icon }) => ({ id, label, icon })),
35
36
  },
36
37
  });
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-module.js","sourceRoot":"","sources":["../src/frontend-module.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAK7B,wEAAwF;AACxF,qCAKkB;AAClB,8DAA8F;AAC9F,wDAAsE;AAMzD,QAAA,wBAAwB,GAAG,0CAAsB,CAAC;AAE/D,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAatB,MAAM,cAAc,GAAmC,CAC5D,MAAc,EACc,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,8BAA8B;IACpC,UAAU,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;IACvC,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,CAAC;IACX,sBAAsB,EAAE,CAAC,gCAAwB,CAAC;IAClD,cAAc,EAAE;QACd,UAAU,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QACjC,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;KAC3B;IACD,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,UAAU,IAAI,6BAAoB;QAClD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,gCAAuB;QAC9D,iBAAiB,EAAE,KAAK;QACxB,KAAK,EAAE;YACL,eAAe,EACb,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,IAAI,sCAA6B,CAAC;gBACnE,8BAAuB;SAC1B;QACD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,gBAAgB;QAC7C,cAAc,EAAE,IAAA,4CAA6B,EAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CACnE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC/C;KACF;CACF,CAAC,CAAC;AA3BU,QAAA,cAAc,kBA2BxB"}
1
+ {"version":3,"file":"frontend-module.js","sourceRoot":"","sources":["../src/frontend-module.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAK7B,wEAAwF;AACxF,qCAKkB;AAClB,8DAA8F;AAC9F,wDAAsE;AAMzD,QAAA,wBAAwB,GAAG,0CAAsB,CAAC;AAE/D,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAatB,MAAM,cAAc,GAAmC,CAC5D,MAAc,EACc,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,8BAA8B;IACpC,UAAU,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;IACvC,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,CAAC;IACX,sBAAsB,EAAE,CAAC,gCAAwB,CAAC;IAClD,cAAc,EAAE;QACd,UAAU,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE;QACjC,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;KAC3B;IACD,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC,UAAU,IAAI,6BAAoB;QAClD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,gCAAuB;QAC9D,iBAAiB,EAAE,KAAK;QACxB,KAAK,EAAE;YACL,eAAe,EACb,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,IAAI,sCAA6B,CAAC;gBACnE,8BAAuB;SAC1B;QACD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,gBAAgB;QAC7C,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;QACxE,cAAc,EAAE,IAAA,4CAA6B,EAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CACnE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC/C;KACF;CACF,CAAC,CAAC;AA5BU,QAAA,cAAc,kBA4BxB"}
@@ -28,6 +28,9 @@ exports.quickActionTargetHandlers = {
28
28
  openForm: resolveOpenFormTarget,
29
29
  button: resolveButtonTarget,
30
30
  };
31
+ function handlerFor(type) {
32
+ return exports.quickActionTargetHandlers[type];
33
+ }
31
34
  async function resolveQuickActionTarget(target, context) {
32
35
  const meta = (0, interface_core_1.GetMetadata)(target.page, page_1.PageMetadata);
33
36
  const pageInfo = meta.pageInfo;
@@ -37,7 +40,7 @@ async function resolveQuickActionTarget(target, context) {
37
40
  }
38
41
  if (!(await (0, access_1.computeEntryAccess)(pageInfo, context)))
39
42
  return undefined;
40
- const handler = exports.quickActionTargetHandlers[target.type];
43
+ const handler = handlerFor(target.type);
41
44
  return handler(target, { pageInfo, meta, context });
42
45
  }
43
46
  function holdsPagePermission(page, permissionId) {
@@ -1 +1 @@
1
- {"version":3,"file":"quick-action-access.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/quick-action-access.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quick-action-access.js","sourceRoot":"","sources":["../../../../src/implementations/dms/page/quick-action-access.ts"],"names":[],"mappings":"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"}
@@ -215,15 +215,17 @@ async function prepareContext(kind, id, options) {
215
215
  const { projectPath } = await (0, runtime_1.GetRuntimeInfo)();
216
216
  const declaration = (await (0, declarations_1.listCatalogDeclarations)([catalogEntry])).get(id);
217
217
  (0, interface_api_util_1.assert)(PRECONDITIONS[kind](declaration), HTTP_CONFLICT, "error.store_invalid_state");
218
+ let key = declaration?.key ?? catalogEntry.package;
218
219
  if (!declaration) {
219
220
  const runtime = await (0, runtime_2.listRuntimeModules)();
220
221
  (0, interface_api_util_1.assert)(!(0, runtime_2.findWorkingCopy)(catalogEntry.package, runtime.values()), HTTP_CONFLICT, "error.store_working_copy");
222
+ key = (0, runtime_2.packageRuntimeId)(catalogEntry.package, runtime.values());
221
223
  }
222
224
  const context = {
223
225
  id,
224
226
  catalogEntry,
225
227
  projectPath,
226
- key: declaration?.key ?? catalogEntry.package,
228
+ key,
227
229
  declaration,
228
230
  written: false,
229
231
  dependencies: options.dependencies ?? [],
@@ -1 +1 @@
1
- {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/store/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/store/operations.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export interface StoreModuleLoad {
13
13
  export declare function sourceKindOf(source: PackageSource): ModuleSourceKind;
14
14
  export declare function isLive(module: RuntimeModule | undefined): boolean;
15
15
  export declare function findWorkingCopy(packageName: string, runtime: Iterable<RuntimeModule>): RuntimeModule | undefined;
16
+ export declare function packageRuntimeId(packageName: string, runtime: Iterable<RuntimeModule>): string;
16
17
  export declare function listRuntimeModules(): Promise<Map<string, RuntimeModule>>;
17
18
  export declare function loadStoreModule(moduleId: string, load: StoreModuleLoad): Promise<void>;
18
19
  export declare function unloadStoreModule(moduleId: string): Promise<void>;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.sourceKindOf = sourceKindOf;
7
7
  exports.isLive = isLive;
8
8
  exports.findWorkingCopy = findWorkingCopy;
9
+ exports.packageRuntimeId = packageRuntimeId;
9
10
  exports.listRuntimeModules = listRuntimeModules;
10
11
  exports.loadStoreModule = loadStoreModule;
11
12
  exports.unloadStoreModule = unloadStoreModule;
@@ -70,6 +71,14 @@ function findWorkingCopy(packageName, runtime) {
70
71
  }
71
72
  return undefined;
72
73
  }
74
+ function packageRuntimeId(packageName, runtime) {
75
+ for (const module of runtime) {
76
+ if (module.isPackageSource && module.packageName === packageName) {
77
+ return module.id;
78
+ }
79
+ }
80
+ return packageName;
81
+ }
73
82
  async function listRuntimeModules() {
74
83
  const described = await Promise.all((await (0, modules_1.ListModules)()).map((moduleId) => describeModule(moduleId)));
75
84
  return new Map(described
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/store/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/store/runtime.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,7 @@ export interface AuthFieldErrorTarget {
42
42
  * after an `await` without the i18n context.
43
43
  */
44
44
  export function useAuthFormError() {
45
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
45
46
  const { t } = useI18n();
46
47
  const translate: I18nTranslate = (key, params = {}) => t(key, params);
47
48
  const formError = ref<AuthFormError | null>(null);
@@ -50,6 +51,7 @@ export function useAuthFormError() {
50
51
  error: Parameters<typeof resolveApiErrorMessage>[0],
51
52
  titleKey: string,
52
53
  ): void {
54
+ if (consumeReadOnlyRefusal(error)) return;
53
55
  formError.value = {
54
56
  title: t(titleKey),
55
57
  description: resolveApiMessage(translate, resolveApiErrorMessage(error)),
@@ -81,6 +83,7 @@ export function useAuthFormError() {
81
83
  titleKey: string,
82
84
  target: AuthFieldErrorTarget,
83
85
  ): Promise<boolean> {
86
+ if (consumeReadOnlyRefusal(error)) return false;
84
87
  const { fields } = resolveFieldErrors(error, {
85
88
  fields: target.fields,
86
89
  codes: target.codes,
@@ -39,7 +39,9 @@ const fields = z.object({
39
39
  });
40
40
  type Schema = z.output<typeof fields>;
41
41
  const schema = useLocalizedSchema(fields);
42
- const state = reactive<Partial<Schema>>({});
42
+ const state = reactive<Partial<Schema>>({
43
+ ...useDmsRuntimeConfig().public.dms.loginPrefill,
44
+ });
43
45
  useLiveFormErrors(form, state);
44
46
 
45
47
  function isTwoFactorRequired(
@@ -46,9 +46,11 @@ const attempts = new Map<string, RateWindow>();
46
46
  function sweepAttempts(now: number) {
47
47
  for (const [key, window] of attempts)
48
48
  if (now - window.startedAt >= RATE_WINDOW_MS) attempts.delete(key);
49
- while (attempts.size >= MAX_RATE_LIMIT_CLIENTS)
50
- // SAFETY: The synchronous loop requires at least 10,000 entries in this Map<string, RateWindow>, so next() has a string key.
51
- attempts.delete(attempts.keys().next().value as string);
49
+ while (attempts.size >= MAX_RATE_LIMIT_CLIENTS) {
50
+ const [oldest] = attempts.keys();
51
+ if (oldest === undefined) return;
52
+ attempts.delete(oldest);
53
+ }
52
54
  }
53
55
 
54
56
  /** Counts an attempt for `key`; false once over the limit of the window. */
@@ -42,6 +42,7 @@ export const useAuthFetch = () => {
42
42
  useSessionRecovery();
43
43
  const config = useDmsRuntimeConfig();
44
44
  const dmsApp = useDmsApp();
45
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
45
46
 
46
47
  const realtimeSessionId = useDmsState<string | undefined>(
47
48
  REALTIME_SESSION_STATE_KEY,
@@ -59,6 +60,7 @@ export const useAuthFetch = () => {
59
60
  }
60
61
  },
61
62
  async onResponseError({ response, options }) {
63
+ if (consumeReadOnlyRefusal({ response })) return;
62
64
  if (response.status !== HTTP_UNAUTHORIZED) {
63
65
  return;
64
66
  }
@@ -126,12 +128,12 @@ export const useAuthFetch = () => {
126
128
  ...defaults,
127
129
  ...options,
128
130
  });
129
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The wrapper forwards each call to baseFetch, whose generic response correlation inference loses; raw, native and create are attached below before it is returned.
131
+ // SAFETY: retryingFetch resolves with the response baseFetch gives for the same request, of the same response type, so the wrapper answers as AuthFetch's call signature does; raw, native and create are attached below before it is returned.
130
132
  const authFetch = ((
131
133
  request: AuthFetchArgs[0],
132
134
  options?: AuthFetchArgs[1],
133
135
  ) => retryingFetch(request, optionsOf(options))) as AuthFetch;
134
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The raw wrapper preserves the owner's generic overloads through forwarding; inference loses their response-type correlation.
136
+ // SAFETY: retryingRaw resolves with the response baseFetch.raw gives for the same request, of the same response type, so the wrapper answers as AuthFetch['raw'] does.
135
137
  authFetch.raw = ((request: AuthFetchArgs[0], options?: AuthFetchArgs[1]) =>
136
138
  retryingRaw(request, optionsOf(options))) as AuthFetch["raw"];
137
139
  authFetch.native = baseFetch.native;
@@ -73,6 +73,7 @@ export function useApiError(
73
73
  error: Parameters<typeof resolveApiErrorTitle>[0],
74
74
  options?: Options,
75
75
  ) {
76
+ if (useReadOnlyRefusal()(error)) return;
76
77
  const toast = useToast();
77
78
  const { processApiMessage } = getAppTranslation();
78
79
 
@@ -491,6 +491,7 @@ export function useFieldErrors<F extends string>(
491
491
  ) {
492
492
  const { t } = useI18n();
493
493
  const toast = useToast();
494
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
494
495
  const translate = (key: string, params: Parameters<I18nTranslate>[1] = {}) =>
495
496
  t(key, params);
496
497
  const fieldIds = Object.keys(options.fields) as F[];
@@ -571,6 +572,7 @@ export function useFieldErrors<F extends string>(
571
572
  error: Parameters<typeof resolveApiErrorMessage>[0],
572
573
  toastOptions: HandleApiErrorOptions,
573
574
  ) {
575
+ if (consumeReadOnlyRefusal(error)) return;
574
576
  toast.add({
575
577
  title: t(toastOptions.toastTitle),
576
578
  description: toastOptions.toastDescription
@@ -589,6 +591,7 @@ export function useFieldErrors<F extends string>(
589
591
  error: Parameters<typeof resolveApiErrorMessage>[0],
590
592
  toastOptions: HandleApiErrorOptions,
591
593
  ): Promise<boolean> {
594
+ if (consumeReadOnlyRefusal(error)) return false;
592
595
  if (await applyApiError(error)) return true;
593
596
  toastError(error, toastOptions);
594
597
  return false;
@@ -0,0 +1,49 @@
1
+ import { isFunction, isObject } from "../utils/type-check";
2
+
3
+ const READ_ONLY_STATUS = 403;
4
+ const READ_ONLY_HEADER = "x-dms-readonly";
5
+ const READ_ONLY_MARK = "1";
6
+ const READ_ONLY_TOAST_ID = "dms-read-only";
7
+ const READ_ONLY_STATE_KEY = "dms.readOnly.presentedResponses";
8
+
9
+ function refusedResponse(
10
+ failure: Parameters<typeof isObject>[0],
11
+ ): object | undefined {
12
+ if (!failure || !isObject(failure)) return;
13
+ const response = failure.response;
14
+ if (!response || !isObject(response) || response.status !== READ_ONLY_STATUS)
15
+ return;
16
+ const headers = response.headers;
17
+ if (!headers || !isObject(headers) || !isFunction(headers.get)) return;
18
+ return headers.get(READ_ONLY_HEADER) === READ_ONLY_MARK
19
+ ? response
20
+ : undefined;
21
+ }
22
+
23
+ /**
24
+ * Captures app-local refusal presentation. The returned consumer shows one
25
+ * generic toast per marked response and returns whether it owns presentation.
26
+ * A consumed refusal remains a failed operation; callers skip only local notices.
27
+ */
28
+ export function useReadOnlyRefusal() {
29
+ const toast = useToast();
30
+ const { processApiMessage } = getAppTranslation();
31
+ const presented = useDmsState(
32
+ READ_ONLY_STATE_KEY,
33
+ () => new WeakSet<object>(),
34
+ );
35
+
36
+ return (failure: Parameters<typeof refusedResponse>[0]): boolean => {
37
+ const response = refusedResponse(failure);
38
+ if (!response) return false;
39
+ if (presented.value.has(response)) return true;
40
+ presented.value.add(response);
41
+ toast.add({
42
+ id: READ_ONLY_TOAST_ID,
43
+ color: "warning",
44
+ icon: "i-ph-lock-simple",
45
+ title: processApiMessage("error.read_only_demo"),
46
+ });
47
+ return true;
48
+ };
49
+ }
@@ -48,10 +48,17 @@ type ParamFormatter<Param extends ComposedTextTypedParam> = (
48
48
  context: ComposedTextContext,
49
49
  ) => string;
50
50
 
51
+ type ParamOfType<Type extends ComposedTextParamType> =
52
+ ComposedTextTypedParam extends infer Param
53
+ ? Param extends { type: infer Types }
54
+ ? Type extends Types
55
+ ? Param
56
+ : never
57
+ : never
58
+ : never;
59
+
51
60
  type ParamFormatters = {
52
- [Type in ComposedTextParamType]: ParamFormatter<
53
- Extract<ComposedTextTypedParam, { type: Type }>
54
- >;
61
+ [Type in ComposedTextParamType]: ParamFormatter<ParamOfType<Type>>;
55
62
  };
56
63
 
57
64
  const DEFAULT_MINOR_DIGITS = 2;
@@ -162,7 +169,7 @@ function formatParam(
162
169
  return String(formatNumber(param, context.locale));
163
170
  }
164
171
  if (isComposedText(param)) return composeText(param, context);
165
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- ParamFormatters preserves the nominal discriminator correlation, which indexed union inference loses. A switch would change legacy lookup behavior for malformed and inherited type keys.
172
+ // SAFETY: ParamFormatters types each entry as the formatter of the variants whose type includes that key, so for a param typed ComposedTextTypedParam the entry under param.type accepts it; the indexed union loses that correlation.
166
173
  const formatter = PARAM_FORMATTERS[param.type] as
167
174
  | ParamFormatter<ComposedTextTypedParam>
168
175
  | undefined;
@@ -2,11 +2,7 @@ import { isBoolean } from "./type-check";
2
2
  import type { DataTypeFormatter } from "../composables/data-types/useDataType";
3
3
  import { get } from "@nuxt/ui/runtime/utils/index.js";
4
4
  import type { RowActionRule, RowActionConfig } from "../types/row-action";
5
- import {
6
- FIELD_KEY,
7
- FIELD_OPERATORS,
8
- LOGICAL_OPERATOR_KEYS,
9
- } from "../types/row-action-operators";
5
+ import { FIELD_KEY, FIELD_OPERATORS } from "../types/row-action-operators";
10
6
 
11
7
  type RuleEvaluator = (
12
8
  rule: RowActionRule,
@@ -18,39 +14,15 @@ type RuleDictionary = Record<
18
14
  Parameters<typeof FIELD_OPERATORS.equals.compare>[0]
19
15
  >;
20
16
 
21
- const createLogicalEvaluators = (evaluate: RuleEvaluator) => ({
22
- and: (val: RuleDictionary[string], row: Parameters<RuleEvaluator>[1]) =>
23
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Operator presence does not validate its payload. Owner rule types cannot prove dynamically indexed values; retain the unchecked every call and its existing failures.
24
- (val as RowActionRule[]).every((r) => evaluate(r, row)),
25
- or: (val: RuleDictionary[string], row: Parameters<RuleEvaluator>[1]) =>
26
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The existing rule contract assumes an array here without checking it. Inference cannot prove that assumption and guards would change malformed-input failures.
27
- (val as RowActionRule[]).some((r) => evaluate(r, row)),
28
- not: (val: RuleDictionary[string], row: Parameters<RuleEvaluator>[1]) =>
29
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Payload is not runtime-validated. Owner types cannot prove this dynamic value; preserve recursive evaluation's existing behavior.
30
- !evaluate(val as RowActionRule, row),
31
- });
32
-
33
- let cachedLogicalEvaluators: ReturnType<typeof createLogicalEvaluators>;
34
- const getLogicalEvaluators = () => {
35
- if (!cachedLogicalEvaluators) {
36
- cachedLogicalEvaluators = createLogicalEvaluators(evaluateRowActionRule);
37
- }
38
- return cachedLogicalEvaluators;
39
- };
40
-
41
17
  export const evaluateRowActionRule: RuleEvaluator = (rule, row) => {
42
- const ruleObj: RuleDictionary = rule;
43
- const logicalEvaluators = getLogicalEvaluators();
44
-
45
- for (const operator of LOGICAL_OPERATOR_KEYS) {
46
- if (operator in ruleObj) {
47
- return logicalEvaluators[operator](ruleObj[operator], row);
48
- }
49
- }
18
+ if ("and" in rule)
19
+ return rule.and.every((r) => evaluateRowActionRule(r, row));
20
+ if ("or" in rule) return rule.or.some((r) => evaluateRowActionRule(r, row));
21
+ if ("not" in rule) return !evaluateRowActionRule(rule.not, row);
50
22
 
51
- if (FIELD_KEY in ruleObj) {
52
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Presence does not validate the field path. Inference leaves it unknown; adding validation would alter get's existing malformed-input behavior.
53
- const fieldValue = get(row, ruleObj[FIELD_KEY] as string);
23
+ if (FIELD_KEY in rule) {
24
+ const ruleObj: RuleDictionary = rule;
25
+ const fieldValue = get(row, rule.field);
54
26
  for (const [operator, def] of Object.entries(FIELD_OPERATORS)) {
55
27
  if (operator in ruleObj) {
56
28
  const compare = def.compare;
@@ -17,6 +17,7 @@
17
17
  }
18
18
  },
19
19
  "error": {
20
+ "read_only_demo": "Read-only demo, changes are not saved",
20
21
  "401": {
21
22
  "title": "Access denied",
22
23
  "description": "You don't have permission to access this page."
@@ -17,6 +17,7 @@
17
17
  }
18
18
  },
19
19
  "error": {
20
+ "read_only_demo": "Démo en lecture seule, les modifications ne sont pas enregistrées",
20
21
  "401": {
21
22
  "title": "Accès refusé",
22
23
  "description": "Vous n'avez pas la permission d'accéder à cette page."
@@ -4,9 +4,15 @@ interface DmsOAuthProviderDescriptor {
4
4
  icon: string;
5
5
  }
6
6
 
7
+ interface DmsLoginPrefillConfig {
8
+ email: string;
9
+ password: string;
10
+ }
11
+
7
12
  interface DmsPublicConfig {
8
13
  baseURL: string;
9
14
  homepage?: string;
15
+ loginPrefill?: DmsLoginPrefillConfig;
10
16
  mustValidateEmail?: boolean;
11
17
  clientBaseUrl?: string;
12
18
  /**
@@ -56,8 +56,9 @@ function closeSheetOnEscape(event: KeyboardEvent): void {
56
56
  }
57
57
 
58
58
  function startHandleDrag(event: PointerEvent): void {
59
- // SAFETY: The template binds this listener directly to the resize handle div, so currentTarget is that HTMLElement during dispatch.
60
- (event.currentTarget as HTMLElement).setPointerCapture(event.pointerId);
59
+ const handle = event.currentTarget;
60
+ if (!(handle instanceof HTMLElement)) return;
61
+ handle.setPointerCapture(event.pointerId);
61
62
  const renderedWidth = panelEl.value?.getBoundingClientRect().width;
62
63
  startDrag(event, renderedWidth || width.value);
63
64
  }
@@ -1,5 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import type { SelectItem } from "@nuxt/ui";
3
+ import { GITHUB_REPOSITORY_URL } from "../../utils/github-repository";
3
4
 
4
5
  const EXTERNAL_LINK_PATTERN = /^https?:\/\//;
5
6
  const DEFAULT_COPYRIGHT = "Antelope";
@@ -65,6 +66,19 @@ async function onLocaleChange(code: Parameters<typeof changeLanguage>[0]) {
65
66
  </DmsLink>
66
67
  </template>
67
68
 
69
+ <a
70
+ :href="GITHUB_REPOSITORY_URL"
71
+ target="_blank"
72
+ rel="noopener noreferrer"
73
+ :aria-label="t('empty_layout.footer.github_star_label')"
74
+ :title="t('empty_layout.footer.github_star_label')"
75
+ class="border-default text-muted hover:text-highlighted hover:border-accented hover:bg-elevated inline-flex h-6 items-center gap-1.5 rounded-md border px-2 font-medium transition-colors max-sm:h-8"
76
+ >
77
+ <UIcon name="i-ph-github-logo" class="size-3.5" aria-hidden="true" />
78
+ <UIcon name="i-ph-star" class="size-3" aria-hidden="true" />
79
+ {{ t("empty_layout.footer.github_star") }}
80
+ </a>
81
+
68
82
  <USelect
69
83
  v-if="showsLocaleSwitcher"
70
84
  :model-value="locale"
@@ -112,8 +112,8 @@ function pickFile(): void {
112
112
  }
113
113
 
114
114
  async function onFileChange(event: Event): Promise<void> {
115
- // SAFETY: The template binds this change listener directly to the file input, which supplies the event target.
116
- const input = event.target as HTMLInputElement;
115
+ const input = event.target;
116
+ if (!(input instanceof HTMLInputElement)) return;
117
117
  const file = input.files?.[0];
118
118
  input.value = "";
119
119
  if (!file) return;
@@ -1,5 +1,5 @@
1
1
  /** The DMS repository on GitHub, as `owner/name`. */
2
2
  const GITHUB_REPOSITORY = "AntelopeJS/dms";
3
3
 
4
- /** Opened by the dashboard's star prompt. */
4
+ /** The DMS repository page on GitHub. */
5
5
  export const GITHUB_REPOSITORY_URL = `https://github.com/${GITHUB_REPOSITORY}`;
@@ -1048,6 +1048,8 @@
1048
1048
  "footer": {
1049
1049
  "documentation": "Documentation",
1050
1050
  "website": "Website",
1051
+ "github_star": "Star",
1052
+ "github_star_label": "Star AntelopeJS DMS on GitHub",
1051
1053
  "language": "Language"
1052
1054
  }
1053
1055
  },
@@ -1048,6 +1048,8 @@
1048
1048
  "footer": {
1049
1049
  "documentation": "Documentation",
1050
1050
  "website": "Site web",
1051
+ "github_star": "Star",
1052
+ "github_star_label": "Mettre une étoile à AntelopeJS DMS sur GitHub",
1051
1053
  "language": "Langue"
1052
1054
  }
1053
1055
  },
@@ -63,9 +63,11 @@ function claimsValid(
63
63
  function rememberToken(jti: string, exp: number, now: number) {
64
64
  for (const [spent, expiresAt] of usedRenderTokens)
65
65
  if (expiresAt <= now) usedRenderTokens.delete(spent);
66
- while (usedRenderTokens.size >= RENDER_REPLAY_LIMIT)
67
- // SAFETY: The synchronous loop requires at least 10,000 entries in this Map<string, number>, so next() has a string key.
68
- usedRenderTokens.delete(usedRenderTokens.keys().next().value as string);
66
+ while (usedRenderTokens.size >= RENDER_REPLAY_LIMIT) {
67
+ const [oldest] = usedRenderTokens.keys();
68
+ if (oldest === undefined) break;
69
+ usedRenderTokens.delete(oldest);
70
+ }
69
71
  usedRenderTokens.set(jti, exp);
70
72
  }
71
73
 
@@ -0,0 +1,40 @@
1
+ import type {
2
+ ChartGroupPoint,
3
+ ChartResponse,
4
+ ChartSeries,
5
+ } from "../../../composables/chart/types";
6
+
7
+ type XAxisType = "category" | "datetime" | "numeric";
8
+
9
+ function isGroupPoint(
10
+ entry: ChartSeries | ChartGroupPoint,
11
+ ): entry is ChartGroupPoint {
12
+ return "x" in entry && "y" in entry && !("data" in entry);
13
+ }
14
+
15
+ function isSeries(entry: ChartSeries | ChartGroupPoint): entry is ChartSeries {
16
+ return "data" in entry;
17
+ }
18
+
19
+ /**
20
+ * The series a bare chart draws from its data source's answer.
21
+ *
22
+ * One point per group becomes one series called `name`. On a category axis
23
+ * each group key becomes its label: Apex lays numeric keys out on a number
24
+ * line whatever axis type it is given, which bunches `202512` and `202601`
25
+ * apart and shifts the bars of a numeric breakdown off their labels.
26
+ */
27
+ export function responseSeries(
28
+ series: ChartResponse["series"],
29
+ name: string,
30
+ xaxisType: XAxisType = "category",
31
+ ): ChartSeries[] {
32
+ const entries: Array<ChartSeries | ChartGroupPoint> = series;
33
+ if (entries.length === 0 || !entries.every(isGroupPoint))
34
+ return entries.filter(isSeries);
35
+ const labelled = xaxisType === "category";
36
+ const data = entries
37
+ .filter(isGroupPoint)
38
+ .map((point) => (labelled ? { ...point, x: String(point.x) } : point));
39
+ return [{ name, data }];
40
+ }
@@ -44,6 +44,7 @@ export function useActionConfirm() {
44
44
  const { $authFetch } = useAuthFetch();
45
45
  const { t } = useI18n();
46
46
  const toast = useToast();
47
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
47
48
  const runSecondaryTarget = secondaryTargetRunner($authFetch.raw);
48
49
 
49
50
  const loadDialog = async (
@@ -61,6 +62,7 @@ export function useActionConfirm() {
61
62
  try {
62
63
  return await $authFetch<ConfirmDialog>(url);
63
64
  } catch (error) {
65
+ if (consumeReadOnlyRefusal(error)) return undefined;
64
66
  toast.add({
65
67
  color: Color.error,
66
68
  icon: "i-ph-warning-circle",
@@ -37,16 +37,14 @@ function renderBoolean(value: CellValue) {
37
37
  ]);
38
38
  }
39
39
 
40
+ function dateBoundsOf(value: CellValue): [unknown, unknown] {
41
+ const bounds: { start?: unknown; end?: unknown } = value ?? {};
42
+ return [bounds.start, bounds.end];
43
+ }
44
+
40
45
  function formatDateBetween(value: CellValue, locale: string): string {
41
46
  const { t } = getAppTranslation();
42
- const [rawStart, rawEnd] = Array.isArray(value)
43
- ? value
44
- : [
45
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The open formatter value has no date-range schema; preserve optional start access on the original input.
46
- (value as { start?: unknown })?.start,
47
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The open formatter value has no date-range schema; preserve optional end access on the original input.
48
- (value as { end?: unknown })?.end,
49
- ];
47
+ const [rawStart, rawEnd] = Array.isArray(value) ? value : dateBoundsOf(value);
50
48
  const start = formatDate(rawStart, locale) ?? t("dms.date.undefined");
51
49
  const end = formatDate(rawEnd, locale) ?? t("dms.date.undefined");
52
50
  return `${start} - ${end}`;
@@ -1,4 +1,4 @@
1
- import type { ComponentPublicInstance, VNode } from "vue";
1
+ import { isVNode, type ComponentPublicInstance, type VNode } from "vue";
2
2
 
3
3
  const blocks = new Map<string, ComponentPublicInstance>();
4
4
 
@@ -28,8 +28,7 @@ function firstElementOf(vnode: VNode | null | undefined): Element | null {
28
28
  if (vnode.component) return firstElementOf(vnode.component.subTree);
29
29
  if (!Array.isArray(vnode.children)) return null;
30
30
  for (const child of vnode.children) {
31
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- VNode child representations can include scalars and arrays; retain the unchecked recursive projection and null fallback.
32
- const element = firstElementOf(child as VNode);
31
+ const element = isVNode(child) ? firstElementOf(child) : null;
33
32
  if (element) return element;
34
33
  }
35
34
  return null;
@@ -35,6 +35,7 @@ export function useTableViewReorder<T extends Data>(
35
35
  const { toast } = scope.sortRecovery;
36
36
  const { processI18n } = scope.arrival;
37
37
  const { props } = scope;
38
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
38
39
  const ORDERED_DISPLAY_IDS = new Set([TABLE_DISPLAY_ID, CARDS_DISPLAY_ID]);
39
40
  const { reorderState } = useTableReorder<T>({
40
41
  reorder: reorderConfig,
@@ -53,7 +54,8 @@ export function useTableViewReorder<T extends Data>(
53
54
  ORDERED_DISPLAY_IDS.has(activeDisplayId.value),
54
55
  ),
55
56
  refresh: () => refresh(),
56
- onError: (failure) =>
57
+ onError: (failure) => {
58
+ if (consumeReadOnlyRefusal(failure)) return;
57
59
  toast.add({
58
60
  title: t("dms.table.reorder.error"),
59
61
  description: describeTableWriteError(
@@ -64,7 +66,8 @@ export function useTableViewReorder<T extends Data>(
64
66
  ),
65
67
  color: Color.error,
66
68
  icon: "i-ph-warning-circle",
67
- }),
69
+ });
70
+ },
68
71
  });
69
72
  return { reorderState };
70
73
  }
@@ -55,8 +55,10 @@ export function useTableRecordLink<T>(
55
55
  const settle = async (id: string) => {
56
56
  const found = await options.resolve(id);
57
57
  const outcome = deepLinkOutcome(found, action);
58
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- deepLinkOutcome returns a string rather than a row type predicate. DeepLinkedRow keeps row optional; the open outcome guarantees it operationally but neither inference nor its owner expresses that relation.
59
- if (outcome === "open") return options.open(found.row as T);
58
+ if (outcome === "open") {
59
+ if (found.row) options.open(found.row);
60
+ return;
61
+ }
60
62
  if (outcome === "missingPanel") return options.showMissing(id);
61
63
  writeRecordId(urlScope);
62
64
  if (linkedId === id) linkedId = undefined;
@@ -1,5 +1,6 @@
1
1
  import { get } from "@nuxt/ui/runtime/utils/index.js";
2
2
  import { computed } from "vue";
3
+ import { stringifyQuery, withQuery } from "ufo";
3
4
  import { interpolateUrl } from "#dms-core/app/utils/url-interpolation";
4
5
  import { isString } from "#dms-core/app/utils/type-check";
5
6
  import type {
@@ -58,6 +59,48 @@ const DESCENDING = "desc";
58
59
  */
59
60
  export const LIVE_HELD_AT_QUERY_KEY = "liveHeldAt";
60
61
  const NO_ROUTE_VALUES: ReplaceUrlVariablesContext = { routeQuery: {} };
62
+ const MAX_BATCH_COUNT_QUERIES = 50;
63
+ const MAX_BATCH_COUNT_TARGET_BYTES = 8_192;
64
+
65
+ function encodeCountQuery({ id, query }: TableCountQuery): string {
66
+ const values = Object.fromEntries(
67
+ Object.entries(query)
68
+ .filter(([, value]) => value !== undefined)
69
+ .map(([key, value]) => [
70
+ key,
71
+ Array.isArray(value) ? value.map(String) : String(value),
72
+ ]),
73
+ );
74
+ return `${encodeURIComponent(id)}?${stringifyQuery(values)}`;
75
+ }
76
+
77
+ function countBatchTargetBytes(location: string, entries: string[]): number {
78
+ const url = new URL(location, "http://dms.invalid");
79
+ const target = withQuery(url.pathname + url.search, { query: entries });
80
+ return new TextEncoder().encode(target).byteLength;
81
+ }
82
+
83
+ function packCountQueries(
84
+ location: string,
85
+ queries: TableCountQuery[],
86
+ ): string[][] {
87
+ const batches: string[][] = [];
88
+ let batch: string[] = [];
89
+ for (const entry of queries.map(encodeCountQuery)) {
90
+ if (
91
+ batch.length > 0 &&
92
+ (batch.length >= MAX_BATCH_COUNT_QUERIES ||
93
+ countBatchTargetBytes(location, [...batch, entry]) >
94
+ MAX_BATCH_COUNT_TARGET_BYTES)
95
+ ) {
96
+ batches.push(batch);
97
+ batch = [];
98
+ }
99
+ batch.push(entry);
100
+ }
101
+ batches.push(batch);
102
+ return batches;
103
+ }
61
104
 
62
105
  type SourceCapabilities = TableViewSourceConfig["capabilities"];
63
106
 
@@ -347,11 +390,16 @@ export function useTableRows<T extends Record<string, unknown>>(
347
390
  signal?: AbortSignal,
348
391
  ): Promise<Record<string, number>> => {
349
392
  if (!source) {
350
- return api<Record<string, number>>(`${location}/count/batch`, {
351
- method: "POST",
352
- body: { queries },
353
- signal,
354
- });
393
+ const endpoint = `${location}/count/batch`;
394
+ const counts = await Promise.all(
395
+ packCountQueries(endpoint, queries).map((entries) =>
396
+ api<Record<string, number>>(endpoint, {
397
+ query: { query: entries },
398
+ signal,
399
+ }),
400
+ ),
401
+ );
402
+ return Object.assign({}, ...counts);
355
403
  }
356
404
  const totals = await Promise.all(
357
405
  queries.map(async ({ id, query }) => {
@@ -14,6 +14,7 @@ export const useTableRowActions = <T extends Data>(
14
14
  config: TableRowActionsConfig,
15
15
  ) => {
16
16
  const toast = useToast();
17
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
17
18
  const { t, locale } = useI18n();
18
19
  const { confirm } = useConfirm();
19
20
  const { confirmAction } = useActionConfirm();
@@ -42,6 +43,7 @@ export const useTableRowActions = <T extends Data>(
42
43
  error: Parameters<typeof describeTableWriteError>[0],
43
44
  title?: string,
44
45
  ) => {
46
+ if (consumeReadOnlyRefusal(error)) return;
45
47
  toast.add({
46
48
  color: Color.error,
47
49
  icon: "i-ph-warning-circle",
@@ -43,6 +43,7 @@ import {
43
43
  NESTED_CHART_INJECT_KEY,
44
44
  } from "../../composables/chart/types";
45
45
  import type { DefaultComponentProps } from "../../../../dms-core/app/types/component";
46
+ import { responseSeries } from "../../build/composables/chart/groupPoints";
46
47
 
47
48
  interface Props extends DefaultComponentProps {
48
49
  type: ChartType;
@@ -164,7 +165,9 @@ const seriesFromCtx = computed<ChartSeries[]>(() => {
164
165
 
165
166
  const fetchSeries = computed<ChartSeries[]>(() => {
166
167
  if (!data.value) return [];
167
- return localized(data.value.series ?? []);
168
+ return localized(
169
+ responseSeries(data.value.series ?? [], props.title ?? "", props.xaxisType),
170
+ );
168
171
  });
169
172
 
170
173
  const finalSeries = computed<ChartSeries[]>(() => {
@@ -113,6 +113,7 @@ const props = withDefaults(defineProps<ConfirmModalProps>(), {
113
113
  const emit = defineEmits<ConfirmModalEmits>();
114
114
  const slots = defineSlots<ConfirmModalSlots>();
115
115
  const { t } = useI18n();
116
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
116
117
 
117
118
  const BodyRender: FunctionalComponent = () => props.body?.();
118
119
 
@@ -292,6 +293,7 @@ async function runConfirm(
292
293
  close(true);
293
294
  }
294
295
  } catch (error) {
296
+ if (consumeReadOnlyRefusal(error)) return;
295
297
  if (error instanceof ConfirmTextError && props.confirmText) {
296
298
  typedError.value = error.message;
297
299
  } else if (!showFieldErrors(error)) {
@@ -341,6 +343,7 @@ async function handleSecondary() {
341
343
  try {
342
344
  await action.run();
343
345
  } catch (error) {
346
+ if (consumeReadOnlyRefusal(error)) return;
344
347
  notice.value = { ...errorNotice(error), tone: "error" };
345
348
  } finally {
346
349
  isSecondaryPending.value = false;
@@ -164,8 +164,7 @@ function trackRangePick(value: Parameters<typeof forwardEmit>[1]): void {
164
164
  report(undefined);
165
165
  return;
166
166
  }
167
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The forwarded event has no validated range owner; keep optional property reads on arbitrary non-null values rather than adding validation.
168
- const ends = value as Partial<StrictDateRange>;
167
+ const ends: { start?: unknown; end?: unknown } = value;
169
168
  if (!ends.start) return;
170
169
  isHalfPicked = !ends.end;
171
170
  if (!isHalfPicked) report(undefined);
@@ -180,8 +179,7 @@ const isPickerOpen = ref(false);
180
179
  function isPickComplete(value: Parameters<typeof forwardEmit>[1]): boolean {
181
180
  if (!value || props.multiple) return false;
182
181
  if (!props.range) return true;
183
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The forwarded event has no validated range owner; keep its existing optional-property truthiness checks on arbitrary values.
184
- const ends = value as Partial<StrictDateRange>;
182
+ const ends: { start?: unknown; end?: unknown } = value;
185
183
  return !!ends.start && !!ends.end;
186
184
  }
187
185
 
@@ -89,6 +89,7 @@ const { getDataType } = useDataTypes();
89
89
  const { t } = useI18n();
90
90
  const { processText } = useComposedText();
91
91
  const toast = useToast();
92
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
92
93
 
93
94
  const rowIdKey = computed(() => props.rowIdKey ?? DEFAULT_ROW_ID_KEY);
94
95
  const pageSize = computed(
@@ -298,6 +299,7 @@ const awaitNewerMoves = async (itemId: string, current: Promise<void>) => {
298
299
  const notifyMoveError = (
299
300
  error: Parameters<typeof describeTableWriteError>[0],
300
301
  ) => {
302
+ if (consumeReadOnlyRefusal(error)) return;
301
303
  toast.add({
302
304
  color: Color.error,
303
305
  title: t("dms.table.kanban.move_error"),
@@ -122,8 +122,18 @@ export interface TopListCardResponse {
122
122
  items: TopListItem[];
123
123
  }
124
124
 
125
+ /** One measured group, as a data source of shape `series` answers it. */
126
+ export interface ChartGroupPoint {
127
+ x: string | number;
128
+ y: number | null;
129
+ }
130
+
131
+ /**
132
+ * What a bare chart's data source answers: one point per group, the shape the
133
+ * block registry declares as `series`, or named series.
134
+ */
125
135
  export interface ChartResponse {
126
- series: ChartSeries[];
136
+ series: ChartSeries[] | ChartGroupPoint[];
127
137
  }
128
138
 
129
139
  export type ValueFormat = "number" | "currency" | "percent" | "compact";
@@ -93,6 +93,7 @@ function createFormNotices(
93
93
  context: ReturnType<typeof createFormFields>,
94
94
  options: UseFormOptions,
95
95
  ) {
96
+ const consumeReadOnlyRefusal = useReadOnlyRefusal();
96
97
  const {
97
98
  props,
98
99
  toast,
@@ -176,6 +177,7 @@ function createFormNotices(
176
177
  };
177
178
 
178
179
  const showSubmitErrorToast = (error: EventError) => {
180
+ if (consumeReadOnlyRefusal(error)) return;
179
181
  toast.add({
180
182
  title: processI18n("$dms.form.error_title"),
181
183
  description: resolveSubmitErrorDescription(error),
@@ -186,6 +188,7 @@ function createFormNotices(
186
188
  return {
187
189
  ...context,
188
190
  options,
191
+ consumeReadOnlyRefusal,
189
192
  showSubmitSuccessToast,
190
193
  showSubmitNotice,
191
194
  showServerFieldErrors,
@@ -349,6 +352,7 @@ function createFormSubmission(context: ReturnType<typeof createSavedForm>) {
349
352
  const reportSubmitError = (
350
353
  error: Parameters<typeof resolveFormFieldErrors>[0],
351
354
  ): void => {
355
+ if (context.consumeReadOnlyRefusal(error)) return;
352
356
  if (!showServerFieldErrors(error)) {
353
357
  // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Rejection values are passed unchanged to the existing error formatter; there is no Error-instance validation at this boundary.
354
358
  showSubmitErrorToast(error as EventError);
@@ -11,7 +11,7 @@
11
11
  "license": "Apache-2.0",
12
12
  "packageManager": "pnpm@10.6.5",
13
13
  "engines": {
14
- "@antelopejs/dms-frontend": ">=0.9.1 <0.10.0"
14
+ "@antelopejs/dms-frontend": ">=0.9.2 <0.10.0"
15
15
  },
16
16
  "scripts": {
17
17
  "typecheck": "ajs dms verify-source --layer \"$PWD\" --local-package @antelopejs/dms=.. --local-package @antelopejs/interface-dms=../../interface-dms",
@@ -79,7 +79,7 @@
79
79
  },
80
80
  "devDependencies": {
81
81
  "@antelopejs/core": ">=1.16.0 <2",
82
- "@antelopejs/dms-frontend": ">=0.9.1 <0.10.0",
82
+ "@antelopejs/dms-frontend": ">=0.9.2 <0.10.0",
83
83
  "@eslint/js": "^8.57.0",
84
84
  "@inertiajs/vue3": "^3.7.0",
85
85
  "@nuxt/ui": "4.10.0",
package/package.json CHANGED
@@ -1,15 +1,25 @@
1
1
  {
2
2
  "name": "@antelopejs/dms",
3
- "version": "0.12.0",
4
- "description": "The AntelopeJS dashboard management system: admin dashboards declared in TypeScript, with auth and tenancy, data management, file uploads, notifications and realtime.",
3
+ "version": "0.12.1",
4
+ "description": "AntelopeJS DMS. Plug in your PostgreSQL, MongoDB or RethinkDB database and your coding agent builds a back office and analytics dashboard as typed TypeScript. Real-time updates on the data the DMS manages.",
5
5
  "keywords": [
6
6
  "antelopejs",
7
7
  "dms",
8
8
  "dashboard",
9
9
  "admin",
10
+ "admin-panel",
11
+ "admin-dashboard",
10
12
  "backoffice",
11
- "inertia",
12
- "vue"
13
+ "back-office",
14
+ "internal-tools",
15
+ "typescript",
16
+ "open-source",
17
+ "self-hosted",
18
+ "postgresql",
19
+ "mongodb",
20
+ "rethinkdb",
21
+ "vue",
22
+ "inertia"
13
23
  ],
14
24
  "homepage": "https://dms.antelopejs.com/docs",
15
25
  "bugs": {
@@ -65,7 +75,7 @@
65
75
  "@antelopejs/interface-data-api": ">=0.5.0 <1.0.0",
66
76
  "@antelopejs/interface-database": ">=0.1.11 <1.0.0",
67
77
  "@antelopejs/interface-database-decorators": ">=0.1.10 <1.0.0",
68
- "@antelopejs/interface-dms": ">=0.10.0 <0.11.0",
78
+ "@antelopejs/interface-dms": ">=0.10.1 <0.11.0",
69
79
  "@antelopejs/interface-email": ">=0.0.6 <1.0.0",
70
80
  "@antelopejs/interface-file-storage": ">=0.1.4 <1.0.0",
71
81
  "archiver": "^7.0.1",