@edifice.io/client 2.1.0-develop-enabling.0 → 2.1.0-develop-b2school.20250204153130

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 (42) hide show
  1. package/dist/analytics/Service.d.ts +0 -24
  2. package/dist/apps/timeline/Framework.d.ts +25 -0
  3. package/dist/apps/timeline/Notification.model.d.ts +10 -0
  4. package/dist/apps/timeline/interfaces.d.ts +69 -0
  5. package/dist/cache/Service.d.ts +1 -1
  6. package/dist/configure/Analytics.d.ts +40 -0
  7. package/dist/configure/AppConf.d.ts +17 -0
  8. package/dist/configure/Framework.d.ts +22 -0
  9. package/dist/configure/Service.d.ts +1 -4
  10. package/dist/configure/Theme.d.ts +34 -0
  11. package/dist/configure/User.d.ts +21 -0
  12. package/dist/configure/interfaces.d.ts +79 -1
  13. package/dist/data/Service.d.ts +25 -0
  14. package/dist/data/WebBroker.d.ts +12 -0
  15. package/dist/data/interface.d.ts +50 -0
  16. package/dist/globals.d.ts +2 -0
  17. package/dist/idiom/Idiom.d.ts +18 -0
  18. package/dist/idiom/Service.d.ts +20 -0
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.d.ts +3 -1
  21. package/dist/index.js +3776 -2231
  22. package/dist/notify/Framework.d.ts +29 -0
  23. package/dist/notify/Subject.d.ts +9 -0
  24. package/dist/notify/interfaces.d.ts +4 -1
  25. package/dist/resources/ResourceService.d.ts +1 -1
  26. package/dist/resources/interface.d.ts +8 -0
  27. package/dist/resources/services/HomeworksResourceService.d.ts +14 -0
  28. package/dist/resources/services/TimelineGeneratorResourceService.d.ts +14 -0
  29. package/dist/services/OdeServices.d.ts +20 -17
  30. package/dist/session/Framework.d.ts +10 -0
  31. package/dist/session/Service.d.ts +1 -1
  32. package/dist/session/Session.d.ts +34 -0
  33. package/dist/session/interfaces.d.ts +8 -5
  34. package/dist/share/Service.d.ts +1 -1
  35. package/dist/transport/Framework.d.ts +9 -0
  36. package/dist/transport/Http.d.ts +26 -0
  37. package/dist/{http → transport}/Service.d.ts +1 -3
  38. package/dist/{http → transport}/interfaces.d.ts +3 -0
  39. package/dist/widget/Framework.d.ts +31 -0
  40. package/dist/widget/LastInfos.widget.d.ts +0 -4
  41. package/dist/widget/interfaces.d.ts +3 -0
  42. package/package.json +17 -7
@@ -0,0 +1,29 @@
1
+ import { IGetConf, ITheme, IThemeOverrides } from '../configure/interfaces';
2
+ import { IUserInfo } from '../session/interfaces';
3
+ import { Subject } from './Subject';
4
+ import { IPromisified, INotifyFramework } from './interfaces';
5
+ /** Utility class */
6
+ export declare class Promisified<T> implements IPromisified<T> {
7
+ private _resolution?;
8
+ private _rejection?;
9
+ private _promise;
10
+ get promise(): Promise<T>;
11
+ resolve(value: T | PromiseLike<T>): void;
12
+ reject(reason?: any): void;
13
+ }
14
+ /** The notify framework implementation. */
15
+ declare class NotifyFramework implements INotifyFramework {
16
+ private promises;
17
+ private subject;
18
+ private asyncData;
19
+ onSessionReady(): IPromisified<IUserInfo>;
20
+ onLangReady(): IPromisified<string>;
21
+ onSkinReady(): Promisified<ITheme>;
22
+ onOverridesReady(): Promisified<IThemeOverrides>;
23
+ onAppConfReady(): Promisified<IGetConf>;
24
+ promisify<T>(): IPromisified<T>;
25
+ events(): Subject;
26
+ }
27
+ /** The whole framework is a singleton. */
28
+ export declare const notify: NotifyFramework;
29
+ export {};
@@ -0,0 +1,9 @@
1
+ import { IHttpErrorEvent, ISubject, ISubjectMessage, ISubscription, LayerName } from './interfaces';
2
+ export declare class Subject implements ISubject {
3
+ private publishChannels;
4
+ private getChannelName;
5
+ private getPublishChannel;
6
+ newChannel(layer: string): BroadcastChannel;
7
+ publish(layer: LayerName, message: ISubjectMessage | IHttpErrorEvent): void;
8
+ subscribe<T extends ISubjectMessage>(layer: LayerName, handler: (message: T) => void): ISubscription;
9
+ }
@@ -1,6 +1,9 @@
1
1
  import { IGetConf, ITheme, IThemeOverrides } from '../configure/interfaces';
