@antelopejs/interface-dms 0.10.2 → 0.10.4

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 (32) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/dist/auth/db/tables/users.table.d.ts +2 -0
  3. package/dist/base/data-types/default/choices.d.ts +4 -2
  4. package/dist/base/data-types/default/choices.js +11 -0
  5. package/dist/base/data-types/default/choices.js.map +1 -1
  6. package/dist/base/data-types/default/options.d.ts +8 -0
  7. package/dist/base/data-types/default-types.d.ts +1 -0
  8. package/dist/base/data-types/default-types.js.map +1 -1
  9. package/dist/base/form-schema.d.ts +5 -0
  10. package/dist/base/form-schema.js.map +1 -1
  11. package/dist/base/internal/series-bucket.d.ts +10 -0
  12. package/dist/base/internal/series-bucket.js +83 -0
  13. package/dist/base/internal/series-bucket.js.map +1 -0
  14. package/dist/base/query-response.d.ts +13 -0
  15. package/dist/base/query-response.js +20 -8
  16. package/dist/base/query-response.js.map +1 -1
  17. package/dist/base/table-view/internal/factory-lifecycle-filter.d.ts +2 -0
  18. package/dist/base/table-view/internal/factory-lifecycle-filter.js +3 -2
  19. package/dist/base/table-view/internal/factory-lifecycle-filter.js.map +1 -1
  20. package/dist/base/table-view/internal/factory-lifecycle-options.d.ts +1 -0
  21. package/dist/base/table-view/internal/factory-lifecycle-options.js +4 -0
  22. package/dist/base/table-view/internal/factory-lifecycle-options.js.map +1 -1
  23. package/dist/db/tables/tenants.table.d.ts +9 -0
  24. package/dist/db/tables/tenants.table.js +4 -0
  25. package/dist/db/tables/tenants.table.js.map +1 -1
  26. package/dist/hooks.d.ts +9 -7
  27. package/dist/hooks.js +9 -7
  28. package/dist/hooks.js.map +1 -1
  29. package/docs/1.core/7.hooks.md +1 -1
  30. package/docs/2.auth/4.users.md +4 -2
  31. package/docs/3.base/8.data-types.md +1 -0
  32. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,66 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.10.4
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.10.3...v0.10.4)
6
+
7
+ ### 🔥 Performance
8
+
9
+ - **page:** Send anonymous visitors only the public pages of the site layout ([#675](https://github.com/AntelopeJS/dms/pull/675))
10
+
11
+ ### 🩹 Fixes
12
+
13
+ - **auth:** Upgrade an outdated password hash on sign-in ([#691](https://github.com/AntelopeJS/dms/pull/691))
14
+ - **dashboard:** Name the brand logo for screen readers ([#652](https://github.com/AntelopeJS/dms/pull/652))
15
+ - **onboarding:** Require a setup token to register the first owner ([#654](https://github.com/AntelopeJS/dms/pull/654))
16
+ - **tenants:** Elect one replica to provision the default tenant through a renewed lease ([#657](https://github.com/AntelopeJS/dms/pull/657))
17
+ - **layout:** Count the sidebar's installed modules like the Modules page ([#666](https://github.com/AntelopeJS/dms/pull/666))
18
+
19
+ ### 📖 Documentation
20
+
21
+ - **github:** Send questions and ideas to Discord ([#672](https://github.com/AntelopeJS/dms/pull/672))
22
+
23
+ ### 🏡 Chore
24
+
25
+ - **release:** @antelopejs/dms v0.15.0 ([c630e0e2](https://github.com/AntelopeJS/dms/commit/c630e0e2))
26
+
27
+ ### ❤️ Contributors
28
+
29
+ - Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
30
+
31
+ ## v0.10.3
32
+
33
+ [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.10.2...v0.10.3)
34
+
35
+ ### 🚀 Enhancements
36
+
37
+ - **dms-ui:** State the data state of each data block on its root element ([#585](https://github.com/AntelopeJS/dms/pull/585))
38
+
39
+ ### 🩹 Fixes
40
+
41
+ - **frontend:** Run the API error CLIs when pnpm links the package ([#634](https://github.com/AntelopeJS/dms/pull/634))
42
+ - **table-view:** Currency on prices, settled counters, no add without a new route ([#611](https://github.com/AntelopeJS/dms/pull/611))
43
+ - **interface-dms:** Name a bucketed series' periods for a person, 202608 as Aug 2026 ([#617](https://github.com/AntelopeJS/dms/pull/617))
44
+ - **chart:** Thin the category x-axis labels of a long series so they never overlap ([#626](https://github.com/AntelopeJS/dms/pull/626))
45
+
46
+ ### 💅 Refactors
47
+
48
+ - **frontend:** ⚠️ Remove API error migration helpers ([#638](https://github.com/AntelopeJS/dms/pull/638))
49
+
50
+ ### 🏡 Chore
51
+
52
+ - **release:** @antelopejs/dms v0.13.0 ([5f222413](https://github.com/AntelopeJS/dms/commit/5f222413))
53
+ - **release:** @antelopejs/dms v0.13.1 ([5bf5a885](https://github.com/AntelopeJS/dms/commit/5bf5a885))
54
+ - **release:** @antelopejs/dms v0.14.0 ([59a52f99](https://github.com/AntelopeJS/dms/commit/59a52f99))
55
+
56
+ #### ⚠️ Breaking Changes
57
+
58
+ - **frontend:** ⚠️ Remove API error migration helpers ([#638](https://github.com/AntelopeJS/dms/pull/638))
59
+
60
+ ### ❤️ Contributors
61
+
62
+ - Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
63
+
3
64
  ## v0.10.2
4
65
 
5
66
  [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.10.1...v0.10.2)
@@ -9,6 +9,8 @@ export type UserTimeFormat = "h23" | "h12";
9
9
  export type UserDateFormat = "numeric" | "text";
10
10
  declare const User_base: import("@antelopejs/interface-database-decorators").TableClass<Table & {
11
11
  testHash<This extends {}, F extends keyof This>(this: This, field: F, value: This[F]): unknown;
12
+ testHashAsync<This extends {}, F extends keyof This>(this: This, field: F, value: This[F]): Promise<boolean>;
13
+ isHashOutdated<This extends {}>(this: This, field: keyof This): boolean;
12
14
  }, [], object>;
13
15
  export declare class User extends User_base {
14
16
  _id: string;
@@ -2,7 +2,7 @@
2
2
  import { z } from "zod";
3
3
  import { FormComponents } from "../../form-schema";
4
4
  import { DataType } from "../core";
5
- import { BooleanTypeOptions, SelectTypeOptions, NumberTypeOptions } from "./options";
5
+ import { BooleanTypeOptions, SelectTypeOptions, NumberTypeOptions, PriceTypeOptions } from "./options";
6
6
  import { NumberType } from "./numbers";
7
7
  export declare class BooleanType extends DataType {
8
8
  readonly options: BooleanTypeOptions;
@@ -46,7 +46,9 @@ export declare class SelectType extends DataType {
46
46
  getValidation(): z.ZodEnum<[string, ...string[]]> | z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">;
47
47
  }
48
48
  export declare class PriceType extends NumberType {
49
- constructor(options?: NumberTypeOptions);
49
+ readonly options: PriceTypeOptions;
50
+ constructor(options?: PriceTypeOptions);
51
+ protected defaultInputComponent(): import("../../..").ComponentInfoSerialized<FormComponents.InputNumberOptions>;
50
52
  }
51
53
  export declare class PercentageType extends NumberType {
52
54
  constructor(options?: NumberTypeOptions);
@@ -102,6 +102,17 @@ let PriceType = class PriceType extends numbers_1.NumberType {
102
102
  ...options,
103
103
  });
104
104
  }
105
+ defaultInputComponent() {
106
+ return form_schema_1.FormComponents.InputNumber({
107
+ min: this.options.min,
108
+ max: this.options.max,
109
+ step: this.options.step,
110
+ placeholder: this.options.placeholder,
111
+ suffix: this.options.suffix,
112
+ width: this.options.width,
113
+ ...(this.options.currency && { currency: this.options.currency }),
114
+ });
115
+ }
105
116
  };
106
117
  exports.PriceType = PriceType;
107
118
  exports.PriceType = PriceType = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"choices.js","sourceRoot":"","sources":["../../../../src/base/data-types/default/choices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"choices.js","sourceRoot":"","sources":["../../../../src/base/data-types/default/choices.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,14 @@ export type NumberTypeOptions = {
20
20
  width?: FormComponents.InputWidth;
21
21
  fallback?: string;
22
22
  };
23
+ export type PriceTypeOptions = NumberTypeOptions & {
24
+ /**
25
+ * ISO 4217 code of the amount ("USD", "GBP"): the currency table cells,
26
+ * cards, footer sums and read-only fields write it in. Left out, amounts
27
+ * are written in euros.
28
+ */
29
+ currency?: string;
30
+ };
23
31
  export type StringTypeOptions = {
24
32
  placeholder?: string;
25
33
  maxLength?: number;
@@ -26,6 +26,7 @@ export declare const BOOLEAN_DISPLAYS: readonly ["switch", "checkbox", "card"];
26
26
  export type { SelectDisplay, BooleanDisplay } from "./default/inputs";
27
27
  export declare namespace DefaultDataTypes {
28
28
  export import NumberTypeOptions = defaultOptions.NumberTypeOptions;
29
+ export import PriceTypeOptions = defaultOptions.PriceTypeOptions;
29
30
  export import StringTypeOptions = defaultOptions.StringTypeOptions;
30
31
  export import DateTypeOptions = defaultOptions.DateTypeOptions;
31
32
  export import BooleanTypeOptions = defaultOptions.BooleanTypeOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"default-types.js","sourceRoot":"","sources":["../../../src/base/data-types/default-types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAoC;AACpC,mDAAiD;AACjD,8CAA4C;AAC5C,eAAa;AACb,6CAA2C;AAC3C,2CAAyC;AACzC,6BAA2B;AAC3B,0BAAwB;AACxB,4HAA4H;AAC5H,8BAA4B;AAC5B,oBAAkB;AAClB,kBAAgB;AAChB,0DAA4C;AAC5C,oCAAkC;AAClC,2BAAyB;AAEzB,kEAAoD;AACpD,kEAAoD;AACpD,kEAAoD;AACpD,sEAAwD;AACxD,kEAAoD;AACpD,8DAAgD;AAChD,4CAA4C;AAC/B,QAAA,eAAe,GAAG;IAC7B,UAAU;IACV,OAAO;IACP,WAAW;IACX,OAAO;CACC,CAAC;AAEX,2CAA2C;AAC9B,QAAA,gBAAgB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAU,CAAC;AAIxE,IAAiB,gBAAgB,CAoEhC;AApED,WAAiB,gBAAgB;IAajB,2BAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IACvC,2BAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IACvC,yBAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IACnC,4BAAW,GAAG,cAAc,CAAC,WAAW,CAAC;IACzC,2BAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IACvC,0BAAS,GAAG,cAAc,CAAC,SAAS,CAAC;IACrC,+BAAc,GAAG,cAAc,CAAC,cAAc,CAAC;IAC/C,0BAAS,GAAG,cAAc,CAAC,SAAS,CAAC;IACrC,0BAAS,GAAG,cAAc,CAAC,SAAS,CAAC;IACrC,6BAAY,GAAG,cAAc,CAAC,YAAY,CAAC;IAC3C,wBAAO,GAAG,cAAc,CAAC,OAAO,CAAC;IACjC,0BAAS,GAAG,cAAc,CAAC,SAAS,CAAC;IAErC,6BAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;IAC7C,qCAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;IAG7D,4BAAW,GAAG,cAAc,CAAC,WAAW,CAAC;IACzC,6BAAY,GAAG,YAAY,CAAC,YAAY,CAAC;IACzC,+BAAc,GAAG,YAAY,CAAC,cAAc,CAAC;IAE7C,yBAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;IAGjC,0BAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IAEpC,0BAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IAMjC,6BAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAMvC,2BAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAMnC,yBAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IAM/B,yBAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AAK9C,CAAC,EApEgB,gBAAgB,gCAAhB,gBAAgB,QAoEhC"}
1
+ {"version":3,"file":"default-types.js","sourceRoot":"","sources":["../../../src/base/data-types/default-types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sCAAoC;AACpC,mDAAiD;AACjD,8CAA4C;AAC5C,eAAa;AACb,6CAA2C;AAC3C,2CAAyC;AACzC,6BAA2B;AAC3B,0BAAwB;AACxB,4HAA4H;AAC5H,8BAA4B;AAC5B,oBAAkB;AAClB,kBAAgB;AAChB,0DAA4C;AAC5C,oCAAkC;AAClC,2BAAyB;AAEzB,kEAAoD;AACpD,kEAAoD;AACpD,kEAAoD;AACpD,sEAAwD;AACxD,kEAAoD;AACpD,8DAAgD;AAChD,4CAA4C;AAC/B,QAAA,eAAe,GAAG;IAC7B,UAAU;IACV,OAAO;IACP,WAAW;IACX,OAAO;CACC,CAAC;AAEX,2CAA2C;AAC9B,QAAA,gBAAgB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAU,CAAC;AAIxE,IAAiB,gBAAgB,CAqEhC;AArED,WAAiB,gBAAgB;IAcjB,2BAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IACvC,2BAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IACvC,yBAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;IACnC,4BAAW,GAAG,cAAc,CAAC,WAAW,CAAC;IACzC,2BAAU,GAAG,cAAc,CAAC,UAAU,CAAC;IACvC,0BAAS,GAAG,cAAc,CAAC,SAAS,CAAC;IACrC,+BAAc,GAAG,cAAc,CAAC,cAAc,CAAC;IAC/C,0BAAS,GAAG,cAAc,CAAC,SAAS,CAAC;IACrC,0BAAS,GAAG,cAAc,CAAC,SAAS,CAAC;IACrC,6BAAY,GAAG,cAAc,CAAC,YAAY,CAAC;IAC3C,wBAAO,GAAG,cAAc,CAAC,OAAO,CAAC;IACjC,0BAAS,GAAG,cAAc,CAAC,SAAS,CAAC;IAErC,6BAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;IAC7C,qCAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;IAG7D,4BAAW,GAAG,cAAc,CAAC,WAAW,CAAC;IACzC,6BAAY,GAAG,YAAY,CAAC,YAAY,CAAC;IACzC,+BAAc,GAAG,YAAY,CAAC,cAAc,CAAC;IAE7C,yBAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;IAGjC,0BAAS,GAAG,YAAY,CAAC,SAAS,CAAC;IAEpC,0BAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IAMjC,6BAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAMvC,2BAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAMnC,yBAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;IAM/B,yBAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AAK9C,CAAC,EArEgB,gBAAgB,gCAAhB,gBAAgB,QAqEhC"}
@@ -164,6 +164,11 @@ export declare namespace FormComponents {
164
164
  placeholder?: string;
165
165
  /** Unit written after the field ("days"): an i18n key with `$`, or a literal. */
166
166
  suffix?: string;
167
+ /**
168
+ * ISO 4217 code ("USD") of the amount a price field holds; read where
169
+ * the value is written, never by the input. Unset, amounts are in EUR.
170
+ */
171
+ currency?: string;
167
172
  /**
168
173
  * `InputNumber` only. By default (`true`) a value typed outside `min` /
169
174
  * `max` is clamped into range when the field loses focus. `false` keeps
@@ -1 +1 @@
1
- {"version":3,"file":"form-schema.js","sourceRoot":"","sources":["../../src/base/form-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-schema.js","sourceRoot":"","sources":["../../src/base/form-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { SeriesBucket } from "../query-response";
2
+ /**
3
+ * A period stamp as a person reads it: 202608 as "Aug 2026" for a month, 20263 as
4
+ * "Q3 2026", 20260801 as "Aug 1, 2026", and a week, stamped by its Monday as the days
5
+ * since 1970-01-01, as "Week of Aug 3". A key that is not a stamp of its bucket
6
+ * (a text, a fraction, a month 13) is returned as it came, never guessed at.
7
+ *
8
+ * @internal
9
+ */
10
+ export declare function bucketLabel(key: number | string, bucket: SeriesBucket): number | string;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bucketLabel = bucketLabel;
4
+ const MONTH_NAMES = [
5
+ "Jan",
6
+ "Feb",
7
+ "Mar",
8
+ "Apr",
9
+ "May",
10
+ "Jun",
11
+ "Jul",
12
+ "Aug",
13
+ "Sep",
14
+ "Oct",
15
+ "Nov",
16
+ "Dec",
17
+ ];
18
+ const YEAR_STEP = 100;
19
+ const MONTHS_PER_YEAR = 12;
20
+ const QUARTERS_PER_YEAR = 4;
21
+ const QUARTER_STEP = 10;
22
+ const FIRST_DAY = 1;
23
+ const LAST_DAY = 31;
24
+ function splitStamp(stamp, step) {
25
+ return { year: Math.floor(stamp / step), part: stamp % step };
26
+ }
27
+ function dayLabel(stamp) {
28
+ const { year: monthStamp, part: day } = splitStamp(stamp, YEAR_STEP);
29
+ const { year, part: month } = splitStamp(monthStamp, YEAR_STEP);
30
+ const valid = month >= 1 &&
31
+ month <= MONTHS_PER_YEAR &&
32
+ day >= FIRST_DAY &&
33
+ day <= LAST_DAY;
34
+ return valid ? `${MONTH_NAMES[month - 1]} ${day}, ${year}` : undefined;
35
+ }
36
+ const MS_PER_DAY = 86_400_000;
37
+ const DAYS_PER_WEEK = 7;
38
+ /** 1970-01-01 was a Thursday, so a Monday's day count is 4 more than a multiple of 7. */
39
+ const MONDAY_REMAINDER = 4;
40
+ /** A week is stamped by its Monday as the days since 1970-01-01. */
41
+ function weekLabel(stamp) {
42
+ const isMonday = ((stamp % DAYS_PER_WEEK) + DAYS_PER_WEEK) % DAYS_PER_WEEK ===
43
+ MONDAY_REMAINDER;
44
+ const monday = new Date(stamp * MS_PER_DAY);
45
+ return isMonday && !Number.isNaN(monday.getTime())
46
+ ? `Week of ${MONTH_NAMES[monday.getUTCMonth()]} ${monday.getUTCDate()}`
47
+ : undefined;
48
+ }
49
+ function monthLabel(stamp) {
50
+ const { year, part: month } = splitStamp(stamp, YEAR_STEP);
51
+ return month >= 1 && month <= MONTHS_PER_YEAR
52
+ ? `${MONTH_NAMES[month - 1]} ${year}`
53
+ : undefined;
54
+ }
55
+ function quarterLabel(stamp) {
56
+ const { year, part: quarter } = splitStamp(stamp, QUARTER_STEP);
57
+ return quarter >= 1 && quarter <= QUARTERS_PER_YEAR
58
+ ? `Q${quarter} ${year}`
59
+ : undefined;
60
+ }
61
+ const LABELS = {
62
+ day: dayLabel,
63
+ week: weekLabel,
64
+ month: monthLabel,
65
+ quarter: quarterLabel,
66
+ year: (stamp) => String(stamp),
67
+ };
68
+ /**
69
+ * A period stamp as a person reads it: 202608 as "Aug 2026" for a month, 20263 as
70
+ * "Q3 2026", 20260801 as "Aug 1, 2026", and a week, stamped by its Monday as the days
71
+ * since 1970-01-01, as "Week of Aug 3". A key that is not a stamp of its bucket
72
+ * (a text, a fraction, a month 13) is returned as it came, never guessed at.
73
+ *
74
+ * @internal
75
+ */
76
+ function bucketLabel(key, bucket) {
77
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- A group key is a number or a text; only a whole number can be a period stamp.
78
+ if (typeof key !== "number" || !Number.isInteger(key)) {
79
+ return key;
80
+ }
81
+ return LABELS[bucket](key) ?? key;
82
+ }
83
+ //# sourceMappingURL=series-bucket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"series-bucket.js","sourceRoot":"","sources":["../../../src/base/internal/series-bucket.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,13 @@ export interface SeriesPoint {
21
21
  /** Null for a group the calculation found nothing to measure in. */
22
22
  y: number | null;
23
23
  }
24
+ /**
25
+ * The period a query grouped a date field into. Its groups are keyed by a period
26
+ * stamp: the year (2026), the quarter (20263), the month (202608), the day
27
+ * (20260801) or the week, stamped by its Monday as the days since 1970-01-01
28
+ * (20668 for the week of Aug 3, 2026).
29
+ */
30
+ export type SeriesBucket = "day" | "week" | "month" | "quarter" | "year";
24
31
  /** How the headline figure is taken from the points. */
25
32
  export type SeriesMeasure = "count" | "sum" | "avg" | "min" | "max";
26
33
  export interface SeriesOptions {
@@ -31,6 +38,12 @@ export interface SeriesOptions {
31
38
  * because all that is left to name a series by is the measure's own word.
32
39
  */
33
40
  label?: string;
41
+ /**
42
+ * The period the points are bucketed into, when the query grouped a date field.
43
+ * A chart's axis, a tooltip and a ranked entry then read "Aug 2026" where the
44
+ * key is the stamp 202608. Without it a key is passed on as it came.
45
+ */
46
+ bucket?: SeriesBucket;
34
47
  /** The same calculation over the preceding period, when one was asked for. */
35
48
  previous?: SeriesPoint[];
36
49
  }
@@ -4,6 +4,7 @@ exports.chartCardData = chartCardData;
4
4
  exports.kpiCardData = kpiCardData;
5
5
  exports.topListData = topListData;
6
6
  const query_response_1 = require("./internal/query-response");
7
+ const series_bucket_1 = require("./internal/series-bucket");
7
8
  const MS_PER_DAY = 86_400_000;
8
9
  /**
9
10
  * The window a time bucket's key can fall in. Read as milliseconds, a group key
@@ -46,20 +47,25 @@ function addComparison(target, value, options) {
46
47
  * it takes each of them for a series with nothing in it and draws an empty
47
48
  * canvas, without an error anywhere to say why.
48
49
  */
49
- function chartSeries(points, name) {
50
- return [{ name, data: points }];
50
+ function chartSeries(points, name, bucket) {
51
+ const data = bucket
52
+ ? points.map((point) => ({ ...point, x: (0, series_bucket_1.bucketLabel)(point.x, bucket) }))
53
+ : points;
54
+ return [{ name, data }];
51
55
  }
52
56
  /** Points as a chart card reads them: a figure, its series, and its variation. */
53
57
  function chartCardData(points, options) {
54
58
  const name = options.label ?? options.measure;
55
- const data = { series: chartSeries(points, name) };
59
+ const data = {
60
+ series: chartSeries(points, name, options.bucket),
61
+ };
56
62
  const value = (0, query_response_1.headline)(points, options.measure);
57
63
  if (value !== undefined) {
58
64
  data.value = value;
59
65
  }
60
66
  addComparison(data, value, options);
61
67
  if (options.previous && options.previous.length > 0) {
62
- data.comparisonSeries = chartSeries(options.previous, name);
68
+ data.comparisonSeries = chartSeries(options.previous, name, options.bucket);
63
69
  }
64
70
  return data;
65
71
  }
@@ -90,7 +96,11 @@ function kpiCardData(points, options) {
90
96
  * and year bucket does — is named by its date alone, since the zeroes below it
91
97
  * carry no information.
92
98
  */
93
- function groupTitle(key) {
99
+ function groupTitle(key, bucket) {
100
+ const labelled = bucket ? (0, series_bucket_1.bucketLabel)(key, bucket) : key;
101
+ if (labelled !== key) {
102
+ return String(labelled);
103
+ }
94
104
  if (
95
105
  // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Group keys are already a number-or-string domain; only numeric epoch buckets get date formatting.
96
106
  typeof key !== "number" ||
@@ -113,10 +123,10 @@ function measuredByGroup(points) {
113
123
  }
114
124
  return byGroup;
115
125
  }
116
- function topListEntry(point, value, before) {
126
+ function topListEntry(point, value, before, bucket) {
117
127
  const entry = {
118
128
  id: point.x,
119
- title: groupTitle(point.x),
129
+ title: groupTitle(point.x, bucket),
120
130
  value,
121
131
  };
122
132
  const previous = before.get(String(point.x));
@@ -135,7 +145,9 @@ function topListEntry(point, value, before) {
135
145
  function topListData(points, options) {
136
146
  const before = measuredByGroup(options.previous ?? []);
137
147
  return {
138
- items: points.flatMap((point) => point.y === null ? [] : [topListEntry(point, point.y, before)]),
148
+ items: points.flatMap((point) => point.y === null
149
+ ? []
150
+ : [topListEntry(point, point.y, before, options.bucket)]),
139
151
  };
140
152
  }
141
153
  //# sourceMappingURL=query-response.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-response.js","sourceRoot":"","sources":["../../src/base/query-response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-response.js","sourceRoot":"","sources":["../../src/base/query-response.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ interface FilterDeclarations<T extends Record<string, unknown>> {
9
9
  declaredTabs: TableViewOptions<T>["tabs"];
10
10
  declaredViews: TableViewOptions<T>["views"];
11
11
  meta: TableViewMeta;
12
+ /** Whether the controller mounts a `new` route: without it nobody can add. */
13
+ hasNewEndpoint: boolean;
12
14
  }
13
15
  /** @internal */
14
16
  export declare function filterTableViewOptions<T extends Record<string, unknown>>(declarations: FilterDeclarations<T>, request: FilterArguments): Promise<TableViewOptionsSerialized>;
@@ -6,9 +6,10 @@ const tabs_1 = require("./tabs");
6
6
  const views_1 = require("./views");
7
7
  /** @internal */
8
8
  async function filterTableViewOptions(declarations, request) {
9
- const { declaredCustomButtons, declaredCustomRowActions, declaredTabs, declaredViews, meta, } = declarations;
9
+ const { declaredCustomButtons, declaredCustomRowActions, declaredTabs, declaredViews, meta, hasNewEndpoint, } = declarations;
10
10
  const [permissions, options, permissionId, context] = request;
11
- const grants = await (0, request_filter_1.resolveTableViewGrants)(permissions, permissionId);
11
+ const held = await (0, request_filter_1.resolveTableViewGrants)(permissions, permissionId);
12
+ const grants = { ...held, add: held.add && hasNewEndpoint };
12
13
  const adaptedFormComponents = {
13
14
  new: grants.add ? options.formComponents.new : undefined,
14
15
  edit: grants.edit ? options.formComponents.edit : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"factory-lifecycle-filter.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/factory-lifecycle-filter.ts"],"names":[],"mappings":";;AA4BA,wDAgEC;AAxFD,qDAK0B;AAC1B,iCAA8C;AAC9C,mCAAgD;AAgBhD,gBAAgB;AACT,KAAK,UAAU,sBAAsB,CAC1C,YAAmC,EACnC,OAAwB;IAExB,MAAM,EACJ,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,IAAI,GACL,GAAG,YAAY,CAAC;IACjB,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAC9D,MAAM,MAAM,GAAG,MAAM,IAAA,uCAAsB,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAEvE,MAAM,qBAAqB,GAAG;QAC5B,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;QACxD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3D,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAA,gCAAe,EAAC;QACxC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM;QACN,MAAM,EAAE,MAAM,IAAA,wCAAuB,EACnC,WAAW,EACX,wBAAwB,EACxB,OAAO,CAAC,UAAU,EAAE,MAAM,EAC1B,YAAY,CACb;QACD,eAAe,EAAE,IAAI,CAAC,wBAAwB;KAC/C,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,MAAM,IAAA,qCAAoB,EACrD,WAAW,EACX,qBAAqB,EACrB,OAAO,CAAC,aAAa,EACrB,YAAY,EACZ,OAAO,CACR,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAoB,EAC5C,WAAW,EACX,YAAY,EACZ,OAAO,CAAC,IAAI,EACZ,YAAY,CACb,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,IAAA,6BAAqB,EAC9C,WAAW,EACX,aAAa,EACb,OAAO,CAAC,KAAK,EACb,YAAY,CACb,CAAC;IAEF,OAAO;QACL,GAAG,OAAO;QACV,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM;QAC7D,cAAc,EAAE,qBAAqB;QACrC,UAAU,EAAE,iBAAiB;QAC7B,aAAa,EAAE,oBAAoB;QACnC,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;KACpB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"factory-lifecycle-filter.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/factory-lifecycle-filter.ts"],"names":[],"mappings":";;AA8BA,wDAkEC;AA5FD,qDAK0B;AAC1B,iCAA8C;AAC9C,mCAAgD;AAkBhD,gBAAgB;AACT,KAAK,UAAU,sBAAsB,CAC1C,YAAmC,EACnC,OAAwB;IAExB,MAAM,EACJ,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,cAAc,GACf,GAAG,YAAY,CAAC;IACjB,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,IAAA,uCAAsB,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,cAAc,EAAE,CAAC;IAE5D,MAAM,qBAAqB,GAAG;QAC5B,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;QACxD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAC3D,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC;IAEF,MAAM,iBAAiB,GAAG,IAAA,gCAAe,EAAC;QACxC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM;QACN,MAAM,EAAE,MAAM,IAAA,wCAAuB,EACnC,WAAW,EACX,wBAAwB,EACxB,OAAO,CAAC,UAAU,EAAE,MAAM,EAC1B,YAAY,CACb;QACD,eAAe,EAAE,IAAI,CAAC,wBAAwB;KAC/C,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,MAAM,IAAA,qCAAoB,EACrD,WAAW,EACX,qBAAqB,EACrB,OAAO,CAAC,aAAa,EACrB,YAAY,EACZ,OAAO,CACR,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAoB,EAC5C,WAAW,EACX,YAAY,EACZ,OAAO,CAAC,IAAI,EACZ,YAAY,CACb,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,IAAA,6BAAqB,EAC9C,WAAW,EACX,aAAa,EACb,OAAO,CAAC,KAAK,EACb,YAAY,CACb,CAAC;IAEF,OAAO;QACL,GAAG,OAAO;QACV,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,MAAM,CAAC,MAAM;QAC7D,cAAc,EAAE,qBAAqB;QACrC,UAAU,EAAE,iBAAiB;QAC7B,aAAa,EAAE,oBAAoB;QACnC,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,YAAY;KACpB,CAAC;AACJ,CAAC"}
@@ -34,6 +34,7 @@ export declare function prepareTableViewSerialization<T extends ControllerClass>
34
34
  declaredTabs: import("./option-views").TableViewTab[] | undefined;
35
35
  declaredViews: import("./option-views").TableViewViewsOptions | undefined;
36
36
  meta: TableViewMeta;
37
+ hasNewEndpoint: boolean;
37
38
  };
38
39
  };
39
40
  /** @internal */
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.prepareTableViewSerialization = prepareTableViewSerialization;
4
4
  exports.serializeTableViewOptions = serializeTableViewOptions;
5
+ const interface_core_1 = require("@antelopejs/interface-core");
6
+ const metadata_1 = require("@antelopejs/interface-data-api/metadata");
5
7
  const searchable_1 = require("../../internal/searchable");
6
8
  const factory_helpers_1 = require("./factory-helpers");
7
9
  const tabs_1 = require("./tabs");
@@ -30,6 +32,8 @@ function prepareTableViewSerialization(options, state) {
30
32
  declaredTabs,
31
33
  declaredViews,
32
34
  meta: state.meta,
35
+ hasNewEndpoint: !!(0, interface_core_1.GetMetadata)(state.controller, metadata_1.DataAPIMeta).endpoints
36
+ .new,
33
37
  },
34
38
  };
35
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory-lifecycle-options.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/factory-lifecycle-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory-lifecycle-options.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/factory-lifecycle-options.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,15 @@ export declare class Tenant extends Table {
5
5
  name: string;
6
6
  /** True while default tenant provisioning must be retried. Absent means provisioned. */
7
7
  provisioningPending?: boolean;
8
+ /** The process holding the provisioning lease. Empty means the lease is free. */
9
+ provisioningHolder?: string | null;
10
+ /**
11
+ * Replaced by every claim, renewal and release of the provisioning lease, so
12
+ * a holder that stopped is one whose token stopped changing. Undeclared
13
+ * because a first claim expects it absent, which PostgreSQL cannot tell apart
14
+ * from null on a declared column.
15
+ */
16
+ provisioningRevision?: string;
8
17
  createdAt: Date;
9
18
  updatedAt: Date;
10
19
  }
@@ -28,6 +28,10 @@ __decorate([
28
28
  (0, interface_database_decorators_1.Field)("boolean"),
29
29
  __metadata("design:type", Boolean)
30
30
  ], Tenant.prototype, "provisioningPending", void 0);
31
+ __decorate([
32
+ (0, interface_database_decorators_1.Field)("string"),
33
+ __metadata("design:type", Object)
34
+ ], Tenant.prototype, "provisioningHolder", void 0);
31
35
  __decorate([
32
36
  (0, interface_database_decorators_1.CreationTime)(),
33
37
  (0, interface_database_decorators_1.Index)(),
@@ -1 +1 @@
1
- {"version":3,"file":"tenants.table.js","sourceRoot":"","sources":["../../../src/db/tables/tenants.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,+CAAmD;AAEtC,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAGnC,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,qCAAK;CAoBhC,CAAA;AApBY,wBAAM;AAET;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACI;AAGZ;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oCACK;AAIb;IADP,IAAA,qCAAK,EAAC,SAAS,CAAC;;mDACqB;AAK9B;IAHP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;yCAAC;AAKhB;IAHP,IAAA,0CAAU,GAAE;IACZ,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;yCAAC;iBAnBb,MAAM;IADlB,IAAA,6CAAa,EAAC,wBAAgB,EAAE,4BAAgB,CAAC;GACrC,MAAM,CAoBlB"}
1
+ {"version":3,"file":"tenants.table.js","sourceRoot":"","sources":["../../../src/db/tables/tenants.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAOmD;AACnD,+CAAmD;AAEtC,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAGnC,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,qCAAK;CAgChC,CAAA;AAhCY,wBAAM;AAET;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACI;AAGZ;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oCACK;AAIb;IADP,IAAA,qCAAK,EAAC,SAAS,CAAC;;mDACqB;AAI9B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDAC2B;AAanC;IAHP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;yCAAC;AAKhB;IAHP,IAAA,0CAAU,GAAE;IACZ,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;yCAAC;iBA/Bb,MAAM;IADlB,IAAA,6CAAa,EAAC,wBAAgB,EAAE,4BAAgB,CAAC;GACrC,MAAM,CAgClB"}
package/dist/hooks.d.ts CHANGED
@@ -30,13 +30,15 @@ export declare enum Hook {
30
30
  * cleaned up along with the workspace, and make it idempotent so a retried
31
31
  * signup does not double it.
32
32
  *
33
- * It fires once per tenant, when the tenant is created, through
34
- * `ProvisionTenant` (`@antelopejs/interface-dms/tenant-provisioning`): by
35
- * the DMS for the `default` tenant, on the start that creates it, once
36
- * `DATABASE_INITIALIZED` has settled; by the signup flow of a SaaS module
37
- * for each workspace it creates. It is where a module writes the default
38
- * data a tenant starts with: written once, that data then belongs to the
39
- * tenant, and nothing writes it again on a later start.
33
+ * It fires when a tenant is created, through `ProvisionTenant`
34
+ * (`@antelopejs/interface-dms/tenant-provisioning`): by the DMS for the
35
+ * `default` tenant, once every module has started, on the replica holding its
36
+ * provisioning lease; by the signup flow of a SaaS module for each workspace
37
+ * it creates. It is where a module writes the default data a tenant starts
38
+ * with: once it succeeded, that data belongs to the tenant and nothing writes
39
+ * it again on a later start. The `default` tenant's handlers run again after
40
+ * an attempt that failed or whose process died, so a handler skips what it
41
+ * already wrote.
40
42
  */
41
43
  TENANT_BEING_PROVISIONED = "tenant:being-provisioned",
42
44
  TENANT_DELETED = "tenant:deleted",
package/dist/hooks.js CHANGED
@@ -56,13 +56,15 @@ var Hook;
56
56
  * cleaned up along with the workspace, and make it idempotent so a retried
57
57
  * signup does not double it.
58
58
  *
59
- * It fires once per tenant, when the tenant is created, through
60
- * `ProvisionTenant` (`@antelopejs/interface-dms/tenant-provisioning`): by
61
- * the DMS for the `default` tenant, on the start that creates it, once
62
- * `DATABASE_INITIALIZED` has settled; by the signup flow of a SaaS module
63
- * for each workspace it creates. It is where a module writes the default
64
- * data a tenant starts with: written once, that data then belongs to the
65
- * tenant, and nothing writes it again on a later start.
59
+ * It fires when a tenant is created, through `ProvisionTenant`
60
+ * (`@antelopejs/interface-dms/tenant-provisioning`): by the DMS for the
61
+ * `default` tenant, once every module has started, on the replica holding its
62
+ * provisioning lease; by the signup flow of a SaaS module for each workspace
63
+ * it creates. It is where a module writes the default data a tenant starts
64
+ * with: once it succeeded, that data belongs to the tenant and nothing writes
65
+ * it again on a later start. The `default` tenant's handlers run again after
66
+ * an attempt that failed or whose process died, so a handler skips what it
67
+ * already wrote.
66
68
  */
67
69
  Hook["TENANT_BEING_PROVISIONED"] = "tenant:being-provisioned";
68
70
  Hook["TENANT_DELETED"] = "tenant:deleted";
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
@@ -263,7 +263,7 @@ The flip side is the usual one for a `*_BEING_*` hook: a handler that throws for
263
263
 
264
264
  `extras` is opaque by design. The DMS reads no key of it, validates nothing, and stores nothing — it carries the object from the caller of the provisioning flow to the handlers, and each handler writes what it recognises. The shape is a contract between that caller and that handler, one the DMS is deliberately not a party to, so a product can start collecting a new field without waiting on a DMS release.
265
265
 
266
- It fires once per tenant, when the tenant is created, and never again on a later start. The DMS fires it for the `default` tenant, on the start that creates it, once every `DATABASE_INITIALIZED` handler has finished, so a module's tables and settings are ready; that payload has no `userId`, since the `default` tenant has no owner until onboarding. A SaaS module such as **`dms-saas`** fires it for each workspace its signup flow creates.
266
+ It fires once per tenant, when the tenant is created, and never again on a later start once it has succeeded. The DMS fires it for the `default` tenant once every module has started, so a module's tables and settings are ready; that payload has no `userId`, since the `default` tenant has no owner until onboarding. Replicas sharing a new database elect a holder through a lease on the tenant's row, and the others serve meanwhile. A holder that stops renewing for `provisioningLease.staleAfterMs` is taken over, even if its handlers are still running. If that attempt fails, or its process dies, the next start or another replica runs every handler again, so a handler skips what it already wrote. A SaaS module such as **`dms-saas`** fires it for each workspace its signup flow creates.
267
267
 
268
268
  This is where a module writes the **default data** a tenant starts with — templates, folders, a sender, a demo history. Written once, that data belongs to the tenant: the module does not write it again on a later start, does not compare it with what members changed since, and does not wait for the tenant from `start()` or `DATABASE_INITIALIZED`.
269
269
 
@@ -79,7 +79,7 @@ export async function createUser(
79
79
  }
80
80
  ```
81
81
 
82
- To check a candidate password, call `testHash` on the loaded row. The mixin hashes the candidate with the stored salt and compares it against the stored hash.
82
+ To check a candidate password, call `testHashAsync` on the loaded row. The mixin hashes the candidate with the salt and the cost in the stored hash, on the thread pool, and compares the results.
83
83
 
84
84
  ```typescript
85
85
  import { HTTPResult } from "@antelopejs/interface-api";
@@ -93,13 +93,15 @@ export async function checkCredentials(
93
93
  password: string,
94
94
  ) {
95
95
  const user = await userModel.getByEmail(email.toLowerCase());
96
- if (!user || !user.testHash("password", password)) {
96
+ if (!user || !(await user.testHashAsync("password", password))) {
97
97
  throw new HTTPResult(UNAUTHORIZED, "error.invalid_credentials");
98
98
  }
99
99
  return user;
100
100
  }
101
101
  ```
102
102
 
103
+ A successful sign-in through `/auth/login` also writes the password again when `isHashOutdated("password")` reports an older hash on the row.
104
+
103
105
  Emails are stored trimmed and lowercased. `getByEmail` normalizes its argument itself; normalize with `normalizeEmail` (exported alongside `UserModel`) before writing one.
104
106
 
105
107
  ## Query Users with UserModel
@@ -284,6 +284,7 @@ Notes on the ones whose behaviour is not obvious from the options:
284
284
  - `StringType` renders a textarea instead of a single-line input when `textarea` is set, and passes `rows` to it.
285
285
  - `StringType` with `showCount` shows the characters typed, out of `maxLength` when set ("4 / 60"), in its input or under its textarea.
286
286
  - `NumberType` hands `suffix` (an i18n key with `$`, or a literal) to its input, which writes it after the field; the value stays a number. `PriceType` inherits it; `PercentageType` keeps its own `%`.
287
+ - `PriceType` writes amounts in euros. `new PriceType({ currency: "USD" })` (an ISO 4217 code) writes them in that currency in cells, cards, footer sums and read-only fields; a code that is not three letters falls back to euros.
287
288
  - `NumberType` (and the types extending it) and a single-line `StringType` hand `width` (`FormComponents.InputWidth`) to their input: `"compact"` sizes it for a short value from `sm` up, `"full"` fills the row, and left out the input is compact when `min` / `max` fit in 6 digits or `maxLength` is 16 or less.
288
289
  - `DateType` overrides `filter` so `is`, `is_not` and `is_between` compare whole UTC days rather than instants, and adds a range picker as the filter component for `is_between`. Its schema accepts a `Date` or an ISO-shaped string and transforms it to a `Date`; with `multiple` the value becomes an array, and with `range` it becomes `{ start, end }`, `end` on or after `start` (a pair `[start, end]` is still read and validates to the same object).
289
290
  - `BooleanType` uses a two-option select as its filter component, so a viewer picks "checked"/"unchecked" rather than typing a value.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antelopejs/interface-dms",
3
- "version": "0.10.2",
3
+ "version": "0.10.4",
4
4
  "description": "Public AntelopeJS interfaces of the DMS: pages, components, permissions, tenancy, auth, notifications and HTML rendering.",
5
5
  "keywords": [
6
6
  "antelopejs",
@@ -52,7 +52,7 @@
52
52
  "@antelopejs/interface-core": ">=0.2.4 <1.0.0",
53
53
  "@antelopejs/interface-data-api": ">=0.5.0 <1.0.0",
54
54
  "@antelopejs/interface-database": ">=0.1.11 <1.0.0",
55
- "@antelopejs/interface-database-decorators": ">=0.1.10 <1.0.0",
55
+ "@antelopejs/interface-database-decorators": ">=0.1.12 <1.0.0",
56
56
  "@antelopejs/interface-file-storage": ">=0.1.4 <1.0.0"
57
57
  },
58
58
  "devDependencies": {
@@ -61,7 +61,7 @@
61
61
  "@antelopejs/interface-core": ">=0.2.4 <1.0.0",
62
62
  "@antelopejs/interface-data-api": ">=0.5.0 <1.0.0",
63
63
  "@antelopejs/interface-database": ">=0.1.11 <1.0.0",
64
- "@antelopejs/interface-database-decorators": ">=0.1.10 <1.0.0",
64
+ "@antelopejs/interface-database-decorators": ">=0.1.12 <1.0.0",
65
65
  "@antelopejs/interface-file-storage": ">=0.1.4 <1.0.0",
66
66
  "@types/node": "^24.0.0",
67
67
  "@types/randomstring": "^1.3.0",