@venizia/ardor 0.4.8-2 → 0.4.8-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.
package/README.md CHANGED
@@ -33,7 +33,13 @@ export const Orders = () => {
33
33
 
34
34
  ## Moving to the new names
35
35
 
36
- `bun run ardor codemod namespace src` lists the removed bare names that have a replacement (`getRuntimeConfig` to `RuntimeConfig.get`, `isDefined` to `ValueUtility.isDefined`, `NullableType` to `undefined | null | void`, `Logger.getInstance({ scope })` to `LoggerFactory.getLogger([scope])`, ...) and the removed names with none, and writes nothing; `--write` applies it, `--check` fails while any is left, and `--hooks` also moves hooks imported from `@venizia/ardor` to `Ardor.useX`. It needs the `typescript` package.
36
+ `bun run ardor codemod namespace src` lists the removed bare names that have a replacement (`getRuntimeConfig` to `RuntimeConfig.get`, `isDefined` to `ValueUtility.isDefined`, `NullableType` to `undefined | null | void`, `Logger.getInstance({ scope })` to `LoggerFactory.getLogger([scope])`, ...) and the removed names with none, and writes nothing; `--write` applies it (it refuses a file with local changes unless you add `--allow-dirty`), `--check` fails while any is left, and `--hooks` also moves hooks imported from `@venizia/ardor` to `Ardor.useX`. It needs the `typescript` package.
37
+
38
+ ## Subpaths
39
+
40
+ - `@venizia/ardor/repository` - `HttpRepository` and the datasource settings; needs the optional peer `@venizia/ignis-connectors`.
41
+ - `@venizia/ardor/testing` - `assertArdorApplicationBoots` and `FakeResizeObserver`, for your test suite.
42
+ - `@venizia/ardor/vite` - `buildInfoFile`, a Vite plugin that writes the build info file; needs the optional peers `@venizia/ignis-boot` and `vite`.
37
43
 
38
44
  ## Quick start
39
45
 
@@ -3,7 +3,7 @@ import { NamespaceCommand } from './cli.js';
3
3
  const USAGE = `Usage: ardor <command>
4
4
 
5
5
  Commands:
6
- codemod namespace move the deprecated bare names to the class members that replace them
6
+ codemod namespace move the removed bare names to the class members that replace them
7
7
 
8
8
  Run "ardor codemod namespace --help" for the options.`;
9
9
  /** The `ardor` bin of `@venizia/ardor`: `ardor codemod namespace [paths...] [--write | --check]`. */
@@ -1,6 +1,6 @@
1
1
  /** `ardor codemod namespace`: a dry run unless `--write`; `--check` is the dry run that fails on work left. */
2
2
  export declare class NamespaceCommand {
3
- static readonly USAGE = "Usage: ardor codemod namespace [paths...] [--hooks] [--write [--allow-dirty] | --check]\n\nMoves the names removed from @venizia/ardor to what replaces them:\n\n isDefined, isString, isNumber, isObject, isValidDate ValueUtility.<name>\n isBrowser BrowserUtility.isBrowser\n toDataUrl FileUtility.toDataUrl\n getRuntimeConfig RuntimeConfig.get\n createAppDispatch, createAppSelectors DispatchHooks.create, SelectorHooks.create\n resolveApplicationProviders ApplicationProviders.resolve\n hasPendingFeatureMessages, loadFeatureMessages Features.hasPendingMessages, Features.loadMessages\n NumberIdType, StringIdType, NullableType number, string, undefined | null | void\n BaseHelper, LogLevels, ILogger, TLogLevel the same names from @venizia/ignis-helpers/core\n Logger.getInstance({ scope }), new Logger({ scope }) LoggerFactory.getLogger([scope]) (enableDebug is dropped, with a note)\n Logger (a type) ILogger\n\nRemoved with nothing to write in their place, so only listed with their line: isEditableTarget,\nTDataCount, ISyncFC, App.DEFAULT_LOCALE, HeaderConstants.REQUEST_DEVICE_INFO, HeaderConstants.RESPONSE_FORMAT,\nthe enableDebug prop of ArdorApplication (pass logger instead), and a Logger use with no one-line form.\n\nIt rewrites a name imported from @venizia/ardor, @venizia/ardor-kernel, @venizia/ardor-react or\n@venizia/ardor-admin, its uses, and the import. It reads syntax only: a name the file also declares\nitself, a re-export by name and a class name already taken are listed with their line and left for you.\n\n --hooks also move a hook imported from @venizia/ardor to the Ardor namespace (useRepository()\n becomes Ardor.useRepository()). A hook imported from @venizia/ardor-react or\n @venizia/ardor-admin is never touched: those packages cannot import Ardor.\n --write write the changed files (without it, nothing is written)\n --allow-dirty with --write, also write a file that has local changes, such as one another codemod\n just changed (devz codemod namespace-functions --write leaves the tree dirty)\n --check dry run that exits 1 when anything would change or is left (for CI)\n --help print this text and exit\n\nWith no flag it lists what would change and writes nothing. Inside a git repository it reads the\nfiles git knows (tracked, or untracked and not ignored), and --write refuses a file with local\nchanges (changed, staged or untracked), so git can undo the codemod: the file is listed as \"refused\"\nwith its path, the summary counts it and the run exits 1. Commit or stash it and run again, or run\nagain with --allow-dirty to write it anyway (it keeps the other codemod's edits). To run two codemods\none after the other in a dirty tree, give this one --write --allow-dirty.\nRun your formatter afterwards: the new names are appended to the import they join.";
3
+ static readonly USAGE = "Usage: ardor codemod namespace [paths...] [--hooks] [--write [--allow-dirty] | --check]\n\nMoves the names removed from @venizia/ardor to what replaces them:\n\n isDefined, isString, isNumber, isObject, isValidDate ValueUtility.<name>\n isBrowser BrowserUtility.isBrowser\n toDataUrl FileUtility.toDataUrl\n getRuntimeConfig RuntimeConfig.get\n createAppDispatch, createAppSelectors DispatchHooks.create, SelectorHooks.create\n resolveApplicationProviders ApplicationProviders.resolve\n hasPendingFeatureMessages, loadFeatureMessages Features.hasPendingMessages, Features.loadMessages\n NumberIdType, StringIdType, NullableType number, string, undefined | null | void\n BaseHelper, LogLevels, ILogger, TLogLevel the same names from @venizia/ignis-helpers/core\n Logger.getInstance({ scope }), new Logger({ scope }) LoggerFactory.getLogger([scope]) (enableDebug is dropped, with a note)\n Logger (a type) ILogger\n ISendResponse INetworkResponse\n\nRemoved with nothing to write in their place, so only listed with their line: isEditableTarget,\nTDataCount, ISyncFC, IListFilter.offset (use skip; listed wherever a file that imports IListFilter or ListFilterBuilder reads or sets .offset), useSizer (use useElementSize), useInjectableContainer (renamed useApplicationContainer), App.DEFAULT_LOCALE, HeaderConstants.REQUEST_DEVICE_INFO, HeaderConstants.RESPONSE_FORMAT,\nthe enableDebug prop of ArdorApplication (pass logger instead), and a Logger use with no one-line form.\n\nIt rewrites a name imported from @venizia/ardor, @venizia/ardor-kernel, @venizia/ardor-react or\n@venizia/ardor-admin, its uses, and the import. It reads syntax only: a name the file also declares\nitself, a re-export by name and a class name already taken are listed with their line and left for you.\n\n --hooks also move a hook imported from @venizia/ardor to the Ardor namespace (useRepository()\n becomes Ardor.useRepository()). A hook imported from @venizia/ardor-react or\n @venizia/ardor-admin is never touched: those packages cannot import Ardor.\n --write write the changed files (without it, nothing is written)\n --allow-dirty with --write, also write a file that has local changes, such as one another codemod\n just changed (devz codemod namespace-functions --write leaves the tree dirty)\n --check dry run that exits 1 when anything would change or is left (for CI)\n --help print this text and exit\n\nWith no flag it lists what would change and writes nothing. Inside a git repository it reads the\nfiles git knows (tracked, or untracked and not ignored), and --write refuses a file with local\nchanges (changed, staged or untracked), so git can undo the codemod: the file is listed as \"refused\"\nwith its path, the summary counts it and the run exits 1. Commit or stash it and run again, or run\nagain with --allow-dirty to write it anyway (it keeps the other codemod's edits). To run two codemods\none after the other in a dirty tree, give this one --write --allow-dirty.\nRun your formatter afterwards: the new names are appended to the import they join.";
4
4
  /** Runs the command and returns the exit code; prints to the console. */
5
5
  static run(opts: {
6
6
  root: string;
@@ -17,9 +17,10 @@ Moves the names removed from @venizia/ardor to what replaces them:
17
17
  BaseHelper, LogLevels, ILogger, TLogLevel the same names from @venizia/ignis-helpers/core
18
18
  Logger.getInstance({ scope }), new Logger({ scope }) LoggerFactory.getLogger([scope]) (enableDebug is dropped, with a note)
19
19
  Logger (a type) ILogger
20
+ ISendResponse INetworkResponse
20
21
 
21
22
  Removed with nothing to write in their place, so only listed with their line: isEditableTarget,
22
- TDataCount, ISyncFC, App.DEFAULT_LOCALE, HeaderConstants.REQUEST_DEVICE_INFO, HeaderConstants.RESPONSE_FORMAT,
23
+ TDataCount, ISyncFC, IListFilter.offset (use skip; listed wherever a file that imports IListFilter or ListFilterBuilder reads or sets .offset), useSizer (use useElementSize), useInjectableContainer (renamed useApplicationContainer), App.DEFAULT_LOCALE, HeaderConstants.REQUEST_DEVICE_INFO, HeaderConstants.RESPONSE_FORMAT,
23
24
  the enableDebug prop of ArdorApplication (pass logger instead), and a Logger use with no one-line form.
24
25
 
25
26
  It rewrites a name imported from @venizia/ardor, @venizia/ardor-kernel, @venizia/ardor-react or
@@ -179,7 +179,7 @@ export class LoggerTransform {
179
179
  findings.push({
180
180
  line: lineOf(call),
181
181
  name: 'enableDebug',
182
- reason: 'note: dropped. debug lines are off by default now (a browser, or `DEBUG` unset); turn them on with `LoggerFactory.use({ level: LogLevels.DEBUG })` at startup',
182
+ reason: 'dropped. debug lines are off by default now (a browser, or `DEBUG` unset); turn them on with `LoggerFactory.use({ level: LogLevels.DEBUG })` at startup',
183
183
  kind: 'note',
184
184
  });
185
185
  }
@@ -34,11 +34,23 @@ export declare class TypeRenames {
34
34
  name: string;
35
35
  }): string | undefined;
36
36
  }
37
+ /** Types removed in favour of another export of the same packages: the import and each use are renamed. */
38
+ export declare class TypeExportRenames {
39
+ static readonly TARGETS: Readonly<Record<string, string>>;
40
+ static find(opts: {
41
+ name: string;
42
+ }): string | undefined;
43
+ }
37
44
  /** Exports and members removed with no code the codemod can write in their place. */
38
45
  export declare class RemovedNames {
39
46
  static readonly EXPORTS: Readonly<Record<string, string>>;
40
47
  /** Class name to removed static member to the reason. */
41
48
  static readonly MEMBERS: Readonly<Record<string, Readonly<Record<string, string>>>>;
49
+ /** A property removed from the list filter: listed in a file that imports one of `owners`, as the file may use it. */
50
+ static readonly PROPERTIES: Readonly<Record<string, {
51
+ owners: ReadonlySet<string>;
52
+ reason: string;
53
+ }>>;
42
54
  static findExport(opts: {
43
55
  name: string;
44
56
  }): string | undefined;
@@ -85,12 +85,23 @@ export class TypeRenames {
85
85
  return Object.hasOwn(this.TARGETS, opts.name) ? this.TARGETS[opts.name] : undefined;
86
86
  }
87
87
  }
88
+ /** Types removed in favour of another export of the same packages: the import and each use are renamed. */
89
+ export class TypeExportRenames {
90
+ static { this.TARGETS = {
91
+ ISendResponse: 'INetworkResponse',
92
+ }; }
93
+ static find(opts) {
94
+ return Object.hasOwn(this.TARGETS, opts.name) ? this.TARGETS[opts.name] : undefined;
95
+ }
96
+ }
88
97
  /** Exports and members removed with no code the codemod can write in their place. */
89
98
  export class RemovedNames {
90
99
  static { this.EXPORTS = {
91
100
  isEditableTarget: 'nothing in ARDOR called it; check the event target in your own code',
92
101
  TDataCount: 'nothing in ARDOR used it; declare the shape you need',
93
102
  ISyncFC: 'write the function type, (props: TProps) => ReactNode',
103
+ useInjectableContainer: 'renamed: call useApplicationContainer',
104
+ useSizer: 'use useElementSize({ ref, box: "border-box", round: true }) with a ref in place of the id',
94
105
  }; }
95
106
  /** Class name to removed static member to the reason. */
96
107
  static { this.MEMBERS = {
@@ -100,6 +111,13 @@ export class RemovedNames {
100
111
  RESPONSE_FORMAT: 'nothing in ARDOR sent or read this header',
101
112
  },
102
113
  }; }
114
+ /** A property removed from the list filter: listed in a file that imports one of `owners`, as the file may use it. */
115
+ static { this.PROPERTIES = {
116
+ offset: {
117
+ owners: new Set(['IListFilter', 'ListFilterBuilder']),
118
+ reason: 'the list filter has no offset, use skip',
119
+ },
120
+ }; }
103
121
  static findExport(opts) {
104
122
  return Object.hasOwn(this.EXPORTS, opts.name) ? this.EXPORTS[opts.name] : undefined;
105
123
  }
@@ -15,7 +15,7 @@ export interface INamespaceResult {
15
15
  findings: IFinding[];
16
16
  }
17
17
  /**
18
- * Rewrites the deprecated bare names of `@venizia/ardor` to their class members, in source text:
18
+ * Rewrites the removed bare names of `@venizia/ardor` to their class members, in source text:
19
19
  * `isDefined(x)` becomes `ValueUtility.isDefined(x)` and the import follows. With `hooks`, a hook
20
20
  * imported from `@venizia/ardor` itself becomes `Ardor.useX` (never one imported from the react or
21
21
  * admin package, which cannot import `Ardor`).
@@ -1,6 +1,6 @@
1
- import { FunctionRenames, HookRenames, NamespaceModules, RemovedNames, TypeRenames, } from './renames.js';
1
+ import { FunctionRenames, HookRenames, NamespaceModules, RemovedNames, TypeExportRenames, TypeRenames, } from './renames.js';
2
2
  /**
3
- * Rewrites the deprecated bare names of `@venizia/ardor` to their class members, in source text:
3
+ * Rewrites the removed bare names of `@venizia/ardor` to their class members, in source text:
4
4
  * `isDefined(x)` becomes `ValueUtility.isDefined(x)` and the import follows. With `hooks`, a hook
5
5
  * imported from `@venizia/ardor` itself becomes `Ardor.useX` (never one imported from the react or
6
6
  * admin package, which cannot import `Ardor`).
@@ -66,13 +66,15 @@ export class NamespaceTransform {
66
66
  });
67
67
  continue;
68
68
  }
69
- const typeText = TypeRenames.find({ name: imported });
69
+ const exportName = TypeExportRenames.find({ name: imported });
70
+ const typeText = exportName ?? TypeRenames.find({ name: imported });
70
71
  if (typeText) {
71
72
  renames.push({
72
73
  specifier,
73
74
  declaration: statement,
74
75
  local: specifier.name.text,
75
76
  typeText,
77
+ importName: exportName,
76
78
  references: [],
77
79
  });
78
80
  continue;
@@ -139,7 +141,9 @@ export class NamespaceTransform {
139
141
  else if ((ts.isFunctionDeclaration(node) ||
140
142
  ts.isClassDeclaration(node) ||
141
143
  ts.isFunctionExpression(node) ||
142
- ts.isClassExpression(node)) &&
144
+ ts.isClassExpression(node) ||
145
+ ts.isTypeAliasDeclaration(node) ||
146
+ ts.isInterfaceDeclaration(node)) &&
143
147
  node.name) {
144
148
  declared.add(node.name.text);
145
149
  }
@@ -162,6 +166,18 @@ export class NamespaceTransform {
162
166
  });
163
167
  return false;
164
168
  }
169
+ const { importName } = rename;
170
+ const takenBy = importName ? bindings.imported.get(importName) : undefined;
171
+ if (importName &&
172
+ (bindings.declared.has(importName) ||
173
+ (takenBy && !NamespaceModules.isValid(takenBy.module)))) {
174
+ findings.push({
175
+ line,
176
+ name: rename.local,
177
+ reason: `"${importName}" is already taken in this file; import it under another name and use it in place of ${rename.local}`,
178
+ });
179
+ return false;
180
+ }
165
181
  if (!owner || !rename.target) {
166
182
  return true;
167
183
  }
@@ -240,7 +256,8 @@ export class NamespaceTransform {
240
256
  }
241
257
  if (rename.typeText !== undefined) {
242
258
  // A type is a name in a type position only: `NullableType[]` needs parentheses once replaced.
243
- if (ts.isTypeReferenceNode(parent) && parent.typeName === node) {
259
+ if ((ts.isTypeReferenceNode(parent) && parent.typeName === node) ||
260
+ (ts.isExpressionWithTypeArguments(parent) && parent.expression === node)) {
244
261
  const grand = parent.parent;
245
262
  const wrap = rename.typeText.includes('|') &&
246
263
  (ts.isArrayTypeNode(grand) ||
@@ -278,7 +295,32 @@ export class NamespaceTransform {
278
295
  if (owners.size === 0) {
279
296
  return;
280
297
  }
298
+ const imported = new Set(owners.values());
281
299
  const visit = (node) => {
300
+ let name;
301
+ if (ts.isPropertyAccessExpression(node) ||
302
+ ts.isPropertyAssignment(node) ||
303
+ ts.isShorthandPropertyAssignment(node)) {
304
+ name = node.name;
305
+ }
306
+ else if (ts.isBindingElement(node) && ts.isObjectBindingPattern(node.parent)) {
307
+ name = node.propertyName ?? node.name;
308
+ }
309
+ else if (ts.isElementAccessExpression(node) &&
310
+ ts.isStringLiteral(node.argumentExpression)) {
311
+ name = node.argumentExpression;
312
+ }
313
+ const key = name && (ts.isIdentifier(name) || ts.isStringLiteral(name)) ? name : undefined;
314
+ const property = key && Object.hasOwn(RemovedNames.PROPERTIES, key.text)
315
+ ? RemovedNames.PROPERTIES[key.text]
316
+ : undefined;
317
+ if (key && property && [...property.owners].some((owner) => imported.has(owner))) {
318
+ findings.push({
319
+ line: sourceFile.getLineAndCharacterOfPosition(key.getStart(sourceFile)).line + 1,
320
+ name: `.${key.text}`,
321
+ reason: `removed: ${property.reason}`,
322
+ });
323
+ }
282
324
  if (ts.isPropertyAccessExpression(node) && ts.isIdentifier(node.expression)) {
283
325
  const owner = owners.get(node.expression.text);
284
326
  const reason = owner
@@ -323,7 +365,17 @@ export class NamespaceTransform {
323
365
  for (const owner of owners) {
324
366
  added.add(owner);
325
367
  }
326
- const names = [...kept, ...owners];
368
+ const types = [];
369
+ for (const { declaration: from, importName, specifier } of used) {
370
+ if (from === declaration &&
371
+ importName &&
372
+ !bindings.imported.has(importName) &&
373
+ !added.has(importName)) {
374
+ added.add(importName);
375
+ types.push(`${specifier.isTypeOnly ? 'type ' : ''}${importName}`);
376
+ }
377
+ }
378
+ const names = [...kept, ...owners, ...types];
327
379
  if (names.length === 0) {
328
380
  edits.push(NamespaceTransform.removeImport({ sourceFile, declaration, clause, named, ts }));
329
381
  continue;
@@ -13,12 +13,12 @@
13
13
  "dependencies": {
14
14
  "@reduxjs/toolkit": "^2.13.0",
15
15
  "@tanstack/react-query": "^5.104.5",
16
- "@venizia/ardor": "0.4.8-2",
17
- "@venizia/ignis-connectors": "0.4.8-1",
18
- "@venizia/ignis-filter": "0.4.7-1",
19
- "@venizia/ignis-helpers": "0.4.8-1",
20
- "@venizia/ignis-inversion": "0.4.7-1",
21
- "@venizia/ignis-kernel": "0.4.8-1",
16
+ "@venizia/ardor": "0.4.8-4",
17
+ "@venizia/ignis-connectors": "0.4.8-3",
18
+ "@venizia/ignis-filter": "0.4.7-2",
19
+ "@venizia/ignis-helpers": "0.4.8-3",
20
+ "@venizia/ignis-inversion": "0.4.7-2",
21
+ "@venizia/ignis-kernel": "0.4.8-3",
22
22
  "class-variance-authority": "^0.7.1",
23
23
  "clsx": "^2.1.1",
24
24
  "ra-core": "^5.15.5",
@@ -35,8 +35,8 @@
35
35
  "@types/bun": "^1.4.3",
36
36
  "@types/react": "^19",
37
37
  "@types/react-dom": "^19",
38
- "@venizia/dev-configs": "0.4.8-1",
39
- "@venizia/ignis-boot": "0.4.8-1",
38
+ "@venizia/dev-configs": "0.4.8-2",
39
+ "@venizia/ignis-boot": "0.4.8-3",
40
40
  "@vitejs/plugin-react": "^6.1.2",
41
41
  "eslint": "^10.13.0",
42
42
  "oxlint": "1.89.0",
@@ -47,11 +47,11 @@
47
47
  },
48
48
  "peers": {
49
49
  "@venizia/dev-configs": "^0.4.0 || ^0.4.8-0",
50
- "@venizia/ignis-connectors": "^0.4.8-1",
51
- "@venizia/ignis-filter": "^0.4.7-1",
52
- "@venizia/ignis-helpers": "^0.4.8-1",
53
- "@venizia/ignis-inversion": "^0.4.7-1",
54
- "@venizia/ignis-kernel": "^0.4.8-1"
50
+ "@venizia/ignis-connectors": "^0.4.8-3",
51
+ "@venizia/ignis-filter": "^0.4.7-2",
52
+ "@venizia/ignis-helpers": "^0.4.8-3",
53
+ "@venizia/ignis-inversion": "^0.4.7-2",
54
+ "@venizia/ignis-kernel": "^0.4.8-3"
55
55
  },
56
56
  "scripts": {
57
57
  "server:dev": "vite --config .configs/builders/vite.config.mts",
@@ -5,14 +5,14 @@
5
5
  "devDependencies": {
6
6
  "@types/bun": "^1.4.3",
7
7
  "@types/react": "^19",
8
- "@venizia/ardor": "^0.4.8-2",
9
- "@venizia/dev-configs": "0.4.8-1",
10
- "@venizia/ignis-boot": "0.4.8-1",
11
- "@venizia/ignis-connectors": "0.4.8-1",
12
- "@venizia/ignis-filter": "0.4.7-1",
13
- "@venizia/ignis-helpers": "0.4.8-1",
14
- "@venizia/ignis-inversion": "0.4.7-1",
15
- "@venizia/ignis-kernel": "0.4.8-1",
8
+ "@venizia/ardor": "^0.4.8-4",
9
+ "@venizia/dev-configs": "0.4.8-2",
10
+ "@venizia/ignis-boot": "0.4.8-3",
11
+ "@venizia/ignis-connectors": "0.4.8-3",
12
+ "@venizia/ignis-filter": "0.4.7-2",
13
+ "@venizia/ignis-helpers": "0.4.8-3",
14
+ "@venizia/ignis-inversion": "0.4.7-2",
15
+ "@venizia/ignis-kernel": "0.4.8-3",
16
16
  "eslint": "^10.13.0",
17
17
  "oxlint": "1.89.0",
18
18
  "oxlint-tsgolint": "7.0.2004",
@@ -23,7 +23,7 @@
23
23
  "typescript": "^6.0.3"
24
24
  },
25
25
  "peerDependencies": {
26
- "@venizia/ardor": "^0.4.8-2",
26
+ "@venizia/ardor": "^0.4.8-4",
27
27
  "react": "^19.3.1",
28
28
  "react-dom": "^19.3.1",
29
29
  "react-router-dom": "^7.18.4",
package/dist/testing.d.ts CHANGED
@@ -2,6 +2,7 @@ import * as inversion from '@venizia/ignis-inversion';
2
2
  import { type BaseArdorApplication } from '@venizia/ardor-kernel';
3
3
  /** A class (matched exactly), a class name, or a binding key; the shape the shared core takes. */
4
4
  export type TBootSkip = inversion.TBindingSkip;
5
+ /** What `assertArdorApplicationBoots` leaves out, which locale it loads, and when an empty application passes. */
5
6
  export interface IAssertArdorApplicationBootsOptions {
6
7
  /**
7
8
  * Bindings the check leaves unresolved, for the few that open a socket or read the page when
@@ -3,6 +3,7 @@ import type { TBuildInfoRecord } from '@venizia/ignis-helpers/core';
3
3
  import type { UnresolvedPolicies } from './constants.js';
4
4
  /** `'error'` or `'unspecified'`; see `UnresolvedPolicies`. */
5
5
  export type TUnresolvedPolicy = TConstValue<typeof UnresolvedPolicies>;
6
+ /** The options of the `buildInfoFile` plugin. */
6
7
  export interface IBuildInfoFileOptions {
7
8
  /**
8
9
  * The app folder, where its package.json is.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venizia/ardor",
3
- "version": "0.4.8-2",
3
+ "version": "0.4.8-4",
4
4
  "description": "ARDOR - frontend application framework for the VENIZIA family. One entry point over ardor-kernel, ardor-react and ardor-admin: IGNIS inversion of control, a REST data layer, auth and i18n providers, and the React bindings for a react-admin application.",
5
5
  "keywords": [
6
6
  "ardor",
@@ -79,21 +79,21 @@
79
79
  "prepublishOnly": "make rebuild"
80
80
  },
81
81
  "dependencies": {
82
- "@venizia/ardor-admin": "0.4.8-2",
83
- "@venizia/ardor-kernel": "0.4.8-2",
84
- "@venizia/ardor-react": "0.4.8-2"
82
+ "@venizia/ardor-admin": "0.4.8-4",
83
+ "@venizia/ardor-kernel": "0.4.8-4",
84
+ "@venizia/ardor-react": "0.4.8-4"
85
85
  },
86
86
  "devDependencies": {
87
87
  "@size-limit/preset-small-lib": "^14.2.0",
88
88
  "@types/bun": "^1.4.3",
89
89
  "@types/node": "^25.0.10",
90
- "@venizia/dev-configs": "^0.4.8-1",
91
- "@venizia/ignis-boot": "^0.4.8-1",
92
- "@venizia/ignis-connectors": "^0.4.8-1",
93
- "@venizia/ignis-filter": "^0.4.7-1",
94
- "@venizia/ignis-helpers": "^0.4.8-1",
95
- "@venizia/ignis-inversion": "^0.4.7-1",
96
- "@venizia/ignis-kernel": "^0.4.8-1",
90
+ "@venizia/dev-configs": "^0.4.8-2",
91
+ "@venizia/ignis-boot": "^0.4.8-3",
92
+ "@venizia/ignis-connectors": "^0.4.8-3",
93
+ "@venizia/ignis-filter": "^0.4.7-2",
94
+ "@venizia/ignis-helpers": "^0.4.8-3",
95
+ "@venizia/ignis-inversion": "^0.4.7-2",
96
+ "@venizia/ignis-kernel": "^0.4.8-3",
97
97
  "eslint": "^10.13.0",
98
98
  "oxlint": "1.89.0",
99
99
  "oxlint-tsgolint": "7.0.2004",
@@ -105,12 +105,12 @@
105
105
  "peerDependencies": {
106
106
  "@reduxjs/toolkit": ">=2.13.0",
107
107
  "@tanstack/react-query": ">=5.104.5",
108
- "@venizia/ignis-boot": "^0.4.8-1",
109
- "@venizia/ignis-connectors": "^0.4.8-1",
110
- "@venizia/ignis-filter": "^0.4.7-1",
111
- "@venizia/ignis-helpers": "^0.4.8-1",
112
- "@venizia/ignis-inversion": "^0.4.7-1",
113
- "@venizia/ignis-kernel": "^0.4.8-1",
108
+ "@venizia/ignis-boot": "^0.4.8-3",
109
+ "@venizia/ignis-connectors": "^0.4.8-3",
110
+ "@venizia/ignis-filter": "^0.4.7-2",
111
+ "@venizia/ignis-helpers": "^0.4.8-3",
112
+ "@venizia/ignis-inversion": "^0.4.7-2",
113
+ "@venizia/ignis-kernel": "^0.4.8-3",
114
114
  "ra-core": ">=5.15.5",
115
115
  "ra-i18n-polyglot": ">=5.15.5",
116
116
  "react": ">=19.3.1",