2
- import { IHttpParams, IHttpResponse } from '../http/interfaces';
3
2
  import { IUserInfo } from '../session/interfaces';
3
+ import { IHttpParams, IHttpResponse } from '../transport/interfaces';
4
+ export declare abstract class NotifyFrameworkFactory {
5
+ static instance(): INotifyFramework;
6
+ }
4
7
  export interface INotifyFramework {
5
8
  /**
6
9
  * Notify that a process is done and data ready or rejected.
@@ -20,7 +20,7 @@ export declare abstract class ResourceService implements IResourceService, IWebR
20
20
  resourceType: ResourceType | "main";
21
21
  }) => boolean;
22
22
  constructor(context: IOdeServices);
23
- protected get http(): import('../http/Service').HttpService;
23
+ protected get http(): import('../transport/Service').HttpService;
24
24
  abstract getApplication(): App | string;
25
25
  abstract getPrintUrl(resourceId: string): string;
26
26
  abstract getViewUrl(resourceId: string): string;
@@ -384,7 +384,15 @@ export interface CollaborativewallUpdate extends UpdateParameters {
384
384
  export interface CollaborativewallResource extends IResource {
385
385
  'publish-type': 'RESTRAINT' | 'IMMEDIATE';
386
386
  }
387
+ export interface HomeworksCreate extends CreateParameters {
388
+ repeats?: any[];
389
+ }
390
+ export interface HomeworksUpdate extends UpdateParameters {
391
+ repeats?: any[];
392
+ }
387
393
  export interface ScrapbookUpdate extends UpdateParameters {
388
394
  }
389
395
  export interface ScrapbookResource extends IResource {
390
396
  }
397
+ export interface TimelineGeneratorUpdate extends UpdateParameters {
398
+ }
@@ -0,0 +1,14 @@
1
+ import { ResourceType } from '../..';
2
+ import { HomeworksCreate, CreateResult, HomeworksUpdate, UpdateResult } from '../interface';
3
+ import { ResourceService } from '../ResourceService';
4
+ export declare class HomeworksResourceService extends ResourceService {
5
+ create<T extends HomeworksCreate>(parameters: T): Promise<CreateResult>;
6
+ update(parameters: HomeworksUpdate): Promise<UpdateResult>;
7
+ getResourceType(): ResourceType;
8
+ getApplication(): string;
9
+ getFormUrl(folderId?: string): string;
10
+ getViewUrl(resourceId: string): string;
11
+ getPrintUrl(resourceId: string): string;
12
+ getEditUrl(resourceId: string): string;
13
+ getExportUrl(): string;
14
+ }
@@ -0,0 +1,14 @@
1
+ import { ResourceType } from '../..';
2
+ import { CreateParameters, CreateResult, TimelineGeneratorUpdate, UpdateResult } from '../interface';
3
+ import { ResourceService } from '../ResourceService';
4
+ export declare class TimelineGeneratorResourceService extends ResourceService {
5
+ create(parameters: CreateParameters): Promise<CreateResult>;
6
+ update(parameters: TimelineGeneratorUpdate): Promise<UpdateResult>;
7
+ getResourceType(): ResourceType;
8
+ getApplication(): string;
9
+ getFormUrl(): string;
10
+ getViewUrl(resourceId: string): string;
11
+ getPrintUrl(resourceId: string): string;
12
+ getEditUrl(): string;
13
+ getExportUrl(): string;
14
+ }
@@ -1,25 +1,31 @@
1
- import { AnalyticsService } from '../analytics/Service';
2
- import { IAudienceService } from '../audience/interface';
3
1
  import { CacheService } from '../cache/Service';
4
2
  import { ConfService } from '../configure/Service';
5
3
  import { DirectoryService } from '../directory/Service';
6
- import { EmbedderService } from '../embedder/Service';
7
- import { App, ResourceType } from '../globals';
8
- import { HttpService } from '../http/Service';
9
- import { IBehaviourService, IResourceService, IWebResourceService } from '../resources/interface';
4
+ import { HttpService } from '../transport/Service';
10
5
  import { RightService } from '../rights/Service';
11
6
  import { SessionService } from '../session/Service';
12
7
  import { ShareService } from '../share/Service';
13
- import { VideoService } from '../video/Service';
14
8
  import { WorkspaceService } from '../workspace/Service';
15
- import { AxiosInstance } from 'axios';
9
+ import { IdiomService } from '../idiom/Service';
10
+ import { AnalyticsService } from '../analytics/Service';
11
+ import { IAudienceService } from '../audience/interface';
12
+ import { VideoService } from '../video/Service';
13
+ import { App, ResourceType } from '../globals';
14
+ import { IBehaviourService, IResourceService, IWebResourceService } from '../resources/interface';
15
+ import { EmbedderService } from '../embedder/Service';
16
+ import { INotifyFramework } from '../notify/interfaces';
17
+ import { DataService } from '../data/Service';
18
+ import { IDataService } from '../data/interface';
16
19
  export interface IOdeServices {
17
20
  analytics(): AnalyticsService;
18
21
  audience(application: App, resourceType: ResourceType): IAudienceService;
19
22
  cache(): CacheService;
20
23
  conf(): ConfService;
24
+ data(): IDataService;
21
25
  directory(): DirectoryService;
22
26
  http(): HttpService;
27
+ idiom(): IdiomService;
28
+ notify(): INotifyFramework;
23
29
  resource(application: App, resourceType?: ResourceType): IResourceService & IWebResourceService;
24
30
  behaviour(application: App, resourceType: ResourceType): IBehaviourService;
25
31
  rights(): RightService;
@@ -28,36 +34,33 @@ export interface IOdeServices {
28
34
  video(): VideoService;
29
35
  workspace(): WorkspaceService;
30
36
  embedder(): EmbedderService;
31
- withAxiosInstance(axiosInstance: AxiosInstance): this;
32
- withBaseUrl(baseUrl?: string): this;
33
- withHeaders(headers: Record<string, string>): this;
34
37
  }
35
38
  export declare class OdeServices implements IOdeServices {
36
39
  private _analytics;
37
40
  private _cache;
38
41
  private _conf;
42
+ private _data;
39
43
  private _directory;
40
44
  private _http;
45
+ private _idiom;
46
+ private _notify;
41
47
  private _rights;
42
48
  private _session;
43
49
  private _share;
44
50
  private _video;
45
51
  private _workspace;
46
52
  private _embedder;
47
- private baseUrl?;
48
- private headers;
49
- private axiosInstance;
50
53
  constructor();
51
54
  initialize(): OdeServices;
52
- withAxiosInstance(axiosInstance: AxiosInstance): this;
53
- withHeaders(headers: Record<string, string>): this;
54
- withBaseUrl(baseUrl: string): this;
55
55
  analytics(): AnalyticsService;
56
56
  audience(application: App, resourceType: ResourceType): IAudienceService;
57
57
  cache(): CacheService;
58
58
  conf(): ConfService;
59
+ data(): DataService;
59
60
  directory(): DirectoryService;
60
61
  http(): HttpService;
62
+ idiom(): IdiomService;
63
+ notify(): INotifyFramework;
61
64
  resource(application: App, resourceType?: ResourceType): IResourceService & IWebResourceService;
62
65
  behaviour(application: App, resourceType: ResourceType): IBehaviourService;
63
66
  rights(): RightService;
@@ -0,0 +1,10 @@
1
+ import { ISessionFramework } from './interfaces';
2
+ import { Session } from './Session';
3
+ export declare class SessionFramework implements ISessionFramework {
4
+ session: Session;
5
+ initialize(): Promise<void>;
6
+ login(email: string, password: string, rememberMe?: boolean, secureLocation?: boolean): Promise<void>;
7
+ logout(): Promise<void>;
8
+ }
9
+ /** The whole framework is a singleton. */
10
+ export declare const session: SessionFramework;
@@ -4,7 +4,7 @@ import { IOdeServices } from '../services/OdeServices';
4
4
  export declare class SessionService {
5
5
  private context;
6
6
  constructor(context: IOdeServices);
7
- get http(): import('../http/Service').HttpService;
7
+ get http(): import('../transport/Service').HttpService;
8
8
  get cache(): import('../cache/Service').CacheService;
9
9
  private get conf();
10
10
  /**
@@ -0,0 +1,34 @@
1
+ import { IEmailValidationInfos, IEmailValidationState, IMfaCodeState, IMfaInfos, IMobileValidationInfos, IMobileValidationState, IQuotaAndUsage, ISession, IUserDescription, IUserInfo, UserProfile } from './interfaces';
2
+ import { App } from '../globals';
3
+ export declare class Session implements ISession {
4
+ private _me;
5
+ private _currentLanguage;
6
+ private _notLoggedIn;
7
+ private _description?;
8
+ private _profile?;
9
+ get currentLanguage(): string;
10
+ get notLoggedIn(): boolean;
11
+ get description(): IUserDescription;
12
+ get avatarUrl(): string;
13
+ get user(): IUserInfo;
14
+ get currentApp(): App | null;
15
+ initialize(): Promise<void>;
16
+ private setCurrentModel;
17
+ hasWorkflow(workflowName: string): boolean;
18
+ hasRight(resource: any, right: any): boolean;
19
+ get latestQuotaAndUsage(): Promise<IQuotaAndUsage>;
20
+ private setCurrentLanguage;
21
+ private loadDefaultLanguage;
22
+ private loadDescription;
23
+ get profile(): UserProfile;
24
+ getUserProfile(): Promise<UserProfile>;
25
+ private loadUserLanguage;
26
+ getEmailValidationInfos(): Promise<IEmailValidationInfos>;
27
+ checkEmail(email: string): Promise<void>;
28
+ tryEmailValidation(code: string): Promise<IEmailValidationState>;
29
+ getMobileValidationInfos(): Promise<IMobileValidationInfos>;
30
+ checkMobile(mobile: string): Promise<void>;
31
+ tryMobileValidation(code: string): Promise<IMobileValidationState>;
32
+ getMfaInfos(): Promise<IMfaInfos>;
33
+ tryMfaCode(code: string): Promise<IMfaCodeState>;
34
+ }
@@ -1,5 +1,8 @@
1
1
  import { App } from '../globals';
2
2
  import { WidgetName } from '../widget/interfaces';
3
+ export declare abstract class SessionFrameworkFactory {
4
+ static instance(): ISessionFramework;
5
+ }
3
6
  export interface ISessionFramework {
4
7
  /** Initialize once before use. */
5
8
  initialize(): Promise<void>;
@@ -50,22 +53,22 @@ export interface ISession {
50
53
  * Send a 6-digits code to an email address to validate it.
51
54
  * => when resolved successfully, the email validation infos will switch to the "pending" state.
52
55
  */
53
- checkEmail(email: String): Promise<void>;
56
+ checkEmail(email: string): Promise<void>;
54
57
  /** Send a 6-digits code to the server to try validating the pending email address. */
55
- tryEmailValidation(code: String): Promise<IEmailValidationState>;
58
+ tryEmailValidation(code: string): Promise<IEmailValidationState>;
56
59
  /** Verify if the logged-in user has a valid phone number. */
57
60
  getMobileValidationInfos(): Promise<IMobileValidationInfos>;
58
61
  /**
59
62
  * Send a 6-digits code to a phone number to validate it.
60
63
  * => when resolved successfully, the phone number infos will switch to the "pending" state.
61
64
  */
62
- checkMobile(mobile: String): Promise<void>;
65
+ checkMobile(mobile: string): Promise<void>;
63
66
  /** Send a 6-digits code to the server to try validating the pending phone number. */
64
- tryMobileValidation(code: String): Promise<IMobileValidationState>;
67
+ tryMobileValidation(code: string): Promise<IMobileValidationState>;
65
68
  /** Start an MFA for the logged-in user, unless already pending or done. */
66
69
  getMfaInfos(): Promise<IMfaInfos>;
67
70
  /** Send a 6-digits code to the server to validate a pending MFA. */
68
- tryMfaCode(code: String): Promise<IMfaCodeState>;
71
+ tryMfaCode(code: string): Promise<IMfaCodeState>;
69
72
  }
70
73
  export type Hobby = {
71
74
  visibility: 'PRIVE' | 'PUBLIC';
@@ -4,7 +4,7 @@ export declare class ShareService {
4
4
  protected context: IOdeServices;
5
5
  constructor(context: IOdeServices);
6
6
  get directory(): import('../directory/Service').DirectoryService;
7
- get http(): import('../http/Service').HttpService;
7
+ get http(): import('../transport/Service').HttpService;
8
8
  get cache(): import('../cache/Service').CacheService;
9
9
  searchShareSubjects(app: string, resourceId: string, searchText: string): Promise<ShareSubject[]>;
10
10
  getShareMapping(app: string): Promise<ShareMapping>;
@@ -0,0 +1,9 @@
1
+ import { IHttp, ITransportFramework } from './interfaces';
2
+ declare class TransportFramework implements ITransportFramework {
3
+ private _http;
4
+ get http(): IHttp;
5
+ newHttpInstance(params?: any): IHttp;
6
+ }
7
+ /** The whole framework is a singleton. */
8
+ export declare const transport: TransportFramework;
9
+ export {};
@@ -0,0 +1,26 @@
1
+ import { IHttp, IHttpParams, IHttpResponse } from './interfaces';
2
+ export declare class Http implements IHttp {
3
+ private axios;
4
+ private _latestResponse;
5
+ constructor(params?: any);
6
+ setCdn(cdnUrl: string): void;
7
+ private toAxiosConfig;
8
+ private toCdnUrl;
9
+ private mapAxiosError;
10
+ private mapAxiosResponse;
11
+ get latestResponse(): IHttpResponse;
12
+ isResponseError(): boolean;
13
+ get<R = any>(url: string, params?: IHttpParams): Promise<R>;
14
+ post<R = any>(url: string, data?: any, params?: IHttpParams): Promise<R>;
15
+ postFile<R = any>(url: string, data: any, params?: IHttpParams): Promise<R>;
16
+ postJson<R = any>(url: string, json: any, params?: IHttpParams): Promise<R>;
17
+ put<R = any>(url: string, data?: any, params?: IHttpParams): Promise<R>;
18
+ putJson<R = any>(url: string, json: any, params?: IHttpParams): Promise<R>;
19
+ delete<R = any>(url: string, params?: IHttpParams): Promise<R>;
20
+ deleteJson<R = any>(url: string, json: any): Promise<R>;
21
+ getScript<R = any>(url: string, params?: IHttpParams, variableName?: string): Promise<R>;
22
+ loadScript(url: string, params?: IHttpParams): Promise<void>;
23
+ }
24
+ /**
25
+ * Promisified HTTP
26
+ */
@@ -1,4 +1,3 @@
1
- import { AxiosInstance } from 'axios';
2
1
  import { IOdeServices } from '../services/OdeServices';
3
2
  import { IHttp, IHttpParams, IHttpResponse } from './interfaces';
4
3
  export declare class HttpService implements IHttp {
@@ -7,9 +6,8 @@ export declare class HttpService implements IHttp {
7
6
  private baseUrl?;
8
7
  private headers;
9
8
  private _latestResponse;
10
- constructor(context: IOdeServices);
9
+ constructor(context: IOdeServices, params?: any);
11
10
  private fixBaseUrl;
12
- useAxiosInstance(axiosInstance: AxiosInstance): this;
13
11
  useBaseUrl(baseUrl?: string): this;
14
12
  useHeaders(headers: Record<string, string>): this;
15
13
  setCdn(cdnUrl: string): void;
@@ -1,3 +1,6 @@
1
+ export declare abstract class TransportFrameworkFactory {
2
+ static instance(): ITransportFramework;
3
+ }
1
4
  export interface ITransportFramework {
2
5
  /** Default instance. */
3
6
  readonly http: IHttp;
@@ -0,0 +1,31 @@
1
+ import { IWidgetFramework, IWidget, WidgetUserPref, WidgetName } from './interfaces';
2
+ import { IWidgetModel, WidgetPosition } from '../session/interfaces';
3
+ export declare class WidgetFramework implements IWidgetFramework {
4
+ private _initialized?;
5
+ private _widgets;
6
+ initialize(version: string | null, cdnDomain: string | null): Promise<void>;
7
+ get list(): Widget[];
8
+ lookup(widgetName: string): IWidget | undefined;
9
+ lookupDefaultPosition(widgetName: WidgetName): WidgetPosition | undefined;
10
+ private _userPrefs;
11
+ get userPrefs(): IWidgetUserPrefs;
12
+ private loadUserPrefs;
13
+ saveUserPrefs(): Promise<void>;
14
+ private applyUserPrefs;
15
+ }
16
+ declare class Widget implements IWidget {
17
+ private _platformConf;
18
+ constructor(_platformConf: IWidgetModel);
19
+ get platformConf(): IWidgetModel;
20
+ private _schoolConf;
21
+ get schoolConf(): {};
22
+ private _userPref;
23
+ get userPref(): WidgetUserPref;
24
+ applyUserPref(pref: WidgetUserPref): void;
25
+ }
26
+ interface IWidgetUserPrefs {
27
+ [widgetName: string]: WidgetUserPref;
28
+ }
29
+ /** The whole framework is a singleton. */
30
+ export declare const widgets: WidgetFramework;
31
+ export {};
@@ -1,4 +1,3 @@
1
- import { IOdeServices } from '../services/OdeServices';
2
1
  export interface ILastInfosModel {
3
2
  date: string;
4
3
  shared: [];
@@ -10,9 +9,6 @@ export interface ILastInfosModel {
10
9
  _id: number;
11
10
  }
12
11
  export declare class LastInfosWidget {
13
- protected context: IOdeServices;
14
- constructor(context: IOdeServices);
15
- get http(): import('../http/Service').HttpService;
16
12
  loadInfos(maxResults: number): Promise<ILastInfosModel[]>;
17
13
  getMaxResults(): Promise<number>;
18
14
  setMaxResults(maxResults: number): Promise<void>;
@@ -20,6 +20,9 @@ export declare const WIDGET_NAME: {
20
20
  readonly SCHOOL: "school-widget";
21
21
  };
22
22
  export type WidgetName = (typeof WIDGET_NAME)[keyof typeof WIDGET_NAME];
23
+ export declare abstract class WidgetFrameworkFactory {
24
+ static instance(): IWidgetFramework;
25
+ }
23
26
  export interface IWidgetFramework {
24
27
  /** Loads the widget configuration. */
25
28
  initialize(version: string | null, cdnDomain: string | null): Promise<void>;
package/package.json CHANGED
@@ -1,7 +1,13 @@
1
1
  {
2
2
  "name": "@edifice.io/client",
3
- "version": "2.1.0-develop-enabling.0",
3
+ "version": "2.1.0-develop-b2school.20250204153130",
4
4
  "description": "Edifice TypeScript Client",
5
+ "keywords": [
6
+ "typescript",
7
+ "client",
8
+ "edifice",
9
+ "frontend"
10
+ ],
5
11
  "homepage": "https://github.com/edificeio/edifice-frontend-framework/tree/main/packages/client#readme",
6
12
  "bugs": {
7
13
  "url": "https://github.com/edificeio/edifice-frontend-framework/issues"
@@ -30,24 +36,28 @@
30
36
  "dependencies": {
31
37
  "axios": "^1.7.7",
32
38
  "core-js": "^3.35.1",
33
- "@edifice.io/utilities": "2.1.0-develop-enabling.0"
39
+ "@edifice.io/utilities": "2.1.0-develop-b2school.20250204153130"
34
40
  },
35
41
  "devDependencies": {
36
42
  "@types/jasmine": "5.1.4",
37
- "@types/node": "catalog:",
43
+ "@types/node": "^22.9.1",
38
44
  "jasmine": "5.1.0",
39
45
  "rimraf": "5.0.5",
40
- "rollup-plugin-visualizer": "catalog:",
46
+ "rollup-plugin-visualizer": "5.12.0",
41
47
  "typedoc": "0.25.7",
42
48
  "typedoc-plugin-markdown": "3.17.1",
43
- "vite": "catalog:",
44
- "vite-plugin-dts": "catalog:"
49
+ "vite": "^5.4.11",
50
+ "vite-plugin-dts": "^4.1.0",
51
+ "@edifice.io/config": "2.1.0-develop-b2school.20250204153130"
45
52
  },
46
53
  "scripts": {
47
54
  "build": "vite build",
48
55
  "docs": "npx rimraf ./docs/ && npx typedoc src/ts/index.ts --excludePrivate --disableSources --plugin typedoc-plugin-markdown",
56
+ "fix": "eslint --fix --report-unused-disable-directives --max-warnings 0",
49
57
  "format": "pnpm run format:write && pnpm run format:check",
50
58
  "format:check": "npx prettier --check \"src/ts/**/*.ts\"",
51
- "format:write": "npx prettier --write \"src/ts/**/*.ts\""
59
+ "format:write": "npx prettier --write \"src/ts/**/*.ts\"",
60
+ "lint": "eslint",
61
+ "test": "vitest"
52
62
  }
53
63
  }