ddd-ts-kit 0.16.1 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.fr.md +5 -4
- package/README.md +4 -3
- package/dist/check/business-names/closing-parenthesis.d.ts +3 -0
- package/dist/check/business-names/closing-parenthesis.d.ts.map +1 -0
- package/dist/check/business-names/closing-parenthesis.js +16 -0
- package/dist/check/business-names/closing-parenthesis.js.map +1 -0
- package/dist/check/business-names/declared-bindings.d.ts +4 -0
- package/dist/check/business-names/declared-bindings.d.ts.map +1 -0
- package/dist/check/business-names/declared-bindings.js +41 -0
- package/dist/check/business-names/declared-bindings.js.map +1 -0
- package/dist/check/business-names/generic-words-of.d.ts +4 -0
- package/dist/check/business-names/generic-words-of.d.ts.map +1 -0
- package/dist/check/business-names/generic-words-of.js +7 -0
- package/dist/check/business-names/generic-words-of.js.map +1 -0
- package/dist/check/business-names/generic-words.d.ts +7 -0
- package/dist/check/business-names/generic-words.d.ts.map +1 -0
- package/dist/check/business-names/generic-words.js +26 -0
- package/dist/check/business-names/generic-words.js.map +1 -0
- package/dist/check/business-names/identifier-at.d.ts +3 -0
- package/dist/check/business-names/identifier-at.d.ts.map +1 -0
- package/dist/check/business-names/identifier-at.js +6 -0
- package/dist/check/business-names/identifier-at.js.map +1 -0
- package/dist/check/business-names/judges-names.d.ts +7 -0
- package/dist/check/business-names/judges-names.d.ts.map +1 -0
- package/dist/check/business-names/judges-names.js +14 -0
- package/dist/check/business-names/judges-names.js.map +1 -0
- package/dist/check/business-names/named-binding.d.ts +12 -0
- package/dist/check/business-names/named-binding.d.ts.map +1 -0
- package/dist/check/business-names/named-binding.js +2 -0
- package/dist/check/business-names/named-binding.js.map +1 -0
- package/dist/check/business-names/named-bindings.d.ts +4 -0
- package/dist/check/business-names/named-bindings.d.ts.map +1 -0
- package/dist/check/business-names/named-bindings.js +8 -0
- package/dist/check/business-names/named-bindings.js.map +1 -0
- package/dist/check/business-names/opening-bracket.d.ts +3 -0
- package/dist/check/business-names/opening-bracket.d.ts.map +1 -0
- package/dist/check/business-names/opening-bracket.js +16 -0
- package/dist/check/business-names/opening-bracket.js.map +1 -0
- package/dist/check/business-names/parameter-bindings.d.ts +4 -0
- package/dist/check/business-names/parameter-bindings.d.ts.map +1 -0
- package/dist/check/business-names/parameter-bindings.js +28 -0
- package/dist/check/business-names/parameter-bindings.js.map +1 -0
- package/dist/check/business-names/parameter-lists.d.ts +14 -0
- package/dist/check/business-names/parameter-lists.d.ts.map +1 -0
- package/dist/check/business-names/parameter-lists.js +109 -0
- package/dist/check/business-names/parameter-lists.js.map +1 -0
- package/dist/check/business-names/pattern-bindings.d.ts +7 -0
- package/dist/check/business-names/pattern-bindings.d.ts.map +1 -0
- package/dist/check/business-names/pattern-bindings.js +31 -0
- package/dist/check/business-names/pattern-bindings.js.map +1 -0
- package/dist/check/business-names/property-bindings.d.ts +7 -0
- package/dist/check/business-names/property-bindings.d.ts.map +1 -0
- package/dist/check/business-names/property-bindings.js +31 -0
- package/dist/check/business-names/property-bindings.js.map +1 -0
- package/dist/check/business-names/suggested-name.d.ts +8 -0
- package/dist/check/business-names/suggested-name.d.ts.map +1 -0
- package/dist/check/business-names/suggested-name.js +28 -0
- package/dist/check/business-names/suggested-name.js.map +1 -0
- package/dist/check/business-names/top-level-separator.d.ts +3 -0
- package/dist/check/business-names/top-level-separator.d.ts.map +1 -0
- package/dist/check/business-names/top-level-separator.js +23 -0
- package/dist/check/business-names/top-level-separator.js.map +1 -0
- package/dist/check/catalogue/architecture-rules.d.ts.map +1 -1
- package/dist/check/catalogue/architecture-rules.js +2 -0
- package/dist/check/catalogue/architecture-rules.js.map +1 -1
- package/dist/check/explain/tree-docs.d.ts.map +1 -1
- package/dist/check/explain/tree-docs.js +11 -0
- package/dist/check/explain/tree-docs.js.map +1 -1
- package/dist/check/fixtures/business-name-fixtures.d.ts +3 -0
- package/dist/check/fixtures/business-name-fixtures.d.ts.map +1 -0
- package/dist/check/fixtures/business-name-fixtures.js +98 -0
- package/dist/check/fixtures/business-name-fixtures.js.map +1 -0
- package/dist/check/fixtures/fixtures.d.ts.map +1 -1
- package/dist/check/fixtures/fixtures.js +2 -0
- package/dist/check/fixtures/fixtures.js.map +1 -1
- package/dist/check/rules/naming-business-name.d.ts +3 -0
- package/dist/check/rules/naming-business-name.d.ts.map +1 -0
- package/dist/check/rules/naming-business-name.js +41 -0
- package/dist/check/rules/naming-business-name.js.map +1 -0
- package/dist/config/config.d.ts +8 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/parse-business-names.d.ts +4 -0
- package/dist/config/parse-business-names.d.ts.map +1 -0
- package/dist/config/parse-business-names.js +14 -0
- package/dist/config/parse-business-names.js.map +1 -0
- package/dist/config/parse-config.d.ts.map +1 -1
- package/dist/config/parse-config.js +2 -0
- package/dist/config/parse-config.js.map +1 -1
- package/dist/config/serialize-config.js +9 -1
- package/dist/config/serialize-config.js.map +1 -1
- package/dist/generate/kinds/query-kind.d.ts.map +1 -1
- package/dist/generate/kinds/query-kind.js +2 -1
- package/dist/generate/kinds/query-kind.js.map +1 -1
- package/dist/generate/kinds/route/write-controller.d.ts.map +1 -1
- package/dist/generate/kinds/route/write-controller.js +2 -1
- package/dist/generate/kinds/route/write-controller.js.map +1 -1
- package/dist/generate/kinds/route-kind.d.ts.map +1 -1
- package/dist/generate/kinds/route-kind.js +2 -1
- package/dist/generate/kinds/route-kind.js.map +1 -1
- package/dist/generate/searched-elements.d.ts +13 -0
- package/dist/generate/searched-elements.d.ts.map +1 -0
- package/dist/generate/searched-elements.js +63 -0
- package/dist/generate/searched-elements.js.map +1 -0
- package/dist/init/manifest/versions.js +24 -24
- package/dist/naming/index.d.ts +2 -0
- package/dist/naming/index.d.ts.map +1 -1
- package/dist/naming/index.js +2 -0
- package/dist/naming/index.js.map +1 -1
- package/dist/naming/plural.d.ts +3 -0
- package/dist/naming/plural.d.ts.map +1 -0
- package/dist/naming/plural.js +8 -0
- package/dist/naming/plural.js.map +1 -0
- package/dist/naming/singular.d.ts +3 -0
- package/dist/naming/singular.d.ts.map +1 -0
- package/dist/naming/singular.js +11 -0
- package/dist/naming/singular.js.map +1 -0
- package/dist/naming/to-name.d.ts.map +1 -1
- package/dist/naming/to-name.js +1 -6
- package/dist/naming/to-name.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/templates/command/handler.declared.ts.tpl +3 -3
- package/templates/command/handler.ts.tpl +3 -3
- package/templates/controller/controller.search.ts.tpl +1 -1
- package/templates/init/rules/application.md.tpl +1 -1
- package/templates/init/rules/domain.md.tpl +1 -1
- package/templates/init/scripts/events.ts.tpl +6 -6
- package/templates/init/scripts/openapi.ts.tpl +2 -2
- package/templates/pipeline/package-scripts.json +1 -1
- package/templates/policy/policy.declared.ts.tpl +1 -1
- package/templates/policy/policy.ts.tpl +1 -1
- package/templates/presets/identity/context/infrastructure/persistence/drizzle-search-members-reader.repository.drizzle.ts.tpl +2 -2
- package/templates/presets/identity/context/presentation/http/organisations/search-members/search-members.controller.ts.tpl +2 -2
- package/templates/presets/identity/context/test/integration/search-members-reader.spec.ts.tpl +1 -1
- package/templates/query/search.reader.fake.ts.tpl +1 -1
- package/templates/query/search.reader.in-memory.ts.tpl +20 -18
- package/templates/route/route.search.ts.tpl +1 -1
package/README.fr.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[English](README.md) · **Français**
|
|
2
|
-
<!-- translation-of: README.md sha256:
|
|
2
|
+
<!-- translation-of: README.md sha256:0380d292b64e3212 -->
|
|
3
3
|
|
|
4
4
|
# ddd-ts-kit
|
|
5
5
|
|
|
@@ -200,11 +200,11 @@ export class IssueInvoiceHandler implements CommandHandler<IssueInvoiceCommand>
|
|
|
200
200
|
) {}
|
|
201
201
|
|
|
202
202
|
async execute(command: IssueInvoiceCommand): Promise<string> {
|
|
203
|
-
const
|
|
203
|
+
const invoice = Invoice.create(this.ids.next(), this.clock.now());
|
|
204
204
|
|
|
205
|
-
await this.invoiceRepository.save(
|
|
205
|
+
await this.invoiceRepository.save(invoice);
|
|
206
206
|
|
|
207
|
-
return
|
|
207
|
+
return invoice.id;
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
```
|
|
@@ -1258,6 +1258,7 @@ règle.
|
|
|
1258
1258
|
| `naming/suffix` | un fichier sans le suffixe de son rôle, ou pas en kebab-case. `application/scheduling/` contient des `*.job.ts` ; un dossier de cas d'usage accepte un `*.result.ts` à côté de son message et de son gestionnaire ; `presentation/http/<context>.routes.ts`, nommé d'après son contexte au lieu d'un rôle, est accepté dans les deux styles |
|
|
1259
1259
|
| `naming/one-concept-per-file` | plusieurs classes exportées dans un fichier d'agrégat, d'entité, d'objet-valeur, d'événement, de commande, de requête, de gestionnaire, de gestionnaire d'événement, de gestionnaire d'événement d'intégration ou de *job* ; dans le style déclaré, plusieurs classes portant un décorateur de déclaration dans un même fichier de rôle |
|
|
1260
1260
|
| `naming/search-not-list` | dans un contexte, une méthode nommée `list` ou `list<Something>` dans un port (`domain/repositories/*.repository.ts`, `application/ports/*.port.ts`), dans une classe de `infrastructure/` ou dans un *fake* de `test/fakes/` ; sous `application/queries/`, un dossier ou un fichier nommé `list`, `list-...` ou `list....`, ou une classe nommée `List` ou `List<Something>`. Les propriétés et `listAccessible` (exigée par le port `Authorizer`) ne sont pas jugées. Nommez-les `search...` : `generate query <context> Search<Things> --search` |
|
|
1261
|
+
| `naming/business-name` | dans `domain/` et `application/` d'un contexte et dans le noyau partagé hors de `presentation/`, une variable, une variable de boucle, un nom déstructuré, un paramètre ou une propriété nommés d'un mot générique (`target`, `data`, `item` et les autres mots de la liste, que `businessNames` de la configuration change) ; le correctif nomme le concept qu'un initialiseur construit ou lit quand le texte le dit, et `npx eslint --fix` le renomme |
|
|
1261
1262
|
| `test/spec-required` | un agrégat, un objet-valeur, un service du domaine, un gestionnaire, un gestionnaire d'événement du domaine, un gestionnaire d'événement d'intégration ou un *job* sans *spec* (un `*.result.ts` n'en a pas besoin) |
|
|
1262
1263
|
| `test/no-mocks` | `vi.mock`, `vi.fn`, `vi.spyOn`, leurs jumeaux `jest`, ou une bibliothèque de *mocks* dans les tests d'un contexte |
|
|
1263
1264
|
| `test/builder-required` | un agrégat sans `test/builders/<name>.builder.ts` |
|
package/README.md
CHANGED
|
@@ -188,11 +188,11 @@ export class IssueInvoiceHandler implements CommandHandler<IssueInvoiceCommand>
|
|
|
188
188
|
) {}
|
|
189
189
|
|
|
190
190
|
async execute(command: IssueInvoiceCommand): Promise<string> {
|
|
191
|
-
const
|
|
191
|
+
const invoice = Invoice.create(this.ids.next(), this.clock.now());
|
|
192
192
|
|
|
193
|
-
await this.invoiceRepository.save(
|
|
193
|
+
await this.invoiceRepository.save(invoice);
|
|
194
194
|
|
|
195
|
-
return
|
|
195
|
+
return invoice.id;
|
|
196
196
|
}
|
|
197
197
|
}
|
|
198
198
|
```
|
|
@@ -1201,6 +1201,7 @@ const due = handler.isDueNow(new Reminder(new Date('2026-03-01T09:00:00Z'))); //
|
|
|
1201
1201
|
| `naming/suffix` | a file without the suffix of its role, or not in kebab-case. `application/scheduling/` holds `*.job.ts`; a use case folder accepts `*.result.ts` next to its message and its handler; `presentation/http/<context>.routes.ts`, named after its context instead of a role, is accepted in both styles |
|
|
1202
1202
|
| `naming/one-concept-per-file` | several exported classes in an aggregate, entity, value object, event, command, query, handler, event handler, integration event handler or job file; in the declared style, several classes carrying a declaration decorator in one role file |
|
|
1203
1203
|
| `naming/search-not-list` | in a context, a method named `list` or `list<Something>` in a port (`domain/repositories/*.repository.ts`, `application/ports/*.port.ts`), in a class of `infrastructure/` or in a fake of `test/fakes/`; under `application/queries/`, a folder or a file named `list`, `list-...` or `list....`, or a class named `List` or `List<Something>`. Properties and `listAccessible` (required by the `Authorizer` port) are not judged. Name them `search...`: `generate query <context> Search<Things> --search` |
|
|
1204
|
+
| `naming/business-name` | in `domain/` and `application/` of a context and in the shared kernel outside `presentation/`, a variable, loop variable, destructured binding, parameter or property named with a generic word (`target`, `data`, `item` and the other words of the list, which `businessNames` of the config changes); the fix names the concept an initializer builds or reads when the text says it, and `npx eslint --fix` renames it |
|
|
1204
1205
|
| `test/spec-required` | an aggregate, value object, domain service, handler, domain event handler, integration event handler or job without a spec (a `*.result.ts` needs none) |
|
|
1205
1206
|
| `test/no-mocks` | `vi.mock`, `vi.fn`, `vi.spyOn`, their `jest` twins, or a mocking library in a context's tests |
|
|
1206
1207
|
| `test/builder-required` | an aggregate without `test/builders/<name>.builder.ts` |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closing-parenthesis.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/closing-parenthesis.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAcrE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BRACKETS } from '../text/brackets.js';
|
|
2
|
+
/** Offset of the `)` that closes a parenthesis opened before `from`, or the end of the text. */
|
|
3
|
+
export function closingParenthesis(text, from) {
|
|
4
|
+
let depth = 0;
|
|
5
|
+
for (let i = from; i < text.length; i += 1) {
|
|
6
|
+
const char = text.charAt(i);
|
|
7
|
+
if (BRACKETS.openers.includes(char)) {
|
|
8
|
+
depth += 1;
|
|
9
|
+
}
|
|
10
|
+
else if (BRACKETS.closers.includes(char) && (depth -= 1) < 0) {
|
|
11
|
+
return i;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return text.length;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=closing-parenthesis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"closing-parenthesis.js","sourceRoot":"","sources":["../../../src/check/business-names/closing-parenthesis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,gGAAgG;AAChG,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,IAAY;IAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NamedBinding } from './named-binding.js';
|
|
2
|
+
/** The variables a source declares with `const`, `let` or `var`, loop variables and destructured names included. */
|
|
3
|
+
export declare function declaredBindings(code: string): NamedBinding[];
|
|
4
|
+
//# sourceMappingURL=declared-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declared-bindings.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/declared-bindings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQvD,oHAAoH;AACpH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAkB7D"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { statementEnd } from '../text/statement-end.js';
|
|
2
|
+
import { closingParenthesis } from './closing-parenthesis.js';
|
|
3
|
+
import { identifierAt } from './identifier-at.js';
|
|
4
|
+
import { patternBindings } from './pattern-bindings.js';
|
|
5
|
+
import { topLevelSeparator } from './top-level-separator.js';
|
|
6
|
+
const DECLARATION = /(?<![\w$.])(?:const|let|var)\s+(?=[A-Za-z_$[{])/g;
|
|
7
|
+
const OPENS_A_LOOP = /(?<![\w$.])for\s*(?:await\s*)?\(\s*$/;
|
|
8
|
+
const WALKS = /^\s+(?:of|in)\s+/;
|
|
9
|
+
/** The variables a source declares with `const`, `let` or `var`, loop variables and destructured names included. */
|
|
10
|
+
export function declaredBindings(code) {
|
|
11
|
+
return [...code.matchAll(DECLARATION)].flatMap((match) => {
|
|
12
|
+
const at = match.index + match[0].length;
|
|
13
|
+
const opener = code.charAt(at);
|
|
14
|
+
if (opener === '{' || opener === '[') {
|
|
15
|
+
return patternBindings(code, at);
|
|
16
|
+
}
|
|
17
|
+
const name = identifierAt(code, at);
|
|
18
|
+
const after = at + name.length;
|
|
19
|
+
if (OPENS_A_LOOP.test(code.slice(Math.max(0, match.index - 20), match.index))) {
|
|
20
|
+
return [{ name, offset: at, kind: 'loop variable', source: walkedCollection(code, after) }];
|
|
21
|
+
}
|
|
22
|
+
return [{ name, offset: at, kind: 'variable', source: initializer(code, after) }];
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/** `due` in `for (const target of due)`. */
|
|
26
|
+
function walkedCollection(code, from) {
|
|
27
|
+
const rest = code.slice(from, from + 400);
|
|
28
|
+
const walks = WALKS.exec(rest);
|
|
29
|
+
if (walks === null) {
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
const start = walks[0].length;
|
|
33
|
+
return rest.slice(start, closingParenthesis(rest, start)).trim();
|
|
34
|
+
}
|
|
35
|
+
/** What follows the `=` of a declaration, its type annotation skipped. */
|
|
36
|
+
function initializer(code, from) {
|
|
37
|
+
const declared = code.slice(from, statementEnd(code, from));
|
|
38
|
+
const equals = topLevelSeparator(declared, '=');
|
|
39
|
+
return equals === -1 ? '' : declared.slice(equals + 1).trim();
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=declared-bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declared-bindings.js","sourceRoot":"","sources":["../../../src/check/business-names/declared-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,GAAG,kDAAkD,CAAC;AACvE,MAAM,YAAY,GAAG,sCAAsC,CAAC;AAC5D,MAAM,KAAK,GAAG,kBAAkB,CAAC;AAEjC,oHAAoH;AACpH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvD,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAE/B,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACrC,OAAO,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE/B,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9E,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4CAA4C;AAC5C,SAAS,gBAAgB,CAAC,IAAY,EAAE,IAAY;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnE,CAAC;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAAC,IAAY,EAAE,IAAY;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEhD,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Config } from '../../config/index.js';
|
|
2
|
+
/** The words of the rule for a project: `businessNames.words` in place of the defaults, less `businessNames.allow`. */
|
|
3
|
+
export declare function genericWordsOf(config: Config): ReadonlySet<string>;
|
|
4
|
+
//# sourceMappingURL=generic-words-of.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-words-of.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/generic-words-of.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,uHAAuH;AACvH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAIlE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GENERIC_WORDS } from './generic-words.js';
|
|
2
|
+
/** The words of the rule for a project: `businessNames.words` in place of the defaults, less `businessNames.allow`. */
|
|
3
|
+
export function genericWordsOf(config) {
|
|
4
|
+
const { words, allow } = config.businessNames;
|
|
5
|
+
return new Set((words ?? GENERIC_WORDS).filter((word) => !allow.includes(word)));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=generic-words-of.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-words-of.js","sourceRoot":"","sources":["../../../src/check/business-names/generic-words-of.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,uHAAuH;AACvH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;IAE9C,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Words that say a value is there without saying which concept it is. `naming/business-name`
|
|
3
|
+
* reports a binding named by one of them where the model speaks; the same list as the ESLint
|
|
4
|
+
* plugin.
|
|
5
|
+
*/
|
|
6
|
+
export declare const GENERIC_WORDS: readonly string[];
|
|
7
|
+
//# sourceMappingURL=generic-words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-words.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/generic-words.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAmB1C,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Words that say a value is there without saying which concept it is. `naming/business-name`
|
|
3
|
+
* reports a binding named by one of them where the model speaks; the same list as the ESLint
|
|
4
|
+
* plugin.
|
|
5
|
+
*/
|
|
6
|
+
export const GENERIC_WORDS = [
|
|
7
|
+
'target',
|
|
8
|
+
'targets',
|
|
9
|
+
'data',
|
|
10
|
+
'item',
|
|
11
|
+
'items',
|
|
12
|
+
'obj',
|
|
13
|
+
'object',
|
|
14
|
+
'thing',
|
|
15
|
+
'things',
|
|
16
|
+
'stuff',
|
|
17
|
+
'info',
|
|
18
|
+
'element',
|
|
19
|
+
'el',
|
|
20
|
+
'tmp',
|
|
21
|
+
'temp',
|
|
22
|
+
'foo',
|
|
23
|
+
'bar',
|
|
24
|
+
'baz',
|
|
25
|
+
];
|
|
26
|
+
//# sourceMappingURL=generic-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-words.js","sourceRoot":"","sources":["../../../src/check/business-names/generic-words.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,IAAI;IACJ,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;CACN,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier-at.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/identifier-at.ts"],"names":[],"mappings":"AAEA,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier-at.js","sourceRoot":"","sources":["../../../src/check/business-names/identifier-at.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,mBAAmB,CAAC;AAEjC,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SourceFile } from '../model/source-file.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where the language of the model lives: `domain/` and `application/` of a context, and the
|
|
4
|
+
* shared kernel outside its `presentation/`. Specs are not judged. Same table as the ESLint plugin.
|
|
5
|
+
*/
|
|
6
|
+
export declare function judgesNames(file: SourceFile, sharedKernelDir: string): boolean;
|
|
7
|
+
//# sourceMappingURL=judges-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"judges-names.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/judges-names.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAU9E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the language of the model lives: `domain/` and `application/` of a context, and the
|
|
3
|
+
* shared kernel outside its `presentation/`. Specs are not judged. Same table as the ESLint plugin.
|
|
4
|
+
*/
|
|
5
|
+
export function judgesNames(file, sharedKernelDir) {
|
|
6
|
+
if (file.isTest) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
if (file.location.area === 'context') {
|
|
10
|
+
return file.location.layer === 'domain' || file.location.layer === 'application';
|
|
11
|
+
}
|
|
12
|
+
return file.location.area === 'shared-kernel' && !file.path.startsWith(`${sharedKernelDir}/presentation/`);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=judges-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"judges-names.js","sourceRoot":"","sources":["../../../src/check/business-names/judges-names.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAgB,EAAE,eAAuB;IACnE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,aAAa,CAAC;IACnF,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,eAAe,gBAAgB,CAAC,CAAC;AAC7G,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** What a binding names: the reader of a message needs to know which one it is. */
|
|
2
|
+
type BindingKind = 'variable' | 'loop variable' | 'destructured binding' | 'parameter' | 'property';
|
|
3
|
+
/** A name a source gives to something, where it is written and, when it says what it holds, what it is given. */
|
|
4
|
+
export interface NamedBinding {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly offset: number;
|
|
7
|
+
readonly kind: BindingKind;
|
|
8
|
+
/** The initializer of a variable, or the collection a loop variable walks through. */
|
|
9
|
+
readonly source?: string;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=named-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-binding.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/named-binding.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,KAAK,WAAW,GAAG,UAAU,GAAG,eAAe,GAAG,sBAAsB,GAAG,WAAW,GAAG,UAAU,CAAC;AAEpG,iHAAiH;AACjH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-binding.js","sourceRoot":"","sources":["../../../src/check/business-names/named-binding.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NamedBinding } from './named-binding.js';
|
|
2
|
+
/** Every name a blanked source binds: variables, loop variables, destructured names, parameters and properties. */
|
|
3
|
+
export declare function namedBindings(code: string): NamedBinding[];
|
|
4
|
+
//# sourceMappingURL=named-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-bindings.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/named-bindings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,mHAAmH;AACnH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAI1D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { declaredBindings } from './declared-bindings.js';
|
|
2
|
+
import { parameterBindings } from './parameter-bindings.js';
|
|
3
|
+
import { propertyBindings } from './property-bindings.js';
|
|
4
|
+
/** Every name a blanked source binds: variables, loop variables, destructured names, parameters and properties. */
|
|
5
|
+
export function namedBindings(code) {
|
|
6
|
+
return [...declaredBindings(code), ...parameterBindings(code), ...propertyBindings(code)].sort((left, right) => left.offset - right.offset);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=named-bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named-bindings.js","sourceRoot":"","sources":["../../../src/check/business-names/named-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,mHAAmH;AACnH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC5F,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opening-bracket.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/opening-bracket.ts"],"names":[],"mappings":"AAEA,2FAA2F;AAC3F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAclE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BRACKETS } from '../text/brackets.js';
|
|
2
|
+
/** Offset of the bracket opening the one that closes at `close`, read backwards, or -1. */
|
|
3
|
+
export function openingBracket(code, close) {
|
|
4
|
+
let depth = 0;
|
|
5
|
+
for (let i = close; i >= 0; i -= 1) {
|
|
6
|
+
const char = code.charAt(i);
|
|
7
|
+
if (BRACKETS.closers.includes(char)) {
|
|
8
|
+
depth += 1;
|
|
9
|
+
}
|
|
10
|
+
else if (BRACKETS.openers.includes(char) && (depth -= 1) === 0) {
|
|
11
|
+
return i;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return -1;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=opening-bracket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opening-bracket.js","sourceRoot":"","sources":["../../../src/check/business-names/opening-bracket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NamedBinding } from './named-binding.js';
|
|
2
|
+
/** The parameters of every function, method, signature and arrow of a source; a parameter property is a property. */
|
|
3
|
+
export declare function parameterBindings(code: string): NamedBinding[];
|
|
4
|
+
//# sourceMappingURL=parameter-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-bindings.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/parameter-bindings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,qHAAqH;AACrH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAU9D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { splitTopLevel } from '../text/split-top-level.js';
|
|
2
|
+
import { identifierAt } from './identifier-at.js';
|
|
3
|
+
import { parameterLists } from './parameter-lists.js';
|
|
4
|
+
import { patternBindings } from './pattern-bindings.js';
|
|
5
|
+
const MODIFIERS = /^(?:(?:public|private|protected|readonly|override)\s+)+/;
|
|
6
|
+
/** The parameters of every function, method, signature and arrow of a source; a parameter property is a property. */
|
|
7
|
+
export function parameterBindings(code) {
|
|
8
|
+
return parameterLists(code).flatMap((list) => {
|
|
9
|
+
if ('single' in list) {
|
|
10
|
+
return [{ name: identifierAt(code, list.single), offset: list.single, kind: 'parameter' }];
|
|
11
|
+
}
|
|
12
|
+
return splitTopLevel(code.slice(list.open + 1, list.close)).flatMap((part) => parameter(code, list.open + 1 + part.start, part.code));
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function parameter(code, start, text) {
|
|
16
|
+
const modifiers = MODIFIERS.exec(text)?.[0].length ?? 0;
|
|
17
|
+
const at = start + modifiers + (text.startsWith('...', modifiers) ? 3 : 0);
|
|
18
|
+
const opener = code.charAt(at);
|
|
19
|
+
if (opener === '{' || opener === '[') {
|
|
20
|
+
return patternBindings(code, at);
|
|
21
|
+
}
|
|
22
|
+
const name = identifierAt(code, at);
|
|
23
|
+
if (name === '' || name === 'this') {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
return [{ name, offset: at, kind: modifiers > 0 ? 'property' : 'parameter' }];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=parameter-bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-bindings.js","sourceRoot":"","sources":["../../../src/check/business-names/parameter-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,SAAS,GAAG,yDAAyD,CAAC;AAE5E,qHAAqH;AACrH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3C,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,WAAoB,EAAE,CAAC,CAAC;QACtG,CAAC;QAED,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3E,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CACvD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY;IAC1D,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,KAAK,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE/B,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACrC,OAAO,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** A parameter list, by the offsets of its parentheses, or the one parameter of `name =>`. */
|
|
2
|
+
export type ParameterList = {
|
|
3
|
+
readonly open: number;
|
|
4
|
+
readonly close: number;
|
|
5
|
+
} | {
|
|
6
|
+
readonly single: number;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* The parameter lists of a blanked source: functions, methods and signatures of classes,
|
|
10
|
+
* interfaces and object literals (a body or a return type follows their parentheses, which tells
|
|
11
|
+
* them from a call), arrows, and the function types of annotations.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parameterLists(code: string): ParameterList[];
|
|
14
|
+
//# sourceMappingURL=parameter-lists.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-lists.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/parameter-lists.ts"],"names":[],"mappings":"AAGA,8FAA8F;AAC9F,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAkC5G;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAmB5D"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { matchingBracket } from '../text/matching-bracket.js';
|
|
2
|
+
import { openingBracket } from './opening-bracket.js';
|
|
3
|
+
const FUNCTION = /(?<![\w$.])function\b\s*\*?\s*(?:[A-Za-z_$][\w$]*)?\s*(?:<[^(]*>)?\s*\(/g;
|
|
4
|
+
const MEMBER = /^[ \t]*(?:(?:public|private|protected|static|abstract|override|async|readonly|declare|get|set)\s+)*\*?\s*([A-Za-z_$][\w$]*)\??\s*(?:<[^()\n]*>)?\s*\(/gm;
|
|
5
|
+
const NOT_A_MEMBER = new Set([
|
|
6
|
+
'if',
|
|
7
|
+
'for',
|
|
8
|
+
'while',
|
|
9
|
+
'switch',
|
|
10
|
+
'catch',
|
|
11
|
+
'return',
|
|
12
|
+
'await',
|
|
13
|
+
'typeof',
|
|
14
|
+
'function',
|
|
15
|
+
'new',
|
|
16
|
+
'throw',
|
|
17
|
+
'super',
|
|
18
|
+
'this',
|
|
19
|
+
'void',
|
|
20
|
+
'delete',
|
|
21
|
+
'yield',
|
|
22
|
+
'with',
|
|
23
|
+
'do',
|
|
24
|
+
'else',
|
|
25
|
+
'case',
|
|
26
|
+
]);
|
|
27
|
+
const SIGNATURE_GOES_ON = /^\s*[:{]/;
|
|
28
|
+
const ARROW = /=>/g;
|
|
29
|
+
const IDENTIFIER_CHAR = /[\w$]/;
|
|
30
|
+
/**
|
|
31
|
+
* The parameter lists of a blanked source: functions, methods and signatures of classes,
|
|
32
|
+
* interfaces and object literals (a body or a return type follows their parentheses, which tells
|
|
33
|
+
* them from a call), arrows, and the function types of annotations.
|
|
34
|
+
*/
|
|
35
|
+
export function parameterLists(code) {
|
|
36
|
+
const functions = [...code.matchAll(FUNCTION)].map((match) => enclosed(code, match.index + match[0].length - 1));
|
|
37
|
+
const members = [...code.matchAll(MEMBER)]
|
|
38
|
+
.filter((match) => !NOT_A_MEMBER.has(match[1] ?? ''))
|
|
39
|
+
.map((match) => enclosed(code, match.index + match[0].length - 1))
|
|
40
|
+
.filter(({ close }) => SIGNATURE_GOES_ON.test(code.slice(close + 1, close + 40)));
|
|
41
|
+
const arrows = [...code.matchAll(ARROW)].flatMap((match) => arrowParameters(code, match.index));
|
|
42
|
+
const seen = new Set();
|
|
43
|
+
return [...functions, ...members, ...arrows].filter((list) => {
|
|
44
|
+
const key = 'open' in list ? list.open : list.single;
|
|
45
|
+
const fresh = !seen.has(key);
|
|
46
|
+
seen.add(key);
|
|
47
|
+
return fresh;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function enclosed(code, open) {
|
|
51
|
+
return { open, close: matchingBracket(code, open) };
|
|
52
|
+
}
|
|
53
|
+
/** The parameters of the arrow at `arrow`: `(..) =>`, `(..): Type =>` or `name =>`. */
|
|
54
|
+
function arrowParameters(code, arrow) {
|
|
55
|
+
const last = previousCode(code, arrow - 1);
|
|
56
|
+
if (code.charAt(last) === ')') {
|
|
57
|
+
return listClosingAt(code, last);
|
|
58
|
+
}
|
|
59
|
+
const returnType = returnTypeColon(code, last);
|
|
60
|
+
if (returnType !== undefined) {
|
|
61
|
+
return listClosingAt(code, previousCode(code, returnType - 1));
|
|
62
|
+
}
|
|
63
|
+
if (!IDENTIFIER_CHAR.test(code.charAt(last))) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
let start = last;
|
|
67
|
+
while (start > 0 && IDENTIFIER_CHAR.test(code.charAt(start - 1))) {
|
|
68
|
+
start -= 1;
|
|
69
|
+
}
|
|
70
|
+
return code.charAt(previousCode(code, start - 1)) === '.' ? [] : [{ single: start }];
|
|
71
|
+
}
|
|
72
|
+
function listClosingAt(code, close) {
|
|
73
|
+
if (code.charAt(close) !== ')') {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const open = openingBracket(code, close);
|
|
77
|
+
return open === -1 ? [] : [{ open, close }];
|
|
78
|
+
}
|
|
79
|
+
/** The `:` of a return type written between the parentheses of an arrow and its `=>`. */
|
|
80
|
+
function returnTypeColon(code, from) {
|
|
81
|
+
let depth = 0;
|
|
82
|
+
for (let i = from; i >= Math.max(0, from - 300); i -= 1) {
|
|
83
|
+
const char = code.charAt(i);
|
|
84
|
+
depth += typeDepthChange(code, i);
|
|
85
|
+
if (depth < 0 || (depth === 0 && '=;,'.includes(char))) {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
if (depth === 0 && char === ':') {
|
|
89
|
+
return code.charAt(previousCode(code, i - 1)) === ')' ? i : undefined;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
/** Read backwards: a closing bracket of a type opens a level, an opening one closes it; the `>` of `=>` is no bracket. */
|
|
95
|
+
function typeDepthChange(code, at) {
|
|
96
|
+
const char = code.charAt(at);
|
|
97
|
+
if (')]}>'.includes(char)) {
|
|
98
|
+
return char === '>' && code.charAt(at - 1) === '=' ? 0 : 1;
|
|
99
|
+
}
|
|
100
|
+
return '([{<'.includes(char) ? -1 : 0;
|
|
101
|
+
}
|
|
102
|
+
function previousCode(code, from) {
|
|
103
|
+
let at = from;
|
|
104
|
+
while (at > 0 && /\s/.test(code.charAt(at))) {
|
|
105
|
+
at -= 1;
|
|
106
|
+
}
|
|
107
|
+
return at;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=parameter-lists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-lists.js","sourceRoot":"","sources":["../../../src/check/business-names/parameter-lists.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { NamedBinding } from './named-binding.js';
|
|
2
|
+
/**
|
|
3
|
+
* The names a destructuring pattern binds, the one opening at `open` (`{` or `[`): the alias of
|
|
4
|
+
* `key: alias`, a shorthand key, a rest element, at any depth. Defaults are not bindings.
|
|
5
|
+
*/
|
|
6
|
+
export declare function patternBindings(code: string, open: number): NamedBinding[];
|
|
7
|
+
//# sourceMappingURL=pattern-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-bindings.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/pattern-bindings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAU1E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { matchingBracket } from '../text/matching-bracket.js';
|
|
2
|
+
import { splitTopLevel } from '../text/split-top-level.js';
|
|
3
|
+
import { identifierAt } from './identifier-at.js';
|
|
4
|
+
import { topLevelSeparator } from './top-level-separator.js';
|
|
5
|
+
/**
|
|
6
|
+
* The names a destructuring pattern binds, the one opening at `open` (`{` or `[`): the alias of
|
|
7
|
+
* `key: alias`, a shorthand key, a rest element, at any depth. Defaults are not bindings.
|
|
8
|
+
*/
|
|
9
|
+
export function patternBindings(code, open) {
|
|
10
|
+
const close = matchingBracket(code, open);
|
|
11
|
+
const isObject = code.charAt(open) === '{';
|
|
12
|
+
return splitTopLevel(code.slice(open + 1, close)).flatMap((part) => {
|
|
13
|
+
const start = open + 1 + part.start;
|
|
14
|
+
const colon = isObject ? topLevelSeparator(part.code, ':') : -1;
|
|
15
|
+
return elementBindings(code, colon === -1 ? start : valueStart(code, start + colon + 1));
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/** One element of a pattern, from its first character: a nested pattern, a rest, or a name with its default. */
|
|
19
|
+
function elementBindings(code, start) {
|
|
20
|
+
const at = code.startsWith('...', start) ? start + 3 : start;
|
|
21
|
+
const opener = code.charAt(at);
|
|
22
|
+
if (opener === '{' || opener === '[') {
|
|
23
|
+
return patternBindings(code, at);
|
|
24
|
+
}
|
|
25
|
+
const name = identifierAt(code, at);
|
|
26
|
+
return name === '' ? [] : [{ name, offset: at, kind: 'destructured binding' }];
|
|
27
|
+
}
|
|
28
|
+
function valueStart(code, from) {
|
|
29
|
+
return from + (/^\s*/.exec(code.slice(from, from + 200))?.[0].length ?? 0);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=pattern-bindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-bindings.js","sourceRoot":"","sources":["../../../src/check/business-names/pattern-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,IAAY;IACxD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;IAE3C,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACjE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,OAAO,eAAe,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,gHAAgH;AAChH,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE/B,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;QACrC,OAAO,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpC,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,IAAY;IAC5C,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { NamedBinding } from './named-binding.js';
|
|
2
|
+
/**
|
|
3
|
+
* The properties a source declares in a class, an interface or a type alias of an object: a key
|
|
4
|
+
* of an object literal follows the type it is written for, and is not one of them.
|
|
5
|
+
*/
|
|
6
|
+
export declare function propertyBindings(code: string): NamedBinding[];
|
|
7
|
+
//# sourceMappingURL=property-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"property-bindings.d.ts","sourceRoot":"","sources":["../../../src/check/business-names/property-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQvD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAa7D"}
|