@antelopejs/interface-dms 0.10.0 → 0.10.2

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/CHANGELOG.md CHANGED
@@ -1,9 +1,82 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.10.2
4
+
5
+ [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.10.1...v0.10.2)
6
+
7
+ ### 🩹 Fixes
8
+
9
+ - **chart:** Draw only the fetched series that carry their points ([#587](https://github.com/AntelopeJS/dms/pull/587))
10
+ - **store:** Remove the archived CI/CD module from the catalog ([#609](https://github.com/AntelopeJS/dms/pull/609))
11
+ - **tenants:** Resume the default tenant's provisioning after start ([#613](https://github.com/AntelopeJS/dms/pull/613))
12
+ - **dms-ui:** Hydrate keyboard hints with the platform the server rendered ([#442](https://github.com/AntelopeJS/dms/pull/442))
13
+ - **dms-ui:** Print Nuxt UI key hints for the dashboard's keyboard platform ([#541](https://github.com/AntelopeJS/dms/pull/541))
14
+ - **playground:** Declare the playground's frontend, so dev and production include it ([#441](https://github.com/AntelopeJS/dms/pull/441))
15
+ - **frontend:** Unify API error presentation ([#614](https://github.com/AntelopeJS/dms/pull/614))
16
+
17
+ ### 📖 Documentation
18
+
19
+ - **readme:** Restore the realtime updates line and the live preview wording ([#589](https://github.com/AntelopeJS/dms/pull/589))
20
+ - **readme:** Remove the How AntelopeJS makes money section ([#592](https://github.com/AntelopeJS/dms/pull/592))
21
+
22
+ ### 🏡 Chore
23
+
24
+ - **release:** @antelopejs/dms v0.12.1 ([97b7122d](https://github.com/AntelopeJS/dms/commit/97b7122d))
25
+
26
+ ### ❤️ Contributors
27
+
28
+ - Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
29
+ - Alessandro Aloisio ([@alessaloisio](http://github.com/alessaloisio))
30
+
31
+ ## v0.10.1
32
+
33
+ [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.10.0...v0.10.1)
34
+
35
+ ### 🚀 Enhancements
36
+
37
+ - **dms-layout:** Restore a static GitHub star link in the footer ([#546](https://github.com/AntelopeJS/dms/pull/546))
38
+ - **dms:** Support a read-only public demo ([#581](https://github.com/AntelopeJS/dms/pull/581))
39
+
40
+ ### 🩹 Fixes
41
+
42
+ - **store:** Reuse the runtime id of an uninstalled module on reinstall ([#547](https://github.com/AntelopeJS/dms/pull/547))
43
+ - **chart:** Draw the one point per group a series data source answers ([#586](https://github.com/AntelopeJS/dms/pull/586))
44
+
45
+ ### 💅 Refactors
46
+
47
+ - **frontend:** Remove type assertions in tests ([#525](https://github.com/AntelopeJS/dms/pull/525))
48
+ - **frontend:** Remove type assertions in core, auth and layout ([#526](https://github.com/AntelopeJS/dms/pull/526))
49
+ - **frontend:** Remove type assertions in ui components and composables ([#527](https://github.com/AntelopeJS/dms/pull/527))
50
+ - **frontend:** Remove type assertions in ui data types ([#528](https://github.com/AntelopeJS/dms/pull/528))
51
+ - **backend:** Remove SAFETY assertions in test fixtures ([#542](https://github.com/AntelopeJS/dms/pull/542))
52
+ - **backend:** Remove SAFETY assertions in serialized-option and fixture tests ([#543](https://github.com/AntelopeJS/dms/pull/543))
53
+ - **agents:** Fix the lint findings in dms's own agent files ([#548](https://github.com/AntelopeJS/dms/pull/548))
54
+
55
+ ### 📖 Documentation
56
+
57
+ - **readme:** Rewrite the README as a landing page ([#554](https://github.com/AntelopeJS/dms/pull/554))
58
+
59
+ ### 🏡 Chore
60
+
61
+ - **release:** @antelopejs/dms v0.12.0 ([fdfcc0ad](https://github.com/AntelopeJS/dms/commit/fdfcc0ad))
62
+ - **package:** Update the npm description and keywords ([#580](https://github.com/AntelopeJS/dms/pull/580))
63
+ - **package:** Restore realtime in the npm description ([#588](https://github.com/AntelopeJS/dms/pull/588))
64
+
65
+ ### ❤️ Contributors
66
+
67
+ - Antony Rizzitelli ([@Upd4ting](http://github.com/Upd4ting))
68
+
3
69
  ## v0.10.0
4
70
 
5
71
  [compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.9.1...v0.10.0)
6
72
 
73
+ ### Upgrade notes
74
+
75
+ - 16 new modules (11 public, 5 `@internal`) hold the types that pages, components and tables share: `component-options/*` (`action-target`, `button`, `confirm-dialog`, `row-action`, `form-field`, `data-type`, `page-layout`, and their `internal/` counterparts), `tones`, `watch-actions`, `export-status` and `invite-extension-payloads` ([#539](https://github.com/AntelopeJS/dms/pull/539)). Every old subpath still exports the same names, re-exported from the new module, so no import changes.
76
+ - Do not augment `WatchFunctionParamMap` through `watch-actions`: keep augmenting it through `base/types`, as before.
77
+ - Two type-only layer exceptions remain (`component.ts` to `page.ts`, and the `User` table to the default data types). They are removed in the next breaking release ([#531](https://github.com/AntelopeJS/dms/issues/531)).
78
+ - Modules implementing interface-dms move to `>=0.10.0 <0.11.0`; `@antelopejs/dms` implements it.
79
+
7
80
  ### 🚀 Enhancements
8
81
 
9
82
  - **interface-dms:** Expose stable default data type subpaths ([#475](https://github.com/AntelopeJS/dms/pull/475))
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <a href="https://www.npmjs.com/package/@antelopejs/interface-dms"><img alt="npm" src="https://img.shields.io/npm/v/@antelopejs/interface-dms?style=for-the-badge&labelColor=000000&color=000000"></a>
6
6
  <a href="./LICENSE"><img alt="License" src="https://img.shields.io/npm/l/@antelopejs/interface-dms?style=for-the-badge&labelColor=000000&color=000000"></a>
7
- <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>
7
+ <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>
8
8
  <a href="https://dms.antelopejs.com/docs/interfaces"><img alt="Documentation" src="https://img.shields.io/badge/Docs-18181B?style=for-the-badge&color=000000"></a>
9
9
 
10
10
  The public contracts of the AntelopeJS DMS: pages and components, permissions and tenancy, authentication, notifications and HTML rendering.
@@ -30,7 +30,7 @@ export declare function declaresCounters(options: Pick<TableViewOptions, "tabs"
30
30
  export declare function servesRoute(endpoints: Record<string, DataControllerCallbackWithOptions>, path: string, method: string): boolean;
31
31
  /**
32
32
  * Warn, once per controller, when a table view declares filter tabs, counted
33
- * views or counted groups but its controller mounts no `POST count/batch`
33
+ * views or counted groups but its controller mounts no `GET count/batch`
34
34
  * route: every counter request would fail. The fix belongs in the controller
35
35
  * (mount `countBatch: TableViewRoutes.CountBatch`), so this only reports it.
36
36
  *
@@ -86,7 +86,7 @@ function declaresCounters(options) {
86
86
  !!options.grouped?.count);
87
87
  }
88
88
  const COUNT_BATCH_PATH = "count/batch";
89
- const COUNT_BATCH_METHOD = "post";
89
+ const COUNT_BATCH_METHOD = "get";
90
90
  const EDGE_SLASHES = /^\/+|\/+$/g;
91
91
  const controllersWarnedForTabCounts = new WeakSet();
92
92
  /** @internal */
@@ -96,7 +96,7 @@ function servesRoute(endpoints, path, method) {
96
96
  }
97
97
  /**
98
98
  * Warn, once per controller, when a table view declares filter tabs, counted
99
- * views or counted groups but its controller mounts no `POST count/batch`
99
+ * views or counted groups but its controller mounts no `GET count/batch`
100
100
  * route: every counter request would fail. The fix belongs in the controller
101
101
  * (mount `countBatch: TableViewRoutes.CountBatch`), so this only reports it.
102
102
  *
@@ -108,6 +108,6 @@ function warnIfTabsLackCountBatch(controller, location, hasCounters, endpoints)
108
108
  if (servesRoute(endpoints, COUNT_BATCH_PATH, COUNT_BATCH_METHOD))
109
109
  return;
110
110
  controllersWarnedForTabCounts.add(controller);
111
- logging_1.Logging.Warn(`[DMS] TableView on "${controller.name}" (${location}) declares filter tabs, counted views or counted groups but its controller mounts no POST ${location}/${COUNT_BATCH_PATH} route: their counters will fail. Mount \`countBatch: TableViewRoutes.CountBatch\` on the controller.`);
111
+ logging_1.Logging.Warn(`[DMS] TableView on "${controller.name}" (${location}) declares filter tabs, counted views or counted groups but its controller mounts no GET ${location}/${COUNT_BATCH_PATH} route: their counters will fail. Mount \`countBatch: TableViewRoutes.CountBatch\` on the controller.`);
112
112
  }
113
113
  //# sourceMappingURL=tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/tabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/tabs.ts"],"names":[],"mappings":";;AA8BA,wDAkBC;AAcD,oDAiCC;AAQD,4CAQC;AASD,kCAUC;AAUD,4DAYC;AAxJD,6DAGmC;AACnC,+DAAyD;AACzD,gEAA6D;AAE7D,wCAA8D;AAC9D,uEAAwE;AACxE,sDAAqD;AAOrD,SAAS,eAAe,CAAC,SAAmC;IAC1D,oKAAoK;IACpK,OAAO,OAAO,SAAS,KAAK,QAAQ;QAClC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAA,4BAAW,EAAC,SAAS,EAAE,8BAAc,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CACpC,IAAgC;IAEhC,OAAO,IAAI,EAAE,GAAG,CACd,CAAC,EACC,EAAE,EACF,SAAS,EACT,UAAU,EAAE,WAAW,EACvB,YAAY,EAAE,aAAa,EAC3B,GAAG,GAAG,EACP,EAAE,EAAE;QACH,MAAM,UAAU,GAA2B,EAAE,GAAG,GAAG,EAAE,CAAC;QACtD,0KAA0K;QAC1K,IAAI,OAAO,EAAE,KAAK,QAAQ;YAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/C,IAAI,SAAS;YAAE,UAAU,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QACjE,OAAO,UAAU,CAAC;IACpB,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE,CAChD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAE3C;;;;;;;;GAQG;AACI,KAAK,UAAU,oBAAoB,CACxC,WAAwB,EACxB,YAAwC,EACxC,cAAoD,EACpD,qBAA6B;IAE7B,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc;QAAE,OAAO,cAAc,CAAC;IAC5D,MAAM,IAAI,GAA6B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,QAAQ,EAAE,EAAE,CAAC;QAC5B,sKAAsK;QACtK,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,MAAM,EAAE,mBAAY,CAAC,CAAC,QAAQ,CAAC;YACxD,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,YAAY,GAAG,IAAA,sBAAe,EAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,YAAY,IAAI,CAAC,CAAC,MAAM,IAAA,2BAAa,EAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;gBACtE,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI,CAAC;gBACR,GAAG,GAAG;gBACN,EAAE,EAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IACE,MAAM,IAAA,qCAAmB,EAAC,WAAW,EAAE,QAAQ,EAAE,qBAAqB,CAAC,EACvE,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,OAA6D;IAE7D,OAAO,CACL,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;QAC/B,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CACzB,CAAC;AACJ,CAAC;AAED,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,YAAY,GAAG,YAAY,CAAC;AAElC,MAAM,6BAA6B,GAAG,IAAI,OAAO,EAAmB,CAAC;AAErE,gBAAgB;AAChB,SAAgB,WAAW,CACzB,SAA4D,EAC5D,IAAY,EACZ,MAAc;IAEd,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,CAAC,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,KAAK,IAAI;QAC1D,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CACjD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CACtC,UAA2B,EAC3B,QAAgB,EAChB,WAAoB,EACpB,SAA4D;IAE5D,IAAI,CAAC,WAAW,IAAI,6BAA6B,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO;IAC1E,IAAI,WAAW,CAAC,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;QAAE,OAAO;IACzE,6BAA6B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9C,iBAAO,CAAC,IAAI,CACV,uBAAuB,UAAU,CAAC,IAAI,MAAM,QAAQ,4FAA4F,QAAQ,IAAI,gBAAgB,uGAAuG,CACpR,CAAC;AACJ,CAAC"}
@@ -10,7 +10,9 @@ export declare namespace TableViewRoutes {
10
10
  */
11
11
  const Count: DataControllerCallback;
12
12
  /**
13
- * `POST <location>/count/batch`: one count per query, in a single request.
13
+ * `GET <location>/count/batch`: one count per repeated `query` value,
14
+ * encoded as an escaped id, `?`, and its list query string. Accepts up to
15
+ * 50 entries and 8,192 UTF-8 bytes in the encoded path plus search.
14
16
  * Filter tabs with counters require the controller to mount
15
17
  * `countBatch: TableViewRoutes.CountBatch`; a table view declaring `tabs`
16
18
  * without it gets failing counters and a registration warning.
@@ -17,30 +17,34 @@ const realtime_1 = require("./internal/realtime");
17
17
  const meta_1 = require("./meta");
18
18
  const row_rules_1 = require("./internal/row-rules");
19
19
  const MAX_BATCH_COUNT_QUERIES = 50;
20
- // oxlint-disable-next-line anti-slop/no-unknown-parameters -- This parser is the JSONBody boundary of the published count-batch route; it must accept arbitrary decoded request values before checking them.
21
- function parseBatchCountBody(body) {
22
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- JSONBody supplies untyped input; this existing parser rejects non-object request bodies before inspecting queries.
23
- (0, interface_api_util_1.assert)(body && typeof body === "object", 400, "Invalid count batch body.");
24
- const { queries } = body;
25
- (0, interface_api_util_1.assert)(Array.isArray(queries), 400, "Invalid count batch queries.");
26
- (0, interface_api_util_1.assert)(queries.length <= MAX_BATCH_COUNT_QUERIES, 400, "Too many count batch queries.");
27
- for (const query of queries) {
28
- (0, interface_api_util_1.assert)(
29
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- The count-batch parser checks each request entry's id representation; a stronger schema would reject inputs currently accepted by this published route.
30
- query && typeof query.id === "string" && query.query, 400, "Invalid count batch query.");
20
+ const MAX_BATCH_COUNT_TARGET_BYTES = 8_192;
21
+ const HTTP_BAD_REQUEST = 400;
22
+ const HTTP_URI_TOO_LONG = 414;
23
+ const COUNT_QUERY_SEPARATOR = "?";
24
+ function decodeCountId(id) {
25
+ try {
26
+ return decodeURIComponent(id);
31
27
  }
32
- return { queries };
28
+ catch {
29
+ (0, interface_api_util_1.assert)(false, HTTP_BAD_REQUEST, "Invalid count batch query.");
30
+ }
31
+ }
32
+ function parseBatchCountQueries(ctx, values) {
33
+ (0, interface_api_util_1.assert)(Buffer.byteLength(ctx.url.pathname + ctx.url.search, "utf8") <=
34
+ MAX_BATCH_COUNT_TARGET_BYTES, HTTP_URI_TOO_LONG, "Count batch URI too long.");
35
+ (0, interface_api_util_1.assert)(values.length <= MAX_BATCH_COUNT_QUERIES, HTTP_BAD_REQUEST, "Too many count batch queries.");
36
+ return values.map((value) => {
37
+ const separator = value.indexOf(COUNT_QUERY_SEPARATOR);
38
+ (0, interface_api_util_1.assert)(separator >= 0, HTTP_BAD_REQUEST, "Invalid count batch query.");
39
+ return {
40
+ id: decodeCountId(value.slice(0, separator)),
41
+ query: new URLSearchParams(value.slice(separator + 1)),
42
+ };
43
+ });
33
44
  }
34
45
  function buildBatchCountContext(ctx, query) {
35
46
  const url = new URL(ctx.url);
36
- url.search = "";
37
- for (const [key, value] of Object.entries(query)) {
38
- if (value === undefined)
39
- continue;
40
- for (const item of Array.isArray(value) ? value : [value]) {
41
- url.searchParams.append(key, String(item));
42
- }
43
- }
47
+ url.search = query.toString();
44
48
  return { ...ctx, url };
45
49
  }
46
50
  const createBulkOperationRoute = (operationFunc) => ({
@@ -100,13 +104,11 @@ function createSummaryRoute(actionId) {
100
104
  }
101
105
  function createBatchCountRoute(actionId) {
102
106
  return {
103
- func: async function (ctx,
104
- // oxlint-disable-next-line anti-slop/no-unknown-parameters -- JSONBody is decoded by parseBatchCountBody below; its published route boundary must still accept arbitrary request values.
105
- body, user) {
106
- const parsed = parseBatchCountBody(body);
107
+ func: async function (ctx, values, user) {
108
+ const queries = parseBatchCountQueries(ctx, values);
107
109
  const permissions = await (0, auth_2.authorizeAction)(this, actionId, user, (0, request_tenant_1.getRequestTenantId)(ctx));
108
110
  const meta = (0, interface_data_api_1.GetDataControllerMeta)(this);
109
- const entries = await Promise.all(parsed.queries.map(async ({ id, query }) => {
111
+ const entries = await Promise.all(queries.map(async ({ id, query }) => {
110
112
  const queryContext = buildBatchCountContext(ctx, query);
111
113
  const listParams = {
112
114
  filters: components_1.Parameters.ExtractFilters(queryContext, meta),
@@ -116,8 +118,8 @@ function createBatchCountRoute(actionId) {
116
118
  }));
117
119
  return Object.fromEntries(entries);
118
120
  },
119
- args: [(0, interface_api_1.Context)(), (0, interface_api_1.JSONBody)(), (0, auth_1.AuthUser)()],
120
- method: "post",
121
+ args: [(0, interface_api_1.Context)(), (0, interface_api_1.MultiParameter)("query", "query"), (0, auth_1.AuthUser)()],
122
+ method: "get",
121
123
  };
122
124
  }
123
125
  function createEditRoute(baseRoute) {
@@ -136,7 +138,9 @@ var TableViewRoutes;
136
138
  */
137
139
  TableViewRoutes.Count = createCountRoute(auth_2.LIST_ACTION);
138
140
  /**
139
- * `POST <location>/count/batch`: one count per query, in a single request.
141
+ * `GET <location>/count/batch`: one count per repeated `query` value,
142
+ * encoded as an escaped id, `?`, and its list query string. Accepts up to
143
+ * 50 entries and 8,192 UTF-8 bytes in the encoded path plus search.
140
144
  * Filter tabs with counters require the controller to mount
141
145
  * `countBatch: TableViewRoutes.CountBatch`; a table view declaring `tabs`
142
146
  * without it gets failing counters and a registration warning.
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/base/table-view/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/base/table-view/routes.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export declare const tenantsTableName = "tenants";
3
3
  export declare class Tenant extends Table {
4
4
  _id: string;
5
5
  name: string;
6
+ /** True while default tenant provisioning must be retried. Absent means provisioned. */
7
+ provisioningPending?: boolean;
6
8
  createdAt: Date;
7
9
  updatedAt: Date;
8
10
  }
@@ -24,6 +24,10 @@ __decorate([
24
24
  (0, interface_database_decorators_1.Field)("string"),
25
25
  __metadata("design:type", String)
26
26
  ], Tenant.prototype, "name", void 0);
27
+ __decorate([
28
+ (0, interface_database_decorators_1.Field)("boolean"),
29
+ __metadata("design:type", Boolean)
30
+ ], Tenant.prototype, "provisioningPending", void 0);
27
31
  __decorate([
28
32
  (0, interface_database_decorators_1.CreationTime)(),
29
33
  (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;CAgBhC,CAAA;AAhBY,wBAAM;AAET;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mCACI;AAGZ;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oCACK;AAKb;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;iBAfb,MAAM;IADlB,IAAA,6CAAa,EAAC,wBAAgB,EAAE,4BAAgB,CAAC;GACrC,MAAM,CAgBlB"}
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"}
@@ -6,9 +6,9 @@ import { type TenantProvisioningHookPayload } from "./hooks";
6
6
  * handler, so no handler ever runs before it, whatever order the modules
7
7
  * registered in.
8
8
  *
9
- * Call it once per tenant, at its creation, and fire the hook through it
10
- * only. A handler that throws rejects the call, and the caller unwinds the
11
- * tenant it was creating.
9
+ * Fire the hook only through this function. A handler that throws rejects the
10
+ * call. Signup callers unwind the tenant they were creating. Default tenant
11
+ * provisioning retains its pending row and retries this function after startup.
12
12
  *
13
13
  * @param payload Tenant being provisioned and what the caller carries along
14
14
  */
@@ -12,9 +12,9 @@ const hooks_1 = require("./hooks");
12
12
  * handler, so no handler ever runs before it, whatever order the modules
13
13
  * registered in.
14
14
  *
15
- * Call it once per tenant, at its creation, and fire the hook through it
16
- * only. A handler that throws rejects the call, and the caller unwinds the
17
- * tenant it was creating.
15
+ * Fire the hook only through this function. A handler that throws rejects the
16
+ * call. Signup callers unwind the tenant they were creating. Default tenant
17
+ * provisioning retains its pending row and retries this function after startup.
18
18
  *
19
19
  * @param payload Tenant being provisioned and what the caller carries along
20
20
  */
@@ -544,6 +544,27 @@ export async function construct(): Promise<void> {
544
544
  }
545
545
  ```
546
546
 
547
+ The frontend reads the project, not the backend's registrations: `ajs dms dev`, `ajs dms build` and `ajs dms start` call the module's `frontendModule` function, named as `dmsFrontend` in the module's `package.json` (`"dmsFrontend": "dist/frontend-module.js"`). Keep the registration in that pure function of the module's config, and pass its result to `AddFrontendModule`; a module that only calls `AddFrontendModule` is left out of the frontend, in development as in production.
548
+
549
+ ```typescript
550
+ import path from "node:path";
551
+ import type { FrontendModuleFunction } from "@antelopejs/interface-dms/page";
552
+
553
+ interface BillingConfig {
554
+ prefix?: string;
555
+ }
556
+
557
+ export const frontendModule: FrontendModuleFunction<BillingConfig> = (
558
+ config,
559
+ ) => ({
560
+ name: "@acme/dms-billing",
561
+ sourcePath: path.join(__dirname, "../frontend-vue"),
562
+ renderer: { name: "vue", version: "3" },
563
+ configKey: "dmsBilling",
564
+ options: { prefix: config.prefix ?? "Billing" },
565
+ });
566
+ ```
567
+
547
568
  ### `AddFrontendModuleOptions`
548
569
 
549
570
  | Option | Type | Description |
@@ -104,7 +104,7 @@ export class roleDataAPI extends DataController(
104
104
  | `List` | Paginated list with search, filters and sorting. |
105
105
  | `Select` | List with the `select` pluck mode, used by relation pickers. `?ids=a&ids=b` (with `idKey` when the value is another field) answers those rows alone, as `List` does: a picker and a filter chip name the ids they hold this way. |
106
106
  | `Count` | Row count for the current query. |
107
- | `CountBatch` | One count per query, in a single `POST /count/batch` (tab, view and group counters). |
107
+ | `CountBatch` | One count per repeated `query` value in `GET /count/batch` (tab, view and group counters). Each value is `encodeURIComponent(id) + "?" + listQueryString`, with repeated filters preserved. Requests accept up to 50 entries and 8,192 UTF-8 bytes in the encoded path plus search; the client packs larger batches into bounded GET requests. |
108
108
  | `Summary` | `GET /summary?ids=…`: the footer summaries a table view declared, over every row the request's filters list. |
109
109
  | `New` | Create a row. |
110
110
  | `Edit` | Update a row. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antelopejs/interface-dms",
3
- "version": "0.10.0",
3
+ "version": "0.10.2",
4
4
  "description": "Public AntelopeJS interfaces of the DMS: pages, components, permissions, tenancy, auth, notifications and HTML rendering.",
5
5
  "keywords": [
6
6
  "antelopejs",