eslint-plugin-use-agnostic 0.9.1 → 0.9.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/README.md +6 -6
- package/library/agnostic20/_commons/constants/bases.js +31 -31
- package/library/directive21/_commons/constants/bases.js +99 -93
- package/package.json +1 -1
- /package/library/directive21/{crossingStrategies → (crossingStrategies)}/_commons/plugins/strategies.js +0 -0
- /package/library/directive21/{crossingStrategies → (crossingStrategies)}/_commons/rules/defaults.js +0 -0
- /package/library/directive21/{crossingStrategies → (crossingStrategies)}/_commons/rules/namespaces.js +0 -0
- /package/library/directive21/{crossingStrategies → (crossingStrategies)}/_commons/rules/specifiers.js +0 -0
- /package/library/directive21/{crossingStrategies → (crossingStrategies)}/config.js +0 -0
package/README.md
CHANGED
|
@@ -85,9 +85,9 @@ Only the first line of code in a file is observed for the presence of a directiv
|
|
|
85
85
|
|
|
86
86
|
Aliased import paths are resolved only if your ESLint config file and your `tsconfig.json` file are in the same directory. (At least to my knowledge.)
|
|
87
87
|
|
|
88
|
-
It is up to you to confirm that your Agnostic Modules are indeed agnostic, meaning that they
|
|
88
|
+
It is up to you to confirm that your Agnostic Modules are indeed agnostic, meaning that they have neither server- nor client-side code. `eslint-plugin-use-agnostic`, at least at this time, does not do this verification for you.
|
|
89
89
|
|
|
90
|
-
It is also up to you to ensure, as outlined above, that **you do not mix** exporting React components with exporting other logics within the same module. Separating exporting React components
|
|
90
|
+
It is also up to you to ensure, as outlined above, that **you do not mix** exporting React components with exporting other logics within the same module. Separating exporting React components within their own modules ending with a JSX extension, from exporting other logics within modules that don't end with a JSX extension, is crucial for distinguishing between Logics Modules and Components Modules.
|
|
91
91
|
|
|
92
92
|
The import rules are designed to be as permissive as possible, allowing for more obscure use cases as long as they are non-breaking. However, it is still your responsibility as a developer to, within a file, not mix in incompatible ways code that cannot compose.
|
|
93
93
|
|
|
@@ -95,13 +95,13 @@ The import rules are designed to be as permissive as possible, allowing for more
|
|
|
95
95
|
|
|
96
96
|
I believe the core issue hindering the comprehension of React Server Components is the fact that the Fullstack React Architecture has entirely erased its own roots since the introduction of directives by disregarding the architecture's primordial realities I have detailed above: its Modules. Server Modules. Client Modules. Agnostic Modules.
|
|
97
97
|
|
|
98
|
-
'use client' may denote to the server that a module's exports are to be imported as client references. But
|
|
98
|
+
'use client' may denote to the server that a module's exports are to be imported as client references. But that effectively makes said module a "'use client' module", and it's only natural that a "'use client' module" would behave in a 'use client' way.
|
|
99
99
|
|
|
100
|
-
'use server' may denote to the client that a module's exports are to be imported as server references. But
|
|
100
|
+
'use server' may denote to the client that a module's exports are to be imported as server references. But that effectively makes said module a "'use server' module", and it's only natural that a "'use server' module" would behave in a 'use server' way.
|
|
101
101
|
|
|
102
102
|
React can easily understand that a 'use client' module is, from a primordial standpoint, a Client Module. And it can also understand that a 'use server' module is a Server Module, albeit a special one.
|
|
103
103
|
|
|
104
|
-
But not having a directive to distinguish between 1. non-special Server Modules that are never meant to be imported on the client, even as references; and 2. actual Agnostic Modules, the Shared Modules that are still here at the heart of this system and are able to run anywhere;
|
|
104
|
+
But not having a directive to distinguish between 1. non-special Server Modules that are never meant to be imported on the client, even as references; and 2. actual Agnostic Modules, the Shared Modules that are still here at the heart of this system and are able to run anywhere; this creates a confusion that is detrimental to every single stackholder in the RSC ecosystem:
|
|
105
105
|
|
|
106
106
|
- Developers are confused and have no idea what "Server" or "Client" means, since React doesn't make it crystal clear.
|
|
107
107
|
- LLMs are confused, because even they can't understand what 'use server' and 'use client' mean and therefore cannot explain it to developers facing their own specific concerns.
|
|
@@ -109,4 +109,4 @@ But not having a directive to distinguish between 1. non-special Server Modules
|
|
|
109
109
|
|
|
110
110
|
This is what the 'use agnostic' directive solves. It clearly marks a module to be an Agnostic Module. And if a module that used to lack a directive can now be marked as an Agnostic Module, this allows modules without a directive to finally, truly be Server Modules by default. And eslint-plugin-use-agnostic can work from there.
|
|
111
111
|
|
|
112
|
-
A lot more
|
|
112
|
+
A lot more needs to be done, and a lot of it unfortunately can only be optimized deeper into React's innerworkings. But if the introduction of 'use agnostic' can already create such powerful static analysis, imagine what it could produce if only it were incorporated into React as an official directive of the Fullstack React Architecture.
|
|
@@ -95,13 +95,13 @@ export const effectiveDirectives_BlockedImports = Object.freeze({
|
|
|
95
95
|
[USE_SERVER_LOGICS]: [
|
|
96
96
|
// USE_SERVER_LOGICS allowed, because Server Logics can compose with one another.
|
|
97
97
|
// USE_SERVER_COMPONENTS allowed, because Server Components are OK to be composed with Server Logics as long as the Server Logics Module, by convention, does not export React components.
|
|
98
|
-
// USE_SERVER_FUNCTIONS allowed, because
|
|
98
|
+
// USE_SERVER_FUNCTIONS allowed, because Server Functions, being able to import one another, can compose and do so via Server Logics, despite this method seeming superfluous at first glance. (Perhaps a preferrable use case for this has been found or could be found either today or in the future.)
|
|
99
99
|
{
|
|
100
100
|
blockedImport: USE_CLIENT_LOGICS,
|
|
101
101
|
message: `${makeIntroForSpecificViolationMessage(
|
|
102
102
|
USE_SERVER_LOGICS,
|
|
103
103
|
USE_CLIENT_LOGICS
|
|
104
|
-
)} Client
|
|
104
|
+
)} Client Logics should never leak to the server.`,
|
|
105
105
|
},
|
|
106
106
|
{
|
|
107
107
|
blockedImport: USE_CLIENT_COMPONENTS,
|
|
@@ -110,55 +110,55 @@ export const effectiveDirectives_BlockedImports = Object.freeze({
|
|
|
110
110
|
USE_CLIENT_COMPONENTS
|
|
111
111
|
)} Client Components cannot be tinkered with on the server.`,
|
|
112
112
|
},
|
|
113
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
114
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can be composed with Logics on the server just like they can on the client,
|
|
113
|
+
// USE_AGNOSTIC_LOGICS allowed, because Agnostic Logics can run safely on the server just like they can on the client.
|
|
114
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can be composed with Logics on the server just like they can on the client, as long at the Server Logics Module, by convention, does not export React components.
|
|
115
115
|
],
|
|
116
116
|
[USE_SERVER_COMPONENTS]: [
|
|
117
|
-
// USE_SERVER_LOGICS allowed, because logic from the server can safely support Server Components.
|
|
117
|
+
// USE_SERVER_LOGICS allowed, because Server Logics, being logic from the server, can safely support Server Components.
|
|
118
118
|
// USE_SERVER_COMPONENTS allowed, because Server Components can compose with one another, assuming thanks to the inclusion of the 'use agnostic' directive that they are actual Server Components.
|
|
119
|
-
// USE_SERVER_FUNCTIONS allowed, because
|
|
119
|
+
// USE_SERVER_FUNCTIONS allowed, because Server Functions can be passed to imported Client Components within Server Components Modules, even though indeed Server Components Modules and Server Components can make their own Server Functions through inline 'use server' directives.
|
|
120
120
|
{
|
|
121
121
|
blockedImport: USE_CLIENT_LOGICS,
|
|
122
122
|
message: `${makeIntroForSpecificViolationMessage(
|
|
123
123
|
USE_SERVER_COMPONENTS,
|
|
124
124
|
USE_CLIENT_LOGICS
|
|
125
|
-
)} Client
|
|
125
|
+
)} Client Logics should never leak to the server.`,
|
|
126
126
|
},
|
|
127
127
|
// USE_CLIENT_COMPONENTS allowed, because Client Components can be nested inside Server Components either to wrap some of the tree with client state accessible through child Client Components and pass through Server Components, or to create client boundaries when the root of the application is planted on the server.
|
|
128
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
128
|
+
// USE_AGNOSTIC_LOGICS allowed, because Agnostic Logics can run safely on the server just like they can on the client.
|
|
129
129
|
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can render safely on the server just like they can on the client.
|
|
130
130
|
],
|
|
131
131
|
[USE_SERVER_FUNCTIONS]: [
|
|
132
|
-
// USE_SERVER_LOGICS allowed, because logic from the server can safely support Server Functions.
|
|
132
|
+
// USE_SERVER_LOGICS allowed, because Server Logics, being logic from the server, can safely support Server Functions.
|
|
133
133
|
{
|
|
134
134
|
blockedImport: USE_SERVER_COMPONENTS,
|
|
135
135
|
message: `${makeIntroForSpecificViolationMessage(
|
|
136
136
|
USE_SERVER_FUNCTIONS,
|
|
137
137
|
USE_SERVER_COMPONENTS
|
|
138
|
-
)} Server Functions have no business working with React Components.`,
|
|
138
|
+
)} Server Components aren't allowed because Server Functions have no business working with React Components.`,
|
|
139
139
|
},
|
|
140
|
-
// USE_SERVER_FUNCTIONS allowed, because even though
|
|
140
|
+
// USE_SERVER_FUNCTIONS allowed, because Server Functions, even though they don't need to import one another and the same results can be generated via Server Logics for the outcome of a single Server Function, can still compose with one another. (Perhaps a preferrable use case for this has been found or could be found either today or in the future.)
|
|
141
141
|
{
|
|
142
142
|
blockedImport: USE_CLIENT_LOGICS,
|
|
143
143
|
message: `${makeIntroForSpecificViolationMessage(
|
|
144
144
|
USE_SERVER_FUNCTIONS,
|
|
145
145
|
USE_CLIENT_LOGICS
|
|
146
|
-
)} Client
|
|
146
|
+
)} Client Logics should never leak to the server.`,
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
blockedImport: USE_CLIENT_COMPONENTS,
|
|
150
150
|
message: `${makeIntroForSpecificViolationMessage(
|
|
151
151
|
USE_SERVER_FUNCTIONS,
|
|
152
152
|
USE_CLIENT_COMPONENTS
|
|
153
|
-
)} Server Functions have no business working with React Components.`,
|
|
153
|
+
)} Client Components aren't allowed because Server Functions have no business working with React Components.`,
|
|
154
154
|
},
|
|
155
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
155
|
+
// USE_AGNOSTIC_LOGICS allowed, because Agnostic Logics can run safely on the server just like they can on the client.
|
|
156
156
|
{
|
|
157
157
|
blockedImport: USE_AGNOSTIC_COMPONENTS,
|
|
158
158
|
message: `${makeIntroForSpecificViolationMessage(
|
|
159
159
|
USE_SERVER_FUNCTIONS,
|
|
160
160
|
USE_AGNOSTIC_COMPONENTS
|
|
161
|
-
)} Server Functions have no business working with React Components.`,
|
|
161
|
+
)} Agnostic Components aren't allowed because Server Functions have no business working with React Components.`,
|
|
162
162
|
},
|
|
163
163
|
],
|
|
164
164
|
[USE_CLIENT_LOGICS]: [
|
|
@@ -167,7 +167,7 @@ export const effectiveDirectives_BlockedImports = Object.freeze({
|
|
|
167
167
|
message: `${makeIntroForSpecificViolationMessage(
|
|
168
168
|
USE_CLIENT_LOGICS,
|
|
169
169
|
USE_SERVER_LOGICS
|
|
170
|
-
)} Server
|
|
170
|
+
)} Server Logics should never leak to the client.
|
|
171
171
|
${SUGGEST_USE_AGNOSTIC}`,
|
|
172
172
|
},
|
|
173
173
|
{
|
|
@@ -178,11 +178,11 @@ ${SUGGEST_USE_AGNOSTIC}`,
|
|
|
178
178
|
)} Server Components cannot be thinkered with on the client.
|
|
179
179
|
${SUGGEST_USE_AGNOSTIC}`,
|
|
180
180
|
},
|
|
181
|
-
// USE_SERVER_FUNCTIONS allowed, because
|
|
181
|
+
// USE_SERVER_FUNCTIONS allowed, because Server Functions can technically be attached to Client Components that are being tinkered with within Client Logics Modules.
|
|
182
182
|
// USE_CLIENT_LOGICS allowed, because Client Logics can compose with one another.
|
|
183
183
|
// USE_CLIENT_COMPONENTS allowed, because Client Components are OK to be composed with Client Logics as long as the Client Logics Module, by convention, does not export React components.
|
|
184
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
185
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can be composed with Logics on the client just like they can on the server,
|
|
184
|
+
// USE_AGNOSTIC_LOGICS allowed, because Agnostic Logics can run safely on the client just like they can on the server.
|
|
185
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can be composed with Logics on the client just like they can on the server, as long as the Client Logics Module, by convention, does not export React components.
|
|
186
186
|
],
|
|
187
187
|
[USE_CLIENT_COMPONENTS]: [
|
|
188
188
|
{
|
|
@@ -190,7 +190,7 @@ ${SUGGEST_USE_AGNOSTIC}`,
|
|
|
190
190
|
message: `${makeIntroForSpecificViolationMessage(
|
|
191
191
|
USE_CLIENT_COMPONENTS,
|
|
192
192
|
USE_SERVER_LOGICS
|
|
193
|
-
)} Server
|
|
193
|
+
)} Server Logics should never leak to the client.
|
|
194
194
|
${SUGGEST_USE_AGNOSTIC}`,
|
|
195
195
|
},
|
|
196
196
|
{
|
|
@@ -198,13 +198,13 @@ ${SUGGEST_USE_AGNOSTIC}`,
|
|
|
198
198
|
message: `${makeIntroForSpecificViolationMessage(
|
|
199
199
|
USE_CLIENT_COMPONENTS,
|
|
200
200
|
USE_SERVER_COMPONENTS
|
|
201
|
-
)} Server Components may only pass through Client Components
|
|
201
|
+
)} Server Components may only pass through Client Components via the children prop within Server Components Modules.
|
|
202
202
|
${SUGGEST_USE_AGNOSTIC}`,
|
|
203
203
|
},
|
|
204
204
|
// USE_SERVER_FUNCTIONS allowed, because Server Functions are specifically triggered by Client Components.
|
|
205
|
-
// USE_CLIENT_LOGICS allowed, because logic from the client can safely support Client Components.
|
|
205
|
+
// USE_CLIENT_LOGICS allowed, because Client Logics, being logic from the client, can safely support Client Components.
|
|
206
206
|
// USE_CLIENT_COMPONENTS allowed, because Client Components can compose with one another.
|
|
207
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
207
|
+
// USE_AGNOSTIC_LOGICS allowed, because Agnostic Logics can run safely on the client just like they can on the server.
|
|
208
208
|
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can render safely on the client just like they can on the server.
|
|
209
209
|
],
|
|
210
210
|
[USE_AGNOSTIC_LOGICS]: [
|
|
@@ -213,7 +213,7 @@ ${SUGGEST_USE_AGNOSTIC}`,
|
|
|
213
213
|
message: `${makeIntroForSpecificViolationMessage(
|
|
214
214
|
USE_AGNOSTIC_LOGICS,
|
|
215
215
|
USE_SERVER_LOGICS
|
|
216
|
-
)} Server
|
|
216
|
+
)} Server Logics cannot run on both the server and the client.
|
|
217
217
|
${SUGGEST_USE_AGNOSTIC}`,
|
|
218
218
|
},
|
|
219
219
|
{
|
|
@@ -229,14 +229,14 @@ ${SUGGEST_USE_AGNOSTIC}`,
|
|
|
229
229
|
message: `${makeIntroForSpecificViolationMessage(
|
|
230
230
|
USE_AGNOSTIC_LOGICS,
|
|
231
231
|
USE_SERVER_FUNCTIONS
|
|
232
|
-
)}
|
|
232
|
+
)} Server Functions can be modified on the server and on the client, but their use cases on both environments are not one-to-one compatible, since they're being addressed as they are on the server and addressed as references on the client.`,
|
|
233
233
|
},
|
|
234
234
|
{
|
|
235
235
|
blockedImport: USE_CLIENT_LOGICS,
|
|
236
236
|
message: `${makeIntroForSpecificViolationMessage(
|
|
237
237
|
USE_AGNOSTIC_LOGICS,
|
|
238
238
|
USE_CLIENT_LOGICS
|
|
239
|
-
)} Client
|
|
239
|
+
)} Client Logics cannot run on both the server and the client.`,
|
|
240
240
|
},
|
|
241
241
|
{
|
|
242
242
|
blockedImport: USE_CLIENT_COMPONENTS,
|
|
@@ -254,7 +254,7 @@ ${SUGGEST_USE_AGNOSTIC}`,
|
|
|
254
254
|
message: `${makeIntroForSpecificViolationMessage(
|
|
255
255
|
USE_AGNOSTIC_COMPONENTS,
|
|
256
256
|
USE_SERVER_LOGICS
|
|
257
|
-
)} Server
|
|
257
|
+
)} Server Logics cannot run on both the server and the client.
|
|
258
258
|
${SUGGEST_USE_AGNOSTIC}`,
|
|
259
259
|
},
|
|
260
260
|
{
|
|
@@ -262,19 +262,19 @@ ${SUGGEST_USE_AGNOSTIC}`,
|
|
|
262
262
|
message: `${makeIntroForSpecificViolationMessage(
|
|
263
263
|
USE_AGNOSTIC_COMPONENTS,
|
|
264
264
|
USE_SERVER_COMPONENTS
|
|
265
|
-
)}
|
|
265
|
+
)} Server Components, unlike Client Components, cannot make silos of their own once on the opposing environment (the client in this case), and therefore cannot be executed from the client, making them unable to execute agnostically from both the server and the client.
|
|
266
266
|
${SUGGEST_USE_AGNOSTIC}`,
|
|
267
267
|
},
|
|
268
|
-
// USE_SERVER_FUNCTIONS allowed, because
|
|
268
|
+
// USE_SERVER_FUNCTIONS allowed, because Server Functions can be passed to Client Components as props when Client Components are also legally imported into Agnostic Components Modules.
|
|
269
269
|
{
|
|
270
270
|
blockedImport: USE_CLIENT_LOGICS,
|
|
271
271
|
message: `${makeIntroForSpecificViolationMessage(
|
|
272
272
|
USE_AGNOSTIC_COMPONENTS,
|
|
273
273
|
USE_CLIENT_LOGICS
|
|
274
|
-
)} Client
|
|
274
|
+
)} Client Logics cannot run on both the server and the client.`,
|
|
275
275
|
},
|
|
276
276
|
// USE_CLIENT_COMPONENTS allowed, because Client Components can be nested inside Agnostic Components either to wrap some of the tree with client state accessible through child Client Components and pass through Server Components (if still on the Server Tree), or to create client boundaries when the root of the application is planted on the server.
|
|
277
|
-
// USE_AGNOSTIC_LOGICS allowed, because environment-agnostic logic can safely support Agnostic Components.
|
|
277
|
+
// USE_AGNOSTIC_LOGICS allowed, because Agnostic Logics, being environment-agnostic logic, can safely support Agnostic Components.
|
|
278
278
|
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can compose with one another.
|
|
279
279
|
],
|
|
280
280
|
});
|
|
@@ -168,33 +168,33 @@ const makeIntroForSpecificViolationMessage = (
|
|
|
168
168
|
|
|
169
169
|
export const commentedDirectives_BlockedImports = Object.freeze({
|
|
170
170
|
[USE_SERVER_LOGICS]: [
|
|
171
|
-
// USE_SERVER_LOGICS allowed, because Server Logics can compose with one another.
|
|
171
|
+
// USE_SERVER_LOGICS allowed, because Prime Server Logics can compose with one another.
|
|
172
172
|
{
|
|
173
173
|
blockedImport: USE_CLIENT_LOGICS,
|
|
174
174
|
message: `${makeIntroForSpecificViolationMessage(
|
|
175
175
|
USE_SERVER_LOGICS,
|
|
176
176
|
USE_CLIENT_LOGICS
|
|
177
|
-
)} Client
|
|
177
|
+
)} Prime Client Logics should never leak to the server.`,
|
|
178
178
|
},
|
|
179
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
180
|
-
// USE_SERVER_COMPONENTS allowed, because Server Components are OK to be composed with Server Logics as long as the Server Logics Module, by convention, does not export React components.
|
|
179
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics can run safely on the server just like they can on the client.
|
|
180
|
+
// USE_SERVER_COMPONENTS allowed, because Lineal Server Components are OK to be composed with Prime Server Logics as long as the Prime Server Logics Module, by convention, does not export React components.
|
|
181
181
|
{
|
|
182
182
|
blockedImport: USE_CLIENT_COMPONENTS,
|
|
183
183
|
message: `${makeIntroForSpecificViolationMessage(
|
|
184
184
|
USE_SERVER_LOGICS,
|
|
185
185
|
USE_CLIENT_COMPONENTS
|
|
186
|
-
)} Client Components cannot be tinkered with on the server.`,
|
|
186
|
+
)} Lineal Client Components, like any Client Components, cannot be tinkered with on the server.`,
|
|
187
187
|
},
|
|
188
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can be composed with
|
|
189
|
-
// USE_SERVER_FUNCTIONS allowed, because
|
|
188
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Lineal Agnostic Components can be composed with any Prime Environment Logics agnostically as long as the Prime Environment Logics Module, by convention, does not export React components.
|
|
189
|
+
// USE_SERVER_FUNCTIONS allowed, because (Special) Server Functions, being able to import one another, can compose and do so via Prime Server Logics, despite this method seeming superfluous at first glance. (Perhaps a preferrable use case for this has been found or could be found either today or in the future.)
|
|
190
190
|
{
|
|
191
191
|
blockedImport: USE_CLIENT_CONTEXTS,
|
|
192
192
|
message: `${makeIntroForSpecificViolationMessage(
|
|
193
193
|
USE_SERVER_LOGICS,
|
|
194
194
|
USE_CLIENT_CONTEXTS
|
|
195
|
-
)} Client Components cannot be tinkered with on the server
|
|
195
|
+
)} (Special) Client Contexts Components, like any Client Components, cannot be tinkered with on the server.`,
|
|
196
196
|
},
|
|
197
|
-
// USE_AGNOSTIC_CONDITIONS allowed, because
|
|
197
|
+
// USE_AGNOSTIC_CONDITIONS allowed, because (Special) Agnostic Conditions Components are able to safely render on the server, guaranteeing that only their `ComponentForServer` will be effectively involved in Prime Server Logics Modules.
|
|
198
198
|
],
|
|
199
199
|
[USE_CLIENT_LOGICS]: [
|
|
200
200
|
{
|
|
@@ -202,22 +202,22 @@ export const commentedDirectives_BlockedImports = Object.freeze({
|
|
|
202
202
|
message: `${makeIntroForSpecificViolationMessage(
|
|
203
203
|
USE_CLIENT_LOGICS,
|
|
204
204
|
USE_SERVER_LOGICS
|
|
205
|
-
)} Server
|
|
205
|
+
)} Prime Server Logics should never leak to the client.`,
|
|
206
206
|
},
|
|
207
|
-
// USE_CLIENT_LOGICS allowed, because Client Logics can compose with one another.
|
|
208
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
207
|
+
// USE_CLIENT_LOGICS allowed, because Prime Client Logics can compose with one another.
|
|
208
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics can run safely on the client just like they can on the server.
|
|
209
209
|
{
|
|
210
210
|
blockedImport: USE_SERVER_COMPONENTS,
|
|
211
211
|
message: `${makeIntroForSpecificViolationMessage(
|
|
212
212
|
USE_CLIENT_LOGICS,
|
|
213
213
|
USE_SERVER_COMPONENTS
|
|
214
|
-
)} Server Components cannot be thinkered with on the client.`,
|
|
214
|
+
)} Lineal Server Components cannot be thinkered with on the client.`,
|
|
215
215
|
},
|
|
216
|
-
// USE_CLIENT_COMPONENTS allowed, because Client Components are OK to be composed with Client Logics as long as the Client Logics Module, by convention, does not export React components.
|
|
217
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can be composed with
|
|
218
|
-
// USE_SERVER_FUNCTIONS allowed, because
|
|
219
|
-
// USE_CLIENT_CONTEXTS allowed, because Client Components are OK to be composed with Client Logics as long as the Client Logics Module, by convention, does not export React components
|
|
220
|
-
// USE_AGNOSTIC_CONDITIONS allowed, because
|
|
216
|
+
// USE_CLIENT_COMPONENTS allowed, because Lineal Client Components, like any Client Components, are OK to be composed with Prime Client Logics as long as the Prime Client Logics Module, by convention, does not export React components.
|
|
217
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Lineal Agnostic Components can be composed with any Prime Environment Logics agnostically as long as the Prime Environment Logics Module, by convention, does not export React components.
|
|
218
|
+
// USE_SERVER_FUNCTIONS allowed, because (Special) Server Functions can technically be attached to Client Components that are being tinkered with within Client Logics Modules.
|
|
219
|
+
// USE_CLIENT_CONTEXTS allowed, because (Special) Client Contexts Components, like any Client Components, are OK to be composed with Prime Client Logics as long as the Prime Client Logics Module, by convention, does not export React components.
|
|
220
|
+
// USE_AGNOSTIC_CONDITIONS allowed, because (Special) Agnostic Conditions Components are able to safely render on the client, guaranteeing that only their `ComponentForClient` will be effectively involved in Prime Client Logics Modules.
|
|
221
221
|
],
|
|
222
222
|
[USE_AGNOSTIC_LOGICS]: [
|
|
223
223
|
{
|
|
@@ -225,63 +225,63 @@ export const commentedDirectives_BlockedImports = Object.freeze({
|
|
|
225
225
|
message: `${makeIntroForSpecificViolationMessage(
|
|
226
226
|
USE_AGNOSTIC_LOGICS,
|
|
227
227
|
USE_SERVER_LOGICS
|
|
228
|
-
)} Server
|
|
228
|
+
)} Prime Server Logics cannot run on both the server and the client.`,
|
|
229
229
|
},
|
|
230
230
|
{
|
|
231
231
|
blockedImport: USE_CLIENT_LOGICS,
|
|
232
232
|
message: `${makeIntroForSpecificViolationMessage(
|
|
233
233
|
USE_AGNOSTIC_LOGICS,
|
|
234
234
|
USE_CLIENT_LOGICS
|
|
235
|
-
)} Client
|
|
235
|
+
)} Prime Client Logics cannot run on both the server and the client.`,
|
|
236
236
|
},
|
|
237
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic Logics can compose with one another.
|
|
237
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics can compose with one another.
|
|
238
238
|
{
|
|
239
239
|
blockedImport: USE_SERVER_COMPONENTS,
|
|
240
240
|
message: `${makeIntroForSpecificViolationMessage(
|
|
241
241
|
USE_AGNOSTIC_LOGICS,
|
|
242
242
|
USE_SERVER_COMPONENTS
|
|
243
|
-
)} Server Components cannot be tinkered with on both the server and the client.`,
|
|
243
|
+
)} Lineal Server Components cannot be tinkered with on both the server and the client.`,
|
|
244
244
|
},
|
|
245
245
|
{
|
|
246
246
|
blockedImport: USE_CLIENT_COMPONENTS,
|
|
247
247
|
message: `${makeIntroForSpecificViolationMessage(
|
|
248
248
|
USE_AGNOSTIC_LOGICS,
|
|
249
249
|
USE_CLIENT_COMPONENTS
|
|
250
|
-
)} Client Components cannot be tinkered with on both the server and the client.`,
|
|
250
|
+
)} Lineal Client Components, like any Client Components, cannot be tinkered with on both the server and the client.`,
|
|
251
251
|
},
|
|
252
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can be composed with Logics agnostically as long as the
|
|
252
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Lineal Agnostic Components can be composed with any Prime Environment Logics agnostically as long as the Prime Environment Logics Module, by convention, does not export React components.
|
|
253
253
|
{
|
|
254
254
|
blockedImport: USE_SERVER_FUNCTIONS,
|
|
255
255
|
message: `${makeIntroForSpecificViolationMessage(
|
|
256
256
|
USE_AGNOSTIC_LOGICS,
|
|
257
257
|
USE_SERVER_FUNCTIONS
|
|
258
|
-
)}
|
|
258
|
+
)} (Special) Server Functions can be modified on the server and on the client, but their use cases on both environments are not one-to-one compatible, since they're being addressed as they are on the server and addressed as references on the client.`,
|
|
259
259
|
},
|
|
260
260
|
{
|
|
261
261
|
blockedImport: USE_CLIENT_CONTEXTS,
|
|
262
262
|
message: `${makeIntroForSpecificViolationMessage(
|
|
263
263
|
USE_AGNOSTIC_LOGICS,
|
|
264
264
|
USE_CLIENT_CONTEXTS
|
|
265
|
-
)} Client Components cannot be tinkered with on both the server and the client
|
|
265
|
+
)} (Special) Client Contexts Components, like any Client Components, cannot be tinkered with on both the server and the client.`,
|
|
266
266
|
},
|
|
267
|
-
// USE_AGNOSTIC_CONDITIONS allowed, because Agnostic Components can be composed with Logics agnostically as long as the
|
|
267
|
+
// USE_AGNOSTIC_CONDITIONS allowed, because (Special) Agnostic Conditions Components, as if they were Lineal Agnostic Components themselves, can be composed with any Prime Environment Logics agnostically as long as the Prime Environment Logics Module, by convention, does not export React components.
|
|
268
268
|
],
|
|
269
269
|
[USE_SERVER_COMPONENTS]: [
|
|
270
|
-
// USE_SERVER_LOGICS allowed, because logic from the server can safely support Server Components.
|
|
270
|
+
// USE_SERVER_LOGICS allowed, because Prime Server Logics, being logic from the server, can safely support Lineal Server Components.
|
|
271
271
|
{
|
|
272
272
|
blockedImport: USE_CLIENT_LOGICS,
|
|
273
273
|
message: `${makeIntroForSpecificViolationMessage(
|
|
274
274
|
USE_SERVER_COMPONENTS,
|
|
275
275
|
USE_CLIENT_LOGICS
|
|
276
|
-
)} Client
|
|
276
|
+
)} Prime Client Logics should never leak to the server.`,
|
|
277
277
|
},
|
|
278
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
279
|
-
// USE_SERVER_COMPONENTS allowed, because Server Components can compose with one another, now that thanks to the inclusion of Agnostic Components they are actual Server Components.
|
|
280
|
-
// USE_CLIENT_COMPONENTS allowed, because
|
|
281
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can render safely on the server just like they can on the client.
|
|
282
|
-
// USE_SERVER_FUNCTIONS allowed, because
|
|
283
|
-
// USE_CLIENT_CONTEXTS allowed, because
|
|
284
|
-
// USE_AGNOSTIC_CONDITIONS allowed, because Agnostic Components can render safely on the server just like they can on the client
|
|
278
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics can run safely on the server just like they can on the client.
|
|
279
|
+
// USE_SERVER_COMPONENTS allowed, because Lineal Server Components can compose with one another, now that thanks to the inclusion of Agnostic Components they are actual Server Components.
|
|
280
|
+
// USE_CLIENT_COMPONENTS allowed, because Lineal Client Components can be nested inside Server Components to create client boundaries when the root of the application is planted on the server.
|
|
281
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Lineal Agnostic Components can render safely on the server just like they can on the client.
|
|
282
|
+
// USE_SERVER_FUNCTIONS allowed, because (Special) Server Functions can be passed to imported Client Components within Lineal Server Components Modules, even though indeed Lineal Server Components Modules and Lineal Server Components can make their own Server Functions through inline 'use server' directives.
|
|
283
|
+
// USE_CLIENT_CONTEXTS allowed, because (Special) Client Contexts Components can be nested inside Server Components to wrap some of the tree with client state accessible through child Client Components, and to pass through Server Components when the root of the application is planted on the server.
|
|
284
|
+
// USE_AGNOSTIC_CONDITIONS allowed, because (Special) Agnostic Conditions Components, as if they were Lineal Agnostic Components themselves, can render safely on the server just like they can on the client.
|
|
285
285
|
],
|
|
286
286
|
[USE_CLIENT_COMPONENTS]: [
|
|
287
287
|
{
|
|
@@ -289,22 +289,22 @@ export const commentedDirectives_BlockedImports = Object.freeze({
|
|
|
289
289
|
message: `${makeIntroForSpecificViolationMessage(
|
|
290
290
|
USE_CLIENT_COMPONENTS,
|
|
291
291
|
USE_SERVER_LOGICS
|
|
292
|
-
)} Server
|
|
292
|
+
)} Prime Server Logics should never leak to the client.`,
|
|
293
293
|
},
|
|
294
|
-
// USE_CLIENT_LOGICS allowed, because logic from the client can safely support Client Components.
|
|
295
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
294
|
+
// USE_CLIENT_LOGICS allowed, because Prime Client Logics, being logic from the client, can safely support Lineal Client Components, like any Client Components.
|
|
295
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics can run safely on the client just like they can on the server.
|
|
296
296
|
{
|
|
297
297
|
blockedImport: USE_SERVER_COMPONENTS,
|
|
298
298
|
message: `${makeIntroForSpecificViolationMessage(
|
|
299
299
|
USE_CLIENT_COMPONENTS,
|
|
300
300
|
USE_SERVER_COMPONENTS
|
|
301
|
-
)} Server Components cannot be the children of Lineal Client Components.`,
|
|
301
|
+
)} Lineal Server Components cannot be the children of Lineal Client Components.`,
|
|
302
302
|
},
|
|
303
|
-
// USE_CLIENT_COMPONENTS allowed, because Client Components can compose with one another.
|
|
304
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can render safely on the client just like they can on the server.
|
|
305
|
-
// USE_SERVER_FUNCTIONS allowed, because Server Functions are specifically triggered by Client Components.
|
|
306
|
-
// USE_CLIENT_CONTEXTS allowed, because
|
|
307
|
-
// USE_AGNOSTIC_CONDITIONS allowed, because Agnostic Components can render safely on the client just like they can on the server
|
|
303
|
+
// USE_CLIENT_COMPONENTS allowed, because Lineal Client Components can compose with one another.
|
|
304
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Lineal Agnostic Components can render safely on the client just like they can on the server.
|
|
305
|
+
// USE_SERVER_FUNCTIONS allowed, because (Special) Server Functions are specifically triggered by Client Components.
|
|
306
|
+
// USE_CLIENT_CONTEXTS allowed, because (Special) Client Contexts Components can effectively become Lineal and only render their children on the client via this mechanism since, by a Client Contexts Component being the child of a Lineal Client Component, the Client Contexts Component's children become the grand-children of an ancestor Lineal Client Component, enforcing them to render exclusively on the client.
|
|
307
|
+
// USE_AGNOSTIC_CONDITIONS allowed, because (Special) Agnostic Conditions Components, as if they were Lineal Agnostic Components themselves, can render safely on the client just like they can on the server.
|
|
308
308
|
],
|
|
309
309
|
[USE_AGNOSTIC_COMPONENTS]: [
|
|
310
310
|
{
|
|
@@ -312,74 +312,74 @@ export const commentedDirectives_BlockedImports = Object.freeze({
|
|
|
312
312
|
message: `${makeIntroForSpecificViolationMessage(
|
|
313
313
|
USE_AGNOSTIC_COMPONENTS,
|
|
314
314
|
USE_SERVER_LOGICS
|
|
315
|
-
)} Server
|
|
315
|
+
)} Prime Server Logics cannot run on both the server and the client.`,
|
|
316
316
|
},
|
|
317
317
|
{
|
|
318
318
|
blockedImport: USE_CLIENT_LOGICS,
|
|
319
319
|
message: `${makeIntroForSpecificViolationMessage(
|
|
320
320
|
USE_AGNOSTIC_COMPONENTS,
|
|
321
321
|
USE_CLIENT_LOGICS
|
|
322
|
-
)} Client
|
|
322
|
+
)} Prime Client Logics cannot run on both the server and the client.`,
|
|
323
323
|
},
|
|
324
|
-
// USE_AGNOSTIC_LOGICS allowed, because environment-agnostic logic can safely support Agnostic Components.
|
|
324
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics, being environment-agnostic logic, can safely support Agnostic Components.
|
|
325
325
|
{
|
|
326
326
|
blockedImport: USE_SERVER_COMPONENTS,
|
|
327
327
|
message: `${makeIntroForSpecificViolationMessage(
|
|
328
328
|
USE_AGNOSTIC_COMPONENTS,
|
|
329
329
|
USE_SERVER_COMPONENTS
|
|
330
|
-
)}
|
|
330
|
+
)} Lineal Server Components, unlike Lineal Client Components, cannot make silos of their own once on the opposing environment (the client in this case), and therefore cannot be executed from the client, making them unable to execute agnostically from both the server and the client.`,
|
|
331
331
|
},
|
|
332
|
-
// USE_CLIENT_COMPONENTS allowed, because
|
|
333
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can compose with one another.
|
|
334
|
-
// USE_SERVER_FUNCTIONS allowed, because
|
|
335
|
-
// USE_CLIENT_CONTEXTS allowed, because
|
|
336
|
-
//
|
|
332
|
+
// USE_CLIENT_COMPONENTS allowed, because Lineal Client Components can be nested inside Agnostic Components to create client boundaries when the root of the application is planted on the server.
|
|
333
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Lineal Agnostic Components, can compose with one another.
|
|
334
|
+
// USE_SERVER_FUNCTIONS allowed, because (Special) Server Functions can be passed to Client Components as props when Client Components are also legally imported into Agnostic Components Modules.
|
|
335
|
+
// USE_CLIENT_CONTEXTS allowed, because (Special) Client Contexts Components can be nested inside Agnostic Components to wrap some of the tree with client state accessible through child Client Components, and to pass through Server Components (if still on the Server Tree) when the root of the application is planted on the server.
|
|
336
|
+
// USE_AGNOSTIC_CONDITIONS allowed, because (Special) Agnostic Conditions Components can compose with Lineal Agnostic Components as if they were Lineal Agnostic Components themselves, making them a necessary mechanism for Server Components to be nested in Agnostic Components.
|
|
337
337
|
],
|
|
338
338
|
[USE_SERVER_FUNCTIONS]: [
|
|
339
|
-
// USE_SERVER_LOGICS allowed, because logic from the server can safely support Server Functions.
|
|
339
|
+
// USE_SERVER_LOGICS allowed, because Prime Server Logics, being logic from the server, can safely support (Special) Server Functions.
|
|
340
340
|
{
|
|
341
341
|
blockedImport: USE_CLIENT_LOGICS,
|
|
342
342
|
message: `${makeIntroForSpecificViolationMessage(
|
|
343
343
|
USE_SERVER_FUNCTIONS,
|
|
344
344
|
USE_CLIENT_LOGICS
|
|
345
|
-
)} Client
|
|
345
|
+
)} Prime Client Logics should never leak to the server.`,
|
|
346
346
|
},
|
|
347
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
347
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics can run safely on the server just like they can on the client.
|
|
348
348
|
{
|
|
349
349
|
blockedImport: USE_SERVER_COMPONENTS,
|
|
350
350
|
message: `${makeIntroForSpecificViolationMessage(
|
|
351
351
|
USE_SERVER_FUNCTIONS,
|
|
352
352
|
USE_SERVER_COMPONENTS
|
|
353
|
-
)} Server Functions have no business working with React Components.`,
|
|
353
|
+
)} Lineal Server Components aren't allowed because (Special) Server Functions have no business working with React Components.`,
|
|
354
354
|
},
|
|
355
355
|
{
|
|
356
356
|
blockedImport: USE_CLIENT_COMPONENTS,
|
|
357
357
|
message: `${makeIntroForSpecificViolationMessage(
|
|
358
358
|
USE_SERVER_FUNCTIONS,
|
|
359
359
|
USE_CLIENT_COMPONENTS
|
|
360
|
-
)} Server Functions have no business working with React Components.`,
|
|
360
|
+
)} Lineal Client Components aren't allowed because (Special) Server Functions have no business working with React Components.`,
|
|
361
361
|
},
|
|
362
362
|
{
|
|
363
363
|
blockedImport: USE_AGNOSTIC_COMPONENTS,
|
|
364
364
|
message: `${makeIntroForSpecificViolationMessage(
|
|
365
365
|
USE_SERVER_FUNCTIONS,
|
|
366
366
|
USE_AGNOSTIC_COMPONENTS
|
|
367
|
-
)} Server Functions have no business working with React Components.`,
|
|
367
|
+
)} Lineal Agnostic Components aren't allowed because (Special) Server Functions have no business working with React Components.`,
|
|
368
368
|
},
|
|
369
|
-
// USE_SERVER_FUNCTIONS allowed, because even though
|
|
369
|
+
// USE_SERVER_FUNCTIONS allowed, because (Special) Server Functions, even though they don't need to import one another and the same results can be generated via Prime Server Logics for the outcome of a single Server Function, can still compose with one another. (Perhaps a preferrable use case for this has been found or could be found either today or in the future.)
|
|
370
370
|
{
|
|
371
371
|
blockedImport: USE_CLIENT_CONTEXTS,
|
|
372
372
|
message: `${makeIntroForSpecificViolationMessage(
|
|
373
373
|
USE_SERVER_FUNCTIONS,
|
|
374
374
|
USE_CLIENT_CONTEXTS
|
|
375
|
-
)} Server Functions have no business working with React Components.`,
|
|
375
|
+
)} (Special) Client Contexts Components aren't allowed because (Special) Server Functions have no business working with React Components.`,
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
blockedImport: USE_AGNOSTIC_CONDITIONS,
|
|
379
379
|
message: `${makeIntroForSpecificViolationMessage(
|
|
380
380
|
USE_SERVER_FUNCTIONS,
|
|
381
381
|
USE_AGNOSTIC_CONDITIONS
|
|
382
|
-
)} Server Functions have no business working with React Components.`,
|
|
382
|
+
)} (Special) Agnostic Conditions Components aren't allowed (Special)because Server Functions have no business working with React Components.`,
|
|
383
383
|
},
|
|
384
384
|
],
|
|
385
385
|
[USE_CLIENT_CONTEXTS]: [
|
|
@@ -388,22 +388,22 @@ export const commentedDirectives_BlockedImports = Object.freeze({
|
|
|
388
388
|
message: `${makeIntroForSpecificViolationMessage(
|
|
389
389
|
USE_CLIENT_CONTEXTS,
|
|
390
390
|
USE_SERVER_LOGICS
|
|
391
|
-
)} Server
|
|
391
|
+
)} Prime Server Logics should never leak to the client.`,
|
|
392
392
|
},
|
|
393
|
-
// USE_CLIENT_LOGICS allowed, because logic from the client can safely support Client Components,
|
|
394
|
-
// USE_AGNOSTIC_LOGICS allowed, because Agnostic
|
|
393
|
+
// USE_CLIENT_LOGICS allowed, because Prime Client Logics, being logic from the client, can safely support (Special) Client Contexts Components, like any Client Components.
|
|
394
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics can run safely on the client just like they can on the server.
|
|
395
395
|
{
|
|
396
396
|
blockedImport: USE_SERVER_COMPONENTS,
|
|
397
397
|
message: `${makeIntroForSpecificViolationMessage(
|
|
398
398
|
USE_CLIENT_CONTEXTS,
|
|
399
399
|
USE_SERVER_COMPONENTS
|
|
400
|
-
)} Server Components may only pass through Client Contexts Components
|
|
400
|
+
)} Lineal Server Components may only pass through Client Contexts Components via the children prop within Server Components Modules.`,
|
|
401
401
|
},
|
|
402
|
-
// USE_CLIENT_COMPONENTS allowed, because Lineal Client Components can create client boundaries within Client Contexts Components.
|
|
403
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because Agnostic Components can render safely on the client just like they can on the server.
|
|
404
|
-
// USE_SERVER_FUNCTIONS allowed, because Server Functions are specifically triggered by Client Components
|
|
405
|
-
// USE_CLIENT_CONTEXTS allowed, because Client Contexts Components can compose with one another.
|
|
406
|
-
// USE_AGNOSTIC_CONDITIONS allowed, because Agnostic Components can render safely on the client just like they can on the server,
|
|
402
|
+
// USE_CLIENT_COMPONENTS allowed, because Lineal Client Components can create client boundaries within (Special) Client Contexts Components.
|
|
403
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Lineal Agnostic Components can render safely on the client just like they can on the server.
|
|
404
|
+
// USE_SERVER_FUNCTIONS allowed, because (Special) Server Functions are specifically triggered by Client Components.
|
|
405
|
+
// USE_CLIENT_CONTEXTS allowed, because (Special) Client Contexts Components can compose with one another.
|
|
406
|
+
// USE_AGNOSTIC_CONDITIONS allowed, because (Special) Agnostic Conditions Components, as if they were Lineal Agnostic Components themselves, can render safely on the client just like they can on the server, in a mechanism that allows Client Contexts Components to safely and indirectly compose with child Server Components within Client Contexts Modules.
|
|
407
407
|
],
|
|
408
408
|
[USE_AGNOSTIC_CONDITIONS]: [
|
|
409
409
|
{
|
|
@@ -411,52 +411,58 @@ export const commentedDirectives_BlockedImports = Object.freeze({
|
|
|
411
411
|
message: `${makeIntroForSpecificViolationMessage(
|
|
412
412
|
USE_AGNOSTIC_CONDITIONS,
|
|
413
413
|
USE_SERVER_LOGICS
|
|
414
|
-
)} Server
|
|
414
|
+
)} Prime Server Logics cannot run on both the server and the client.`,
|
|
415
415
|
},
|
|
416
416
|
{
|
|
417
417
|
blockedImport: USE_CLIENT_LOGICS,
|
|
418
418
|
message: `${makeIntroForSpecificViolationMessage(
|
|
419
419
|
USE_AGNOSTIC_CONDITIONS,
|
|
420
420
|
USE_CLIENT_LOGICS
|
|
421
|
-
)} Client
|
|
421
|
+
)} Prime Client Logics cannot run on both the server and the client.`,
|
|
422
422
|
},
|
|
423
|
-
// USE_AGNOSTIC_LOGICS allowed, because environment-agnostic logic can safely support Agnostic Components, including Agnostic Conditions Components. (In this case this is necessary for the import of the conditionAgnosticComponent function needed to make Agnostic Conditions Components.)
|
|
424
|
-
// USE_SERVER_COMPONENTS allowed, because
|
|
425
|
-
// USE_CLIENT_COMPONENTS allowed, because
|
|
426
|
-
// USE_AGNOSTIC_COMPONENTS allowed, because
|
|
423
|
+
// USE_AGNOSTIC_LOGICS allowed, because Prime Agnostic Logics, being environment-agnostic logic, can safely support Agnostic Components, including (Special) Agnostic Conditions Components. (In this case this is necessary for the import of the `conditionAgnosticComponent` function needed to make Agnostic Conditions Components.)
|
|
424
|
+
// USE_SERVER_COMPONENTS allowed, because Lineal Server Components are to be paired as `ComponentForServer` components with `ComponentForClient` components to form (Special) Agnostic Conditions Components.
|
|
425
|
+
// USE_CLIENT_COMPONENTS allowed, because Lineal Client Components are to be paired as `ComponentForClient` components with `ComponentForServer` components to form (Special) Agnostic Conditions Components.
|
|
426
|
+
// USE_AGNOSTIC_COMPONENTS allowed, because Lineal Agnostic Components can take the place of `ComponentForServer` and/or `ComponentForClient` components to form (Special) Agnostic Conditions Components.
|
|
427
427
|
{
|
|
428
428
|
blockedImport: USE_SERVER_FUNCTIONS,
|
|
429
429
|
message: `${makeIntroForSpecificViolationMessage(
|
|
430
430
|
USE_AGNOSTIC_CONDITIONS,
|
|
431
431
|
USE_SERVER_FUNCTIONS
|
|
432
|
-
)} Agnostic Conditions Components only take finite, imported components as arguments in their making. As such, assigning props to these components, including Server Functions, is not made within Agnostic Conditions Modules.`,
|
|
432
|
+
)} (Special) Server Functions are not accepted because (Special) Agnostic Conditions Components only take finite, imported components as arguments in their making. As such, assigning props to these components, including Server Functions, is not made within Agnostic Conditions Modules.`,
|
|
433
433
|
},
|
|
434
434
|
{
|
|
435
435
|
blockedImport: USE_CLIENT_CONTEXTS,
|
|
436
436
|
message: `${makeIntroForSpecificViolationMessage(
|
|
437
437
|
USE_AGNOSTIC_CONDITIONS,
|
|
438
438
|
USE_CLIENT_CONTEXTS
|
|
439
|
-
)} Agnostic Conditions Components only take Lineal Components as arguments in their making.`,
|
|
439
|
+
)} (Special) Client Contexts Components cannot be used as component arguments for (Special) Agnostic Conditions Components since they only take Lineal Components as arguments in their making.`,
|
|
440
440
|
},
|
|
441
|
-
// USE_AGNOSTIC_CONDITIONS allowed, because despite not being Lineal Components themselves,
|
|
441
|
+
// USE_AGNOSTIC_CONDITIONS allowed, because (Special) Agnostic Conditions Components, despite not being Lineal Components themselves, output components that can only be Lineal and compatible with their attributed rendering environments, making them acceptable arguments in the making of Agnostic Conditions Components.
|
|
442
442
|
],
|
|
443
443
|
[USE_AGNOSTIC_STRATEGIES]: [
|
|
444
|
-
// Agnostic Strategies Modules can import all known modules, except themselves since they cannot be imported as they are, only as and via Strategies. (Since Agnostic Strategies Modules cannot be imported as they are, there is no such things as a 'use agnostic strategies' importFileCommentedDirective.)
|
|
444
|
+
// (Special) Agnostic Strategies Modules can import all known modules, except themselves since they cannot be imported as they are, only as and via Strategies. (Since Agnostic Strategies Modules cannot be imported as they are, there is no such things as a 'use agnostic strategies' importFileCommentedDirective.)
|
|
445
445
|
],
|
|
446
446
|
});
|
|
447
447
|
|
|
448
448
|
/* from the currentFileFlow flow */
|
|
449
449
|
|
|
450
|
+
const MODULES_MARKED_WITH_THE_ = "modules marked with the";
|
|
451
|
+
const _DIRECTIVE_MUST_HAVE_A_NON_JSX_FILE_EXTENSION =
|
|
452
|
+
"directive must have a non-JSX file extension";
|
|
453
|
+
const _DIRECTIVE_MUST_HAVE_A_JSX_FILE_EXTENSION =
|
|
454
|
+
"directive must have a JSX file extension";
|
|
455
|
+
|
|
450
456
|
export const commentedDirectives_VerificationReports = Object.freeze({
|
|
451
|
-
// somehow doing it by hand is better for type inference
|
|
452
|
-
[USE_SERVER_LOGICS]:
|
|
453
|
-
[USE_CLIENT_LOGICS]:
|
|
454
|
-
[USE_AGNOSTIC_LOGICS]:
|
|
455
|
-
[USE_SERVER_COMPONENTS]:
|
|
456
|
-
[USE_CLIENT_COMPONENTS]:
|
|
457
|
-
[USE_AGNOSTIC_COMPONENTS]:
|
|
458
|
-
[USE_SERVER_FUNCTIONS]:
|
|
459
|
-
[USE_CLIENT_CONTEXTS]:
|
|
460
|
-
[USE_AGNOSTIC_CONDITIONS]:
|
|
461
|
-
[USE_AGNOSTIC_STRATEGIES]:
|
|
457
|
+
// somehow doing it by hand is better for type inference in raw JS
|
|
458
|
+
[USE_SERVER_LOGICS]: `${MODULES_MARKED_WITH_THE_} "${USE_SERVER_LOGICS}" ${_DIRECTIVE_MUST_HAVE_A_NON_JSX_FILE_EXTENSION}.`,
|
|
459
|
+
[USE_CLIENT_LOGICS]: `${MODULES_MARKED_WITH_THE_} "${USE_CLIENT_LOGICS}" ${_DIRECTIVE_MUST_HAVE_A_NON_JSX_FILE_EXTENSION}.`,
|
|
460
|
+
[USE_AGNOSTIC_LOGICS]: `${MODULES_MARKED_WITH_THE_} "${USE_AGNOSTIC_LOGICS}" ${_DIRECTIVE_MUST_HAVE_A_NON_JSX_FILE_EXTENSION}.`,
|
|
461
|
+
[USE_SERVER_COMPONENTS]: `${MODULES_MARKED_WITH_THE_} "${USE_SERVER_COMPONENTS}" ${_DIRECTIVE_MUST_HAVE_A_JSX_FILE_EXTENSION}.`,
|
|
462
|
+
[USE_CLIENT_COMPONENTS]: `${MODULES_MARKED_WITH_THE_} "${USE_CLIENT_COMPONENTS}" ${_DIRECTIVE_MUST_HAVE_A_JSX_FILE_EXTENSION}.`,
|
|
463
|
+
[USE_AGNOSTIC_COMPONENTS]: `${MODULES_MARKED_WITH_THE_} "${USE_AGNOSTIC_COMPONENTS}" ${_DIRECTIVE_MUST_HAVE_A_JSX_FILE_EXTENSION}.`,
|
|
464
|
+
[USE_SERVER_FUNCTIONS]: `${MODULES_MARKED_WITH_THE_} "${USE_SERVER_FUNCTIONS}" ${_DIRECTIVE_MUST_HAVE_A_NON_JSX_FILE_EXTENSION}.`,
|
|
465
|
+
[USE_CLIENT_CONTEXTS]: `${MODULES_MARKED_WITH_THE_} "${USE_CLIENT_CONTEXTS}" ${_DIRECTIVE_MUST_HAVE_A_JSX_FILE_EXTENSION}.`,
|
|
466
|
+
[USE_AGNOSTIC_CONDITIONS]: `${MODULES_MARKED_WITH_THE_} "${USE_AGNOSTIC_CONDITIONS}" ${_DIRECTIVE_MUST_HAVE_A_JSX_FILE_EXTENSION}.`,
|
|
467
|
+
[USE_AGNOSTIC_STRATEGIES]: `${MODULES_MARKED_WITH_THE_} "${USE_AGNOSTIC_STRATEGIES}" directive are free to have the file extension of their choosing. (This is not a problem and should never surface.)`,
|
|
462
468
|
});
|
package/package.json
CHANGED
|
File without changes
|
/package/library/directive21/{crossingStrategies → (crossingStrategies)}/_commons/rules/defaults.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|