@lintai/sdk 0.1.2 → 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,128 +1,63 @@
1
- export type Predicate<T = any> = (value: T) => boolean;
2
- type QueryKind = "functions" | "imports" | "calls" | "typeRefs";
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 SourceLocation = {
69
- file: string;
70
- startLine: number;
71
- startColumn: number;
72
- endLine: number;
73
- endColumn: number;
74
- };
75
- 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 = {
76
15
  assertion_id: string;
77
16
  };
78
17
  export type RuleContext<Env, Setup> = {
79
18
  env: Env;
80
19
  setup: Setup;
81
20
  };
82
- export type AssertionValue = {
83
- __lintaiKind: "assertion";
84
- terminal: "isEmpty";
85
- query: QueryValue;
21
+ export type SetupContext<Env> = {
22
+ env: Env;
23
+ workspaceRoot: string;
86
24
  };
87
- export type QueryValue = {
88
- __lintaiKind: "query";
89
- entity: QueryKind;
90
- ops: QueryOperation[];
91
- in(pattern: string): QueryValue;
92
- from(pattern: string): QueryValue;
93
- to(pattern: string): QueryValue;
94
- where(predicate: Predicate<any>): QueryValue;
95
- calling(other: QueryValue): QueryValue;
96
- transitivelyCalling(other: QueryValue): QueryValue;
97
- isEmpty(): AssertionValue;
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;
98
29
  };
99
- 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> = {
100
33
  id: string;
101
34
  versionValue?: number;
102
- setupFn?: (() => Setup) | ((ctx: {
103
- env: Env;
104
- workspaceRoot: string;
105
- }) => Setup);
106
- assertFn?: (ctx: RuleContext<Env, Setup>) => AssertionValue | Record<string, AssertionValue>;
107
- messageFn?: (value: Value, ctx: AssertionContext) => string;
108
- };
109
- 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> {
110
43
  private readonly spec;
111
44
  readonly id: string;
112
45
  readonly versionValue?: number;
113
- readonly setupFn?: InternalRuleSpec<Env, Setup, Value>["setupFn"];
114
- readonly assertFn?: InternalRuleSpec<Env, Setup, Value>["assertFn"];
115
- readonly messageFn?: InternalRuleSpec<Env, Setup, Value>["messageFn"];
116
- constructor(spec: InternalRuleSpec<Env, Setup, Value>);
117
- version(versionValue: number): RuleDefinition<Env, Setup, Value>;
118
- setup<NextSetup>(setupFn: InternalRuleSpec<Env, NextSetup, Value>["setupFn"]): RuleDefinition<Env, NextSetup, Value>;
119
- assert(assertFn: InternalRuleSpec<Env, Setup, Value>["assertFn"]): RuleDefinition<Env, Setup, Value>;
120
- 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>;
121
60
  }
122
- export declare function rule<Env = Record<string, any>, Setup = Record<string, never>, Value = any>(id: string): RuleDefinition<Env, Setup, Value>;
123
- export declare function functions(): QueryValue;
124
- export declare function imports(): QueryValue;
125
- export declare function calls(): QueryValue;
126
- export declare function typeRefs(): QueryValue;
61
+ export declare function rule<Env = Record<string, any>, Setup = Record<string, never>>(id: string): RuleDefinition<Env, Setup>;
127
62
  export {};
128
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,71 +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 createQuery(entity, ops = []) {
39
- const query = {
40
- __lintaiKind: "query",
41
- entity,
42
- ops,
43
- in(pattern) {
44
- return createQuery(entity, [...ops, { type: "in", value: pattern }]);
45
- },
46
- from(pattern) {
47
- return createQuery(entity, [...ops, { type: "from", value: pattern }]);
48
- },
49
- to(pattern) {
50
- return createQuery(entity, [...ops, { type: "to", value: pattern }]);
51
- },
52
- where(predicate) {
53
- return createQuery(entity, [...ops, { type: "where", handler: predicate }]);
54
- },
55
- calling(other) {
56
- return createQuery(entity, [...ops, { type: "calling", query: other }]);
57
- },
58
- transitivelyCalling(other) {
59
- return createQuery(entity, [
60
- ...ops,
61
- { type: "transitivelyCalling", query: other },
62
- ]);
63
- },
64
- isEmpty() {
65
- return {
66
- __lintaiKind: "assertion",
67
- terminal: "isEmpty",
68
- query,
69
- };
70
- },
71
- };
72
- return query;
73
- }
74
139
  export function rule(id) {
75
140
  return new RuleDefinition({ id });
76
141
  }
77
- export function functions() {
78
- return createQuery("functions");
79
- }
80
- export function imports() {
81
- return createQuery("imports");
82
- }
83
- export function calls() {
84
- return createQuery("calls");
85
- }
86
- export function typeRefs() {
87
- return createQuery("typeRefs");
88
- }
89
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.2",
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
  }