@azure-net/kit 0.7.0 → 0.8.5

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 (60) hide show
  1. package/dist/core/delivery/index.d.ts +3 -0
  2. package/dist/core/delivery/index.js +3 -0
  3. package/dist/core/{provider/dependencies → delivery/injectableDependencies}/ErrorHandler.d.ts +1 -1
  4. package/dist/core/{provider/dependencies → delivery/injectableDependencies}/ErrorHandler.js +1 -1
  5. package/dist/core/delivery/serverAction/CreateServerAction.d.ts +12 -0
  6. package/dist/core/delivery/serverAction/CreateServerAction.js +12 -0
  7. package/dist/core/delivery/serverAction/index.d.ts +1 -0
  8. package/dist/core/delivery/serverAction/index.js +1 -0
  9. package/dist/core/index.d.ts +4 -3
  10. package/dist/core/index.js +4 -3
  11. package/dist/core/infra/resource/BaseResource.d.ts +6 -6
  12. package/dist/core/infra/resource/BaseResource.js +1 -1
  13. package/dist/core/infra/response/BaseResponse.d.ts +5 -1
  14. package/dist/core/infra/response/BaseResponse.js +13 -1
  15. package/dist/core/{boundaryProvider → shared/boundaryProvider}/Provider.js +1 -1
  16. package/dist/core/shared/classMirror/ClassMirror.d.ts +3 -0
  17. package/dist/core/{application/ProxyResourceService.js → shared/classMirror/ClassMirror.js} +4 -6
  18. package/dist/core/shared/classMirror/index.d.ts +1 -0
  19. package/dist/core/shared/classMirror/index.js +1 -0
  20. package/dist/edges/index.d.ts +1 -1
  21. package/dist/edges/index.js +1 -1
  22. package/dist/lib/eventModifiers/EventModifiers.d.ts +16 -5
  23. package/dist/lib/eventModifiers/EventModifiers.js +29 -20
  24. package/package.json +7 -15
  25. package/dist/core/application/ProxyResourceService.d.ts +0 -4
  26. package/dist/core/application/index.d.ts +0 -1
  27. package/dist/core/application/index.js +0 -1
  28. package/dist/core/provider/ActionsProvider.d.ts +0 -13
  29. package/dist/core/provider/ActionsProvider.js +0 -29
  30. package/dist/core/provider/index.d.ts +0 -2
  31. package/dist/core/provider/index.js +0 -2
  32. /package/dist/core/{provider/dependencies → delivery/injectableDependencies}/AsyncHelpers.d.ts +0 -0
  33. /package/dist/core/{provider/dependencies → delivery/injectableDependencies}/AsyncHelpers.js +0 -0
  34. /package/dist/core/{provider/dependencies → delivery/injectableDependencies}/index.d.ts +0 -0
  35. /package/dist/core/{provider/dependencies → delivery/injectableDependencies}/index.js +0 -0
  36. /package/dist/core/{boundaryProvider → shared/boundaryProvider}/Provider.d.ts +0 -0
  37. /package/dist/core/{boundaryProvider → shared/boundaryProvider}/index.d.ts +0 -0
  38. /package/dist/core/{boundaryProvider → shared/boundaryProvider}/index.js +0 -0
  39. /package/dist/core/{eventBus → shared/eventBus}/EventBus.d.ts +0 -0
  40. /package/dist/core/{eventBus → shared/eventBus}/EventBus.js +0 -0
  41. /package/dist/core/{eventBus → shared/eventBus}/index.d.ts +0 -0
  42. /package/dist/core/{eventBus → shared/eventBus}/index.js +0 -0
  43. /package/dist/core/{request → shared/request}/BaseRequest.d.ts +0 -0
  44. /package/dist/core/{request → shared/request}/BaseRequest.js +0 -0
  45. /package/dist/core/{request → shared/request}/index.d.ts +0 -0
  46. /package/dist/core/{request → shared/request}/index.js +0 -0
  47. /package/dist/core/{request → shared/request}/rules/Rules.d.ts +0 -0
  48. /package/dist/core/{request → shared/request}/rules/Rules.js +0 -0
  49. /package/dist/core/{request → shared/request}/rules/index.d.ts +0 -0
  50. /package/dist/core/{request → shared/request}/rules/index.js +0 -0
  51. /package/dist/core/{request → shared/request}/rules/messages/En.d.ts +0 -0
  52. /package/dist/core/{request → shared/request}/rules/messages/En.js +0 -0
  53. /package/dist/core/{request → shared/request}/rules/messages/Ru.d.ts +0 -0
  54. /package/dist/core/{request → shared/request}/rules/messages/Ru.js +0 -0
  55. /package/dist/core/{request → shared/request}/rules/messages/WithI18n.d.ts +0 -0
  56. /package/dist/core/{request → shared/request}/rules/messages/WithI18n.js +0 -0
  57. /package/dist/core/{request → shared/request}/rules/messages/index.d.ts +0 -0
  58. /package/dist/core/{request → shared/request}/rules/messages/index.js +0 -0
  59. /package/dist/core/{request → shared/request}/rules/messages/types.d.ts +0 -0
  60. /package/dist/core/{request → shared/request}/rules/messages/types.js +0 -0
