@lintai/sdk 0.1.3 → 0.2.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/dist/index.d.ts CHANGED
@@ -1,161 +1,63 @@
1
- export type Predicate<T = any> = (value: T) => boolean;
2
- type QueryKind = "functions" | "imports" | "calls" | "typeRefs" | "accesses";
3
- type QueryOperation = {
4
- type: "in";
5
- value: string;
6
- } | {
7
- type: "from";
8
- value: string;
9
- } | {
10
- type: "to";
11
- value: string;
12
- } | {
13
- type: "where";
14
- handler: Predicate<any>;
15
- } | {
16
- type: "calling";
17
- query: QueryValue;
18
- } | {
19
- type: "transitivelyCalling";
20
- query: QueryValue;
21
- };
22
- export type FunctionView = {
23
- name: string;
24
- kind: string;
25
- filePath: string;
26
- containerName: string;
27
- semanticKey: string;
28
- containsAwait: boolean;
29
- isExported: boolean;
30
- isAsync: boolean;
31
- parameterCount: number;
32
- returnTypeText: string;
33
- parameterTypeTexts: string[];
34
- sourceLocation: SourceLocation;
35
- };
36
- export type ImportedSymbolView = {
37
- name: string;
38
- kind: "default" | "namespace" | "named";
39
- isTypeOnly: boolean;
40
- };
41
- export type ImportEdgeView = {
42
- specifier: string;
43
- fromPath: string;
44
- toPath: string;
45
- semanticKey: string;
46
- importedSymbols: ImportedSymbolView[];
47
- hasDefaultImport: boolean;
48
- hasNamespaceImport: boolean;
49
- hasNamedImports: boolean;
50
- isTypeOnly: boolean;
51
- sourceLocation: SourceLocation;
52
- };
53
- export type CallEdgeView = {
54
- fromName: string;
55
- toName: string;
56
- fromPath: string;
57
- toPath: string;
58
- semanticKey: string;
59
- sourceLocation: SourceLocation;
60
- };
61
- export type TypeRefView = {
62
- name: string;
63
- filePath: string;
64
- targetPath: string;
65
- semanticKey: string;
66
- sourceLocation: SourceLocation;
67
- };
68
- export type AccessView = {
69
- root: string;
70
- accessPath: string;
71
- origin: "special_form";
72
- filePath: string;
73
- semanticKey: string;
74
- sourceLocation: SourceLocation;
75
- };
76
- export type SourceLocation = {
77
- file: string;
78
- startLine: number;
79
- startColumn: number;
80
- endLine: number;
81
- endColumn: number;
82
- };
83
- export type AssertionContext = {
1
+ export type Fragment = {
2
+ readonly __lintaiKind: "fragment";
3
+ readonly text: string;
4
+ };
5
+ export type Name = {
6
+ readonly __lintaiKind: "name";
7
+ readonly value: string;
8
+ };
9
+ export type DlValue = string | number | Name | Fragment;
10
+ export type FactValue = string | number | Name;
11
+ export type Facts = Record<string, FactValue[][]>;
12
+ export type RowValue = string | number;
13
+ export type Row = Record<string, RowValue>;
14
+ export type MessageContext = {
84
15
  assertion_id: string;
85
16
  };
86
17
  export type RuleContext<Env, Setup> = {
87
18
  env: Env;
88
19
  setup: Setup;
89
20
  };
90
- export type AssertionValue = {
91
- __lintaiKind: "assertion";
92
- terminal: "isEmpty";
93
- query: QueryValue;
94
- };
95
- type BaseQuery = {
96
- __lintaiKind: "query";
97
- entity: QueryKind;
98
- ops: QueryOperation[];
99
- isEmpty(): AssertionValue;
100
- };
101
- export type FunctionsQuery = BaseQuery & {
102
- entity: "functions";
103
- in(pattern: string): FunctionsQuery;
104
- where(predicate: Predicate<FunctionView>): FunctionsQuery;
105
- calling(other: FunctionsQuery): FunctionsQuery;
106
- transitivelyCalling(other: FunctionsQuery): FunctionsQuery;
107
- };
108
- export type ImportsQuery = BaseQuery & {
109
- entity: "imports";
110
- from(pattern: string): ImportsQuery;
111
- to(pattern: string): ImportsQuery;
112
- where(predicate: Predicate<ImportEdgeView>): ImportsQuery;
113
- };
114
- export type CallsQuery = BaseQuery & {
115
- entity: "calls";
116
- from(pattern: string): CallsQuery;
117
- to(pattern: string): CallsQuery;
118
- where(predicate: Predicate<CallEdgeView>): CallsQuery;
119
- };
120
- export type TypeRefsQuery = BaseQuery & {
121
- entity: "typeRefs";
122
- in(pattern: string): TypeRefsQuery;
123
- where(predicate: Predicate<TypeRefView>): TypeRefsQuery;
21
+ export type SetupContext<Env> = {
22
+ env: Env;
23
+ workspaceRoot: string;
124
24
  };
125
- export type AccessesQuery = BaseQuery & {
126
- entity: "accesses";
127
- in(pattern: string): AccessesQuery;
128
- where(predicate: Predicate<AccessView>): AccessesQuery;
25
+ declare function name(value: string): Name;
26
+ declare function dlTag(strings: TemplateStringsArray, ...values: DlValue[]): Fragment;
27
+ export type Dl = typeof dlTag & {
28
+ readonly name: typeof name;
129
29
  };
130
- export type QueryValue = FunctionsQuery | ImportsQuery | CallsQuery | TypeRefsQuery | AccessesQuery;
131
- type InternalRuleSpec<Env, Setup, Value> = {
30
+ export declare const dl: Dl;
31
+ export type ProgramInput<Env, Setup> = Fragment | ((ctx: RuleContext<Env, Setup>) => Fragment);
32
+ type RuleSpec<Env, Setup> = {
132
33
  id: string;
133
34
  versionValue?: number;
134
- setupFn?: (() => Setup) | ((ctx: {
135
- env: Env;
136
- workspaceRoot: string;
137
- }) => Setup);
138
- assertFn?: (ctx: RuleContext<Env, Setup>) => AssertionValue | Record<string, AssertionValue>;
139
- messageFn?: (value: Value, ctx: AssertionContext) => string;
140
- };
141
- declare class RuleDefinition<Env, Setup, Value> {
35
+ setupFn?: (ctx: SetupContext<Env>) => Setup | Promise<Setup>;
36
+ factsFn?: (ctx: RuleContext<Env, Setup>) => Facts;
37
+ programValue?: ProgramInput<Env, Setup>;
38
+ reportPredicates?: readonly string[];
39
+ expectNonEmptyPredicates?: readonly string[];
40
+ messageFn?: (row: Row, ctx: MessageContext) => string;
41
+ };
42
+ export declare class RuleDefinition<Env, Setup> {
142
43
  private readonly spec;
143
44
  readonly id: string;
144
45
  readonly versionValue?: number;
145
- readonly setupFn?: InternalRuleSpec<Env, Setup, Value>["setupFn"];
146
- readonly assertFn?: InternalRuleSpec<Env, Setup, Value>["assertFn"];
147
- readonly messageFn?: InternalRuleSpec<Env, Setup, Value>["messageFn"];
148
- constructor(spec: InternalRuleSpec<Env, Setup, Value>);
149
- version(versionValue: number): RuleDefinition<Env, Setup, Value>;
150
- setup<NextSetup>(setupFn: InternalRuleSpec<Env, NextSetup, Value>["setupFn"]): RuleDefinition<Env, NextSetup, Value>;
151
- assert(assertFn: InternalRuleSpec<Env, Setup, Value>["assertFn"]): RuleDefinition<Env, Setup, Value>;
152
- message(messageFn: InternalRuleSpec<Env, Setup, Value>["messageFn"]): RuleDefinition<Env, Setup, Value>;
46
+ readonly setupFn?: RuleSpec<Env, Setup>["setupFn"];
47
+ readonly factsFn?: RuleSpec<Env, Setup>["factsFn"];
48
+ readonly programValue?: RuleSpec<Env, Setup>["programValue"];
49
+ readonly reportPredicates?: readonly string[];
50
+ readonly expectNonEmptyPredicates?: readonly string[];
51
+ readonly messageFn?: RuleSpec<Env, Setup>["messageFn"];
52
+ constructor(spec: RuleSpec<Env, Setup>);
53
+ version(versionValue: number): RuleDefinition<Env, Setup>;
54
+ setup<NextSetup>(setupFn: (ctx: SetupContext<Env>) => NextSetup | Promise<NextSetup>): RuleDefinition<Env, Awaited<NextSetup>>;
55
+ facts(factsFn: (ctx: RuleContext<Env, Setup>) => Facts): RuleDefinition<Env, Setup>;
56
+ program(programValue: ProgramInput<Env, Setup>): RuleDefinition<Env, Setup>;
57
+ report(...predicates: string[]): RuleDefinition<Env, Setup>;
58
+ expectNonEmpty(...predicates: string[]): RuleDefinition<Env, Setup>;
59
+ message(messageFn: (row: Row, ctx: MessageContext) => string): RuleDefinition<Env, Setup>;
153
60
  }
154
- export declare function rule<Env = Record<string, any>, Setup = Record<string, never>, Value = any>(id: string): RuleDefinition<Env, Setup, Value>;
155
- export declare function functions(): FunctionsQuery;
156
- export declare function imports(): ImportsQuery;
157
- export declare function calls(): CallsQuery;
158
- export declare function typeRefs(): TypeRefsQuery;
159
- export declare function accesses(): AccessesQuery;
61
+ export declare function rule<Env = Record<string, any>, Setup = Record<string, never>>(id: string): RuleDefinition<Env, Setup>;
160
62
  export {};
161
63
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,16 +1,114 @@
1
- class RuleDefinition {
1
+ const namePattern = /^[a-z][a-z0-9_]*(\/[a-z0-9_]+)*$/;
2
+ function isTagged(value, kind) {
3
+ return (typeof value === "object" &&
4
+ value !== null &&
5
+ value.__lintaiKind === kind);
6
+ }
7
+ function describe(value) {
8
+ if (value === null)
9
+ return "null";
10
+ if (Array.isArray(value))
11
+ return "an array";
12
+ return typeof value;
13
+ }
14
+ function hex(code, width) {
15
+ return code.toString(16).padStart(width, "0");
16
+ }
17
+ function escapeString(value) {
18
+ let result = '"';
19
+ for (const char of value) {
20
+ const code = char.codePointAt(0) ?? 0;
21
+ switch (char) {
22
+ case "\\":
23
+ result += "\\\\";
24
+ break;
25
+ case '"':
26
+ result += '\\"';
27
+ break;
28
+ case "'":
29
+ result += "\\'";
30
+ break;
31
+ case "\n":
32
+ result += "\\n";
33
+ break;
34
+ case "\t":
35
+ result += "\\t";
36
+ break;
37
+ default:
38
+ if (code < 0x20 || code === 0x7f) {
39
+ result += `\\x${hex(code, 2)}`;
40
+ }
41
+ else if (code > 0x7e) {
42
+ result += `\\u{${hex(code, 4)}}`;
43
+ }
44
+ else {
45
+ result += char;
46
+ }
47
+ }
48
+ }
49
+ return `${result}"`;
50
+ }
51
+ function formatNumber(value) {
52
+ if (!Number.isFinite(value)) {
53
+ throw new TypeError(`dl: cannot interpolate non-finite number ${value}`);
54
+ }
55
+ if (Number.isInteger(value)) {
56
+ if (!Number.isSafeInteger(value)) {
57
+ throw new TypeError(`dl: integer ${value} is outside the safe integer range`);
58
+ }
59
+ return String(value);
60
+ }
61
+ const text = String(value);
62
+ if (text.includes("e")) {
63
+ throw new TypeError(`dl: cannot interpolate ${value}; use a number without an exponent`);
64
+ }
65
+ return text;
66
+ }
67
+ function formatValue(value) {
68
+ if (typeof value === "string")
69
+ return escapeString(value);
70
+ if (typeof value === "number")
71
+ return formatNumber(value);
72
+ if (isTagged(value, "fragment"))
73
+ return value.text;
74
+ if (isTagged(value, "name"))
75
+ return `/${value.value}`;
76
+ throw new TypeError(`dl: cannot interpolate ${describe(value)}; use a string, a finite number, dl.name() or a dl fragment`);
77
+ }
78
+ function name(value) {
79
+ if (typeof value !== "string" || !namePattern.test(value)) {
80
+ throw new TypeError(`dl.name: ${JSON.stringify(value)} is not a valid name; it must match ${namePattern}`);
81
+ }
82
+ return Object.freeze({ __lintaiKind: "name", value });
83
+ }
84
+ function dlTag(strings, ...values) {
85
+ let text = strings[0] ?? "";
86
+ for (let index = 0; index < values.length; index++) {
87
+ text += formatValue(values[index]);
88
+ text += strings[index + 1] ?? "";
89
+ }
90
+ return Object.freeze({ __lintaiKind: "fragment", text });
91
+ }
92
+ export const dl = Object.defineProperty((strings, ...values) => dlTag(strings, ...values), "name", { value: name, enumerable: true });
93
+ export class RuleDefinition {
2
94
  spec;
3
95
  id;
4
96
  versionValue;
5
97
  setupFn;
6
- assertFn;
98
+ factsFn;
99
+ programValue;
100
+ reportPredicates;
101
+ expectNonEmptyPredicates;
7
102
  messageFn;
8
103
  constructor(spec) {
9
104
  this.spec = spec;
10
105
  this.id = spec.id;
11
106
  this.versionValue = spec.versionValue;
12
107
  this.setupFn = spec.setupFn;
13
- this.assertFn = spec.assertFn;
108
+ this.factsFn = spec.factsFn;
109
+ this.programValue = spec.programValue;
110
+ this.reportPredicates = spec.reportPredicates;
111
+ this.expectNonEmptyPredicates = spec.expectNonEmptyPredicates;
14
112
  this.messageFn = spec.messageFn;
15
113
  }
16
114
  version(versionValue) {
@@ -19,124 +117,26 @@ class RuleDefinition {
19
117
  setup(setupFn) {
20
118
  return new RuleDefinition({
21
119
  ...this.spec,
22
- setupFn,
120
+ setupFn: setupFn,
23
121
  });
24
122
  }
25
- assert(assertFn) {
26
- return new RuleDefinition({
27
- ...this.spec,
28
- assertFn,
29
- });
123
+ facts(factsFn) {
124
+ return new RuleDefinition({ ...this.spec, factsFn });
125
+ }
126
+ program(programValue) {
127
+ return new RuleDefinition({ ...this.spec, programValue });
128
+ }
129
+ report(...predicates) {
130
+ return new RuleDefinition({ ...this.spec, reportPredicates: predicates });
131
+ }
132
+ expectNonEmpty(...predicates) {
133
+ return new RuleDefinition({ ...this.spec, expectNonEmptyPredicates: predicates });
30
134
  }
31
135
  message(messageFn) {
32
- return new RuleDefinition({
33
- ...this.spec,
34
- messageFn,
35
- });
136
+ return new RuleDefinition({ ...this.spec, messageFn });
36
137
  }
37
138
  }
38
- function createBaseQuery(entity, ops) {
39
- return {
40
- __lintaiKind: "query",
41
- entity,
42
- ops,
43
- isEmpty() {
44
- return {
45
- __lintaiKind: "assertion",
46
- terminal: "isEmpty",
47
- query: this,
48
- };
49
- },
50
- };
51
- }
52
- function createFunctionsQuery(ops = []) {
53
- return {
54
- ...createBaseQuery("functions", ops),
55
- entity: "functions",
56
- in(pattern) {
57
- return createFunctionsQuery([...ops, { type: "in", value: pattern }]);
58
- },
59
- where(predicate) {
60
- return createFunctionsQuery([...ops, { type: "where", handler: predicate }]);
61
- },
62
- calling(other) {
63
- return createFunctionsQuery([...ops, { type: "calling", query: other }]);
64
- },
65
- transitivelyCalling(other) {
66
- return createFunctionsQuery([...ops, { type: "transitivelyCalling", query: other }]);
67
- },
68
- };
69
- }
70
- function createImportsQuery(ops = []) {
71
- return {
72
- ...createBaseQuery("imports", ops),
73
- entity: "imports",
74
- from(pattern) {
75
- return createImportsQuery([...ops, { type: "from", value: pattern }]);
76
- },
77
- to(pattern) {
78
- return createImportsQuery([...ops, { type: "to", value: pattern }]);
79
- },
80
- where(predicate) {
81
- return createImportsQuery([...ops, { type: "where", handler: predicate }]);
82
- },
83
- };
84
- }
85
- function createCallsQuery(ops = []) {
86
- return {
87
- ...createBaseQuery("calls", ops),
88
- entity: "calls",
89
- from(pattern) {
90
- return createCallsQuery([...ops, { type: "from", value: pattern }]);
91
- },
92
- to(pattern) {
93
- return createCallsQuery([...ops, { type: "to", value: pattern }]);
94
- },
95
- where(predicate) {
96
- return createCallsQuery([...ops, { type: "where", handler: predicate }]);
97
- },
98
- };
99
- }
100
- function createTypeRefsQuery(ops = []) {
101
- return {
102
- ...createBaseQuery("typeRefs", ops),
103
- entity: "typeRefs",
104
- in(pattern) {
105
- return createTypeRefsQuery([...ops, { type: "in", value: pattern }]);
106
- },
107
- where(predicate) {
108
- return createTypeRefsQuery([...ops, { type: "where", handler: predicate }]);
109
- },
110
- };
111
- }
112
- function createAccessesQuery(ops = []) {
113
- return {
114
- ...createBaseQuery("accesses", ops),
115
- entity: "accesses",
116
- in(pattern) {
117
- return createAccessesQuery([...ops, { type: "in", value: pattern }]);
118
- },
119
- where(predicate) {
120
- return createAccessesQuery([...ops, { type: "where", handler: predicate }]);
121
- },
122
- };
123
- }
124
139
  export function rule(id) {
125
140
  return new RuleDefinition({ id });
126
141
  }
127
- export function functions() {
128
- return createFunctionsQuery();
129
- }
130
- export function imports() {
131
- return createImportsQuery();
132
- }
133
- export function calls() {
134
- return createCallsQuery();
135
- }
136
- export function typeRefs() {
137
- return createTypeRefsQuery();
138
- }
139
- export function accesses() {
140
- return createAccessesQuery();
141
- }
142
142
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lintai/sdk",
3
- "version": "0.1.3",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -13,7 +13,8 @@
13
13
  "url": "https://github.com/bigbizze/lintai/issues"
14
14
  },
15
15
  "files": [
16
- "dist"
16
+ "dist",
17
+ "!dist/**/*.test.*"
17
18
  ],
18
19
  "exports": {
19
20
  ".": {
@@ -35,6 +36,7 @@
35
36
  },
36
37
  "scripts": {
37
38
  "build": "tsc",
38
- "dev": "tsc --watch"
39
+ "dev": "tsc --watch",
40
+ "test": "node --test 'dist/**/*.test.js'"
39
41
  }
40
42
  }