silentium 0.0.2 → 0.0.3
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 +19 -0
- package/beforeRelease.sh +11 -0
- package/dist/silentium.cjs +39 -63
- package/dist/silentium.cjs.map +1 -1
- package/dist/silentium.d.ts +34 -53
- package/dist/silentium.js +40 -63
- package/dist/silentium.js.map +1 -1
- package/dist/silentium.min.js +1 -1
- package/dist/silentium.min.mjs +1 -1
- package/dist/silentium.min.mjs.map +1 -1
- package/dist/silentium.mjs +40 -63
- package/dist/silentium.mjs.map +1 -1
- package/docs/assets/css/base.css +15 -0
- package/docs/assets/css/custom.css +72 -0
- package/docs/assets/img/logo.svg +1522 -0
- package/docs/assets/js/components/linkDynamic.mjs +14 -0
- package/docs/assets/js/components/linkReloadable.mjs +17 -0
- package/docs/assets/js/components.mjs +2 -0
- package/docs/assets/js/index.mjs +74 -0
- package/docs/assets/js/lib/StyleFetched.mjs +19 -0
- package/docs/build.sh +7 -3
- package/docs/buildRoutes.sh +15 -0
- package/docs/favicon.ico +0 -0
- package/docs/index-dev.html +4 -80
- package/docs/index.html +6 -82
- package/docs/pages/compatibility/elegant-objects.html +4 -4
- package/docs/pages/examples/errors.html +2 -2
- package/docs/pages/examples.html +12 -14
- package/docs/pages/guest/guest-applied.html +9 -5
- package/docs/pages/guest/guest-cast.html +20 -26
- package/docs/pages/guest/guest-disposable.html +32 -42
- package/docs/pages/guest/guest-executor-applied.html +21 -17
- package/docs/pages/guest/guest-object.html +22 -26
- package/docs/pages/guest/guest-pool.html +17 -18
- package/docs/pages/guest/guest-sync.html +7 -2
- package/docs/pages/guest/index.html +18 -29
- package/docs/pages/guest.html +112 -18
- package/docs/pages/index.html +24 -52
- package/docs/pages/integrations/vue.html +5 -8
- package/docs/pages/patron/index.html +14 -20
- package/docs/pages/patron/patron-applied.html +2 -2
- package/docs/pages/patron/patron-executor-applied.html +2 -2
- package/docs/pages/patron/patron-once.html +12 -18
- package/docs/pages/patron/patron-pool.html +12 -18
- package/docs/pages/patron.html +137 -16
- package/docs/pages/philosofy.html +30 -49
- package/docs/pages/source/index.html +11 -14
- package/docs/pages/source/source-all.html +9 -12
- package/docs/pages/source/source-applied.html +2 -2
- package/docs/pages/source/source-dynamic.html +3 -3
- package/docs/pages/source/source-executor-applied.html +2 -2
- package/docs/pages/source/source-map.html +5 -5
- package/docs/pages/source/source-once.html +2 -2
- package/docs/pages/source/source-race.html +10 -10
- package/docs/pages/source/source-sequence.html +2 -2
- package/docs/pages/source/source-with-pool.html +8 -11
- package/docs/pages/source/source.html +11 -14
- package/docs/pages/source.html +162 -31
- package/docs/pages/terminology/source.html +5 -9
- package/docs/pages/terminology.html +12 -18
- package/docs/pages/utils.html +33 -21
- package/docs/routes.json +1 -0
- package/docs/template.html +4 -80
- package/eslint.config.mjs +3 -0
- package/package.json +2 -2
- package/src/Guest/Guest.ts +3 -3
- package/src/Guest/GuestApplied.ts +1 -1
- package/src/Guest/GuestCast.ts +1 -1
- package/src/Guest/GuestDisposable.ts +1 -1
- package/src/Guest/GuestExecutorApplied.ts +1 -1
- package/src/Guest/GuestObject.ts +1 -1
- package/src/Guest/GuestPool.ts +1 -1
- package/src/Guest/GuestSync.ts +1 -1
- package/src/Patron/Patron.ts +2 -2
- package/src/Patron/PatronApplied.ts +1 -1
- package/src/Patron/PatronExecutorApplied.ts +1 -1
- package/src/Patron/PatronOnce.ts +1 -1
- package/src/Patron/PatronPool.ts +4 -4
- package/src/Private/Private.ts +1 -1
- package/src/Source/Source.ts +4 -4
- package/src/Source/SourceAll.ts +1 -1
- package/src/Source/SourceApplied.ts +1 -1
- package/src/Source/SourceDynamic.ts +1 -1
- package/src/Source/SourceExecutorApplied.ts +1 -1
- package/src/Source/SourceMap.ts +1 -1
- package/src/Source/SourceOnce.ts +1 -1
- package/src/Source/SourceRace.ts +1 -1
- package/src/Source/SourceSequence.ts +1 -1
- package/src/Source/SourceWithPool.ts +1 -1
- package/src/index.ts +0 -1
- package/docs/pages/source/source-active.html +0 -120
- package/src/Source/SourceActive.test.ts +0 -13
- package/src/Source/SourceActive.ts +0 -41
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
<div class="breadcrumbs mb-4">
|
|
2
|
+
<link-dynamic href="/">Главная</link-dynamic>
|
|
3
|
+
<link-dynamic href="/guest">Guest</link-dynamic>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
1
6
|
<h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestDisposable</h1>
|
|
2
7
|
|
|
3
8
|
<a
|
|
@@ -15,32 +20,23 @@
|
|
|
15
20
|
|
|
16
21
|
<p class="text-gray-600 text-lg mb-4">
|
|
17
22
|
Предназначен для динамического создания
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
гостя
|
|
24
|
-
</a>
|
|
25
|
-
</span>
|
|
23
|
+
<link-dynamic
|
|
24
|
+
href="/terminology/guest"
|
|
25
|
+
>
|
|
26
|
+
гостя
|
|
27
|
+
</link-dynamic>
|
|
26
28
|
с функциональностью его удаления из
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
пула патронов
|
|
33
|
-
</a>
|
|
34
|
-
</span>
|
|
29
|
+
<link-dynamic
|
|
30
|
+
href="/patron/patron-pool"
|
|
31
|
+
>
|
|
32
|
+
пула патронов
|
|
33
|
+
</link-dynamic>
|
|
35
34
|
, на случай, если гость станет
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
патроном
|
|
42
|
-
</a>
|
|
43
|
-
</span>
|
|
35
|
+
<link-dynamic
|
|
36
|
+
href="/terminology/patron"
|
|
37
|
+
>
|
|
38
|
+
патроном
|
|
39
|
+
</link-dynamic>
|
|
44
40
|
</p>
|
|
45
41
|
|
|
46
42
|
<p class="text-gray-600 text-lg mb-4">
|
|
@@ -53,28 +49,22 @@
|
|
|
53
49
|
|
|
54
50
|
<p class="text-gray-600 text-lg mb-4">
|
|
55
51
|
Вместо класса GuestDisposable можно использовать функцию
|
|
56
|
-
<
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
removePatronFromPools
|
|
62
|
-
</a>
|
|
63
|
-
</span>
|
|
52
|
+
<link-dynamic
|
|
53
|
+
href="/utils/remove-patron-from-pools"
|
|
54
|
+
>
|
|
55
|
+
removePatronFromPools
|
|
56
|
+
</link-dynamic>
|
|
64
57
|
- для того чтобы удалить патрон из всех пулов. либо функцию
|
|
65
|
-
<
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
isPatronInPools
|
|
71
|
-
</a>
|
|
72
|
-
</span>
|
|
58
|
+
<link-dynamic
|
|
59
|
+
href="/utils/is-patron-in-pools"
|
|
60
|
+
>
|
|
61
|
+
isPatronInPools
|
|
62
|
+
</link-dynamic>
|
|
73
63
|
- проверяет есть ли патрон в каком-либо пуле
|
|
74
64
|
</p>
|
|
75
65
|
|
|
76
66
|
<p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
|
|
77
|
-
<pre class="mb-4"><code class="language-js">import { SourceWithPool, Patron, GuestDisposable } from "
|
|
67
|
+
<pre class="mb-4"><code class="language-js">import { SourceWithPool, Patron, GuestDisposable } from "silentium";
|
|
78
68
|
|
|
79
69
|
const source = new SourceWithPool("Один");
|
|
80
70
|
|
|
@@ -105,7 +95,7 @@
|
|
|
105
95
|
<span class="guest-result">Нет значения</span>
|
|
106
96
|
</div>
|
|
107
97
|
<script type="module">
|
|
108
|
-
import { SourceWithPool, Patron, GuestDisposable } from "
|
|
98
|
+
import { SourceWithPool, Patron, GuestDisposable } from "silentium";
|
|
109
99
|
|
|
110
100
|
const source = new SourceWithPool("Один");
|
|
111
101
|
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
<div class="breadcrumbs mb-4">
|
|
2
|
+
<link-dynamic href="/">Главная</link-dynamic>
|
|
3
|
+
<link-dynamic href="/guest">Guest</link-dynamic>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
1
6
|
<h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestExecutorApplied</h1>
|
|
2
7
|
|
|
3
8
|
<a
|
|
@@ -21,31 +26,30 @@
|
|
|
21
26
|
<p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
|
|
22
27
|
<pre
|
|
23
28
|
class="mb-4 w-full"
|
|
24
|
-
><code class="language-js">import { Guest, GuestExecutorApplied, sourceOf } from "
|
|
29
|
+
><code class="language-js">import { Guest, GuestExecutorApplied, sourceOf } from "silentium";
|
|
25
30
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
const guest = new Guest((value) => {
|
|
32
|
+
document.querySelector(
|
|
33
|
+
".guest-result"
|
|
34
|
+
).textContent = `value is ${value}`;
|
|
35
|
+
});
|
|
31
36
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
</code></pre>
|
|
37
|
+
sourceOf(40).value(
|
|
38
|
+
new GuestExecutorApplied(guest, (guestFn) => {
|
|
39
|
+
return v => {
|
|
40
|
+
setTimeout(() => {
|
|
41
|
+
guestFn(v);
|
|
42
|
+
}, 5000)
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
);</code></pre>
|
|
42
46
|
|
|
43
47
|
<p class="text-gray-600 text-lg mb-0 font-bold">Результат 1.</p>
|
|
44
48
|
<div class="example mb-4">
|
|
45
49
|
<span class="guest-result">Результат через 5 сек...</span>
|
|
46
50
|
</div>
|
|
47
51
|
<script type="module">
|
|
48
|
-
import { Guest, GuestExecutorApplied, sourceOf } from "
|
|
52
|
+
import { Guest, GuestExecutorApplied, sourceOf } from "silentium";
|
|
49
53
|
|
|
50
54
|
const guest = new Guest((value) => {
|
|
51
55
|
document.querySelector(
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
<div class="breadcrumbs mb-4">
|
|
2
|
+
<link-dynamic href="/">Главная</link-dynamic>
|
|
3
|
+
<link-dynamic href="/guest">Guest</link-dynamic>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
1
6
|
<h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestObject</h1>
|
|
2
7
|
|
|
3
8
|
<a
|
|
@@ -15,14 +20,11 @@
|
|
|
15
20
|
|
|
16
21
|
<p class="text-gray-600 text-lg mb-4">
|
|
17
22
|
Предназначен для перевода любого
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
посетителя
|
|
24
|
-
</a>
|
|
25
|
-
</span>
|
|
23
|
+
<link-dynamic
|
|
24
|
+
href="/terminology/visitor"
|
|
25
|
+
>
|
|
26
|
+
посетителя
|
|
27
|
+
</link-dynamic>
|
|
26
28
|
в объектный вид, чтобы можно было вызывать .give метод
|
|
27
29
|
</p>
|
|
28
30
|
|
|
@@ -35,29 +37,23 @@
|
|
|
35
37
|
<p class="text-gray-600 text-lg mb-4">
|
|
36
38
|
Этот класс может быть заменен функцией give, которой неважно какой посетитель
|
|
37
39
|
к ней пришел функция,
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
гость
|
|
44
|
-
</a>
|
|
45
|
-
</span>
|
|
40
|
+
<link-dynamic
|
|
41
|
+
href="/terminology/guest"
|
|
42
|
+
>
|
|
43
|
+
гость
|
|
44
|
+
</link-dynamic>
|
|
46
45
|
или
|
|
47
|
-
<
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
патрон
|
|
53
|
-
</a>
|
|
54
|
-
</span>
|
|
46
|
+
<link-dynamic
|
|
47
|
+
href="/terminology/patron"
|
|
48
|
+
>
|
|
49
|
+
патрон
|
|
50
|
+
</link-dynamic>
|
|
55
51
|
</p>
|
|
56
52
|
|
|
57
53
|
<p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
|
|
58
54
|
<pre
|
|
59
55
|
class="mb-4"
|
|
60
|
-
><code class="language-js">import { GuestObject } from '
|
|
56
|
+
><code class="language-js">import { GuestObject } from 'silentium';
|
|
61
57
|
|
|
62
58
|
class HelloWorld {
|
|
63
59
|
greeting(guest) {
|
|
@@ -76,7 +72,7 @@ new HelloWorld().greeting(fnGuest);
|
|
|
76
72
|
<span class="guest-result">Ждем результат</span>
|
|
77
73
|
</div>
|
|
78
74
|
<script type="module">
|
|
79
|
-
import { GuestObject } from "
|
|
75
|
+
import { GuestObject } from "silentium";
|
|
80
76
|
|
|
81
77
|
class HelloWorld {
|
|
82
78
|
greeting(guest) {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
<div class="breadcrumbs mb-4">
|
|
2
|
+
<link-dynamic href="/">Главная</link-dynamic>
|
|
3
|
+
<link-dynamic href="/guest">Guest</link-dynamic>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
1
6
|
<h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestPool</h1>
|
|
2
7
|
|
|
3
8
|
<a
|
|
@@ -15,24 +20,18 @@
|
|
|
15
20
|
|
|
16
21
|
<p class="text-gray-600 text-lg mb-4">
|
|
17
22
|
Предназначен для подписки на отложенное значение не только
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
патрона
|
|
24
|
-
</a>
|
|
25
|
-
</span>
|
|
23
|
+
<link-dynamic
|
|
24
|
+
href="/terminology/patron"
|
|
25
|
+
>
|
|
26
|
+
патрона
|
|
27
|
+
</link-dynamic>
|
|
26
28
|
|
|
27
29
|
но и
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
гостя
|
|
34
|
-
</a>
|
|
35
|
-
</span>
|
|
30
|
+
<link-dynamic
|
|
31
|
+
href="/terminology/guest"
|
|
32
|
+
>
|
|
33
|
+
гостя
|
|
34
|
+
</link-dynamic>
|
|
36
35
|
</p>
|
|
37
36
|
|
|
38
37
|
<p class="text-gray-600 text-lg mb-4">
|
|
@@ -45,7 +44,7 @@
|
|
|
45
44
|
<p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
|
|
46
45
|
<pre
|
|
47
46
|
class="mb-4"
|
|
48
|
-
><code class="language-js">import { GuestPool } from '
|
|
47
|
+
><code class="language-js">import { GuestPool } from 'silentium';
|
|
49
48
|
|
|
50
49
|
class ValueAfterDelay {
|
|
51
50
|
constructor(theValue, delay) {
|
|
@@ -73,7 +72,7 @@ new ValueAfterDelay(42, 5000).value(fnGuest);
|
|
|
73
72
|
<span class="guest-result">Ждем значение через 5 секунд...</span>
|
|
74
73
|
</div>
|
|
75
74
|
<script type="module">
|
|
76
|
-
import { GuestPool } from "
|
|
75
|
+
import { GuestPool } from "silentium";
|
|
77
76
|
|
|
78
77
|
class ValueAfterDelay {
|
|
79
78
|
constructor(theValue, delay) {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
<div class="breadcrumbs mb-4">
|
|
2
|
+
<link-dynamic href="/">Главная</link-dynamic>
|
|
3
|
+
<link-dynamic href="/guest">Guest</link-dynamic>
|
|
4
|
+
</div>
|
|
5
|
+
|
|
1
6
|
<h1 class="pb-3 text-xl font-semibold text-gray-600">Класс GuestSync</h1>
|
|
2
7
|
|
|
3
8
|
<a
|
|
@@ -32,7 +37,7 @@
|
|
|
32
37
|
<p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
|
|
33
38
|
<pre
|
|
34
39
|
class="mb-4"
|
|
35
|
-
><code class="language-js">import { SourceWithPool, GuestSync } from '
|
|
40
|
+
><code class="language-js">import { SourceWithPool, GuestSync } from 'silentium';
|
|
36
41
|
|
|
37
42
|
const source = new SourceWithPool('Успешно установлено синхронно!');
|
|
38
43
|
const syncGuest = new GuestSync('');
|
|
@@ -46,7 +51,7 @@ document.querySelector('.guest-result').textContent = syncGuest.value();
|
|
|
46
51
|
<span class="guest-result">Значение установится синхронно!</span>
|
|
47
52
|
</div>
|
|
48
53
|
<script type="module">
|
|
49
|
-
import { SourceWithPool, GuestSync } from "
|
|
54
|
+
import { SourceWithPool, GuestSync } from "silentium";
|
|
50
55
|
|
|
51
56
|
const source = new SourceWithPool("Успешно установлено синхронно!");
|
|
52
57
|
const syncGuest = new GuestSync('');
|
|
@@ -15,28 +15,21 @@
|
|
|
15
15
|
|
|
16
16
|
<p class="text-gray-600 text-lg mb-4">
|
|
17
17
|
Предназначен для создания новых экземпляров
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
>
|
|
24
|
-
GuestObjectType
|
|
25
|
-
</a>
|
|
26
|
-
</span>
|
|
18
|
+
<link-dynamic
|
|
19
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L12"
|
|
20
|
+
>
|
|
21
|
+
GuestObjectType
|
|
22
|
+
</link-dynamic>
|
|
27
23
|
из функции-колбэка
|
|
28
24
|
</p>
|
|
29
25
|
|
|
30
26
|
<p class="text-gray-600 text-lg mb-4">
|
|
31
27
|
Это поведение полезно в случаях, когда нужно динамически построить
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
посетителя
|
|
38
|
-
</a>
|
|
39
|
-
</span>
|
|
28
|
+
<link-dynamic
|
|
29
|
+
href="/terminology/visitor"
|
|
30
|
+
>
|
|
31
|
+
посетителя
|
|
32
|
+
</link-dynamic>
|
|
40
33
|
на основе функции, используя какие-то переменные из скоупа, где создана
|
|
41
34
|
функция
|
|
42
35
|
</p>
|
|
@@ -44,7 +37,7 @@
|
|
|
44
37
|
<p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
|
|
45
38
|
<pre
|
|
46
39
|
class="mb-4 w-full"
|
|
47
|
-
><code class="language-js">import { Guest } from '
|
|
40
|
+
><code class="language-js">import { Guest } from 'silentium';
|
|
48
41
|
|
|
49
42
|
class Timestamp {
|
|
50
43
|
seconds(guest) {
|
|
@@ -63,7 +56,7 @@ timestamp.seconds(new Guest((timestamp) => {
|
|
|
63
56
|
<span class="guest-result">Result here</span>
|
|
64
57
|
</div>
|
|
65
58
|
<script type="module">
|
|
66
|
-
import { Guest } from "
|
|
59
|
+
import { Guest } from "silentium";
|
|
67
60
|
|
|
68
61
|
class Timestamp {
|
|
69
62
|
seconds(guest) {
|
|
@@ -85,22 +78,18 @@ timestamp.seconds(new Guest((timestamp) => {
|
|
|
85
78
|
Возможность создавать объект-посетитель из функции была
|
|
86
79
|
единственной в первых версиях библиотеки. На текущий момент вы можете также
|
|
87
80
|
передать функцию-колбэк в качестве посетителя, тк функция соответствует типу
|
|
88
|
-
<
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
>
|
|
94
|
-
GuestType
|
|
95
|
-
</a>
|
|
96
|
-
</span>
|
|
81
|
+
<link-dynamic
|
|
82
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L17"
|
|
83
|
+
>
|
|
84
|
+
GuestType
|
|
85
|
+
</link-dynamic>
|
|
97
86
|
Это позволяет не создавать лишних объектных-оберток
|
|
98
87
|
</p>
|
|
99
88
|
|
|
100
89
|
<p class="text-gray-600 text-lg font-bold mb-0">Пример 2.</p>
|
|
101
90
|
<pre
|
|
102
91
|
class="mt-0 w-full"
|
|
103
|
-
><code class="language-js">import { Guest } from '
|
|
92
|
+
><code class="language-js">import { Guest } from 'silentium';
|
|
104
93
|
|
|
105
94
|
class Timestamp {
|
|
106
95
|
seconds(guest) {
|
package/docs/pages/guest.html
CHANGED
|
@@ -12,25 +12,25 @@
|
|
|
12
12
|
<div class="w-12 h-1 bg-indigo-500 rounded mt-2 mb-4"></div>
|
|
13
13
|
<ul class="text-gray-900">
|
|
14
14
|
<li class="w-full border-b-2 border-neutral-100 py-4">
|
|
15
|
-
<a href="/guest/guest-object"> GuestObject </a>
|
|
15
|
+
<a class="dynamic-navigation" href="/guest/guest-object"> GuestObject </a>
|
|
16
16
|
</li>
|
|
17
17
|
<li class="w-full border-b-2 border-neutral-100 py-4">
|
|
18
|
-
<a href="/guest/guest-sync"> GuestSync </a>
|
|
18
|
+
<a class="dynamic-navigation" href="/guest/guest-sync"> GuestSync </a>
|
|
19
19
|
</li>
|
|
20
20
|
<li class="w-full py-4">
|
|
21
|
-
<a href="/guest/guest-disposable"> GuestDisposable </a>
|
|
21
|
+
<a class="dynamic-navigation" href="/guest/guest-disposable"> GuestDisposable </a>
|
|
22
22
|
</li>
|
|
23
23
|
<li class="w-full border-b-2 border-neutral-100 py-4">
|
|
24
|
-
<a href="/guest/guest-cast"> GuestCast </a>
|
|
24
|
+
<a class="dynamic-navigation" href="/guest/guest-cast"> GuestCast </a>
|
|
25
25
|
</li>
|
|
26
26
|
<li class="w-full border-b-2 border-neutral-100 py-4">
|
|
27
|
-
<a href="/guest/guest-pool"> GuestPool </a>
|
|
27
|
+
<a class="dynamic-navigation" href="/guest/guest-pool"> GuestPool </a>
|
|
28
28
|
</li>
|
|
29
29
|
<li class="w-full border-b-2 border-neutral-100 py-4">
|
|
30
|
-
<a href="/guest/guest-applied"> GuestApplied </a>
|
|
30
|
+
<a class="dynamic-navigation" href="/guest/guest-applied"> GuestApplied </a>
|
|
31
31
|
</li>
|
|
32
32
|
<li class="w-full border-b-2 border-neutral-100 py-4">
|
|
33
|
-
<a href="/guest/guest-executor-applied"> GuestExecutorApplied </a>
|
|
33
|
+
<a class="dynamic-navigation" href="/guest/guest-executor-applied"> GuestExecutorApplied </a>
|
|
34
34
|
</li>
|
|
35
35
|
</ul>
|
|
36
36
|
</div>
|
|
@@ -38,19 +38,113 @@
|
|
|
38
38
|
<div
|
|
39
39
|
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"
|
|
40
40
|
>
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
<h1 class="pb-3 text-xl font-semibold text-gray-600">Класс Guest</h1>
|
|
42
|
+
|
|
43
|
+
<a
|
|
44
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L27"
|
|
45
|
+
target="_blank"
|
|
46
|
+
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"
|
|
47
|
+
>
|
|
48
|
+
<img
|
|
49
|
+
src="./assets/img/github_16.jpg"
|
|
50
|
+
width="16"
|
|
51
|
+
height="16"
|
|
52
|
+
/>
|
|
53
|
+
Guest на GitHub
|
|
54
|
+
</a>
|
|
55
|
+
|
|
56
|
+
<p class="text-gray-600 text-lg mb-4">
|
|
57
|
+
Предназначен для создания новых экземпляров
|
|
58
|
+
<span class="">
|
|
59
|
+
<a
|
|
60
|
+
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 dynamic-navigation"
|
|
61
|
+
target="_blank"
|
|
62
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L12"
|
|
46
63
|
>
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
GuestObjectType
|
|
65
|
+
</a>
|
|
66
|
+
</span>
|
|
67
|
+
из функции-колбэка
|
|
68
|
+
</p>
|
|
69
|
+
|
|
70
|
+
<p class="text-gray-600 text-lg mb-4">
|
|
71
|
+
Это поведение полезно в случаях, когда нужно динамически построить
|
|
72
|
+
<link-dynamic
|
|
73
|
+
href="/terminology/visitor"
|
|
74
|
+
>
|
|
75
|
+
посетителя
|
|
76
|
+
</link-dynamic>
|
|
77
|
+
на основе функции, используя какие-то переменные из скоупа, где создана
|
|
78
|
+
функция
|
|
79
|
+
</p>
|
|
80
|
+
|
|
81
|
+
<p class="text-gray-600 text-lg mb-0 font-bold">Пример 1.</p>
|
|
82
|
+
<pre
|
|
83
|
+
class="mb-4 w-full"
|
|
84
|
+
><code class="language-js">import { Guest } from 'silentium';
|
|
85
|
+
|
|
86
|
+
class Timestamp {
|
|
87
|
+
seconds(guest) {
|
|
88
|
+
guest.give(Date.now())
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const timestamp = new Timestamp();
|
|
93
|
+
timestamp.seconds(new Guest((timestamp) => {
|
|
94
|
+
console.log('timestamp is', timestamp);
|
|
95
|
+
}));</code></pre>
|
|
96
|
+
|
|
97
|
+
<p class="text-gray-600 text-lg mb-0 font-bold">Результат 1.</p>
|
|
98
|
+
<div class="example mb-4">
|
|
99
|
+
<span class="guest-result">Result here</span>
|
|
53
100
|
</div>
|
|
101
|
+
<script type="module">
|
|
102
|
+
import { Guest } from "silentium";
|
|
103
|
+
|
|
104
|
+
class Timestamp {
|
|
105
|
+
seconds(guest) {
|
|
106
|
+
guest.give(Date.now());
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const timestamp = new Timestamp();
|
|
111
|
+
timestamp.seconds(
|
|
112
|
+
new Guest((timestamp) => {
|
|
113
|
+
document.querySelector(
|
|
114
|
+
".guest-result"
|
|
115
|
+
).textContent = `timestamp is ${timestamp}`;
|
|
116
|
+
})
|
|
117
|
+
);
|
|
118
|
+
</script>
|
|
119
|
+
|
|
120
|
+
<p class="text-gray-600 text-lg mb-4">
|
|
121
|
+
Возможность создавать объект-посетитель из функции была
|
|
122
|
+
единственной в первых версиях библиотеки. На текущий момент вы можете также
|
|
123
|
+
передать функцию-колбэк в качестве посетителя, тк функция соответствует типу
|
|
124
|
+
<link-dynamic
|
|
125
|
+
href="https://github.com/kosukhin/patron/blob/main/src/Guest/Guest.ts#L17"
|
|
126
|
+
>
|
|
127
|
+
GuestType
|
|
128
|
+
</link-dynamic>
|
|
129
|
+
Это позволяет не создавать лишних объектных-оберток
|
|
130
|
+
</p>
|
|
131
|
+
|
|
132
|
+
<p class="text-gray-600 text-lg font-bold mb-0">Пример 2.</p>
|
|
133
|
+
<pre
|
|
134
|
+
class="mt-0 w-full"
|
|
135
|
+
><code class="language-js">import { Guest } from 'silentium';
|
|
136
|
+
|
|
137
|
+
class Timestamp {
|
|
138
|
+
seconds(guest) {
|
|
139
|
+
give(Date.now(), guest);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const timestamp = new Timestamp();
|
|
144
|
+
timestamp.seconds((timestamp) => {
|
|
145
|
+
console.log('timestamp is', timestamp);
|
|
146
|
+
});</code></pre>
|
|
147
|
+
|
|
54
148
|
<div class="guest-page-area"></div>
|
|
55
149
|
</div>
|
|
56
150
|
</div>
|