@@ -0,0 +1,3 @@
1
+ export * from '../../edges/index.js';
2
+ export * from './injectableDependencies/index.js';
3
+ export * from './serverAction/index.js';
@@ -0,0 +1,3 @@
1
+ export * from '../../edges/index.js';
2
+ export * from './injectableDependencies/index.js';
3
+ export * from './serverAction/index.js';
@@ -1,4 +1,4 @@
1
- import { BaseRequest, type RequestErrors } from '../../request/index.js';
1
+ import { BaseRequest, type RequestErrors } from '../../shared/request/index.js';
2
2
  import { HttpServiceError } from '../../infra/httpService/index.js';
3
3
  export type AppErrorType = 'http' | 'request' | 'app' | 'abort';
4
4
  export interface AppError<T = unknown, D = never> {
@@ -1,4 +1,4 @@
1
- import { BaseRequest } from '../../request/index.js';
1
+ import { BaseRequest } from '../../shared/request/index.js';
2
2
  import { HttpServiceError } from '../../infra/httpService/index.js';
3
3
  export const parseHttpError = (error) => {
4
4
  return {
@@ -0,0 +1,12 @@
1
+ import { RequestContext } from '../../../edges/context/index.js';
2
+ import { error, fail, redirect } from '@sveltejs/kit';
3
+ type Deps = {
4
+ context: Required<ReturnType<typeof RequestContext.current>>;
5
+ utils: {
6
+ fail: typeof fail;
7
+ redirect: typeof redirect;
8
+ error: typeof error;
9
+ };
10
+ };
11
+ export declare const createServerAction: <T>(factory: (args: Deps) => T) => (() => T);
12
+ export {};
@@ -0,0 +1,12 @@
1
+ import { RequestContext } from '../../../edges/context/index.js';
2
+ import { browser } from '$app/environment';
3
+ import { error, fail, redirect } from '@sveltejs/kit';
4
+ export const createServerAction = (factory) => {
5
+ return () => {
6
+ if (browser) {
7
+ throw Error('Do not use actions on client side');
8
+ }
9
+ const context = RequestContext.current();
10
+ return factory({ context, utils: { fail, redirect, error } });
11
+ };
12
+ };
@@ -0,0 +1 @@
1
+ export * from './CreateServerAction.js';
@@ -0,0 +1 @@
1
+ export * from './CreateServerAction.js';
@@ -3,6 +3,7 @@ export * from './infra/resource/index.js';
3
3
  export * from './infra/httpService/index.js';
4
4
  export * from './infra/datasource/index.js';
5
5
  export * from './infra/query/index.js';
6
- export * from './application/index.js';
7
- export * from './request/index.js';
8
- export * from './boundaryProvider/index.js';
6
+ export * from './delivery/index.js';
7
+ export * from './shared/request/index.js';
8
+ export * from './shared/classMirror/index.js';
9
+ export * from './shared/boundaryProvider/index.js';
@@ -3,6 +3,7 @@ export * from './infra/resource/index.js';
3
3
  export * from './infra/httpService/index.js';
4
4
  export * from './infra/datasource/index.js';
5
5
  export * from './infra/query/index.js';
6
- export * from './application/index.js';
7
- export * from './request/index.js';
8
- export * from './boundaryProvider/index.js';
6
+ export * from './delivery/index.js';
7
+ export * from './shared/request/index.js';
8
+ export * from './shared/classMirror/index.js';
9
+ export * from './shared/boundaryProvider/index.js';
@@ -1,10 +1,10 @@
1
- type IResource<T> = {
1
+ export type PlainObject<T> = {
2
2
  [K in keyof T as K extends string ? (T[K] extends (...args: unknown[]) => unknown ? never : K) : never]: T[K];
3
3
  };
4
- export interface IBaseResource {
5
- toPlainObject(): IResource<this>;
4
+ export interface IDTOMapper<TOutput = never> {
5
+ toPlainObject(): [TOutput] extends [never] ? PlainObject<this> : TOutput;
6
6
  }
7
- export declare class Resource implements IBaseResource {
8
- toPlainObject(): IResource<this>;
7
+ export type Collection<T> = T[];
8
+ export declare class DTOMapper<TOutput = never> implements IDTOMapper<TOutput> {
9
+ toPlainObject(): [TOutput] extends [never] ? PlainObject<this> : TOutput;
9
10
  }
10
- export {};
@@ -1,4 +1,4 @@
1
- export class Resource {
1
+ export class DTOMapper {
2
2
  toPlainObject() {
3
3
  return { ...this };
4
4
  }
@@ -7,14 +7,18 @@ type ResponseBuilderState<TData, TMeta = unknown> = {
7
7
  data: TData;
8
8
  meta: TMeta;
9
9
  };
10
+ type ArrayElement<T> = T extends readonly (infer E)[] ? E : never;
10
11
  export declare class ResponseBuilder<TData = unknown, TMeta = object, TWrapper = TData> {
11
12
  protected readonly response: HttpServiceResponse<TWrapper>;
12
13
  protected state: ResponseBuilderState<TData, TMeta>;
13
14
  constructor(response: HttpServiceResponse<TWrapper>);
14
15
  protected unwrapData(data: TWrapper): TData;
15
- toResource<TResource>(ResourceClass: new (data: TData) => {
16
+ mapUsing<TResource>(ResourceClass: new (data: TData) => {
16
17
  toPlainObject(): TResource;
17
18
  }): ResponseBuilder<TResource, TMeta, TWrapper>;
19
+ mapCollectionUsing<TResource>(ResourceClass: new (data: ArrayElement<TData>) => {
20
+ toPlainObject(): TResource;
21
+ }): ResponseBuilder<TResource[], TMeta, TWrapper>;
18
22
  extract<TPath extends DeepKeys<TData>>(path: TPath): ResponseBuilder<DeepValue<TData, TPath>, TMeta, TWrapper>;
19
23
  addMeta<TNewMeta extends Record<string, unknown>>(metaData: TNewMeta | ((current: TMeta) => TNewMeta)): ResponseBuilder<TData, TMeta & TNewMeta, TWrapper>;
20
24
  getData(): TData;
@@ -12,7 +12,7 @@ export class ResponseBuilder {
12
12
  unwrapData(data) {
13
13
  return data;
14
14
  }
15
- toResource(ResourceClass) {
15
+ mapUsing(ResourceClass) {
16
16
  const resource = new ResourceClass(this.state.data);
17
17
  const newResponse = new ResponseBuilder(this.response);
18
18
  newResponse.state = {
@@ -21,6 +21,18 @@ export class ResponseBuilder {
21
21
  };
22
22
  return newResponse;
23
23
  }
24
+ mapCollectionUsing(ResourceClass) {
25
+ if (!Array.isArray(this.state.data)) {
26
+ throw new Error('toCollection can only be used when data is an array');
27
+ }
28
+ const collection = this.state.data.map((dataElement) => new ResourceClass(dataElement).toPlainObject());
29
+ const newResponse = new ResponseBuilder(this.response);
30
+ newResponse.state = {
31
+ ...this.state,
32
+ data: collection
33
+ };
34
+ return newResponse;
35
+ }
24
36
  extract(path) {
25
37
  const keys = path.split('.');
26
38
  let result = this.state.data;
@@ -1,4 +1,4 @@
1
- import { RequestContext } from '../../edges/context/index.js';
1
+ import { RequestContext } from '../../../edges/context/index.js';
2
2
  import { browser } from '$app/environment';
3
3
  const clientCache = new Map();
4
4
  const factoriesCache = new WeakMap();
@@ -0,0 +1,3 @@
1
+ export declare class ClassMirror<Target extends object> {
2
+ constructor(target: Target);
3
+ }
@@ -1,8 +1,6 @@
1
- export class ProxyResourceService {
2
- repository;
3
- constructor(repo) {
4
- this.repository = repo;
5
- const proto = Object.getPrototypeOf(repo);
1
+ export class ClassMirror {
2
+ constructor(target) {
3
+ const proto = Object.getPrototypeOf(target);
6
4
  for (const name of Object.getOwnPropertyNames(proto)) {
7
5
  if (name === 'constructor')
8
6
  continue;
@@ -12,7 +10,7 @@ export class ProxyResourceService {
12
10
  if (name in this)
13
11
  continue;
14
12
  Object.defineProperty(this, name, {
15
- value: descriptor.value.bind(repo),
13
+ value: descriptor.value.bind(target),
16
14
  configurable: true,
17
15
  writable: true
18
16
  });
@@ -0,0 +1 @@
1
+ export * from './ClassMirror.js';
@@ -0,0 +1 @@
1
+ export * from './ClassMirror.js';
@@ -1 +1 @@
1
- export { createProvider, createProviderFactory } from 'edges-svelte';
1
+ export { createPresenter, createPresenterFactory, createStore, createStoreFactory } from 'edges-svelte';
@@ -1 +1 @@
1
- export { createProvider, createProviderFactory } from 'edges-svelte';
1
+ export { createPresenter, createPresenterFactory, createStore, createStoreFactory } from 'edges-svelte';
@@ -1,6 +1,17 @@
1
1
  export type EventHandler<E = Event> = (event: E) => void;
2
- export declare const preventDefault: <E extends Event = Event>(fn: EventHandler<E>) => EventHandler<E>;
3
- export declare const stopPropagation: <E extends Event = Event>(fn: EventHandler<E>) => EventHandler<E>;
4
- export declare const stopImmediatePropagation: <E extends Event = Event>(fn: EventHandler<E>) => EventHandler<E>;
5
- export declare const once: <E extends Event = Event>(fn: EventHandler<E>) => EventHandler<E>;
6
- export declare const compose: <E extends Event = Event>(...wrappers: Array<(fn: EventHandler<E>) => EventHandler<E>>) => (fn: EventHandler<E>) => EventHandler<E>;
2
+ interface EventModifier<E extends Event = Event> {
3
+ (fn: () => void): EventHandler<E>;
4
+ prevent: EventModifier<E>;
5
+ stop: EventModifier<E>;
6
+ immediate: EventModifier<E>;
7
+ once: EventModifier<E>;
8
+ preventDefault: EventModifier<E>;
9
+ stopPropagation: EventModifier<E>;
10
+ stopImmediatePropagation: EventModifier<E>;
11
+ }
12
+ export declare const prevent: EventModifier<Event>;
13
+ export declare const stop: EventModifier<Event>;
14
+ export declare const immediate: EventModifier<Event>;
15
+ export declare const once: EventModifier<Event>;
16
+ export declare const event: EventModifier<Event>;
17
+ export {};
@@ -1,22 +1,31 @@
1
- export const preventDefault = (fn) => (event) => {
2
- event.preventDefault();
3
- fn(event);
4
- };
5
- export const stopPropagation = (fn) => (event) => {
6
- event.stopPropagation();
7
- fn(event);
8
- };
9
- export const stopImmediatePropagation = (fn) => (event) => {
10
- event.stopImmediatePropagation();
11
- fn(event);
12
- };
13
- export const once = (fn) => {
14
- let called = false;
15
- return (event) => {
16
- if (!called) {
17
- called = true;
18
- fn(event);
1
+ const createEventModifier = (modifiers = new Set()) => {
2
+ return new Proxy(() => { }, {
3
+ get(_, prop) {
4
+ return createEventModifier(new Set([...modifiers, prop]));
5
+ },
6
+ apply(_, __, [fn]) {
7
+ let executed = false;
8
+ return (event) => {
9
+ if (modifiers.has('once') && executed)
10
+ return;
11
+ if (modifiers.has('prevent') || modifiers.has('preventDefault')) {
12
+ event.preventDefault();
13
+ }
14
+ if (modifiers.has('stop') || modifiers.has('stopPropagation')) {
15
+ event.stopPropagation();
16
+ }
17
+ if (modifiers.has('immediate') || modifiers.has('stopImmediatePropagation')) {
18
+ event.stopImmediatePropagation();
19
+ }
20
+ if (modifiers.has('once'))
21
+ executed = true;
22
+ fn();
23
+ };
19
24
  }
20
- };
25
+ });
21
26
  };
22
- export const compose = (...wrappers) => (fn) => wrappers.reduce((acc, wrap) => wrap(acc), fn);
27
+ export const prevent = createEventModifier(new Set(['prevent']));
28
+ export const stop = createEventModifier(new Set(['stop']));
29
+ export const immediate = createEventModifier(new Set(['immediate']));
30
+ export const once = createEventModifier(new Set(['once']));
31
+ export const event = createEventModifier();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure-net/kit",
3
- "version": "0.7.0",
3
+ "version": "0.8.5",
4
4
  "files": [
5
5
  "dist",
6
6
  "!dist/**/*.test.*",
@@ -26,20 +26,12 @@
26
26
  "svelte": "./dist/lib/index.js"
27
27
  },
28
28
  "./request/rules": {
29
- "types": "./dist/core/request/rules/index.d.ts",
30
- "svelte": "./dist/core/request/rules/index.js"
29
+ "types": "./dist/core/shared/request/rules/index.d.ts",
30
+ "svelte": "./dist/core/shared/request/rules/index.js"
31
31
  },
32
32
  "./request/messages": {
33
- "types": "./dist/core/request/rules/messages/index.d.ts",
34
- "svelte": "./dist/core/request/rules/messages/index.js"
35
- },
36
- "./provider": {
37
- "types": "./dist/core/provider/index.d.ts",
38
- "svelte": "./dist/core/provider/index.js"
39
- },
40
- "./provider/deps": {
41
- "types": "./dist/core/provider/dependencies/index.d.ts",
42
- "svelte": "./dist/core/provider/dependencies/index.js"
33
+ "types": "./dist/core/shared/request/rules/messages/index.d.ts",
34
+ "svelte": "./dist/core/shared/request/rules/messages/index.js"
43
35
  },
44
36
  "./edges": {
45
37
  "types": "./dist/edges/index.d.ts",
@@ -112,8 +104,8 @@
112
104
  ],
113
105
  "dependencies": {
114
106
  "azure-net-tools": "^1.0.8",
115
- "edges-svelte": "^1.0.4",
116
- "edges-svelte-translations": "^0.1.2",
107
+ "edges-svelte": "^1.1.0",
108
+ "edges-svelte-translations": "^0.2.0",
117
109
  "ky": "^1.8.1",
118
110
  "libphonenumber-js": "^1.12.9"
119
111
  },
@@ -1,4 +0,0 @@
1
- export declare class ProxyResourceService<TRepo extends object> {
2
- protected repository: TRepo;
3
- constructor(repo: TRepo);
4
- }
@@ -1 +0,0 @@
1
- export * from './ProxyResourceService.js';
@@ -1 +0,0 @@
1
- export * from './ProxyResourceService.js';
@@ -1,13 +0,0 @@
1
- import { RequestContext } from '../../edges/context/index.js';
2
- import { error, fail, redirect } from '@sveltejs/kit';
3
- type Deps = {
4
- context: Required<ReturnType<typeof RequestContext.current>>;
5
- utils: {
6
- fail: typeof fail;
7
- redirect: typeof redirect;
8
- error: typeof error;
9
- };
10
- };
11
- export declare const createActionsProvider: <T, I extends Record<string, unknown> = Record<string, unknown>>(name: string, factory: (args: I & Deps) => T, inject?: I) => (() => T);
12
- export declare const createActionsProviderFactory: <I extends Record<string, unknown>>(inject: I) => <T>(name: string, factory: (args: I & Deps) => T) => () => T;
13
- export {};
@@ -1,29 +0,0 @@
1
- import { RequestContext } from '../../edges/context/index.js';
2
- import { browser } from '$app/environment';
3
- import { error, fail, redirect } from '@sveltejs/kit';
4
- export const createActionsProvider = (name, factory, inject) => {
5
- const cacheKey = name;
6
- return () => {
7
- if (browser) {
8
- throw Error('Do not use actions on client side');
9
- }
10
- const context = RequestContext.current();
11
- if (!context.data.providers) {
12
- context.data.providers = new Map();
13
- }
14
- const contextMap = context.data.providers;
15
- if (cacheKey && contextMap.has(cacheKey)) {
16
- return contextMap.get(cacheKey);
17
- }
18
- const instance = factory({ ...inject, context, utils: { fail, redirect, error } });
19
- if (cacheKey) {
20
- contextMap.set(cacheKey, instance);
21
- }
22
- return instance;
23
- };
24
- };
25
- export const createActionsProviderFactory = (inject) => {
26
- return function createInjectedProvider(name, factory) {
27
- return createActionsProvider(name, factory, inject);
28
- };
29
- };
@@ -1,2 +0,0 @@
1
- export * from './ActionsProvider.js';
2
- export * from '../../edges/index.js';
@@ -1,2 +0,0 @@
1
- export * from './ActionsProvider.js';
2
- export * from '../../edges/index.js';
File without changes