patron-oop 1.45.0 → 1.46.0
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 +12 -0
- package/dist/patron.cjs +106 -35
- package/dist/patron.cjs.map +1 -1
- package/dist/patron.d.ts +40 -1
- package/dist/patron.js +103 -36
- package/dist/patron.js.map +1 -1
- package/dist/patron.min.js +1 -1
- package/dist/patron.min.mjs +1 -1
- package/dist/patron.min.mjs.map +1 -1
- package/dist/patron.mjs +103 -36
- package/dist/patron.mjs.map +1 -1
- package/docs/README.md +3 -0
- package/docs/assets/css/base.css +42 -0
- package/docs/assets/favicon/android-icon-144x144.png +0 -0
- package/docs/assets/favicon/android-icon-192x192.png +0 -0
- package/docs/assets/favicon/android-icon-36x36.png +0 -0
- package/docs/assets/favicon/android-icon-48x48.png +0 -0
- package/docs/assets/favicon/android-icon-72x72.png +0 -0
- package/docs/assets/favicon/android-icon-96x96.png +0 -0
- package/docs/assets/favicon/apple-icon-114x114.png +0 -0
- package/docs/assets/favicon/apple-icon-120x120.png +0 -0
- package/docs/assets/favicon/apple-icon-144x144.png +0 -0
- package/docs/assets/favicon/apple-icon-152x152.png +0 -0
- package/docs/assets/favicon/apple-icon-180x180.png +0 -0
- package/docs/assets/favicon/apple-icon-57x57.png +0 -0
- package/docs/assets/favicon/apple-icon-60x60.png +0 -0
- package/docs/assets/favicon/apple-icon-72x72.png +0 -0
- package/docs/assets/favicon/apple-icon-76x76.png +0 -0
- package/docs/assets/favicon/apple-icon-precomposed.png +0 -0
- package/docs/assets/favicon/apple-icon.png +0 -0
- package/docs/assets/favicon/browserconfig.xml +2 -0
- package/docs/assets/favicon/favicon-16x16.png +0 -0
- package/docs/assets/favicon/favicon-32x32.png +0 -0
- package/docs/assets/favicon/favicon-96x96.png +0 -0
- package/docs/assets/favicon/favicon.ico +0 -0
- package/docs/assets/favicon/manifest.json +41 -0
- package/docs/assets/favicon/ms-icon-144x144.png +0 -0
- package/docs/assets/favicon/ms-icon-150x150.png +0 -0
- package/docs/assets/favicon/ms-icon-310x310.png +0 -0
- package/docs/assets/favicon/ms-icon-70x70.png +0 -0
- package/docs/assets/img/404.jpg +0 -0
- package/docs/assets/img/angular_16.jpg +0 -0
- package/docs/assets/img/angular_32.jpg +0 -0
- package/docs/assets/img/eo_16.jpg +0 -0
- package/docs/assets/img/eo_big.png +0 -0
- package/docs/assets/img/github_16.jpg +0 -0
- package/docs/assets/img/logo.jpg +0 -0
- package/docs/assets/img/philosofy/observable.jpg +0 -0
- package/docs/assets/img/philosofy/responsible.jpg +0 -0
- package/docs/assets/img/philosofy/result.jpg +0 -0
- package/docs/assets/img/philosofy/tell.jpg +0 -0
- package/docs/assets/img/react_16.jpg +0 -0
- package/docs/assets/img/react_32.jpg +0 -0
- package/docs/assets/img/vue_16.jpg +0 -0
- package/docs/assets/img/vue_32.jpg +0 -0
- package/docs/assets/js/components/linkDynamic.mjs +11 -0
- package/docs/assets/js/components/linkReloadable.mjs +13 -0
- package/docs/assets/js/entrypoints/compatibility.mjs +31 -0
- package/docs/assets/js/entrypoints/components.mjs +2 -0
- package/docs/assets/js/entrypoints/examples.mjs +25 -0
- package/docs/assets/js/entrypoints/factory.mjs +20 -0
- package/docs/assets/js/entrypoints/guest.mjs +61 -0
- package/docs/assets/js/entrypoints/index.mjs +110 -0
- package/docs/assets/js/entrypoints/integrations.mjs +36 -0
- package/docs/assets/js/entrypoints/patron.mjs +46 -0
- package/docs/assets/js/entrypoints/source.mjs +76 -0
- package/docs/assets/js/entrypoints/terminology.mjs +51 -0
- package/docs/assets/js/entrypoints/utils.mjs +61 -0
- package/docs/assets/js/lib/StyleFetched.mjs +14 -0
- package/docs/assets/js/routing.mjs +110 -0
- package/docs/assets/schemes/dip.html +28 -0
- package/docs/favicon.ico +0 -0
- package/docs/index-dev.html +346 -0
- package/docs/index.html +346 -0
- package/docs/manifest.json +41 -0
- package/docs/pages/404.html +9 -0
- package/docs/pages/common/layout.html +17 -0
- package/docs/pages/compatibility/dip.html +82 -0
- package/docs/pages/compatibility/elegant-objects.html +373 -0
- package/docs/pages/compatibility/layout.html +17 -0
- package/docs/pages/examples/errors.html +167 -0
- package/docs/pages/examples/index.html +10 -0
- package/docs/pages/examples.html +41 -0
- package/docs/pages/factory/index.html +18 -0
- package/docs/pages/factory.html +36 -0
- package/docs/pages/guest/guest-applied.html +51 -0
- package/docs/pages/guest/guest-cast.html +219 -0
- package/docs/pages/guest/guest-disposable.html +147 -0
- package/docs/pages/guest/guest-executor-applied.html +65 -0
- package/docs/pages/guest/guest-object.html +101 -0
- package/docs/pages/guest/guest-pool.html +107 -0
- package/docs/pages/guest/guest-sync.html +66 -0
- package/docs/pages/guest/index.html +115 -0
- package/docs/pages/guest.html +59 -0
- package/docs/pages/index.html +72 -0
- package/docs/pages/integrations/angular.html +5 -0
- package/docs/pages/integrations/layout.html +17 -0
- package/docs/pages/integrations/react.html +7 -0
- package/docs/pages/integrations/vue.html +102 -0
- package/docs/pages/patron/index.html +140 -0
- package/docs/pages/patron/patron-applied.html +66 -0
- package/docs/pages/patron/patron-executor-applied.html +94 -0
- package/docs/pages/patron/patron-once.html +110 -0
- package/docs/pages/patron/patron-pool.html +99 -0
- package/docs/pages/patron.html +50 -0
- package/docs/pages/philosofy.html +210 -0
- package/docs/pages/source/index.html +167 -0
- package/docs/pages/source/source-active.html +113 -0
- package/docs/pages/source/source-all.html +129 -0
- package/docs/pages/source/source-applied.html +73 -0
- package/docs/pages/source/source-dynamic.html +93 -0
- package/docs/pages/source/source-executor-applied.html +64 -0
- package/docs/pages/source/source-map.html +192 -0
- package/docs/pages/source/source-once.html +73 -0
- package/docs/pages/source/source-race.html +171 -0
- package/docs/pages/source/source-sequence.html +160 -0
- package/docs/pages/source/source-with-pool.html +102 -0
- package/docs/pages/source/source.html +167 -0
- package/docs/pages/source.html +68 -0
- package/docs/pages/terminology/guest.html +14 -0
- package/docs/pages/terminology/index.html +6 -0
- package/docs/pages/terminology/introduction.html +25 -0
- package/docs/pages/terminology/patron.html +10 -0
- package/docs/pages/terminology/source.html +55 -0
- package/docs/pages/terminology/visitor.html +19 -0
- package/docs/pages/terminology.html +53 -0
- package/docs/pages/utils/give.html +47 -0
- package/docs/pages/utils/index.html +24 -0
- package/docs/pages/utils/is-guest-aware.html +22 -0
- package/docs/pages/utils/is-guest.html +21 -0
- package/docs/pages/utils/is-patron-in-pools.html +53 -0
- package/docs/pages/utils/private.html +44 -0
- package/docs/pages/utils/remove-patron-from-pools.html +57 -0
- package/docs/pages/utils/value.html +47 -0
- package/docs/pages/utils.html +61 -0
- package/eslint.config.mjs +6 -0
- package/package.json +1 -1
- package/src/Patron/PatronApplied.ts +22 -0
- package/src/Patron/PatronExecutorApplied.ts +25 -0
- package/src/index.ts +4 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Представление</h1>
|
2
|
+
|
3
|
+
<a
|
4
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L14"
|
5
|
+
target="_blank"
|
6
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
7
|
+
>
|
8
|
+
<img
|
9
|
+
src="./assets/img/github_16.jpg"
|
10
|
+
width="16"
|
11
|
+
height="16"
|
12
|
+
/>
|
13
|
+
introduction на GitHub
|
14
|
+
</a>
|
15
|
+
|
16
|
+
<p class="text-gray-600 text-lg mb-4">
|
17
|
+
Объекты-посетители умеют представляться. Это значит, что у таких объектов есть
|
18
|
+
метод introduction(), который на текущий момент может вернуть только два
|
19
|
+
строковых значения: guest или patron
|
20
|
+
</p>
|
21
|
+
|
22
|
+
<p class="text-gray-600 text-lg mb-4">
|
23
|
+
По-умолчанию посетитель считается гостем, например если посетитель - это
|
24
|
+
функция, или если посетитель является объектом без метода introduction()
|
25
|
+
</p>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Патрон</h1>
|
2
|
+
|
3
|
+
<p class="text-gray-600 text-lg mb-4">
|
4
|
+
Патрон - это посетитель, у которого есть метод introduction и этот метод
|
5
|
+
возвращает значение 'patron'
|
6
|
+
</p>
|
7
|
+
|
8
|
+
<p class="text-gray-600 text-lg mb-4">
|
9
|
+
Объекты патроны получают новые значения от источников данных
|
10
|
+
</p>
|
@@ -0,0 +1,55 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Источник данных</h1>
|
2
|
+
|
3
|
+
<a
|
4
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Source/Source.ts#L3"
|
5
|
+
target="_blank"
|
6
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
7
|
+
>
|
8
|
+
<img
|
9
|
+
src="./assets/img/github_16.jpg"
|
10
|
+
width="16"
|
11
|
+
height="16"
|
12
|
+
/>
|
13
|
+
SourceType на GitHub
|
14
|
+
</a>
|
15
|
+
|
16
|
+
<p class="text-gray-600 text-lg mb-4">
|
17
|
+
Источник данных - Это объект, совместимый с интерфейсом
|
18
|
+
<span class="dynamic-navigation">
|
19
|
+
<a
|
20
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
21
|
+
target="_blank"
|
22
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Source/Source.ts#L3-L5"
|
23
|
+
>
|
24
|
+
SourceType
|
25
|
+
</a>
|
26
|
+
</span>
|
27
|
+
У такого объекта должен быть метод value и объект должен ожидать, что к нему
|
28
|
+
придет посетитель за значением
|
29
|
+
</p>
|
30
|
+
|
31
|
+
<p class="text-gray-600 text-lg mb-4">
|
32
|
+
В библиотеке уже есть готовые решения для источников данных, которые можно
|
33
|
+
создать либо на основе функции либо на основе начального значения. Вот эти
|
34
|
+
готовые источники:
|
35
|
+
<span class="text-gray-600 text-lg mb-4 dynamic-navigation">
|
36
|
+
<a
|
37
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
38
|
+
href="/source"
|
39
|
+
>
|
40
|
+
Source
|
41
|
+
</a>
|
42
|
+
<a
|
43
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
44
|
+
href="/source"
|
45
|
+
>
|
46
|
+
Source
|
47
|
+
</a>
|
48
|
+
<a
|
49
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
50
|
+
href="/source/source-empty"
|
51
|
+
>
|
52
|
+
SourceEmpty
|
53
|
+
</a>
|
54
|
+
</span>
|
55
|
+
</p>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Посетитель</h1>
|
2
|
+
|
3
|
+
<p class="text-gray-600 text-lg mb-4">
|
4
|
+
Посетитель - это объект или функция, который приходит к источнику данных,
|
5
|
+
чтобы получить какое-то значение
|
6
|
+
</p>
|
7
|
+
|
8
|
+
<p class="text-gray-600 text-lg mb-4">
|
9
|
+
Если посетитель - функция, то он по-умолчанию считается гостем
|
10
|
+
</p>
|
11
|
+
|
12
|
+
<p class="text-gray-600 text-lg mb-4">
|
13
|
+
Если посетитель - объект без метода introduction, то также считаем его гостем
|
14
|
+
</p>
|
15
|
+
|
16
|
+
<p class="text-gray-600 text-lg mb-4">
|
17
|
+
Если посетитель - объект, имеющий метод introduction то при значение guest -
|
18
|
+
будет гостем, при значении patron - патроном
|
19
|
+
</p>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<section class="text-gray-600 body-font">
|
2
|
+
<div class="py-1 mx-auto flex flex-col">
|
3
|
+
<div class="lg:w-4/6 mx-auto">
|
4
|
+
<div class="flex flex-col sm:flex-row">
|
5
|
+
<div class="sm:w-1/3 text-center">
|
6
|
+
<div
|
7
|
+
class="flex flex-col items-center text-center justify-center terminology-menu"
|
8
|
+
>
|
9
|
+
<h2 class="font-medium title-font text-gray-900 text-lg">
|
10
|
+
<a href="/terminology"> Terminology </a>
|
11
|
+
</h2>
|
12
|
+
<div class="w-12 h-1 bg-indigo-500 rounded mt-2 mb-4"></div>
|
13
|
+
<ul class="text-gray-900">
|
14
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
15
|
+
<a href="/terminology/introduction"> Представление </a>
|
16
|
+
</li>
|
17
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
18
|
+
<a href="/terminology/visitor"> Посетитель </a>
|
19
|
+
</li>
|
20
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
21
|
+
<a href="/terminology/the-guest"> Гость </a>
|
22
|
+
</li>
|
23
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
24
|
+
<a href="/terminology/the-patron"> Патрон </a>
|
25
|
+
</li>
|
26
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
27
|
+
<a href="/terminology/the-source"> Источник данных </a>
|
28
|
+
</li>
|
29
|
+
</ul>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
<div
|
33
|
+
class="w-full sm:w-2/3 sm:pl-8 sm:border-l border-gray-200 sm:border-t-0 border-t mt-4 sm:mt-0"
|
34
|
+
>
|
35
|
+
<div class="terminology-loader">
|
36
|
+
<div class="w-full flex justify-center">
|
37
|
+
<div
|
38
|
+
class="inline-block h-8 w-8 animate-spin rounded-full border-4 border-solid border-current border-e-transparent align-[-0.125em] text-indigo-500 motion-reduce:animate-[spin_1.5s_linear_infinite]"
|
39
|
+
role="status"
|
40
|
+
>
|
41
|
+
<span
|
42
|
+
class="!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]"
|
43
|
+
>Loading...</span
|
44
|
+
>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
<div class="terminology-page-area"></div>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
</section>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Функция give</h1>
|
2
|
+
|
3
|
+
<div class="flex gap-2">
|
4
|
+
<a
|
5
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L19-L25"
|
6
|
+
target="_blank"
|
7
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
8
|
+
>
|
9
|
+
<img
|
10
|
+
src="./assets/img/github_16.jpg"
|
11
|
+
width="16"
|
12
|
+
height="16"
|
13
|
+
/>
|
14
|
+
give на GitHub
|
15
|
+
</a>
|
16
|
+
|
17
|
+
<a
|
18
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L17"
|
19
|
+
target="_blank"
|
20
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
21
|
+
>
|
22
|
+
<img
|
23
|
+
src="./assets/img/github_16.jpg"
|
24
|
+
width="16"
|
25
|
+
height="16"
|
26
|
+
/>
|
27
|
+
GuestType на GitHub
|
28
|
+
</a>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<p class="text-gray-600 text-lg mb-4">
|
32
|
+
Из-за того, что гостем может быть как объект удовлетворяющий интерфейсу
|
33
|
+
GuestObjectType так и любая функция GuestExecutorType, то появилась функция
|
34
|
+
give, которая может передать значение value любому посетителю неважно будет
|
35
|
+
это гость патрон или функция
|
36
|
+
</p>
|
37
|
+
|
38
|
+
<div class="font-bold mt-8">Смотрите также</div>
|
39
|
+
|
40
|
+
<p class="text-gray-600 text-lg mb-4 dynamic-navigation">
|
41
|
+
<a
|
42
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
43
|
+
href="/guest"
|
44
|
+
>
|
45
|
+
Guest
|
46
|
+
</a>
|
47
|
+
</p>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Утилиты</h1>
|
2
|
+
|
3
|
+
<p class="text-gray-600 text-lg mb-4">
|
4
|
+
В этом разделе собрана документация по вспомогательным функциям и классам
|
5
|
+
библиотеки Patron
|
6
|
+
</p>
|
7
|
+
|
8
|
+
<p class="text-gray-600 text-lg mb-4">
|
9
|
+
Основные классы библиотеки вынесены в верхнее меню сайта(этой документации), а
|
10
|
+
все вспомогательные модули будут описаны здесь
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<p class="text-gray-600 text-lg mb-4">
|
14
|
+
Нужно отметить, что основные классы библиотеки:
|
15
|
+
<link-dynamic href="/guest">Guest</link-dynamic>,
|
16
|
+
<link-dynamic href="/patron">Patron</link-dynamic>,
|
17
|
+
<link-dynamic href="/source">Source</link-dynamic> и их производные работают
|
18
|
+
на уровне человеческой логики, А классы из этого раздела(utils) предназначены
|
19
|
+
для работы на уровне компьютера.
|
20
|
+
</p>
|
21
|
+
|
22
|
+
<p class="text-gray-600 text-lg mb-4">
|
23
|
+
В левом меню этого раздела вы найдете все утилиты и их описание
|
24
|
+
</p>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Функция isSource</h1>
|
2
|
+
|
3
|
+
<a
|
4
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Source/Source.ts#L25-L27"
|
5
|
+
target="_blank"
|
6
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
7
|
+
>
|
8
|
+
<img
|
9
|
+
src="./assets/img/github_16.jpg"
|
10
|
+
width="16"
|
11
|
+
height="16"
|
12
|
+
/>
|
13
|
+
isSource на GitHub
|
14
|
+
</a>
|
15
|
+
|
16
|
+
<p class="text-gray-600 text-lg mb-4">
|
17
|
+
Позволяет проверить является ли аргумент
|
18
|
+
<link-dynamic href="/source">источником данных</link-dynamic>.
|
19
|
+
Источниками данных могут быть функции или объекты имеющие value метод. С этой
|
20
|
+
функцией нужно обращаться аккуратно она не может идеально точно отличить
|
21
|
+
источник данных от любой другой функции
|
22
|
+
</p>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Функция isGuest</h1>
|
2
|
+
|
3
|
+
<a
|
4
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L33-L35"
|
5
|
+
target="_blank"
|
6
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
7
|
+
>
|
8
|
+
<img
|
9
|
+
src="./assets/img/github_16.jpg"
|
10
|
+
width="16"
|
11
|
+
height="16"
|
12
|
+
/>
|
13
|
+
isGuest на GitHub
|
14
|
+
</a>
|
15
|
+
|
16
|
+
<p class="text-gray-600 text-lg mb-4">
|
17
|
+
Позволяет проверить является ли аргумент
|
18
|
+
<link-dynamic href="/guest">гостем</link-dynamic>. Гостями могут быть функции
|
19
|
+
или объекты имеющие give метод. С этой функцией нужно обращаться аккуратно она
|
20
|
+
не может идеально точно отличить гостя от любой другой функции
|
21
|
+
</p>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">
|
2
|
+
Функция isPatronInPools
|
3
|
+
</h1>
|
4
|
+
|
5
|
+
<a
|
6
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Patron/PatronPool.ts#L14-L22"
|
7
|
+
target="_blank"
|
8
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
9
|
+
>
|
10
|
+
<img
|
11
|
+
src="./assets/img/github_16.jpg"
|
12
|
+
width="16"
|
13
|
+
height="16"
|
14
|
+
/>
|
15
|
+
isPatronInPools на GitHub
|
16
|
+
</a>
|
17
|
+
|
18
|
+
<p class="text-gray-600 text-lg mb-4">
|
19
|
+
Эта функция очень полезна для того, чтобы проверить находится ли патрон в
|
20
|
+
каком-нибудь пуле. В целях отладки возможных проблем или сцелью принятия
|
21
|
+
каких-то решений можно использовать эту функцию
|
22
|
+
</p>
|
23
|
+
|
24
|
+
<p class="text-gray-600 text-lg mb-4">
|
25
|
+
Например если в метод объекта приходит гость и мы этому гостю даем значение от
|
26
|
+
Source, то в случае появление новых значений в источнике можно проверить
|
27
|
+
существует ли патрон в пуле, такое бывает нужно при использовании
|
28
|
+
SourceAll в комбинации с GuestCast, потому что в этом случае источник
|
29
|
+
будет общаться не с оригинальным патроном а с промежуточным
|
30
|
+
</p>
|
31
|
+
|
32
|
+
<div class="font-bold mt-8">Смотрите также</div>
|
33
|
+
|
34
|
+
<p class="text-gray-600 text-lg mb-4 dynamic-navigation">
|
35
|
+
<a
|
36
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
37
|
+
href="/source"
|
38
|
+
>
|
39
|
+
Source
|
40
|
+
</a>
|
41
|
+
<a
|
42
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
43
|
+
href="/source/source-all"
|
44
|
+
>
|
45
|
+
SourceAll
|
46
|
+
</a>
|
47
|
+
<a
|
48
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
49
|
+
href="/guest/guest-cast"
|
50
|
+
>
|
51
|
+
GuestCast
|
52
|
+
</a>
|
53
|
+
</p>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Класс Private</h1>
|
2
|
+
|
3
|
+
<a
|
4
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Private/Private.ts"
|
5
|
+
target="_blank"
|
6
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
7
|
+
>
|
8
|
+
<img
|
9
|
+
src="./assets/img/github_16.jpg"
|
10
|
+
width="16"
|
11
|
+
height="16"
|
12
|
+
/>
|
13
|
+
Private на GitHub
|
14
|
+
</a>
|
15
|
+
|
16
|
+
<p class="text-gray-600 text-lg mb-4">
|
17
|
+
Иногда мы хотим получить зависимость, с которой мы сможем вести
|
18
|
+
приватное общение, именно для этого и создан тип
|
19
|
+
<link-reloadable
|
20
|
+
target-blank
|
21
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Private/Private.ts#L4-L6"
|
22
|
+
>
|
23
|
+
PrivateType
|
24
|
+
</link-reloadable>
|
25
|
+
</p>
|
26
|
+
|
27
|
+
<p class="text-gray-600 text-lg mb-4">
|
28
|
+
Создавая зависимость от PrivateType мы говорим, что планируем
|
29
|
+
отправлять личные сообщения которые никто не должен больше прочитать.
|
30
|
+
Для достижения этой цели отправки приватных сообщений есть классы Private и PrivateClass. Private создает объект из функции, а PrivateClass создает частный объект на основе класса.
|
31
|
+
</p>
|
32
|
+
|
33
|
+
<p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
|
34
|
+
<pre class="mb-4"><code class="language-js">class SomeAction {
|
35
|
+
public constructor(private source: PrivateType<SourceType<number>>) { }
|
36
|
+
|
37
|
+
do() {
|
38
|
+
// Тут мы уверены что 'hello' передано лично и никто его не получит
|
39
|
+
this.source.get('hello').receiving(theNum => {
|
40
|
+
console.log('do something with num', theNum);
|
41
|
+
})
|
42
|
+
}
|
43
|
+
}
|
44
|
+
</code></pre>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">
|
2
|
+
Функция removePatronFromPools
|
3
|
+
</h1>
|
4
|
+
|
5
|
+
<a
|
6
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Patron/PatronPool.ts#L7-L11"
|
7
|
+
target="_blank"
|
8
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
9
|
+
>
|
10
|
+
<img
|
11
|
+
src="./assets/img/github_16.jpg"
|
12
|
+
width="16"
|
13
|
+
height="16"
|
14
|
+
/>
|
15
|
+
removePatronFromPools на GitHub
|
16
|
+
</a>
|
17
|
+
|
18
|
+
<p class="text-gray-600 text-lg mb-4">
|
19
|
+
Позволяет удалить патрона из всех пулов. Полезно в случаях когда по бизнес
|
20
|
+
логике патрон больше не должен получать обновления
|
21
|
+
</p>
|
22
|
+
|
23
|
+
<p class="text-gray-600 text-lg mb-4">
|
24
|
+
Этого же эффекта - удаление патрона из пула можно добиться другими способами,
|
25
|
+
например если у вас есть доступ к объекту-пулу патронов, в этом случае можно
|
26
|
+
вызвать метод remove от пула
|
27
|
+
</p>
|
28
|
+
|
29
|
+
<p class="text-gray-600 text-lg mb-4">
|
30
|
+
Второй способ использовать класс GuestDisposable, который принимает 2
|
31
|
+
аргумента. Первый аргумент - это гость, который мы превращаем в
|
32
|
+
самоотменяемого гостя. Второй аргумент - это функция проверки нужно ли
|
33
|
+
отменять(удалять) патрон из пулов
|
34
|
+
</p>
|
35
|
+
|
36
|
+
<p class="text-gray-600 text-lg mb-4">
|
37
|
+
Третий способ - вы можете сделать собственный класс патрон, имплементировать
|
38
|
+
интерфейс GuestDisposableType - в котором описан метод disposed, в случаях,
|
39
|
+
когда этот метод возвращает true - патрон удаляется из пула
|
40
|
+
</p>
|
41
|
+
|
42
|
+
<div class="font-bold mt-8">Смотрите также</div>
|
43
|
+
|
44
|
+
<p class="text-gray-600 text-lg mb-4 dynamic-navigation">
|
45
|
+
<a
|
46
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
47
|
+
href="/guest/guest-disposable"
|
48
|
+
>
|
49
|
+
GuestDisposable
|
50
|
+
</a>
|
51
|
+
<a
|
52
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
53
|
+
href="/patron/patron-pool"
|
54
|
+
>
|
55
|
+
PatronPool
|
56
|
+
</a>
|
57
|
+
</p>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Функция value</h1>
|
2
|
+
|
3
|
+
<div class="flex gap-2">
|
4
|
+
<a
|
5
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Source/Source.ts#L11"
|
6
|
+
target="_blank"
|
7
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
8
|
+
>
|
9
|
+
<img
|
10
|
+
src="./assets/img/github_16.jpg"
|
11
|
+
width="16"
|
12
|
+
height="16"
|
13
|
+
/>
|
14
|
+
value на GitHub
|
15
|
+
</a>
|
16
|
+
|
17
|
+
<a
|
18
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Source/Source.ts#L9"
|
19
|
+
target="_blank"
|
20
|
+
class="inline-flex gap-1 items-center bg-gray-100 border-0 py-1 px-3 focus:outline-none hover:bg-gray-200 rounded text-base mt-4 md:mt-0 mb-4"
|
21
|
+
>
|
22
|
+
<img
|
23
|
+
src="./assets/img/github_16.jpg"
|
24
|
+
width="16"
|
25
|
+
height="16"
|
26
|
+
/>
|
27
|
+
SourceType на GitHub
|
28
|
+
</a>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<p class="text-gray-600 text-lg mb-4">
|
32
|
+
Из-за того, что источником данных может быть как объект удовлетворяющий
|
33
|
+
интерфейсу SourceObjectType так и любая функция SourceExecutorType, то
|
34
|
+
появилась функция value, которая может передать значение любому посетителю
|
35
|
+
неважно будет это гость патрон или функция
|
36
|
+
</p>
|
37
|
+
|
38
|
+
<div class="font-bold mt-8">Смотрите также</div>
|
39
|
+
|
40
|
+
<p class="text-gray-600 text-lg mb-4 dynamic-navigation">
|
41
|
+
<a
|
42
|
+
class="inline-block whitespace-nowrap rounded-[0.27rem] bg-primary-100 px-[0.65em] pb-[0.25em] pt-[0.35em] text-center align-baseline text-[0.75em] font-bold leading-none text-white bg-slate-900"
|
43
|
+
href="/source"
|
44
|
+
>
|
45
|
+
Source
|
46
|
+
</a>
|
47
|
+
</p>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<section class="text-gray-600 body-font">
|
2
|
+
<div class="py-1 mx-auto flex flex-col">
|
3
|
+
<div class="lg:w-4/6 mx-auto">
|
4
|
+
<div class="flex flex-col sm:flex-row">
|
5
|
+
<div class="sm:w-1/3 text-center">
|
6
|
+
<div
|
7
|
+
class="flex flex-col items-center text-center justify-center utils-menu"
|
8
|
+
>
|
9
|
+
<h2 class="font-medium title-font text-gray-900 text-lg">
|
10
|
+
<a href="/utils"> Utils </a>
|
11
|
+
</h2>
|
12
|
+
<div class="w-12 h-1 bg-indigo-500 rounded mt-2 mb-4"></div>
|
13
|
+
<ul class="text-gray-900">
|
14
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
15
|
+
<a href="/utils/private"> Private </a>
|
16
|
+
</li>
|
17
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
18
|
+
<a href="/utils/give"> give </a>
|
19
|
+
</li>
|
20
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
21
|
+
<a href="/utils/value"> value </a>
|
22
|
+
</li>
|
23
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
24
|
+
<a href="/utils/is-patron-in-pools"> isPatronInPools </a>
|
25
|
+
</li>
|
26
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
27
|
+
<a href="/utils/remove-patron-from-pools">
|
28
|
+
removePatronFromPools
|
29
|
+
</a>
|
30
|
+
</li>
|
31
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
32
|
+
<a href="/utils/is-guest"> isGuest </a>
|
33
|
+
</li>
|
34
|
+
<li class="w-full border-b-2 border-neutral-100 py-4">
|
35
|
+
<a href="/utils/is-source"> isSource </a>
|
36
|
+
</li>
|
37
|
+
</ul>
|
38
|
+
</div>
|
39
|
+
</div>
|
40
|
+
<div
|
41
|
+
class="w-full sm:w-2/3 sm:pl-8 sm:border-l border-gray-200 sm:border-t-0 border-t mt-4 sm:mt-0"
|
42
|
+
>
|
43
|
+
<div class="utils-loader">
|
44
|
+
<div class="w-full flex justify-center">
|
45
|
+
<div
|
46
|
+
class="inline-block h-8 w-8 animate-spin rounded-full border-4 border-solid border-current border-e-transparent align-[-0.125em] text-indigo-500 motion-reduce:animate-[spin_1.5s_linear_infinite]"
|
47
|
+
role="status"
|
48
|
+
>
|
49
|
+
<span
|
50
|
+
class="!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]"
|
51
|
+
>Loading...</span
|
52
|
+
>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
<div class="utils-page-area"></div>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
</div>
|
60
|
+
</div>
|
61
|
+
</section>
|
package/eslint.config.mjs
CHANGED
package/package.json
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
import { GuestObjectType, GuestType } from "../Guest/Guest";
|
2
|
+
import { GuestApplied } from "../Guest/GuestApplied";
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @url https://kosukhin.github.io/patron.site/#/patron/patron-applied
|
6
|
+
*/
|
7
|
+
export class PatronApplied<T, R> implements GuestObjectType<T> {
|
8
|
+
private guestApplied: GuestApplied<T, R>;
|
9
|
+
|
10
|
+
public constructor(baseGuest: GuestType<R>, applier: (value: T) => R) {
|
11
|
+
this.guestApplied = new GuestApplied(baseGuest, applier);
|
12
|
+
}
|
13
|
+
|
14
|
+
public give(value: T): this {
|
15
|
+
this.guestApplied.give(value);
|
16
|
+
return this;
|
17
|
+
}
|
18
|
+
|
19
|
+
public introduction(): "guest" | "patron" {
|
20
|
+
return "patron";
|
21
|
+
}
|
22
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import { GuestExecutorType, GuestObjectType, GuestType } from "../Guest/Guest";
|
2
|
+
import { GuestExecutorApplied } from "../Guest/GuestExecutorApplied";
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @url https://kosukhin.github.io/patron.site/#/patron/patron-executor-applied
|
6
|
+
*/
|
7
|
+
export class PatronExecutorApplied<T> implements GuestObjectType<T> {
|
8
|
+
private guestApplied: GuestExecutorApplied<T>;
|
9
|
+
|
10
|
+
public constructor(
|
11
|
+
baseGuest: GuestType<T>,
|
12
|
+
applier: (executor: GuestExecutorType) => GuestExecutorType,
|
13
|
+
) {
|
14
|
+
this.guestApplied = new GuestExecutorApplied(baseGuest, applier);
|
15
|
+
}
|
16
|
+
|
17
|
+
public give(value: T): this {
|
18
|
+
this.guestApplied.give(value);
|
19
|
+
return this;
|
20
|
+
}
|
21
|
+
|
22
|
+
public introduction(): "guest" | "patron" {
|
23
|
+
return "patron";
|
24
|
+
}
|
25
|
+
}
|
package/src/index.ts
CHANGED
@@ -5,9 +5,12 @@ export * from "./Guest/GuestSync";
|
|
5
5
|
export * from "./Guest/GuestObject";
|
6
6
|
export * from "./Guest/GuestDisposable";
|
7
7
|
export * from "./Guest/GuestApplied";
|
8
|
+
export * from "./Guest/GuestExecutorApplied";
|
8
9
|
export * from "./Patron/Patron";
|
9
10
|
export * from "./Patron/PatronOnce";
|
10
11
|
export * from "./Patron/PatronPool";
|
12
|
+
export * from "./Patron/PatronApplied";
|
13
|
+
export * from "./Patron/PatronExecutorApplied";
|
11
14
|
export * from "./Source/SourceAll";
|
12
15
|
export * from "./Source/Source";
|
13
16
|
export * from "./Source/SourceSequence";
|
@@ -18,5 +21,6 @@ export * from "./Source/SourceWithPool";
|
|
18
21
|
export * from "./Source/SourceDynamic";
|
19
22
|
export * from "./Source/SourceApplied";
|
20
23
|
export * from "./Source/SourceExecutorApplied";
|
24
|
+
export * from "./Source/SourceOnce";
|
21
25
|
export * from "./Private/PrivateClass";
|
22
26
|
export * from "./Private/Private";
|