@memberjunction/global 6.2.0-edge.4 → 6.2.0-edge.6
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/ClassFactory.d.ts +16 -3
- package/dist/ClassFactory.d.ts.map +1 -1
- package/dist/ClassFactory.js +112 -48
- package/dist/ClassFactory.js.map +1 -1
- package/dist/DeepDiff.d.ts +2 -0
- package/dist/DeepDiff.d.ts.map +1 -1
- package/dist/DeepDiff.js +40 -38
- package/dist/DeepDiff.js.map +1 -1
- package/dist/KeyedSerialTaskQueue.d.ts +18 -1
- package/dist/KeyedSerialTaskQueue.d.ts.map +1 -1
- package/dist/KeyedSerialTaskQueue.js +24 -3
- package/dist/KeyedSerialTaskQueue.js.map +1 -1
- package/dist/ObjectCache.d.ts +1 -0
- package/dist/ObjectCache.d.ts.map +1 -1
- package/dist/ObjectCache.js +14 -22
- package/dist/ObjectCache.js.map +1 -1
- package/dist/SQLExpressionValidator.d.ts +70 -41
- package/dist/SQLExpressionValidator.d.ts.map +1 -1
- package/dist/SQLExpressionValidator.js +183 -134
- package/dist/SQLExpressionValidator.js.map +1 -1
- package/dist/SQLScreeningScanner.d.ts +117 -0
- package/dist/SQLScreeningScanner.d.ts.map +1 -0
- package/dist/SQLScreeningScanner.js +475 -0
- package/dist/SQLScreeningScanner.js.map +1 -0
- package/dist/__tests__/FieldSecurityEgressCompliance.test.d.ts +2 -0
- package/dist/__tests__/FieldSecurityEgressCompliance.test.d.ts.map +1 -0
- package/dist/__tests__/FieldSecurityEgressCompliance.test.js +228 -0
- package/dist/__tests__/FieldSecurityEgressCompliance.test.js.map +1 -0
- package/dist/__tests__/KeyedSerialTaskQueue.test.js +92 -0
- package/dist/__tests__/KeyedSerialTaskQueue.test.js.map +1 -1
- package/dist/__tests__/ProofOfPossession.test.d.ts +2 -0
- package/dist/__tests__/ProofOfPossession.test.d.ts.map +1 -0
- package/dist/__tests__/ProofOfPossession.test.js +123 -0
- package/dist/__tests__/ProofOfPossession.test.js.map +1 -0
- package/dist/__tests__/SQLExpressionValidator.dialect.test.d.ts +2 -0
- package/dist/__tests__/SQLExpressionValidator.dialect.test.d.ts.map +1 -0
- package/dist/__tests__/SQLExpressionValidator.dialect.test.js +183 -0
- package/dist/__tests__/SQLExpressionValidator.dialect.test.js.map +1 -0
- package/dist/__tests__/SQLExpressionValidator.security.test.js +176 -2
- package/dist/__tests__/SQLExpressionValidator.security.test.js.map +1 -1
- package/dist/__tests__/SQLScreeningScanner.test.d.ts +2 -0
- package/dist/__tests__/SQLScreeningScanner.test.d.ts.map +1 -0
- package/dist/__tests__/SQLScreeningScanner.test.js +172 -0
- package/dist/__tests__/SQLScreeningScanner.test.js.map +1 -0
- package/dist/__tests__/SQLScreeningScanner.tokens.test.d.ts +2 -0
- package/dist/__tests__/SQLScreeningScanner.tokens.test.d.ts.map +1 -0
- package/dist/__tests__/SQLScreeningScanner.tokens.test.js +82 -0
- package/dist/__tests__/SQLScreeningScanner.tokens.test.js.map +1 -0
- package/dist/__tests__/UUIDCompliance.test.js +4 -4
- package/dist/__tests__/UUIDCompliance.test.js.map +1 -1
- package/dist/__tests__/UserScopedCacheKey.test.d.ts +2 -0
- package/dist/__tests__/UserScopedCacheKey.test.d.ts.map +1 -0
- package/dist/__tests__/UserScopedCacheKey.test.js +25 -0
- package/dist/__tests__/UserScopedCacheKey.test.js.map +1 -0
- package/dist/__tests__/util.valuesEqual.test.d.ts +2 -0
- package/dist/__tests__/util.valuesEqual.test.d.ts.map +1 -0
- package/dist/__tests__/util.valuesEqual.test.js +37 -0
- package/dist/__tests__/util.valuesEqual.test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/util/ProofOfPossession.d.ts +68 -0
- package/dist/util/ProofOfPossession.d.ts.map +1 -0
- package/dist/util/ProofOfPossession.js +163 -0
- package/dist/util/ProofOfPossession.js.map +1 -0
- package/dist/util/UserScopedCacheKey.d.ts +42 -0
- package/dist/util/UserScopedCacheKey.d.ts.map +1 -0
- package/dist/util/UserScopedCacheKey.js +49 -0
- package/dist/util/UserScopedCacheKey.js.map +1 -0
- package/dist/util.d.ts +25 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +38 -0
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ScanSQLForScreening } from '../SQLScreeningScanner.js';
|
|
3
|
+
/** The text of each span the scan found, with its kind. */
|
|
4
|
+
function spansOf(sql, dialect) {
|
|
5
|
+
return ScanSQLForScreening(sql, dialect).Spans.map(s => [s.Kind, sql.slice(s.Start, s.End)]);
|
|
6
|
+
}
|
|
7
|
+
describe('ScanSQLForScreening', () => {
|
|
8
|
+
describe('string literals (both dialects)', () => {
|
|
9
|
+
it.each(['sqlserver', 'postgresql'])('reads doubled quotes as escaped quotes (%s)', dialect => {
|
|
10
|
+
expect(spansOf("Name = 'O''Brien' AND 1 = 1", dialect)).toEqual([['string', "'O''Brien'"]]);
|
|
11
|
+
});
|
|
12
|
+
it.each(['sqlserver', 'postgresql'])('treats a backslash as an ordinary character (%s)', dialect => {
|
|
13
|
+
const scan = ScanSQLForScreening("x = 'a\\' ; SELECT 1", dialect);
|
|
14
|
+
expect(scan.Classified).toBe(true);
|
|
15
|
+
expect(scan.Code).toBe('x = ; SELECT 1');
|
|
16
|
+
});
|
|
17
|
+
it.each(['sqlserver', 'postgresql'])('includes the N prefix in the literal (%s)', dialect => {
|
|
18
|
+
expect(spansOf("Name = N'x'", dialect)).toEqual([['string', "N'x'"]]);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe('quoted identifiers', () => {
|
|
22
|
+
it('reads a SQL Server bracket identifier, with ]] as an escaped bracket, so a quote inside opens no literal', () => {
|
|
23
|
+
const sql = "[a']]b'] = 1 ; SELECT 1";
|
|
24
|
+
expect(spansOf(sql, 'sqlserver')).toEqual([['identifier', "[a']]b']"]]);
|
|
25
|
+
expect(ScanSQLForScreening(sql, 'sqlserver').Code).toBe(' = 1 ; SELECT 1');
|
|
26
|
+
});
|
|
27
|
+
it('treats a bracket as code on PostgreSQL, where a quote inside it opens a literal', () => {
|
|
28
|
+
expect(spansOf("x[1] = 'a'", 'postgresql')).toEqual([['string', "'a'"]]);
|
|
29
|
+
expect(spansOf("[a'] = 1 ; SELECT 1 ; SELECT [b']", 'postgresql')).toEqual([
|
|
30
|
+
['string', "'] = 1 ; SELECT 1 ; SELECT [b'"],
|
|
31
|
+
]);
|
|
32
|
+
});
|
|
33
|
+
it.each(['sqlserver', 'postgresql'])('reads a double-quoted identifier with "" escapes (%s)', dialect => {
|
|
34
|
+
expect(spansOf('"a""b\'c" = 1', dialect)).toEqual([['identifier', '"a""b\'c"']]);
|
|
35
|
+
});
|
|
36
|
+
it('writes quoted identifiers as bare names in CodeWithIdentifiers', () => {
|
|
37
|
+
const scan = ScanSQLForScreening('SELECT * FROM [sys].[sql_logins] WHERE [a]]b] = 1', 'sqlserver');
|
|
38
|
+
expect(scan.Code).toBe('SELECT * FROM . WHERE = 1');
|
|
39
|
+
expect(scan.CodeWithIdentifiers).toBe('SELECT * FROM sys . sql_logins WHERE a]b = 1');
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('PostgreSQL strings', () => {
|
|
43
|
+
it('reads a backslash-escaped quote inside an E string', () => {
|
|
44
|
+
const sql = "Name = E'\\'' ; SELECT 1";
|
|
45
|
+
expect(spansOf(sql, 'postgresql')).toEqual([['string', "E'\\''"]]);
|
|
46
|
+
expect(ScanSQLForScreening(sql, 'postgresql').Code).toBe('Name = ; SELECT 1');
|
|
47
|
+
});
|
|
48
|
+
it('reads E as an ordinary word on SQL Server', () => {
|
|
49
|
+
expect(spansOf("Name = E'\\'' ; SELECT 1 ; '", 'sqlserver')).toEqual([['string', "'\\'' ; SELECT 1 ; '"]]);
|
|
50
|
+
});
|
|
51
|
+
it('opens an E string only at the start of a token', () => {
|
|
52
|
+
// `x1e` and `name` are identifiers, so the quote after them opens a plain literal.
|
|
53
|
+
expect(spansOf("x1e'\\'", 'postgresql')).toEqual([['string', "'\\'"]]);
|
|
54
|
+
expect(spansOf("name'\\' ; SELECT 1", 'postgresql')).toEqual([['string', "'\\'"]]);
|
|
55
|
+
// Operator characters do not extend a word, so `@@E'…'` is an operator and an E string.
|
|
56
|
+
expect(spansOf("'a' @@E'\\'' ; SELECT 1", 'postgresql')).toEqual([
|
|
57
|
+
['string', "'a'"],
|
|
58
|
+
['string', "E'\\''"],
|
|
59
|
+
]);
|
|
60
|
+
// An exponent needs digits, so in `1e'…'` the `e` opens an E string.
|
|
61
|
+
expect(spansOf("1e'\\''", 'postgresql')).toEqual([['string', "e'\\''"]]);
|
|
62
|
+
});
|
|
63
|
+
it('reads dollar-quoted strings, with or without a tag', () => {
|
|
64
|
+
expect(spansOf("x = $$it's$$ AND y = $fn$a$$b$fn$", 'postgresql')).toEqual([
|
|
65
|
+
['string', "$$it's$$"],
|
|
66
|
+
['string', '$fn$a$$b$fn$'],
|
|
67
|
+
]);
|
|
68
|
+
});
|
|
69
|
+
it('does not open a dollar quote inside a word or at a positional parameter', () => {
|
|
70
|
+
expect(spansOf('a$$b$$ = $1', 'postgresql')).toEqual([]);
|
|
71
|
+
});
|
|
72
|
+
it('treats $ as code on SQL Server', () => {
|
|
73
|
+
expect(spansOf("x = $$'$$ ; SELECT 1 ; '", 'sqlserver')).toEqual([['string', "'$$ ; SELECT 1 ; '"]]);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe('comments', () => {
|
|
77
|
+
it.each(['sqlserver', 'postgresql'])('reads a quote inside a comment as comment text (%s)', dialect => {
|
|
78
|
+
const scan = ScanSQLForScreening("SELECT 1 -- it's\n; SELECT 2 /* it's */", dialect);
|
|
79
|
+
expect(scan.Classified).toBe(true);
|
|
80
|
+
expect(scan.CommentCount).toBe(2);
|
|
81
|
+
expect(scan.Code).toBe('SELECT 1 \n; SELECT 2 ');
|
|
82
|
+
});
|
|
83
|
+
it('reads nested block comments', () => {
|
|
84
|
+
expect(spansOf('/* a /* b */ c */ SELECT 1', 'sqlserver')).toEqual([['comment', '/* a /* b */ c */']]);
|
|
85
|
+
});
|
|
86
|
+
it('ends a line comment at \\r\\n and at the end of the input', () => {
|
|
87
|
+
const scan = ScanSQLForScreening('SELECT 1 -- a\r\nFROM T -- b', 'sqlserver');
|
|
88
|
+
expect(scan.Classified).toBe(true);
|
|
89
|
+
expect(scan.Code).toBe('SELECT 1 \r\nFROM T ');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('leading word', () => {
|
|
93
|
+
it.each(['sqlserver', 'postgresql'])('skips whitespace and comments (%s)', dialect => {
|
|
94
|
+
expect(ScanSQLForScreening(' -- c\n /* b */ select 1', dialect).LeadingWord).toBe('select');
|
|
95
|
+
expect(ScanSQLForScreening('WithdrawFunds 1', dialect).LeadingWord).toBe('WithdrawFunds');
|
|
96
|
+
});
|
|
97
|
+
it.each([
|
|
98
|
+
['a bracket identifier', '[sp_who] SELECT 1', 'sqlserver'],
|
|
99
|
+
['a double-quoted identifier', '"sp_who" SELECT 1', 'postgresql'],
|
|
100
|
+
['a literal', "N'x' SELECT 1", 'sqlserver'],
|
|
101
|
+
['a number', '1 SELECT 1', 'postgresql'],
|
|
102
|
+
['a symbol', '(SELECT 1)', 'sqlserver'],
|
|
103
|
+
['a Unicode space', ' SELECT 1', 'sqlserver'],
|
|
104
|
+
['a word followed by a non-ASCII character', 'SELECT€1', 'sqlserver'],
|
|
105
|
+
['nothing but a comment', '-- only a comment', 'postgresql'],
|
|
106
|
+
])('is null when %s comes first', (_label, sql, dialect) => {
|
|
107
|
+
expect(ScanSQLForScreening(sql, dialect).LeadingWord).toBeNull();
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
describe('SQL Server words', () => {
|
|
111
|
+
it('reads letters of any script as part of a word', () => {
|
|
112
|
+
const scan = ScanSQLForScreening('Café = 1', 'sqlserver');
|
|
113
|
+
expect(scan.LeadingWord).toBe('Café');
|
|
114
|
+
expect(scan.Code).toBe('Café = 1');
|
|
115
|
+
});
|
|
116
|
+
it('reads a currency symbol as code, so the keyword after a money literal is a separate token', () => {
|
|
117
|
+
expect(ScanSQLForScreening('ID = ¥1SELECT 1', 'sqlserver').Code).toBe('ID = ¥1 SELECT 1');
|
|
118
|
+
});
|
|
119
|
+
it('reads non-ASCII characters as part of a word on PostgreSQL', () => {
|
|
120
|
+
expect(ScanSQLForScreening('ID = ¥1SELECT 1', 'postgresql').Code).toBe('ID = ¥1SELECT 1');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe('token boundaries', () => {
|
|
124
|
+
it('separates a word written against a literal', () => {
|
|
125
|
+
expect(ScanSQLForScreening("Name = N'x'UNION SELECT 1", 'sqlserver').Code).toBe('Name = UNION SELECT 1');
|
|
126
|
+
});
|
|
127
|
+
it.each(['sqlserver', 'postgresql'])('separates a word written against a number (%s)', dialect => {
|
|
128
|
+
expect(ScanSQLForScreening('ID = 1UNION SELECT 1', dialect).Code).toBe('ID = 1 UNION SELECT 1');
|
|
129
|
+
expect(ScanSQLForScreening('ID = 0x1FUNION', dialect).Code).toBe('ID = 0x1F UNION');
|
|
130
|
+
expect(ScanSQLForScreening('ID = 1e5', dialect).Code).toBe('ID = 1e5');
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe('text that cannot be classified', () => {
|
|
134
|
+
it.each([
|
|
135
|
+
['an unterminated literal', "Name = 'abc", 'sqlserver'],
|
|
136
|
+
['an unterminated N literal', "Name = N'abc", 'postgresql'],
|
|
137
|
+
['an unterminated bracket identifier', 'Name = [abc', 'sqlserver'],
|
|
138
|
+
['an unterminated double-quoted identifier', 'Name = "abc', 'postgresql'],
|
|
139
|
+
['an unterminated block comment', 'Name = 1 /* a /* b */', 'sqlserver'],
|
|
140
|
+
['an unterminated E string', "Name = E'abc\\'", 'postgresql'],
|
|
141
|
+
['an unterminated dollar-quoted string', 'Name = $$abc', 'postgresql'],
|
|
142
|
+
['a NUL character', 'Name = 1\0', 'sqlserver'],
|
|
143
|
+
['a lone carriage return in a line comment', "SELECT 1 --a\r'; SELECT 2 --'", 'postgresql'],
|
|
144
|
+
['a Unicode line separator in a line comment', 'SELECT 1 --a
; SELECT 2', 'sqlserver'],
|
|
145
|
+
['an E string followed by a continuation segment', "x = E'a'\n'\\'' ; SELECT 1 ; --'", 'postgresql'],
|
|
146
|
+
['a number followed by E and a word on SQL Server', 'ID = 1EXEC sp_who', 'sqlserver'],
|
|
147
|
+
['a money literal followed by E and a word on SQL Server', 'ID = £1EXEC sp_who', 'sqlserver'],
|
|
148
|
+
])('rejects %s', (_label, sql, dialect) => {
|
|
149
|
+
const scan = ScanSQLForScreening(sql, dialect);
|
|
150
|
+
expect(scan.Classified).toBe(false);
|
|
151
|
+
expect(scan.Error).toBeTruthy();
|
|
152
|
+
});
|
|
153
|
+
it('leaves the unread text as written', () => {
|
|
154
|
+
const scan = ScanSQLForScreening("x = 1 ; 'abc", 'sqlserver');
|
|
155
|
+
expect(scan.Code).toBe("x = 1 ; 'abc");
|
|
156
|
+
});
|
|
157
|
+
it('rejects a dialect it does not know instead of guessing', () => {
|
|
158
|
+
const fromConfig = 'mysql';
|
|
159
|
+
const scan = ScanSQLForScreening('x = 1', fromConfig);
|
|
160
|
+
expect(scan.Classified).toBe(false);
|
|
161
|
+
expect(scan.Code).toBe('x = 1');
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
it('is linear-time on long input', () => {
|
|
165
|
+
const sql = `Name = '${'a'.repeat(200000)}`;
|
|
166
|
+
const start = Date.now();
|
|
167
|
+
ScanSQLForScreening(sql, 'sqlserver');
|
|
168
|
+
ScanSQLForScreening(sql, 'postgresql');
|
|
169
|
+
expect(Date.now() - start).toBeLessThan(1000);
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
//# sourceMappingURL=SQLScreeningScanner.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLScreeningScanner.test.js","sourceRoot":"","sources":["../../src/__tests__/SQLScreeningScanner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLScreeningScanner.tokens.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/SQLScreeningScanner.tokens.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ScanSQLForScreening } from '../SQLScreeningScanner.js';
|
|
3
|
+
/** Each token's kind and text. */
|
|
4
|
+
function tokensOf(sql, dialect) {
|
|
5
|
+
return ScanSQLForScreening(sql, dialect).Tokens.map(t => [t.Kind, t.Text]);
|
|
6
|
+
}
|
|
7
|
+
describe('ScanSQLForScreening tokens', () => {
|
|
8
|
+
it.each(['sqlserver', 'postgresql'])('splits words, numbers, strings and symbols (%s)', dialect => {
|
|
9
|
+
expect(tokensOf("e.Salary > 10 AND Name = N'x'", dialect)).toEqual([
|
|
10
|
+
['word', 'e'], ['symbol', '.'], ['word', 'Salary'], ['symbol', '>'], ['number', '10'],
|
|
11
|
+
['word', 'AND'], ['word', 'Name'], ['symbol', '='], ['string', "N'x'"],
|
|
12
|
+
]);
|
|
13
|
+
});
|
|
14
|
+
it('reads a bracket identifier as its bare name, with doubled brackets undone', () => {
|
|
15
|
+
expect(tokensOf('[Base Salary] = [a]]b]', 'sqlserver')).toEqual([
|
|
16
|
+
['identifier', 'Base Salary'], ['symbol', '='], ['identifier', 'a]b'],
|
|
17
|
+
]);
|
|
18
|
+
});
|
|
19
|
+
it.each(['sqlserver', 'postgresql'])('reads a double-quoted identifier as its bare name (%s)', dialect => {
|
|
20
|
+
expect(tokensOf('"Sal""ary" IS NULL', dialect)).toEqual([
|
|
21
|
+
['identifier', 'Sal"ary'], ['word', 'IS'], ['word', 'NULL'],
|
|
22
|
+
]);
|
|
23
|
+
});
|
|
24
|
+
it.each(['sqlserver', 'postgresql'])('reports no token for comments or whitespace (%s)', dialect => {
|
|
25
|
+
expect(tokensOf("a /* Salary */ = -- Salary\n 'Salary'", dialect)).toEqual([
|
|
26
|
+
['word', 'a'], ['symbol', '='], ['string', "'Salary'"],
|
|
27
|
+
]);
|
|
28
|
+
});
|
|
29
|
+
it('splits a number from a word written against it, as the database does', () => {
|
|
30
|
+
expect(tokensOf('1Salary', 'sqlserver')).toEqual([['number', '1'], ['word', 'Salary']]);
|
|
31
|
+
});
|
|
32
|
+
it('keeps the offsets of each token', () => {
|
|
33
|
+
const scan = ScanSQLForScreening('x = [y]', 'sqlserver');
|
|
34
|
+
expect(scan.Tokens.map(t => [t.Start, t.End])).toEqual([[0, 1], [2, 3], [4, 7]]);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('ScanSQLForScreening PostgreSQL Unicode-escape identifiers (U&"…")', () => {
|
|
38
|
+
it('reads U&"…" as one identifier and decodes its four- and six-digit escapes', () => {
|
|
39
|
+
expect(tokensOf('U&"\\0053alary" > 1', 'postgresql')).toEqual([['identifier', 'Salary'], ['symbol', '>'], ['number', '1']]);
|
|
40
|
+
expect(tokensOf('U&"S\\+000061lary"', 'postgresql')).toEqual([['identifier', 'Salary']]);
|
|
41
|
+
});
|
|
42
|
+
it('reads the prefix in either case', () => {
|
|
43
|
+
expect(tokensOf('u&"S\\0061lary" > 1', 'postgresql')).toEqual([['identifier', 'Salary'], ['symbol', '>'], ['number', '1']]);
|
|
44
|
+
});
|
|
45
|
+
it('honors a UESCAPE clause, after whitespace or a comment, and consumes it', () => {
|
|
46
|
+
expect(tokensOf("U&\"S!0061lary\" UESCAPE '!' > 1", 'postgresql')).toEqual([['identifier', 'Salary'], ['symbol', '>'], ['number', '1']]);
|
|
47
|
+
expect(tokensOf("U&\"S!0061lary\" /* c */ uescape\n'!'", 'postgresql')).toEqual([['identifier', 'Salary']]);
|
|
48
|
+
});
|
|
49
|
+
it('undoes a doubled escape character and a doubled quote', () => {
|
|
50
|
+
expect(tokensOf('U&"a\\\\b""c"', 'postgresql')).toEqual([['identifier', 'a\\b"c']]);
|
|
51
|
+
});
|
|
52
|
+
it('decodes a surrogate pair written as two escapes', () => {
|
|
53
|
+
expect(tokensOf('U&"\\D83D\\DE00"', 'postgresql')).toEqual([['identifier', '\u{1F600}']]);
|
|
54
|
+
});
|
|
55
|
+
it.each([
|
|
56
|
+
['a bad escape', 'U&"\\00zz"'],
|
|
57
|
+
['a short escape', 'U&"\\005"'],
|
|
58
|
+
['a lone surrogate', 'U&"\\D800x"'],
|
|
59
|
+
['a NUL escape', 'U&"\\0000"'],
|
|
60
|
+
['a code point past U+10FFFF', 'U&"\\+110000"'],
|
|
61
|
+
['a UESCAPE of two characters', "U&\"x\" UESCAPE 'ab'"],
|
|
62
|
+
['a UESCAPE of a hex digit', "U&\"x\" UESCAPE 'a'"],
|
|
63
|
+
['a UESCAPE of a quote', "U&\"x\" UESCAPE ''''"],
|
|
64
|
+
['a UESCAPE with no string', 'U&"x" UESCAPE 1'],
|
|
65
|
+
['an unclosed identifier', 'U&"Salary'],
|
|
66
|
+
])('fails closed on %s', (_label, sql) => {
|
|
67
|
+
expect(ScanSQLForScreening(sql, 'postgresql').Classified).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
it('writes the decoded name into CodeWithIdentifiers and spans the whole construct', () => {
|
|
70
|
+
const sql = "U&\"S!0061lary\" UESCAPE '!' = 1";
|
|
71
|
+
const scan = ScanSQLForScreening(sql, 'postgresql');
|
|
72
|
+
expect(scan.Spans).toEqual([{ Kind: 'identifier', Start: 0, End: sql.indexOf(' =') }]);
|
|
73
|
+
expect(scan.CodeWithIdentifiers).toBe(' Salary = 1');
|
|
74
|
+
});
|
|
75
|
+
it('leaves SQL Server reading U&"x" as a word, a symbol and an identifier', () => {
|
|
76
|
+
expect(tokensOf('U&"x"', 'sqlserver')).toEqual([['word', 'U'], ['symbol', '&'], ['identifier', 'x']]);
|
|
77
|
+
});
|
|
78
|
+
it("reads E'…' as a string, never an identifier", () => {
|
|
79
|
+
expect(tokensOf("E'Salary' = x", 'postgresql')).toEqual([['string', "E'Salary'"], ['symbol', '='], ['word', 'x']]);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=SQLScreeningScanner.tokens.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SQLScreeningScanner.tokens.test.js","sourceRoot":"","sources":["../../src/__tests__/SQLScreeningScanner.tokens.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -259,7 +259,7 @@ const NESTED_SCAN_BASELINE = {
|
|
|
259
259
|
'AI/Agents/src/realtime/realtime-client-session-service.ts': 2,
|
|
260
260
|
'AI/BaseAIEngine/src/AIAgentPermissionHelper.ts': 1,
|
|
261
261
|
'AI/BaseAIEngine/src/AISkillPermissionHelper.ts': 1,
|
|
262
|
-
'AI/BaseAIEngine/src/BaseAIEngine.ts':
|
|
262
|
+
'AI/BaseAIEngine/src/BaseAIEngine.ts': 6,
|
|
263
263
|
'AI/CorePlus/src/conversation-routing-decision.ts': 1,
|
|
264
264
|
'AI/CorePlus/src/task-graph/flow-graph-compiler.ts': 1,
|
|
265
265
|
'AI/Knowledge/TagEngine/src/TagEngine.ts': 1,
|
|
@@ -344,7 +344,7 @@ const NESTED_SCAN_BASELINE = {
|
|
|
344
344
|
'GenericDatabaseProvider/src/GenericDatabaseProvider.ts': 2,
|
|
345
345
|
'GenericDatabaseProvider/src/queryCompositionEngine.ts': 1,
|
|
346
346
|
'MJCore/src/generic/baseEngine.ts': 1,
|
|
347
|
-
'MJCore/src/generic/entityInfo.ts':
|
|
347
|
+
'MJCore/src/generic/entityInfo.ts': 2,
|
|
348
348
|
'MJCore/src/generic/providerBase.ts': 3,
|
|
349
349
|
'MJCore/src/generic/securityInfo.ts': 1,
|
|
350
350
|
'MJCoreEntities/src/custom/MJQueryEntityExtended.ts': 3,
|
|
@@ -361,7 +361,7 @@ const NESTED_SCAN_BASELINE = {
|
|
|
361
361
|
'MJCoreEntitiesServer/src/custom/MJApplicationEntityServer.server.ts': 1,
|
|
362
362
|
'MJCoreEntitiesServer/src/custom/MJEntityFieldPermissionEntityServer.server.ts': 1,
|
|
363
363
|
'MJCoreEntitiesServer/src/custom/MJUserRoleEntityServer.server.ts': 2,
|
|
364
|
-
'MJCoreEntitiesServer/src/custom/query-extraction/sync.ts':
|
|
364
|
+
'MJCoreEntitiesServer/src/custom/query-extraction/sync.ts': 5,
|
|
365
365
|
'MJCoreEntitiesServer/src/custom/rubrics/evaluationSubmit.ts': 2,
|
|
366
366
|
'MJCoreEntitiesServer/src/custom/rubrics/versionPublish.ts': 1,
|
|
367
367
|
'MJServer/src/resolvers/IntegrationDiscoveryResolver.ts': 1,
|
|
@@ -371,7 +371,7 @@ const NESTED_SCAN_BASELINE = {
|
|
|
371
371
|
'Rubrics/Engine/src/rubricCli.ts': 2,
|
|
372
372
|
'Scheduling/engine/src/drivers/ActionScheduledJobDriver.ts': 1,
|
|
373
373
|
'SearchEngine/src/generic/SearchEngine.ts': 4,
|
|
374
|
-
'SearchEngine/src/generic/StorageSearchProvider.ts':
|
|
374
|
+
'SearchEngine/src/generic/StorageSearchProvider.ts': 1,
|
|
375
375
|
'SearchEngine/src/generic/VectorSearchProvider.ts': 2,
|
|
376
376
|
'SearchEngine/src/permissions/SearchScopePermissionResolver.ts': 1,
|
|
377
377
|
'TaskGraph/src/TaskGraphDispatcher.ts': 2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UUIDCompliance.test.js","sourceRoot":"","sources":["../../src/__tests__/UUIDCompliance.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UUIDCompliance.test.js","sourceRoot":"","sources":["../../src/__tests__/UUIDCompliance.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserScopedCacheKey.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/UserScopedCacheKey.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { UserCacheKeySegment, UserScopedCacheKey } from '../util/UserScopedCacheKey.js';
|
|
3
|
+
describe('UserCacheKeySegment', () => {
|
|
4
|
+
it('normalizes the user ID so the same user always maps to one segment', () => {
|
|
5
|
+
expect(UserCacheKeySegment(' A1B2-C3D4 ')).toBe('u:a1b2-c3d4');
|
|
6
|
+
expect(UserCacheKeySegment('a1b2-c3d4')).toBe('u:a1b2-c3d4');
|
|
7
|
+
});
|
|
8
|
+
it('returns null when there is no user, so the caller does not cache', () => {
|
|
9
|
+
expect(UserCacheKeySegment(undefined)).toBeNull();
|
|
10
|
+
expect(UserCacheKeySegment(null)).toBeNull();
|
|
11
|
+
expect(UserCacheKeySegment(' ')).toBeNull();
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
describe('UserScopedCacheKey', () => {
|
|
15
|
+
it('gives two users different keys for the same entry', () => {
|
|
16
|
+
const a = UserScopedCacheKey('user-a', 'agent-1', 'Customers');
|
|
17
|
+
const b = UserScopedCacheKey('user-b', 'agent-1', 'Customers');
|
|
18
|
+
expect(a).toBe('agent-1:Customers:u:user-a');
|
|
19
|
+
expect(a).not.toBe(b);
|
|
20
|
+
});
|
|
21
|
+
it('returns null when there is no user', () => {
|
|
22
|
+
expect(UserScopedCacheKey(undefined, 'agent-1', 'Customers')).toBeNull();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=UserScopedCacheKey.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserScopedCacheKey.test.js","sourceRoot":"","sources":["../../src/__tests__/UserScopedCacheKey.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClD,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.valuesEqual.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/util.valuesEqual.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ValuesEqual } from '../util.js';
|
|
3
|
+
describe('ValuesEqual', () => {
|
|
4
|
+
const ISO = '2026-08-01T12:34:56.789Z';
|
|
5
|
+
const EPOCH = new Date(ISO).getTime();
|
|
6
|
+
it('returns true for strictly equal primitives and references', () => {
|
|
7
|
+
expect(ValuesEqual(42, 42)).toBe(true);
|
|
8
|
+
expect(ValuesEqual('abc', 'abc')).toBe(true);
|
|
9
|
+
expect(ValuesEqual(true, true)).toBe(true);
|
|
10
|
+
expect(ValuesEqual(null, null)).toBe(true);
|
|
11
|
+
expect(ValuesEqual(undefined, undefined)).toBe(true);
|
|
12
|
+
const ref = { a: 1 };
|
|
13
|
+
expect(ValuesEqual(ref, ref)).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it('returns false for differing primitives or null vs undefined', () => {
|
|
16
|
+
expect(ValuesEqual(42, 43)).toBe(false);
|
|
17
|
+
expect(ValuesEqual('abc', 'def')).toBe(false);
|
|
18
|
+
expect(ValuesEqual(null, undefined)).toBe(false);
|
|
19
|
+
expect(ValuesEqual(0, false)).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
it('compares two Date instances by epoch milliseconds', () => {
|
|
22
|
+
expect(ValuesEqual(new Date(ISO), new Date(ISO))).toBe(true);
|
|
23
|
+
expect(ValuesEqual(new Date(ISO), new Date(EPOCH + 1))).toBe(false);
|
|
24
|
+
});
|
|
25
|
+
it('compares a Date instance against an ISO string or numeric timestamp', () => {
|
|
26
|
+
expect(ValuesEqual(new Date(ISO), ISO)).toBe(true);
|
|
27
|
+
expect(ValuesEqual(ISO, new Date(ISO))).toBe(true);
|
|
28
|
+
expect(ValuesEqual(new Date(ISO), EPOCH)).toBe(true);
|
|
29
|
+
expect(ValuesEqual(EPOCH, new Date(ISO))).toBe(true);
|
|
30
|
+
expect(ValuesEqual(new Date(ISO), '2026-08-01T12:34:56.000Z')).toBe(false);
|
|
31
|
+
expect(ValuesEqual(new Date(ISO), 'not-a-date')).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
it('returns false when comparing Invalid Date instances', () => {
|
|
34
|
+
expect(ValuesEqual(new Date('invalid'), new Date('invalid'))).toBe(false);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=util.valuesEqual.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.valuesEqual.test.js","sourceRoot":"","sources":["../../src/__tests__/util.valuesEqual.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,13 +12,16 @@ export * from './util/PatternUtils.js';
|
|
|
12
12
|
export * from './util/ResourcePatternUtils.js';
|
|
13
13
|
export * from './util/UUIDUtils.js';
|
|
14
14
|
export * from './util/UUIDCollections.js';
|
|
15
|
+
export * from './util/UserScopedCacheKey.js';
|
|
15
16
|
export * from './util/CronUtils.js';
|
|
16
17
|
export * from './util/SerializationUtils.js';
|
|
17
18
|
export * from './util/BinaryEncoding.js';
|
|
19
|
+
export * from './util/ProofOfPossession.js';
|
|
18
20
|
export * from './ValidationTypes.js';
|
|
19
21
|
export * from './JSONValidator.js';
|
|
20
22
|
export * from './SafeExpressionEvaluator.js';
|
|
21
23
|
export * from './fieldRules/index.js';
|
|
24
|
+
export * from './SQLScreeningScanner.js';
|
|
22
25
|
export * from './SQLExpressionValidator.js';
|
|
23
26
|
export * from './warningManager.js';
|
|
24
27
|
export * from './EncryptionUtils.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAMtC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAMtC,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -13,13 +13,16 @@ export * from './util/PatternUtils.js';
|
|
|
13
13
|
export * from './util/ResourcePatternUtils.js';
|
|
14
14
|
export * from './util/UUIDUtils.js';
|
|
15
15
|
export * from './util/UUIDCollections.js';
|
|
16
|
+
export * from './util/UserScopedCacheKey.js';
|
|
16
17
|
export * from './util/CronUtils.js';
|
|
17
18
|
export * from './util/SerializationUtils.js';
|
|
18
19
|
export * from './util/BinaryEncoding.js';
|
|
20
|
+
export * from './util/ProofOfPossession.js';
|
|
19
21
|
export * from './ValidationTypes.js';
|
|
20
22
|
export * from './JSONValidator.js';
|
|
21
23
|
export * from './SafeExpressionEvaluator.js';
|
|
22
24
|
export * from './fieldRules/index.js';
|
|
25
|
+
export * from './SQLScreeningScanner.js';
|
|
23
26
|
export * from './SQLExpressionValidator.js';
|
|
24
27
|
export * from './warningManager.js';
|
|
25
28
|
export * from './EncryptionUtils.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,cAAc,CAAA;AAC5B,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAEtC,2DAA2D;AAC3D,oCAAoC;AAEpC,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAE7C,6DAA6D;AAC7D,oCAAoC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAChE,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AACzC,cAAc,cAAc,CAAA;AAC5B,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AAEtC,2DAA2D;AAC3D,oCAAoC;AAEpC,0BAA0B;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,+BAA+B,CAAA;AAE7C,6DAA6D;AAC7D,oCAAoC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** The public half of a proof key, as a JWK with only the members RFC 7638 hashes. */
|
|
2
|
+
export interface ProofPublicJwk {
|
|
3
|
+
kty: 'EC';
|
|
4
|
+
crv: 'P-256';
|
|
5
|
+
x: string;
|
|
6
|
+
y: string;
|
|
7
|
+
}
|
|
8
|
+
/** A proof key: the non-extractable private key that signs, and its public JWK that the server records. */
|
|
9
|
+
export interface ProofOfPossessionKey {
|
|
10
|
+
PrivateKey: CryptoKey;
|
|
11
|
+
PublicJwk: ProofPublicJwk;
|
|
12
|
+
}
|
|
13
|
+
/** What one proof is made for. */
|
|
14
|
+
export interface ProofOfPossessionRequest {
|
|
15
|
+
/** HTTP method of the protected request (`htm`). */
|
|
16
|
+
Method: string;
|
|
17
|
+
/** Full URL of the protected request (`htu`). */
|
|
18
|
+
Url: string;
|
|
19
|
+
/** The bearer token sent with the request; the proof carries its hash (`ath`), so it works for that token only. */
|
|
20
|
+
AccessToken: string;
|
|
21
|
+
/** Signing time (`iat`), epoch seconds. Defaults to now. */
|
|
22
|
+
NowSeconds?: number;
|
|
23
|
+
}
|
|
24
|
+
/** What the verifier expects of a proof. */
|
|
25
|
+
export interface ProofOfPossessionExpectation {
|
|
26
|
+
Method: string;
|
|
27
|
+
/**
|
|
28
|
+
* The path the proof must name, matched as a suffix of the proof URL's path. This binds a proof to one
|
|
29
|
+
* endpoint, so a proof made for another route of the same API cannot be reused here. The origin and any
|
|
30
|
+
* base path are not compared: one API can be reached under several public origins and base paths (a
|
|
31
|
+
* proxy, `MJAPI_BASE_PATH`), and the caller cannot reliably list them. Leaving them open grants nothing,
|
|
32
|
+
* because only the holder of the bound key can sign a proof, and `ath` ties the proof to one token.
|
|
33
|
+
*/
|
|
34
|
+
PathSuffix: string;
|
|
35
|
+
/** The bearer token presented with the proof. */
|
|
36
|
+
AccessToken: string;
|
|
37
|
+
NowSeconds: number;
|
|
38
|
+
/** How far `iat` may be from `NowSeconds`, either way. */
|
|
39
|
+
MaxSkewSeconds: number;
|
|
40
|
+
}
|
|
41
|
+
/** Why a proof was refused. */
|
|
42
|
+
export type ProofOfPossessionRefusal = 'malformed' | 'bad_signature' | 'request_mismatch' | 'token_mismatch' | 'stale';
|
|
43
|
+
/** Outcome of {@link VerifyProofOfPossessionJwt}; `Thumbprint` identifies the key that signed. */
|
|
44
|
+
export type ProofOfPossessionVerification = {
|
|
45
|
+
Valid: true;
|
|
46
|
+
Thumbprint: string;
|
|
47
|
+
} | {
|
|
48
|
+
Valid: false;
|
|
49
|
+
Reason: ProofOfPossessionRefusal;
|
|
50
|
+
};
|
|
51
|
+
/** Creates a proof key. The private key is non-extractable, so no script can read it out, only use it. */
|
|
52
|
+
export declare function CreateProofOfPossessionKey(): Promise<ProofOfPossessionKey>;
|
|
53
|
+
/** The RFC 7638 SHA-256 thumbprint of a proof key, base64url-encoded (the value of a token's `cnf.jkt`). */
|
|
54
|
+
export declare function ComputeJwkThumbprint(jwk: ProofPublicJwk): Promise<string>;
|
|
55
|
+
/** Signs a proof that the holder of `key` is making `request`. */
|
|
56
|
+
export declare function CreateProofOfPossessionJwt(key: ProofOfPossessionKey, request: ProofOfPossessionRequest): Promise<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Checks a proof against what the request expects. Never throws: anything unparseable is `malformed`.
|
|
59
|
+
* Does not keep a replay cache of `jti`; a proof is bound to one token (`ath`) and to `MaxSkewSeconds`, so a
|
|
60
|
+
* replay needs both the proof and that token within the window.
|
|
61
|
+
*/
|
|
62
|
+
export declare function VerifyProofOfPossessionJwt(proof: string, expected: ProofOfPossessionExpectation): Promise<ProofOfPossessionVerification>;
|
|
63
|
+
/**
|
|
64
|
+
* Narrows a value (e.g. a JWK a client sent) to a public P-256 JWK, keeping only the members RFC 7638 hashes;
|
|
65
|
+
* null for anything else, including a JWK that carries a private key.
|
|
66
|
+
*/
|
|
67
|
+
export declare function ToProofPublicJwk(value: unknown): ProofPublicJwk | null;
|
|
68
|
+
//# sourceMappingURL=ProofOfPossession.d.ts.map
|