@fedify/lint 2.4.0-dev.1909 → 2.4.0-dev.1921
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/deno.json +1 -1
- package/dist/index.cjs +19 -18
- package/dist/index.js +6 -5
- package/dist/{outbox-listener-delivery-required-C_EYsEoB.cjs → outbox-listener-delivery-required-Cs42lvv-.cjs} +52 -28
- package/dist/{outbox-listener-delivery-required-C2jDNYO_.js → outbox-listener-delivery-required-D3k9ApxH.js} +47 -29
- package/dist/oxlint.cjs +19 -18
- package/dist/oxlint.js +6 -5
- package/package.json +3 -3
package/deno.json
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -24,7 +24,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
enumerable: true
|
|
25
25
|
}) : target, mod));
|
|
26
26
|
//#endregion
|
|
27
|
-
const require_outbox_listener_delivery_required = require("./outbox-listener-delivery-required-
|
|
27
|
+
const require_outbox_listener_delivery_required = require("./outbox-listener-delivery-required-Cs42lvv-.cjs");
|
|
28
28
|
let _fxts_core = require("@fxts/core");
|
|
29
29
|
let _typescript_eslint_parser = require("@typescript-eslint/parser");
|
|
30
30
|
_typescript_eslint_parser = __toESM(_typescript_eslint_parser, 1);
|
|
@@ -34,28 +34,29 @@ _typescript_eslint_parser = __toESM(_typescript_eslint_parser, 1);
|
|
|
34
34
|
* Provides lint rules for validating Fedify federation code.
|
|
35
35
|
*/
|
|
36
36
|
const rules = {
|
|
37
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorIdMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
38
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorIdRequired]: require_outbox_listener_delivery_required.eslint$
|
|
39
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowingPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
40
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowingPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
41
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowersPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
42
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowersPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
43
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorOutboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
44
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorOutboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
45
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorLikedPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
46
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorLikedPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
47
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
48
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
49
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedTagsPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
50
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedTagsPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
51
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorInboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
52
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorInboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
37
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorIdMismatch]: require_outbox_listener_delivery_required.eslint$17,
|
|
38
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorIdRequired]: require_outbox_listener_delivery_required.eslint$16,
|
|
39
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowingPropertyRequired]: require_outbox_listener_delivery_required.eslint$18,
|
|
40
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowingPropertyMismatch]: require_outbox_listener_delivery_required.eslint$19,
|
|
41
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowersPropertyRequired]: require_outbox_listener_delivery_required.eslint$20,
|
|
42
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowersPropertyMismatch]: require_outbox_listener_delivery_required.eslint$21,
|
|
43
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorOutboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$10,
|
|
44
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorOutboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$11,
|
|
45
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorLikedPropertyRequired]: require_outbox_listener_delivery_required.eslint$12,
|
|
46
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorLikedPropertyMismatch]: require_outbox_listener_delivery_required.eslint$13,
|
|
47
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedPropertyRequired]: require_outbox_listener_delivery_required.eslint$24,
|
|
48
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedPropertyMismatch]: require_outbox_listener_delivery_required.eslint$25,
|
|
49
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedTagsPropertyRequired]: require_outbox_listener_delivery_required.eslint$22,
|
|
50
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedTagsPropertyMismatch]: require_outbox_listener_delivery_required.eslint$23,
|
|
51
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorInboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$14,
|
|
52
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorInboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$15,
|
|
53
53
|
[require_outbox_listener_delivery_required.RULE_IDS.actorSharedInboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$6,
|
|
54
54
|
[require_outbox_listener_delivery_required.RULE_IDS.actorSharedInboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$7,
|
|
55
55
|
[require_outbox_listener_delivery_required.RULE_IDS.actorUploadMediaPropertyRequired]: require_outbox_listener_delivery_required.eslint$4,
|
|
56
56
|
[require_outbox_listener_delivery_required.RULE_IDS.actorUploadMediaPropertyMismatch]: require_outbox_listener_delivery_required.eslint$5,
|
|
57
57
|
[require_outbox_listener_delivery_required.RULE_IDS.actorPublicKeyRequired]: require_outbox_listener_delivery_required.eslint$8,
|
|
58
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorAssertionMethodRequired]: require_outbox_listener_delivery_required.eslint$
|
|
58
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorAssertionMethodRequired]: require_outbox_listener_delivery_required.eslint$26,
|
|
59
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorPreferredUsernameRequired]: require_outbox_listener_delivery_required.eslint$9,
|
|
59
60
|
[require_outbox_listener_delivery_required.RULE_IDS.collectionFilteringNotImplemented]: require_outbox_listener_delivery_required.eslint$3,
|
|
60
61
|
[require_outbox_listener_delivery_required.RULE_IDS.outboxListenerDeliveryRequired]: require_outbox_listener_delivery_required.eslint,
|
|
61
62
|
[require_outbox_listener_delivery_required.RULE_IDS.mediaUploaderObjectUriRequired]: require_outbox_listener_delivery_required.eslint$1,
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as eslint$
|
|
1
|
+
import { A as version, C as eslint$12, D as eslint$21, E as eslint$11, O as RULE_IDS, S as eslint$5, T as eslint$10, _ as eslint$1, a as eslint$18, b as eslint$3, c as eslint$17, d as eslint$6, f as eslint$7, g as eslint$15, h as eslint$14, i as eslint$23, k as name, l as eslint$20, m as eslint$9, n as eslint$25, o as eslint$19, p as eslint$8, r as eslint$26, s as eslint$16, t as eslint$24, u as eslint$22, v as eslint, w as eslint$13, x as eslint$4, y as eslint$2 } from "./outbox-listener-delivery-required-D3k9ApxH.js";
|
|
2
2
|
import { fromEntries, keys, map, pipe } from "@fxts/core";
|
|
3
3
|
import parser from "@typescript-eslint/parser";
|
|
4
4
|
//#region src/index.ts
|
|
@@ -29,10 +29,11 @@ const rules = {
|
|
|
29
29
|
[RULE_IDS.actorUploadMediaPropertyMismatch]: eslint$19,
|
|
30
30
|
[RULE_IDS.actorPublicKeyRequired]: eslint$20,
|
|
31
31
|
[RULE_IDS.actorAssertionMethodRequired]: eslint$21,
|
|
32
|
-
[RULE_IDS.
|
|
33
|
-
[RULE_IDS.
|
|
34
|
-
[RULE_IDS.
|
|
35
|
-
[RULE_IDS.
|
|
32
|
+
[RULE_IDS.actorPreferredUsernameRequired]: eslint$22,
|
|
33
|
+
[RULE_IDS.collectionFilteringNotImplemented]: eslint$23,
|
|
34
|
+
[RULE_IDS.outboxListenerDeliveryRequired]: eslint$24,
|
|
35
|
+
[RULE_IDS.mediaUploaderObjectUriRequired]: eslint$25,
|
|
36
|
+
[RULE_IDS.mediaUploaderAuthorizationRequired]: eslint$26
|
|
36
37
|
};
|
|
37
38
|
const recommendedRuleIds = [RULE_IDS.actorIdMismatch, RULE_IDS.actorIdRequired];
|
|
38
39
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
let _fxts_core = require("@fxts/core");
|
|
2
2
|
//#region deno.json
|
|
3
3
|
var name = "@fedify/lint";
|
|
4
|
-
var version = "2.4.0-dev.
|
|
4
|
+
var version = "2.4.0-dev.1921+8557cee9";
|
|
5
5
|
//#endregion
|
|
6
6
|
//#region src/lib/const.ts
|
|
7
7
|
/**
|
|
@@ -103,6 +103,13 @@ const properties = {
|
|
|
103
103
|
setter: "setKeyPairsDispatcher",
|
|
104
104
|
requiresIdentifier: true,
|
|
105
105
|
isKeyProperty: true
|
|
106
|
+
},
|
|
107
|
+
preferredUsername: {
|
|
108
|
+
name: "preferredUsername",
|
|
109
|
+
path: ["preferredUsername"],
|
|
110
|
+
setter: "setActorDispatcher",
|
|
111
|
+
requiresIdentifier: false,
|
|
112
|
+
pluralName: "preferredUsernames"
|
|
106
113
|
}
|
|
107
114
|
};
|
|
108
115
|
/**
|
|
@@ -121,6 +128,7 @@ const RULE_IDS = {
|
|
|
121
128
|
actorUploadMediaPropertyRequired: "actor-upload-media-property-required",
|
|
122
129
|
actorPublicKeyRequired: "actor-public-key-required",
|
|
123
130
|
actorAssertionMethodRequired: "actor-assertion-method-required",
|
|
131
|
+
actorPreferredUsernameRequired: "actor-preferred-username-required",
|
|
124
132
|
actorIdMismatch: "actor-id-mismatch",
|
|
125
133
|
actorFollowingPropertyMismatch: "actor-following-property-mismatch",
|
|
126
134
|
actorFollowersPropertyMismatch: "actor-followers-property-mismatch",
|
|
@@ -144,13 +152,16 @@ const RULE_IDS = {
|
|
|
144
152
|
*
|
|
145
153
|
* @param name - The property name (e.g., "id", "inbox", "following")
|
|
146
154
|
*/
|
|
147
|
-
const actorPropertyRequired = ({ setter, path, getter, requiresIdentifier = true }) =>
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
const actorPropertyRequired = ({ setter, path, getter, requiresIdentifier = true }) => {
|
|
156
|
+
const propertyPath = path.join(".");
|
|
157
|
+
return `When \`${setter}\` is configured, the \`${propertyPath}\` property is recommended. ${getter == null ? `Set the \`${propertyPath}\` property directly on the actor object.` : `Use \`${getExpectedCall({
|
|
158
|
+
ctxName: "Context",
|
|
159
|
+
methodName: getter,
|
|
160
|
+
idName: "identifier",
|
|
161
|
+
path: path.join("."),
|
|
162
|
+
requiresIdentifier
|
|
163
|
+
})}\` for the \`${propertyPath}\` property URI.`}`;
|
|
164
|
+
};
|
|
154
165
|
/**
|
|
155
166
|
* Generates error message for *-mismatch rules.
|
|
156
167
|
* Used when a property exists but uses the wrong context method.
|
|
@@ -270,9 +281,10 @@ const unwrapTypeScriptExpression = (node) => {
|
|
|
270
281
|
}
|
|
271
282
|
};
|
|
272
283
|
const isNullLiteral = (node) => node.type === "Literal" && node.value === null;
|
|
284
|
+
const isTombstoneExpression = (node) => node.type === "NewExpression" && node.callee.type === "Identifier" && node.callee.name === "Tombstone";
|
|
273
285
|
const checkBranchWith = (propertyChecker) => (branch) => {
|
|
274
286
|
const expression = unwrapTypeScriptExpression(branch);
|
|
275
|
-
if (isNullLiteral(expression)) return true;
|
|
287
|
+
if (isNullLiteral(expression) || isTombstoneExpression(expression)) return true;
|
|
276
288
|
return (0, _fxts_core.pipe)(expression, cases(isNodeType("ConditionalExpression"), checkConditionalExpression(propertyChecker), (0, _fxts_core.pipeLazy)(extractObjectExpression, cases(_fxts_core.isObject, checkObjectExpression(propertyChecker), (0, _fxts_core.always)(false)))));
|
|
277
289
|
};
|
|
278
290
|
/**
|
|
@@ -299,7 +311,9 @@ const createPropertySearcher = (propertyChecker) => {
|
|
|
299
311
|
switch (node.type) {
|
|
300
312
|
case "ReturnStatement": return checkReturnStatement(propertyChecker)(node);
|
|
301
313
|
case "BlockStatement": return checkAllReturnPaths(propertyChecker)(node);
|
|
302
|
-
case "NewExpression":
|
|
314
|
+
case "NewExpression":
|
|
315
|
+
if (isTombstoneExpression(node)) return true;
|
|
316
|
+
return (0, _fxts_core.pipe)(node, extractFirstObjectExpression, (0, _fxts_core.when)(_fxts_core.isObject, checkObjectExpression(propertyChecker)), Boolean);
|
|
303
317
|
default: return checkBranchWith(propertyChecker)(node);
|
|
304
318
|
}
|
|
305
319
|
};
|
|
@@ -402,7 +416,9 @@ function createRequiredRule(config, description) {
|
|
|
402
416
|
const federationTracker = trackFederationVariables();
|
|
403
417
|
const dispatcherTracker = createDispatcherTracker(config.setter, federationTracker);
|
|
404
418
|
const actorDispatchers = [];
|
|
405
|
-
const
|
|
419
|
+
const propertyChecker = createPropertyChecker(Boolean)(config.path);
|
|
420
|
+
const pluralPropertyChecker = config.pluralName == null ? null : createPropertyChecker(Boolean)([...config.path.slice(0, -1), config.pluralName]);
|
|
421
|
+
const propertySearcher = createPropertySearcher(pluralPropertyChecker == null ? propertyChecker : (node) => propertyChecker(node) || pluralPropertyChecker(node));
|
|
406
422
|
return {
|
|
407
423
|
VariableDeclarator: federationTracker.VariableDeclarator,
|
|
408
424
|
CallExpression(node) {
|
|
@@ -446,7 +462,7 @@ function createRequiredRuleEslint(config) {
|
|
|
446
462
|
};
|
|
447
463
|
}
|
|
448
464
|
createRequiredRuleDeno(properties.assertionMethod);
|
|
449
|
-
const eslint$
|
|
465
|
+
const eslint$26 = createRequiredRuleEslint(properties.assertionMethod);
|
|
450
466
|
//#endregion
|
|
451
467
|
//#region src/lib/mismatch.ts
|
|
452
468
|
const isIdentifierWithName = (name) => (node) => allOf(isNodeType("Identifier"), isNodeName(name))(node);
|
|
@@ -516,37 +532,39 @@ const createMismatchRuleEslint = (config) => ({
|
|
|
516
532
|
}))
|
|
517
533
|
});
|
|
518
534
|
createMismatchRuleDeno(properties.featured);
|
|
519
|
-
const eslint$
|
|
535
|
+
const eslint$25 = createMismatchRuleEslint(properties.featured);
|
|
520
536
|
createRequiredRuleDeno(properties.featured);
|
|
521
|
-
const eslint$
|
|
537
|
+
const eslint$24 = createRequiredRuleEslint(properties.featured);
|
|
522
538
|
createMismatchRuleDeno(properties.featuredTags);
|
|
523
|
-
const eslint$
|
|
539
|
+
const eslint$23 = createMismatchRuleEslint(properties.featuredTags);
|
|
524
540
|
createRequiredRuleDeno(properties.featuredTags);
|
|
525
|
-
const eslint$
|
|
541
|
+
const eslint$22 = createRequiredRuleEslint(properties.featuredTags);
|
|
526
542
|
createMismatchRuleDeno(properties.followers);
|
|
527
|
-
const eslint$
|
|
543
|
+
const eslint$21 = createMismatchRuleEslint(properties.followers);
|
|
528
544
|
createRequiredRuleDeno(properties.followers);
|
|
529
|
-
const eslint$
|
|
545
|
+
const eslint$20 = createRequiredRuleEslint(properties.followers);
|
|
530
546
|
createMismatchRuleDeno(properties.following);
|
|
531
|
-
const eslint$
|
|
547
|
+
const eslint$19 = createMismatchRuleEslint(properties.following);
|
|
532
548
|
createRequiredRuleDeno(properties.following);
|
|
533
|
-
const eslint$
|
|
549
|
+
const eslint$18 = createRequiredRuleEslint(properties.following);
|
|
534
550
|
createMismatchRuleDeno(properties.id);
|
|
535
|
-
const eslint$
|
|
551
|
+
const eslint$17 = createMismatchRuleEslint(properties.id);
|
|
536
552
|
createRequiredRuleDeno(properties.id);
|
|
537
|
-
const eslint$
|
|
553
|
+
const eslint$16 = createRequiredRuleEslint(properties.id);
|
|
538
554
|
createMismatchRuleDeno(properties.inbox);
|
|
539
|
-
const eslint$
|
|
555
|
+
const eslint$15 = createMismatchRuleEslint(properties.inbox);
|
|
540
556
|
createRequiredRuleDeno(properties.inbox);
|
|
541
|
-
const eslint$
|
|
557
|
+
const eslint$14 = createRequiredRuleEslint(properties.inbox);
|
|
542
558
|
createMismatchRuleDeno(properties.liked);
|
|
543
|
-
const eslint$
|
|
559
|
+
const eslint$13 = createMismatchRuleEslint(properties.liked);
|
|
544
560
|
createRequiredRuleDeno(properties.liked);
|
|
545
|
-
const eslint$
|
|
561
|
+
const eslint$12 = createRequiredRuleEslint(properties.liked);
|
|
546
562
|
createMismatchRuleDeno(properties.outbox);
|
|
547
|
-
const eslint$
|
|
563
|
+
const eslint$11 = createMismatchRuleEslint(properties.outbox);
|
|
548
564
|
createRequiredRuleDeno(properties.outbox);
|
|
549
|
-
const eslint$
|
|
565
|
+
const eslint$10 = createRequiredRuleEslint(properties.outbox);
|
|
566
|
+
createRequiredRuleDeno(properties.preferredUsername);
|
|
567
|
+
const eslint$9 = createRequiredRuleEslint(properties.preferredUsername);
|
|
550
568
|
createRequiredRuleDeno(properties.publicKey);
|
|
551
569
|
const eslint$8 = createRequiredRuleEslint(properties.publicKey);
|
|
552
570
|
createMismatchRuleDeno(properties.sharedInbox);
|
|
@@ -1364,6 +1382,12 @@ Object.defineProperty(exports, "eslint$25", {
|
|
|
1364
1382
|
return eslint$25;
|
|
1365
1383
|
}
|
|
1366
1384
|
});
|
|
1385
|
+
Object.defineProperty(exports, "eslint$26", {
|
|
1386
|
+
enumerable: true,
|
|
1387
|
+
get: function() {
|
|
1388
|
+
return eslint$26;
|
|
1389
|
+
}
|
|
1390
|
+
});
|
|
1367
1391
|
Object.defineProperty(exports, "eslint$3", {
|
|
1368
1392
|
enumerable: true,
|
|
1369
1393
|
get: function() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { always, every, head, isEmpty, isObject, negate, pipe, pipeLazy, prop, some, toArray, unless, when } from "@fxts/core";
|
|
2
2
|
//#region deno.json
|
|
3
3
|
var name = "@fedify/lint";
|
|
4
|
-
var version = "2.4.0-dev.
|
|
4
|
+
var version = "2.4.0-dev.1921+8557cee9";
|
|
5
5
|
//#endregion
|
|
6
6
|
//#region src/lib/const.ts
|
|
7
7
|
/**
|
|
@@ -103,6 +103,13 @@ const properties = {
|
|
|
103
103
|
setter: "setKeyPairsDispatcher",
|
|
104
104
|
requiresIdentifier: true,
|
|
105
105
|
isKeyProperty: true
|
|
106
|
+
},
|
|
107
|
+
preferredUsername: {
|
|
108
|
+
name: "preferredUsername",
|
|
109
|
+
path: ["preferredUsername"],
|
|
110
|
+
setter: "setActorDispatcher",
|
|
111
|
+
requiresIdentifier: false,
|
|
112
|
+
pluralName: "preferredUsernames"
|
|
106
113
|
}
|
|
107
114
|
};
|
|
108
115
|
/**
|
|
@@ -121,6 +128,7 @@ const RULE_IDS = {
|
|
|
121
128
|
actorUploadMediaPropertyRequired: "actor-upload-media-property-required",
|
|
122
129
|
actorPublicKeyRequired: "actor-public-key-required",
|
|
123
130
|
actorAssertionMethodRequired: "actor-assertion-method-required",
|
|
131
|
+
actorPreferredUsernameRequired: "actor-preferred-username-required",
|
|
124
132
|
actorIdMismatch: "actor-id-mismatch",
|
|
125
133
|
actorFollowingPropertyMismatch: "actor-following-property-mismatch",
|
|
126
134
|
actorFollowersPropertyMismatch: "actor-followers-property-mismatch",
|
|
@@ -144,13 +152,16 @@ const RULE_IDS = {
|
|
|
144
152
|
*
|
|
145
153
|
* @param name - The property name (e.g., "id", "inbox", "following")
|
|
146
154
|
*/
|
|
147
|
-
const actorPropertyRequired = ({ setter, path, getter, requiresIdentifier = true }) =>
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
155
|
+
const actorPropertyRequired = ({ setter, path, getter, requiresIdentifier = true }) => {
|
|
156
|
+
const propertyPath = path.join(".");
|
|
157
|
+
return `When \`${setter}\` is configured, the \`${propertyPath}\` property is recommended. ${getter == null ? `Set the \`${propertyPath}\` property directly on the actor object.` : `Use \`${getExpectedCall({
|
|
158
|
+
ctxName: "Context",
|
|
159
|
+
methodName: getter,
|
|
160
|
+
idName: "identifier",
|
|
161
|
+
path: path.join("."),
|
|
162
|
+
requiresIdentifier
|
|
163
|
+
})}\` for the \`${propertyPath}\` property URI.`}`;
|
|
164
|
+
};
|
|
154
165
|
/**
|
|
155
166
|
* Generates error message for *-mismatch rules.
|
|
156
167
|
* Used when a property exists but uses the wrong context method.
|
|
@@ -270,9 +281,10 @@ const unwrapTypeScriptExpression = (node) => {
|
|
|
270
281
|
}
|
|
271
282
|
};
|
|
272
283
|
const isNullLiteral = (node) => node.type === "Literal" && node.value === null;
|
|
284
|
+
const isTombstoneExpression = (node) => node.type === "NewExpression" && node.callee.type === "Identifier" && node.callee.name === "Tombstone";
|
|
273
285
|
const checkBranchWith = (propertyChecker) => (branch) => {
|
|
274
286
|
const expression = unwrapTypeScriptExpression(branch);
|
|
275
|
-
if (isNullLiteral(expression)) return true;
|
|
287
|
+
if (isNullLiteral(expression) || isTombstoneExpression(expression)) return true;
|
|
276
288
|
return pipe(expression, cases(isNodeType("ConditionalExpression"), checkConditionalExpression(propertyChecker), pipeLazy(extractObjectExpression, cases(isObject, checkObjectExpression(propertyChecker), always(false)))));
|
|
277
289
|
};
|
|
278
290
|
/**
|
|
@@ -299,7 +311,9 @@ const createPropertySearcher = (propertyChecker) => {
|
|
|
299
311
|
switch (node.type) {
|
|
300
312
|
case "ReturnStatement": return checkReturnStatement(propertyChecker)(node);
|
|
301
313
|
case "BlockStatement": return checkAllReturnPaths(propertyChecker)(node);
|
|
302
|
-
case "NewExpression":
|
|
314
|
+
case "NewExpression":
|
|
315
|
+
if (isTombstoneExpression(node)) return true;
|
|
316
|
+
return pipe(node, extractFirstObjectExpression, when(isObject, checkObjectExpression(propertyChecker)), Boolean);
|
|
303
317
|
default: return checkBranchWith(propertyChecker)(node);
|
|
304
318
|
}
|
|
305
319
|
};
|
|
@@ -402,7 +416,9 @@ function createRequiredRule(config, description) {
|
|
|
402
416
|
const federationTracker = trackFederationVariables();
|
|
403
417
|
const dispatcherTracker = createDispatcherTracker(config.setter, federationTracker);
|
|
404
418
|
const actorDispatchers = [];
|
|
405
|
-
const
|
|
419
|
+
const propertyChecker = createPropertyChecker(Boolean)(config.path);
|
|
420
|
+
const pluralPropertyChecker = config.pluralName == null ? null : createPropertyChecker(Boolean)([...config.path.slice(0, -1), config.pluralName]);
|
|
421
|
+
const propertySearcher = createPropertySearcher(pluralPropertyChecker == null ? propertyChecker : (node) => propertyChecker(node) || pluralPropertyChecker(node));
|
|
406
422
|
return {
|
|
407
423
|
VariableDeclarator: federationTracker.VariableDeclarator,
|
|
408
424
|
CallExpression(node) {
|
|
@@ -446,7 +462,7 @@ function createRequiredRuleEslint(config) {
|
|
|
446
462
|
};
|
|
447
463
|
}
|
|
448
464
|
createRequiredRuleDeno(properties.assertionMethod);
|
|
449
|
-
const eslint$
|
|
465
|
+
const eslint$26 = createRequiredRuleEslint(properties.assertionMethod);
|
|
450
466
|
//#endregion
|
|
451
467
|
//#region src/lib/mismatch.ts
|
|
452
468
|
const isIdentifierWithName = (name) => (node) => allOf(isNodeType("Identifier"), isNodeName(name))(node);
|
|
@@ -516,37 +532,39 @@ const createMismatchRuleEslint = (config) => ({
|
|
|
516
532
|
}))
|
|
517
533
|
});
|
|
518
534
|
createMismatchRuleDeno(properties.featured);
|
|
519
|
-
const eslint$
|
|
535
|
+
const eslint$25 = createMismatchRuleEslint(properties.featured);
|
|
520
536
|
createRequiredRuleDeno(properties.featured);
|
|
521
|
-
const eslint$
|
|
537
|
+
const eslint$24 = createRequiredRuleEslint(properties.featured);
|
|
522
538
|
createMismatchRuleDeno(properties.featuredTags);
|
|
523
|
-
const eslint$
|
|
539
|
+
const eslint$23 = createMismatchRuleEslint(properties.featuredTags);
|
|
524
540
|
createRequiredRuleDeno(properties.featuredTags);
|
|
525
|
-
const eslint$
|
|
541
|
+
const eslint$22 = createRequiredRuleEslint(properties.featuredTags);
|
|
526
542
|
createMismatchRuleDeno(properties.followers);
|
|
527
|
-
const eslint$
|
|
543
|
+
const eslint$21 = createMismatchRuleEslint(properties.followers);
|
|
528
544
|
createRequiredRuleDeno(properties.followers);
|
|
529
|
-
const eslint$
|
|
545
|
+
const eslint$20 = createRequiredRuleEslint(properties.followers);
|
|
530
546
|
createMismatchRuleDeno(properties.following);
|
|
531
|
-
const eslint$
|
|
547
|
+
const eslint$19 = createMismatchRuleEslint(properties.following);
|
|
532
548
|
createRequiredRuleDeno(properties.following);
|
|
533
|
-
const eslint$
|
|
549
|
+
const eslint$18 = createRequiredRuleEslint(properties.following);
|
|
534
550
|
createMismatchRuleDeno(properties.id);
|
|
535
|
-
const eslint$
|
|
551
|
+
const eslint$17 = createMismatchRuleEslint(properties.id);
|
|
536
552
|
createRequiredRuleDeno(properties.id);
|
|
537
|
-
const eslint$
|
|
553
|
+
const eslint$16 = createRequiredRuleEslint(properties.id);
|
|
538
554
|
createMismatchRuleDeno(properties.inbox);
|
|
539
|
-
const eslint$
|
|
555
|
+
const eslint$15 = createMismatchRuleEslint(properties.inbox);
|
|
540
556
|
createRequiredRuleDeno(properties.inbox);
|
|
541
|
-
const eslint$
|
|
557
|
+
const eslint$14 = createRequiredRuleEslint(properties.inbox);
|
|
542
558
|
createMismatchRuleDeno(properties.liked);
|
|
543
|
-
const eslint$
|
|
559
|
+
const eslint$13 = createMismatchRuleEslint(properties.liked);
|
|
544
560
|
createRequiredRuleDeno(properties.liked);
|
|
545
|
-
const eslint$
|
|
561
|
+
const eslint$12 = createRequiredRuleEslint(properties.liked);
|
|
546
562
|
createMismatchRuleDeno(properties.outbox);
|
|
547
|
-
const eslint$
|
|
563
|
+
const eslint$11 = createMismatchRuleEslint(properties.outbox);
|
|
548
564
|
createRequiredRuleDeno(properties.outbox);
|
|
549
|
-
const eslint$
|
|
565
|
+
const eslint$10 = createRequiredRuleEslint(properties.outbox);
|
|
566
|
+
createRequiredRuleDeno(properties.preferredUsername);
|
|
567
|
+
const eslint$9 = createRequiredRuleEslint(properties.preferredUsername);
|
|
550
568
|
createRequiredRuleDeno(properties.publicKey);
|
|
551
569
|
const eslint$8 = createRequiredRuleEslint(properties.publicKey);
|
|
552
570
|
createMismatchRuleDeno(properties.sharedInbox);
|
|
@@ -1244,4 +1262,4 @@ const eslint = {
|
|
|
1244
1262
|
})
|
|
1245
1263
|
};
|
|
1246
1264
|
//#endregion
|
|
1247
|
-
export { eslint$22 as C,
|
|
1265
|
+
export { version as A, eslint$22 as C, eslint$26 as D, eslint$25 as E, RULE_IDS as O, eslint$21 as S, eslint$24 as T, eslint$16 as _, eslint$4 as a, eslint$19 as b, eslint$7 as c, eslint$10 as d, eslint$11 as f, eslint$15 as g, eslint$14 as h, eslint$3 as i, name as k, eslint$8 as l, eslint$13 as m, eslint$1 as n, eslint$5 as o, eslint$12 as p, eslint$2 as r, eslint$6 as s, eslint as t, eslint$9 as u, eslint$17 as v, eslint$23 as w, eslint$20 as x, eslint$18 as y };
|
package/dist/oxlint.cjs
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
const require_outbox_listener_delivery_required = require("./outbox-listener-delivery-required-
|
|
1
|
+
const require_outbox_listener_delivery_required = require("./outbox-listener-delivery-required-Cs42lvv-.cjs");
|
|
2
2
|
//#region src/oxlint.ts
|
|
3
3
|
const rules = {
|
|
4
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorIdMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
5
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorIdRequired]: require_outbox_listener_delivery_required.eslint$
|
|
6
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowingPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
7
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowingPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
8
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowersPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
9
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowersPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
10
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorOutboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
11
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorOutboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
12
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorLikedPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
13
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorLikedPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
14
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
15
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
16
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedTagsPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
17
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedTagsPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
18
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorInboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$
|
|
19
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorInboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$
|
|
4
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorIdMismatch]: require_outbox_listener_delivery_required.eslint$17,
|
|
5
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorIdRequired]: require_outbox_listener_delivery_required.eslint$16,
|
|
6
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowingPropertyRequired]: require_outbox_listener_delivery_required.eslint$18,
|
|
7
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowingPropertyMismatch]: require_outbox_listener_delivery_required.eslint$19,
|
|
8
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowersPropertyRequired]: require_outbox_listener_delivery_required.eslint$20,
|
|
9
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFollowersPropertyMismatch]: require_outbox_listener_delivery_required.eslint$21,
|
|
10
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorOutboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$10,
|
|
11
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorOutboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$11,
|
|
12
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorLikedPropertyRequired]: require_outbox_listener_delivery_required.eslint$12,
|
|
13
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorLikedPropertyMismatch]: require_outbox_listener_delivery_required.eslint$13,
|
|
14
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedPropertyRequired]: require_outbox_listener_delivery_required.eslint$24,
|
|
15
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedPropertyMismatch]: require_outbox_listener_delivery_required.eslint$25,
|
|
16
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedTagsPropertyRequired]: require_outbox_listener_delivery_required.eslint$22,
|
|
17
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorFeaturedTagsPropertyMismatch]: require_outbox_listener_delivery_required.eslint$23,
|
|
18
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorInboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$14,
|
|
19
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorInboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$15,
|
|
20
20
|
[require_outbox_listener_delivery_required.RULE_IDS.actorSharedInboxPropertyRequired]: require_outbox_listener_delivery_required.eslint$6,
|
|
21
21
|
[require_outbox_listener_delivery_required.RULE_IDS.actorSharedInboxPropertyMismatch]: require_outbox_listener_delivery_required.eslint$7,
|
|
22
22
|
[require_outbox_listener_delivery_required.RULE_IDS.actorUploadMediaPropertyRequired]: require_outbox_listener_delivery_required.eslint$4,
|
|
23
23
|
[require_outbox_listener_delivery_required.RULE_IDS.actorUploadMediaPropertyMismatch]: require_outbox_listener_delivery_required.eslint$5,
|
|
24
24
|
[require_outbox_listener_delivery_required.RULE_IDS.actorPublicKeyRequired]: require_outbox_listener_delivery_required.eslint$8,
|
|
25
|
-
[require_outbox_listener_delivery_required.RULE_IDS.actorAssertionMethodRequired]: require_outbox_listener_delivery_required.eslint$
|
|
25
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorAssertionMethodRequired]: require_outbox_listener_delivery_required.eslint$26,
|
|
26
|
+
[require_outbox_listener_delivery_required.RULE_IDS.actorPreferredUsernameRequired]: require_outbox_listener_delivery_required.eslint$9,
|
|
26
27
|
[require_outbox_listener_delivery_required.RULE_IDS.collectionFilteringNotImplemented]: require_outbox_listener_delivery_required.eslint$3,
|
|
27
28
|
[require_outbox_listener_delivery_required.RULE_IDS.outboxListenerDeliveryRequired]: require_outbox_listener_delivery_required.eslint,
|
|
28
29
|
[require_outbox_listener_delivery_required.RULE_IDS.mediaUploaderObjectUriRequired]: require_outbox_listener_delivery_required.eslint$1,
|
package/dist/oxlint.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as eslint$
|
|
1
|
+
import { A as version, C as eslint$12, D as eslint$21, E as eslint$11, O as RULE_IDS, S as eslint$5, T as eslint$10, _ as eslint$1, a as eslint$18, b as eslint$3, c as eslint$17, d as eslint$6, f as eslint$7, g as eslint$15, h as eslint$14, i as eslint$23, k as name, l as eslint$20, m as eslint$9, n as eslint$25, o as eslint$19, p as eslint$8, r as eslint$26, s as eslint$16, t as eslint$24, u as eslint$22, v as eslint, w as eslint$13, x as eslint$4, y as eslint$2 } from "./outbox-listener-delivery-required-D3k9ApxH.js";
|
|
2
2
|
//#region src/oxlint.ts
|
|
3
3
|
const rules = {
|
|
4
4
|
[RULE_IDS.actorIdMismatch]: eslint,
|
|
@@ -23,10 +23,11 @@ const rules = {
|
|
|
23
23
|
[RULE_IDS.actorUploadMediaPropertyMismatch]: eslint$19,
|
|
24
24
|
[RULE_IDS.actorPublicKeyRequired]: eslint$20,
|
|
25
25
|
[RULE_IDS.actorAssertionMethodRequired]: eslint$21,
|
|
26
|
-
[RULE_IDS.
|
|
27
|
-
[RULE_IDS.
|
|
28
|
-
[RULE_IDS.
|
|
29
|
-
[RULE_IDS.
|
|
26
|
+
[RULE_IDS.actorPreferredUsernameRequired]: eslint$22,
|
|
27
|
+
[RULE_IDS.collectionFilteringNotImplemented]: eslint$23,
|
|
28
|
+
[RULE_IDS.outboxListenerDeliveryRequired]: eslint$24,
|
|
29
|
+
[RULE_IDS.mediaUploaderObjectUriRequired]: eslint$25,
|
|
30
|
+
[RULE_IDS.mediaUploaderAuthorizationRequired]: eslint$26
|
|
30
31
|
};
|
|
31
32
|
const plugin = {
|
|
32
33
|
meta: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fedify/lint",
|
|
3
|
-
"version": "2.4.0-dev.
|
|
3
|
+
"version": "2.4.0-dev.1921+8557cee9",
|
|
4
4
|
"description": "Fedify linting rules and plugins",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Fedify",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
],
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"eslint": ">=9.0.0",
|
|
54
|
-
"@fedify/fedify": "^2.4.0-dev.
|
|
54
|
+
"@fedify/fedify": "^2.4.0-dev.1921+8557cee9"
|
|
55
55
|
},
|
|
56
56
|
"peerDependenciesMeta": {
|
|
57
57
|
"eslint": {
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"tsdown": "^0.22.0",
|
|
72
72
|
"typescript": "^6.0.0",
|
|
73
73
|
"@fedify/fixture": "2.0.0",
|
|
74
|
-
"@fedify/vocab": "2.4.0-dev.
|
|
74
|
+
"@fedify/vocab": "2.4.0-dev.1921+8557cee9"
|
|
75
75
|
},
|
|
76
76
|
"scripts": {
|
|
77
77
|
"build:self": "tsdown",
|