@aster-cloud/aster-lang-ts 0.1.5 → 0.2.2
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/CHANGELOG.md +72 -0
- package/LICENSE +201 -0
- package/README.md +2 -0
- package/dist/scripts/core-ir-json.d.ts +3 -0
- package/dist/scripts/core-ir-json.d.ts.map +1 -0
- package/dist/scripts/core-ir-json.js +72 -0
- package/dist/scripts/core-ir-json.js.map +1 -0
- package/dist/scripts/golden.js +49 -0
- package/dist/scripts/golden.js.map +1 -1
- package/dist/src/ai/providers/anthropic.d.ts +17 -0
- package/dist/src/ai/providers/anthropic.d.ts.map +1 -1
- package/dist/src/ai/providers/anthropic.js +58 -15
- package/dist/src/ai/providers/anthropic.js.map +1 -1
- package/dist/src/ast/ast.d.ts +2 -2
- package/dist/src/ast/ast.d.ts.map +1 -1
- package/dist/src/ast/ast.js +5 -2
- package/dist/src/ast/ast.js.map +1 -1
- package/dist/src/browser/schema.d.ts +52 -0
- package/dist/src/browser/schema.d.ts.map +1 -0
- package/dist/src/browser/schema.js +205 -0
- package/dist/src/browser/schema.js.map +1 -0
- package/dist/src/browser.d.ts +19 -54
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +30 -188
- package/dist/src/browser.js.map +1 -1
- package/dist/src/cli/policy-converter.js +8 -1
- package/dist/src/cli/policy-converter.js.map +1 -1
- package/dist/src/config/effect_config.d.ts.map +1 -1
- package/dist/src/config/effect_config.js +7 -1
- package/dist/src/config/effect_config.js.map +1 -1
- package/dist/src/config/lexicons/de-DE.d.ts.map +1 -1
- package/dist/src/config/lexicons/de-DE.js +1 -0
- package/dist/src/config/lexicons/de-DE.js.map +1 -1
- package/dist/src/config/lexicons/en-US.d.ts.map +1 -1
- package/dist/src/config/lexicons/en-US.js +1 -0
- package/dist/src/config/lexicons/en-US.js.map +1 -1
- package/dist/src/config/lexicons/fallback-lexicon.d.ts +41 -0
- package/dist/src/config/lexicons/fallback-lexicon.d.ts.map +1 -0
- package/dist/src/config/lexicons/fallback-lexicon.js +88 -0
- package/dist/src/config/lexicons/fallback-lexicon.js.map +1 -0
- package/dist/src/config/lexicons/identifiers/registry.d.ts +9 -0
- package/dist/src/config/lexicons/identifiers/registry.d.ts.map +1 -1
- package/dist/src/config/lexicons/identifiers/registry.js +12 -0
- package/dist/src/config/lexicons/identifiers/registry.js.map +1 -1
- package/dist/src/config/lexicons/index.d.ts +25 -3
- package/dist/src/config/lexicons/index.d.ts.map +1 -1
- package/dist/src/config/lexicons/index.js +42 -7
- package/dist/src/config/lexicons/index.js.map +1 -1
- package/dist/src/config/lexicons/registry.d.ts.map +1 -1
- package/dist/src/config/lexicons/registry.js +43 -5
- package/dist/src/config/lexicons/registry.js.map +1 -1
- package/dist/src/config/lexicons/template.d.ts.map +1 -1
- package/dist/src/config/lexicons/template.js +2 -0
- package/dist/src/config/lexicons/template.js.map +1 -1
- package/dist/src/config/lexicons/zh-CN.d.ts.map +1 -1
- package/dist/src/config/lexicons/zh-CN.js +36 -20
- package/dist/src/config/lexicons/zh-CN.js.map +1 -1
- package/dist/src/config/semantic.d.ts +13 -0
- package/dist/src/config/semantic.d.ts.map +1 -1
- package/dist/src/config/semantic.js +17 -0
- package/dist/src/config/semantic.js.map +1 -1
- package/dist/src/config/token-kind.d.ts +2 -0
- package/dist/src/config/token-kind.d.ts.map +1 -1
- package/dist/src/config/token-kind.js +3 -1
- package/dist/src/config/token-kind.js.map +1 -1
- package/dist/src/core/core_ir.d.ts +2 -2
- package/dist/src/core/core_ir.d.ts.map +1 -1
- package/dist/src/core/core_ir.js +5 -2
- package/dist/src/core/core_ir.js.map +1 -1
- package/dist/src/core/interpreter.js +6 -1
- package/dist/src/core/interpreter.js.map +1 -1
- package/dist/src/core/visitor.d.ts.map +1 -1
- package/dist/src/core/visitor.js +17 -0
- package/dist/src/core/visitor.js.map +1 -1
- package/dist/src/diagnostics/error_codes.d.ts +2 -0
- package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
- package/dist/src/diagnostics/error_codes.js +11 -5
- package/dist/src/diagnostics/error_codes.js.map +1 -1
- package/dist/src/effects/effect_inference_browser.d.ts.map +1 -1
- package/dist/src/effects/effect_inference_browser.js +22 -4
- package/dist/src/effects/effect_inference_browser.js.map +1 -1
- package/dist/src/frontend/canonicalizer.d.ts +33 -0
- package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
- package/dist/src/frontend/canonicalizer.js +77 -5
- package/dist/src/frontend/canonicalizer.js.map +1 -1
- package/dist/src/frontend/lexer.d.ts.map +1 -1
- package/dist/src/frontend/lexer.js +7 -1
- package/dist/src/frontend/lexer.js.map +1 -1
- package/dist/src/jvm/emitter.js +2 -2
- package/dist/src/jvm/emitter.js.map +1 -1
- package/dist/src/lower_to_core.js +2 -2
- package/dist/src/lower_to_core.js.map +1 -1
- package/dist/src/lsp/config.d.ts +13 -9
- package/dist/src/lsp/config.d.ts.map +1 -1
- package/dist/src/lsp/config.js +19 -5
- package/dist/src/lsp/config.js.map +1 -1
- package/dist/src/lsp/diagnostics.d.ts +10 -0
- package/dist/src/lsp/diagnostics.d.ts.map +1 -1
- package/dist/src/lsp/diagnostics.js +43 -1
- package/dist/src/lsp/diagnostics.js.map +1 -1
- package/dist/src/lsp/pii_diagnostics.d.ts.map +1 -1
- package/dist/src/lsp/pii_diagnostics.js +4 -1
- package/dist/src/lsp/pii_diagnostics.js.map +1 -1
- package/dist/src/lsp/server.js +49 -17
- package/dist/src/lsp/server.js.map +1 -1
- package/dist/src/lsp/utils.js +1 -1
- package/dist/src/lsp/utils.js.map +1 -1
- package/dist/src/parser/context.d.ts.map +1 -1
- package/dist/src/parser/context.js +32 -12
- package/dist/src/parser/context.js.map +1 -1
- package/dist/src/parser/decl-parser.d.ts +2 -2
- package/dist/src/parser/decl-parser.d.ts.map +1 -1
- package/dist/src/parser/decl-parser.js +113 -14
- package/dist/src/parser/decl-parser.js.map +1 -1
- package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
- package/dist/src/parser/expr-stmt-parser.js +111 -4
- package/dist/src/parser/expr-stmt-parser.js.map +1 -1
- package/dist/src/parser/import-parser.d.ts +3 -2
- package/dist/src/parser/import-parser.d.ts.map +1 -1
- package/dist/src/parser/import-parser.js +12 -3
- package/dist/src/parser/import-parser.js.map +1 -1
- package/dist/src/parser/input-generator.d.ts +2 -0
- package/dist/src/parser/input-generator.d.ts.map +1 -1
- package/dist/src/parser/input-generator.js +11 -1
- package/dist/src/parser/input-generator.js.map +1 -1
- package/dist/src/parser/type-parser.js +1 -1
- package/dist/src/parser/type-parser.js.map +1 -1
- package/dist/src/typecheck/alias.d.ts +24 -0
- package/dist/src/typecheck/alias.d.ts.map +1 -0
- package/dist/src/typecheck/alias.js +30 -0
- package/dist/src/typecheck/alias.js.map +1 -0
- package/dist/src/typecheck/browser.d.ts +41 -4
- package/dist/src/typecheck/browser.d.ts.map +1 -1
- package/dist/src/typecheck/browser.js +189 -14
- package/dist/src/typecheck/browser.js.map +1 -1
- package/dist/src/typecheck/context.js +1 -1
- package/dist/src/typecheck/context.js.map +1 -1
- package/dist/src/typecheck/effects.d.ts.map +1 -1
- package/dist/src/typecheck/effects.js +18 -4
- package/dist/src/typecheck/effects.js.map +1 -1
- package/dist/src/typecheck/expression.js +1 -1
- package/dist/src/typecheck/expression.js.map +1 -1
- package/dist/src/typecheck/generics.js +1 -1
- package/dist/src/typecheck/generics.js.map +1 -1
- package/dist/src/typecheck/module.d.ts.map +1 -1
- package/dist/src/typecheck/module.js +13 -8
- package/dist/src/typecheck/module.js.map +1 -1
- package/dist/src/typecheck/pattern.js +1 -1
- package/dist/src/typecheck/pattern.js.map +1 -1
- package/dist/src/typecheck/pure.d.ts +66 -0
- package/dist/src/typecheck/pure.d.ts.map +1 -0
- package/dist/src/typecheck/pure.js +163 -0
- package/dist/src/typecheck/pure.js.map +1 -0
- package/dist/src/typecheck/statement.js +1 -1
- package/dist/src/typecheck/statement.js.map +1 -1
- package/dist/src/typecheck/type_system.d.ts +6 -1
- package/dist/src/typecheck/type_system.d.ts.map +1 -1
- package/dist/src/typecheck/type_system.js +61 -13
- package/dist/src/typecheck/type_system.js.map +1 -1
- package/dist/src/typecheck/utils.d.ts +4 -69
- package/dist/src/typecheck/utils.d.ts.map +1 -1
- package/dist/src/typecheck/utils.js +17 -170
- package/dist/src/typecheck/utils.js.map +1 -1
- package/dist/src/typecheck/workflow.js +1 -1
- package/dist/src/typecheck/workflow.js.map +1 -1
- package/dist/src/typecheck-pii.d.ts.map +1 -1
- package/dist/src/typecheck-pii.js +11 -1
- package/dist/src/typecheck-pii.js.map +1 -1
- package/dist/src/types/base.d.ts +1 -0
- package/dist/src/types/base.d.ts.map +1 -1
- package/dist/src/types.d.ts +18 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/dist/test/e2e/runner/golden-runner.js +21 -10
- package/dist/test/e2e/runner/golden-runner.js.map +1 -1
- package/dist/test/integration/compliance/compliance-smoke.test.js +27 -35
- package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
- package/dist/test/integration/lsp/lsp-multi-rename.test.js +8 -7
- package/dist/test/integration/lsp/lsp-multi-rename.test.js.map +1 -1
- package/dist/test/policy-converter/round-trip.test.js +6 -4
- package/dist/test/policy-converter/round-trip.test.js.map +1 -1
- package/dist/test/regression/type-checker-golden.test.js +8 -4
- package/dist/test/regression/type-checker-golden.test.js.map +1 -1
- package/dist/test/type-checker/cross-module-packages.test.js +5 -3
- package/dist/test/type-checker/cross-module-packages.test.js.map +1 -1
- package/dist/test/type-checker/pii-propagation.test.js +24 -18
- package/dist/test/type-checker/pii-propagation.test.js.map +1 -1
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.d.ts +2 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.d.ts.map +1 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js +193 -0
- package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js.map +1 -0
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.d.ts +2 -0
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.d.ts.map +1 -0
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.js +110 -0
- package/dist/test/unit/browser/typecheck-browser-unsupported.test.js.map +1 -0
- package/dist/test/unit/canonicalizer/canonicalizer.test.js +91 -1
- package/dist/test/unit/canonicalizer/canonicalizer.test.js.map +1 -1
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.d.ts +2 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.d.ts.map +1 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.js +118 -0
- package/dist/test/unit/canonicalizer/cjk-punctuation.test.js.map +1 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.d.ts +2 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.d.ts.map +1 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.js +40 -0
- package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.js.map +1 -0
- package/dist/test/unit/config/lexicons/i18n.test.js +31 -14
- package/dist/test/unit/config/lexicons/i18n.test.js.map +1 -1
- package/dist/test/unit/config/lexicons/zh-CN.test.js +150 -143
- package/dist/test/unit/config/lexicons/zh-CN.test.js.map +1 -1
- package/dist/test/unit/keyword-translator.test.js +16 -19
- package/dist/test/unit/keyword-translator.test.js.map +1 -1
- package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts +16 -0
- package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts.map +1 -0
- package/dist/test/unit/lexicons/fallback-lexicon.test.js +98 -0
- package/dist/test/unit/lexicons/fallback-lexicon.test.js.map +1 -0
- package/dist/test/unit/llm-providers.test.js +105 -93
- package/dist/test/unit/llm-providers.test.js.map +1 -1
- package/dist/test/unit/lowering/lowering.test.js +12 -0
- package/dist/test/unit/lowering/lowering.test.js.map +1 -1
- package/dist/test/unit/parser/entry-annotations.test.d.ts +2 -0
- package/dist/test/unit/parser/entry-annotations.test.d.ts.map +1 -0
- package/dist/test/unit/parser/entry-annotations.test.js +110 -0
- package/dist/test/unit/parser/entry-annotations.test.js.map +1 -0
- package/dist/test/unit/parser/parser.test.js +30 -6
- package/dist/test/unit/parser/parser.test.js.map +1 -1
- package/dist/test/unit/scripts/verify-browser-entry.test.d.ts +2 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.d.ts.map +1 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.js +179 -0
- package/dist/test/unit/scripts/verify-browser-entry.test.js.map +1 -0
- package/dist/test/unit/typecheck/function-return-inference.test.d.ts +2 -0
- package/dist/test/unit/typecheck/function-return-inference.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/function-return-inference.test.js +79 -0
- package/dist/test/unit/typecheck/function-return-inference.test.js.map +1 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.d.ts +2 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.d.ts.map +1 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js +191 -0
- package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js.map +1 -0
- package/dist/test/unit/typecheck/should-enforce-pii.test.js +25 -110
- package/dist/test/unit/typecheck/should-enforce-pii.test.js.map +1 -1
- package/dist/test/unit/typecheck/type-system.test.js +83 -3
- package/dist/test/unit/typecheck/type-system.test.js.map +1 -1
- package/package.json +41 -9
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import Anthropic from '@anthropic-ai/sdk';
|
|
2
2
|
import { LLMError } from '../llm-provider.js';
|
|
3
|
+
/**
|
|
4
|
+
* Anthropic provider — uses the Messages API (the legacy `completions` API
|
|
5
|
+
* is deprecated for Claude 3+ models and unsupported for Claude 4.x).
|
|
6
|
+
*
|
|
7
|
+
* <p>Prompt-injection mitigations:
|
|
8
|
+
* <ul>
|
|
9
|
+
* <li>User input is delivered as a {@code user} message, not concatenated
|
|
10
|
+
* into a single text prompt — this is the structural defense the
|
|
11
|
+
* Messages API was built to provide.</li>
|
|
12
|
+
* <li>The system prompt (trusted) goes into the top-level {@code system}
|
|
13
|
+
* field; it cannot be impersonated by user content.</li>
|
|
14
|
+
* <li>Common injection markers ({@code Human:} / {@code Assistant:})
|
|
15
|
+
* inside user content are neutralized before sending so they can't
|
|
16
|
+
* impersonate a turn boundary if the model is configured with a
|
|
17
|
+
* custom prompt format downstream.</li>
|
|
18
|
+
* </ul>
|
|
19
|
+
*/
|
|
3
20
|
export class AnthropicProvider {
|
|
4
21
|
client;
|
|
5
22
|
model;
|
|
@@ -13,29 +30,25 @@ export class AnthropicProvider {
|
|
|
13
30
|
}
|
|
14
31
|
async generate(request) {
|
|
15
32
|
try {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (request.systemPrompt) {
|
|
19
|
-
prompt += `${request.systemPrompt}\n\n`;
|
|
20
|
-
}
|
|
21
|
-
prompt += `\n\nHuman: ${request.prompt}\n\nAssistant:`;
|
|
22
|
-
const response = await this.client.completions.create({
|
|
33
|
+
const sanitizedUser = neutralizeTurnMarkers(request.prompt);
|
|
34
|
+
const response = await this.client.messages.create({
|
|
23
35
|
model: this.model,
|
|
24
|
-
|
|
36
|
+
max_tokens: request.maxTokens ?? 4000,
|
|
25
37
|
temperature: request.temperature ?? 0.7,
|
|
26
|
-
|
|
38
|
+
...(request.systemPrompt ? { system: request.systemPrompt } : {}),
|
|
39
|
+
messages: [{ role: 'user', content: sanitizedUser }],
|
|
27
40
|
});
|
|
28
|
-
|
|
41
|
+
const content = extractText(response);
|
|
42
|
+
if (!content) {
|
|
29
43
|
throw new LLMError('Anthropic 返回空內容', 'anthropic');
|
|
30
44
|
}
|
|
31
45
|
return {
|
|
32
|
-
content
|
|
46
|
+
content,
|
|
33
47
|
model: response.model,
|
|
34
48
|
usage: {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
totalTokens: Math.ceil((prompt.length + response.completion.length) / 4),
|
|
49
|
+
promptTokens: response.usage.input_tokens,
|
|
50
|
+
completionTokens: response.usage.output_tokens,
|
|
51
|
+
totalTokens: response.usage.input_tokens + response.usage.output_tokens,
|
|
39
52
|
},
|
|
40
53
|
};
|
|
41
54
|
}
|
|
@@ -53,4 +66,34 @@ export class AnthropicProvider {
|
|
|
53
66
|
return this.model;
|
|
54
67
|
}
|
|
55
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Strip turn-boundary markers that could let user content impersonate
|
|
71
|
+
* a Human/Assistant turn. We replace them with visually-similar but
|
|
72
|
+
* non-functional variants. This is defense-in-depth on top of the
|
|
73
|
+
* Messages API role boundary — a downstream consumer that re-serializes
|
|
74
|
+
* the prompt for a different model shouldn't pick up forged turns.
|
|
75
|
+
*
|
|
76
|
+
* <p>Whitespace class enumerates evasion-prone Unicode spaces explicitly
|
|
77
|
+
* (NBSP, narrow NBSP, ideographic space, en/em-quad spaces, zero-width
|
|
78
|
+
* variants, BOM) so an attacker can't bypass the line-start detection
|
|
79
|
+
* with " Human:" using U+00A0. /i lets us catch case-folded variants
|
|
80
|
+
* the way some tokenizers do.
|
|
81
|
+
*/
|
|
82
|
+
const TURN_MARKER_WS = '[ \\t\\u00A0\\u202F\\u3000\\u2000-\\u200A\\u200B-\\u200D\\uFEFF]';
|
|
83
|
+
const TURN_MARKER_RE = new RegExp(`(^|\\n)(${TURN_MARKER_WS}*)(Human|Assistant)(${TURN_MARKER_WS}*):`, 'gi');
|
|
84
|
+
function neutralizeTurnMarkers(input) {
|
|
85
|
+
return input.replace(TURN_MARKER_RE, '$1$2$3$4:');
|
|
86
|
+
}
|
|
87
|
+
function extractText(response) {
|
|
88
|
+
// The Messages API returns an array of content blocks; we only consume
|
|
89
|
+
// text blocks. Tool-use / image blocks are not part of this provider's
|
|
90
|
+
// contract — fall through cleanly so future block kinds don't crash.
|
|
91
|
+
const parts = [];
|
|
92
|
+
for (const block of response.content) {
|
|
93
|
+
if (block.type === 'text') {
|
|
94
|
+
parts.push(block.text);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return parts.join('');
|
|
98
|
+
}
|
|
56
99
|
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAO9C,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAY;IAClB,KAAK,CAAS;IAEtB,YAAY,SAA0B,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAAC,iDAAiD,EAAE,WAAW,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,4BAA4B,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAmB;QAChC,IAAI,CAAC;YACH,
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../src/ai/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ast/ast.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type * as AST from '../types.js';
|
|
2
2
|
export declare const Node: {
|
|
3
3
|
Module: (name: string | null, decls: readonly AST.Declaration[]) => AST.Module;
|
|
4
|
-
Import: (name: string, asName: string | null) => AST.Import;
|
|
4
|
+
Import: (name: string, asName: string | null, version?: number | null) => AST.Import;
|
|
5
5
|
Data: (name: string, fields: readonly AST.Field[]) => AST.Data;
|
|
6
6
|
Enum: (name: string, variants: readonly string[]) => AST.Enum;
|
|
7
|
-
Func: (name: string, typeParams: readonly string[], params: readonly AST.Parameter[], retType: AST.Type, effects: readonly string[], effectCaps: readonly AST.CapabilityKind[], effectCapsExplicit: boolean, body: AST.Block | null, effectParams?: readonly string[]) => AST.Func;
|
|
7
|
+
Func: (name: string, typeParams: readonly string[], params: readonly AST.Parameter[], retType: AST.Type, effects: readonly string[], effectCaps: readonly AST.CapabilityKind[], effectCapsExplicit: boolean, body: AST.Block | null, effectParams?: readonly string[], annotations?: readonly AST.Annotation[]) => AST.Func;
|
|
8
8
|
Block: (statements: readonly AST.Statement[]) => AST.Block;
|
|
9
9
|
Let: (name: string, expr: AST.Expression) => AST.Let;
|
|
10
10
|
Set: (name: string, expr: AST.Expression) => AST.Set;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/ast/ast.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,GAAG,MAAM,aAAa,CAAC;AASxC,eAAO,MAAM,IAAI;mBACA,MAAM,GAAG,IAAI,SAAS,SAAS,GAAG,CAAC,WAAW,EAAE,KAAG,GAAG,CAAC,MAAM;mBAM7D,MAAM,UAAU,MAAM,GAAG,IAAI,KAAG,GAAG,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/ast/ast.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ast/ast.js
CHANGED
|
@@ -11,9 +11,10 @@ export const Node = {
|
|
|
11
11
|
decls,
|
|
12
12
|
span: createEmptySpan(),
|
|
13
13
|
}),
|
|
14
|
-
Import: (name, asName) => ({
|
|
14
|
+
Import: (name, asName, version) => ({
|
|
15
15
|
kind: 'Import',
|
|
16
16
|
name,
|
|
17
|
+
...(typeof version === 'number' ? { version } : {}),
|
|
17
18
|
asName,
|
|
18
19
|
span: createEmptySpan(),
|
|
19
20
|
}),
|
|
@@ -29,10 +30,12 @@ export const Node = {
|
|
|
29
30
|
variants,
|
|
30
31
|
span: createEmptySpan(),
|
|
31
32
|
}),
|
|
32
|
-
Func: (name, typeParams, params, retType, effects, effectCaps, effectCapsExplicit, body, effectParams) => ({
|
|
33
|
+
Func: (name, typeParams, params, retType, effects, effectCaps, effectCapsExplicit, body, effectParams, annotations = []) => ({
|
|
33
34
|
kind: 'Func',
|
|
34
35
|
name,
|
|
35
36
|
typeParams,
|
|
37
|
+
// annotations 为空时省略,保持无注解 Rule 的 AST/Core JSON 与既有 golden 基线一致
|
|
38
|
+
...(annotations.length > 0 ? { annotations } : {}),
|
|
36
39
|
params,
|
|
37
40
|
retType,
|
|
38
41
|
effects,
|
package/dist/src/ast/ast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/ast/ast.ts"],"names":[],"mappings":"AAGA,SAAS,eAAe;IACtB,OAAO;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,MAAM,EAAE,CAAC,IAAmB,EAAE,KAAiC,EAAc,EAAE,CAAC,CAAC;QAC/E,IAAI,EAAE,QAAQ;QACd,IAAI;QACJ,KAAK;QACL,IAAI,EAAE,eAAe,EAAE;KACxB,CAAC;IACF,MAAM,EAAE,CAAC,IAAY,EAAE,MAAqB,EAAc,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/ast/ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @aster-cloud/aster-lang-ts/browser/schema
|
|
3
|
+
*
|
|
4
|
+
* Schema extraction for dynamic form generation. Split out of `browser.ts`
|
|
5
|
+
* in the Round-3 codex refactor: previously the main browser entry was a
|
|
6
|
+
* 660-line monolith mixing compile / validate / schema / evaluate / typecheck
|
|
7
|
+
* gates. Public exports remain available from `@aster-cloud/aster-lang-ts/browser`
|
|
8
|
+
* — this module is implementation detail.
|
|
9
|
+
*/
|
|
10
|
+
import type { Lexicon } from '../config/lexicons/types.js';
|
|
11
|
+
import type { ParameterInfo } from '../parser/input-generator.js';
|
|
12
|
+
/** Schema extraction options */
|
|
13
|
+
export interface SchemaOptions {
|
|
14
|
+
/** CNL lexicon (default: EN_US) */
|
|
15
|
+
lexicon?: Lexicon;
|
|
16
|
+
/** Target function name (default: first function) */
|
|
17
|
+
functionName?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SchemaResult {
|
|
20
|
+
/** Whether extraction succeeded */
|
|
21
|
+
success: boolean;
|
|
22
|
+
/** Module name */
|
|
23
|
+
moduleName?: string;
|
|
24
|
+
/** Function name */
|
|
25
|
+
functionName?: string;
|
|
26
|
+
/** Parameter schema */
|
|
27
|
+
parameters?: ParameterInfo[];
|
|
28
|
+
/** Error message if failed */
|
|
29
|
+
error?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Extract schema from CNL source code.
|
|
33
|
+
*
|
|
34
|
+
* Parses CNL source and extracts parameter schema for the specified function,
|
|
35
|
+
* suitable for dynamic form generation.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const result = extractSchema(`
|
|
40
|
+
* Module loan.
|
|
41
|
+
* Define LoanApplication has creditScore as Int, amount as Float, term as Int.
|
|
42
|
+
* Rule evaluate given application as LoanApplication, produce Bool:
|
|
43
|
+
* If application.creditScore >= 700 then Return true
|
|
44
|
+
* Otherwise Return false.
|
|
45
|
+
* `);
|
|
46
|
+
* if (result.success) {
|
|
47
|
+
* console.log(result.parameters);
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function extractSchema(source: string, options?: SchemaOptions): SchemaResult;
|
|
52
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/browser/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAY,aAAa,EAAa,MAAM,8BAA8B,CAAC;AAGvF,gCAAgC;AAChC,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuDD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAkInF"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @aster-cloud/aster-lang-ts/browser/schema
|
|
3
|
+
*
|
|
4
|
+
* Schema extraction for dynamic form generation. Split out of `browser.ts`
|
|
5
|
+
* in the Round-3 codex refactor: previously the main browser entry was a
|
|
6
|
+
* 660-line monolith mixing compile / validate / schema / evaluate / typecheck
|
|
7
|
+
* gates. Public exports remain available from `@aster-cloud/aster-lang-ts/browser`
|
|
8
|
+
* — this module is implementation detail.
|
|
9
|
+
*/
|
|
10
|
+
import { canonicalize } from '../frontend/canonicalizer.js';
|
|
11
|
+
import { lex } from '../frontend/lexer.js';
|
|
12
|
+
import { parse } from '../parser.js';
|
|
13
|
+
import { createKeywordTranslator, needsKeywordTranslation } from '../frontend/keyword-translator.js';
|
|
14
|
+
import { attachTypeInferenceRules } from '../config/lexicons/type-inference-rules.js';
|
|
15
|
+
/** Convert AST Type to type kind */
|
|
16
|
+
function getTypeKind(type) {
|
|
17
|
+
if (!type || typeof type !== 'object' || !('kind' in type)) {
|
|
18
|
+
return 'unknown';
|
|
19
|
+
}
|
|
20
|
+
switch (type.kind) {
|
|
21
|
+
case 'TypeName': {
|
|
22
|
+
const name = type.name.toLowerCase();
|
|
23
|
+
if (['int', 'float', 'double', 'number', 'bool', 'boolean', 'text', 'string', 'datetime', 'date', 'time'].includes(name)) {
|
|
24
|
+
return 'primitive';
|
|
25
|
+
}
|
|
26
|
+
// Custom type names are typically structs
|
|
27
|
+
return 'struct';
|
|
28
|
+
}
|
|
29
|
+
case 'List':
|
|
30
|
+
return 'list';
|
|
31
|
+
case 'Map':
|
|
32
|
+
return 'map';
|
|
33
|
+
case 'Option':
|
|
34
|
+
case 'Maybe':
|
|
35
|
+
return 'option';
|
|
36
|
+
case 'Result':
|
|
37
|
+
return 'result';
|
|
38
|
+
case 'FuncType':
|
|
39
|
+
return 'function';
|
|
40
|
+
default:
|
|
41
|
+
return 'unknown';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Convert AST Type to display string */
|
|
45
|
+
function typeToString(type) {
|
|
46
|
+
if (!type || typeof type !== 'object' || !('kind' in type)) {
|
|
47
|
+
return 'Unknown';
|
|
48
|
+
}
|
|
49
|
+
switch (type.kind) {
|
|
50
|
+
case 'TypeName':
|
|
51
|
+
return type.name;
|
|
52
|
+
case 'List':
|
|
53
|
+
return `List<${typeToString(type.type)}>`;
|
|
54
|
+
case 'Map':
|
|
55
|
+
return `Map<${typeToString(type.key)}, ${typeToString(type.val)}>`;
|
|
56
|
+
case 'Option':
|
|
57
|
+
return `Option<${typeToString(type.type)}>`;
|
|
58
|
+
case 'Maybe':
|
|
59
|
+
return `Maybe<${typeToString(type.type)}>`;
|
|
60
|
+
case 'Result':
|
|
61
|
+
return `Result<${typeToString(type.ok)}, ${typeToString(type.err)}>`;
|
|
62
|
+
default:
|
|
63
|
+
return 'Unknown';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Extract schema from CNL source code.
|
|
68
|
+
*
|
|
69
|
+
* Parses CNL source and extracts parameter schema for the specified function,
|
|
70
|
+
* suitable for dynamic form generation.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const result = extractSchema(`
|
|
75
|
+
* Module loan.
|
|
76
|
+
* Define LoanApplication has creditScore as Int, amount as Float, term as Int.
|
|
77
|
+
* Rule evaluate given application as LoanApplication, produce Bool:
|
|
78
|
+
* If application.creditScore >= 700 then Return true
|
|
79
|
+
* Otherwise Return false.
|
|
80
|
+
* `);
|
|
81
|
+
* if (result.success) {
|
|
82
|
+
* console.log(result.parameters);
|
|
83
|
+
* }
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export function extractSchema(source, options) {
|
|
87
|
+
try {
|
|
88
|
+
const lexicon = options?.lexicon;
|
|
89
|
+
// Canonicalize with lexicon for language-specific normalization
|
|
90
|
+
const canonical = canonicalize(source, lexicon);
|
|
91
|
+
let tokens = lex(canonical, lexicon);
|
|
92
|
+
// Translate non-English tokens to English for parser compatibility
|
|
93
|
+
if (lexicon && needsKeywordTranslation(lexicon)) {
|
|
94
|
+
const translator = createKeywordTranslator(lexicon);
|
|
95
|
+
tokens = translator.translateTokens(tokens);
|
|
96
|
+
}
|
|
97
|
+
// Parse to AST
|
|
98
|
+
const effectiveLexForSchema = lexicon ? attachTypeInferenceRules(lexicon) : undefined;
|
|
99
|
+
const parseResult = parse(tokens, effectiveLexForSchema);
|
|
100
|
+
if (parseResult.diagnostics.length > 0 && parseResult.ast.decls.length === 0) {
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
error: parseResult.diagnostics[0]?.message ?? 'Parse failed',
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
const module = parseResult.ast;
|
|
107
|
+
const moduleName = module.name ?? 'unknown';
|
|
108
|
+
// Find all Data and Enum declarations (for struct/enum field resolution)
|
|
109
|
+
const dataDecls = new Map();
|
|
110
|
+
const enumDecls = new Map();
|
|
111
|
+
for (const decl of module.decls) {
|
|
112
|
+
if (decl.kind === 'Data') {
|
|
113
|
+
const data = decl;
|
|
114
|
+
const fields = data.fields.map((f) => {
|
|
115
|
+
const fieldTypeKind = getTypeKind(f.type);
|
|
116
|
+
const fieldTypeName = typeToString(f.type);
|
|
117
|
+
return {
|
|
118
|
+
name: f.name,
|
|
119
|
+
type: fieldTypeName,
|
|
120
|
+
typeKind: fieldTypeKind,
|
|
121
|
+
};
|
|
122
|
+
});
|
|
123
|
+
dataDecls.set(data.name, fields);
|
|
124
|
+
}
|
|
125
|
+
else if (decl.kind === 'Enum') {
|
|
126
|
+
const enumDecl = decl;
|
|
127
|
+
enumDecls.set(enumDecl.name, [...enumDecl.variants]);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Find the target function
|
|
131
|
+
const funcs = module.decls.filter((d) => d.kind === 'Func');
|
|
132
|
+
if (funcs.length === 0) {
|
|
133
|
+
return {
|
|
134
|
+
success: false,
|
|
135
|
+
error: 'No functions found in module',
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
const targetFuncName = options?.functionName;
|
|
139
|
+
const func = targetFuncName
|
|
140
|
+
? funcs.find((f) => f.name === targetFuncName)
|
|
141
|
+
: funcs[0];
|
|
142
|
+
if (!func) {
|
|
143
|
+
return {
|
|
144
|
+
success: false,
|
|
145
|
+
error: targetFuncName
|
|
146
|
+
? `Function '${targetFuncName}' not found`
|
|
147
|
+
: 'No functions found in module',
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
// Extract parameters
|
|
151
|
+
const parameters = func.params.map((param, index) => {
|
|
152
|
+
let typeName = typeToString(param.type);
|
|
153
|
+
let typeKind = getTypeKind(param.type);
|
|
154
|
+
let fields;
|
|
155
|
+
// Resolve struct/enum fields if applicable
|
|
156
|
+
if (typeKind === 'struct' && enumDecls.has(typeName)) {
|
|
157
|
+
// Type is actually an enum, not a struct
|
|
158
|
+
typeKind = 'enum';
|
|
159
|
+
}
|
|
160
|
+
else if (typeKind === 'struct' && dataDecls.has(typeName)) {
|
|
161
|
+
// Resolve struct fields, also resolving enum types within fields
|
|
162
|
+
fields = dataDecls.get(typeName).map((f) => {
|
|
163
|
+
if (f.typeKind === 'struct' && enumDecls.has(f.type)) {
|
|
164
|
+
return { ...f, typeKind: 'enum', enumVariants: enumDecls.get(f.type) };
|
|
165
|
+
}
|
|
166
|
+
return f;
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
else if (typeKind === 'primitive' && dataDecls.has(param.name)) {
|
|
170
|
+
// 当参数类型为基本类型但参数名与 Data 定义匹配时,
|
|
171
|
+
// 推断参数类型为该 Data 类型(支持中文无类型参数语法)
|
|
172
|
+
typeName = param.name;
|
|
173
|
+
typeKind = 'struct';
|
|
174
|
+
fields = dataDecls.get(param.name);
|
|
175
|
+
}
|
|
176
|
+
const result = {
|
|
177
|
+
name: param.name,
|
|
178
|
+
type: typeName,
|
|
179
|
+
typeKind,
|
|
180
|
+
optional: false, // Parameters don't have optional field in AST
|
|
181
|
+
position: index,
|
|
182
|
+
};
|
|
183
|
+
if (typeKind === 'enum' && enumDecls.has(typeName)) {
|
|
184
|
+
result.enumVariants = enumDecls.get(typeName);
|
|
185
|
+
}
|
|
186
|
+
if (fields) {
|
|
187
|
+
result.fields = fields;
|
|
188
|
+
}
|
|
189
|
+
return result;
|
|
190
|
+
});
|
|
191
|
+
return {
|
|
192
|
+
success: true,
|
|
193
|
+
moduleName,
|
|
194
|
+
functionName: func.name,
|
|
195
|
+
parameters,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
return {
|
|
200
|
+
success: false,
|
|
201
|
+
error: error instanceof Error ? error.message : String(error),
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/browser/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/src/browser.d.ts
CHANGED
|
@@ -40,7 +40,7 @@ export type { EvalResult } from './core/interpreter.js';
|
|
|
40
40
|
export { generateFieldValue, generateInputValues, getFieldValueHint, } from './parser/input-generator.js';
|
|
41
41
|
export type { TypeKind, FieldInfo, ParameterInfo, } from './parser/input-generator.js';
|
|
42
42
|
export type * from './types.js';
|
|
43
|
-
export { EN_US, ZH_CN, DE_DE, LexiconRegistry, initializeDefaultLexicons } from './config/lexicons/index.js';
|
|
43
|
+
export { EN_US, ZH_CN, DE_DE, LexiconRegistry, initializeDefaultLexicons, initializeAllBundledLexicons, } from './config/lexicons/index.js';
|
|
44
44
|
export type { Lexicon } from './config/lexicons/types.js';
|
|
45
45
|
export { getLspUiTexts } from './config/lexicons/lsp-ui-texts.js';
|
|
46
46
|
export type { LspUiTexts } from './config/lexicons/lsp-ui-texts.js';
|
|
@@ -89,6 +89,11 @@ export interface CompileOptions {
|
|
|
89
89
|
lexicon?: Lexicon;
|
|
90
90
|
/** 领域标识符(如 'insurance.auto'),启用领域标识符翻译 */
|
|
91
91
|
domain?: string;
|
|
92
|
+
/**
|
|
93
|
+
* 租户标识符。提供时,领域词汇翻译优先命中该租户的自定义词汇
|
|
94
|
+
* (需先经 `vocabularyRegistry.registerCustom` 注册),未命中回退内置。
|
|
95
|
+
*/
|
|
96
|
+
tenantId?: string;
|
|
92
97
|
/** Include intermediate representations in result */
|
|
93
98
|
includeIntermediates?: boolean;
|
|
94
99
|
}
|
|
@@ -165,58 +170,8 @@ export declare function validateSyntaxWithSpan(source: string, lexicon?: Lexicon
|
|
|
165
170
|
* @returns Array of tokens
|
|
166
171
|
*/
|
|
167
172
|
export declare function tokenize(source: string, lexicon?: Lexicon): Token[];
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
* Schema extraction result
|
|
171
|
-
*/
|
|
172
|
-
export interface SchemaResult {
|
|
173
|
-
/** Whether extraction succeeded */
|
|
174
|
-
success: boolean;
|
|
175
|
-
/** Module name */
|
|
176
|
-
moduleName?: string;
|
|
177
|
-
/** Function name */
|
|
178
|
-
functionName?: string;
|
|
179
|
-
/** Parameter schema */
|
|
180
|
-
parameters?: ParameterInfo[];
|
|
181
|
-
/** Error message if failed */
|
|
182
|
-
error?: string;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Schema extraction options
|
|
186
|
-
*/
|
|
187
|
-
export interface SchemaOptions {
|
|
188
|
-
/** CNL lexicon (default: EN_US) */
|
|
189
|
-
lexicon?: Lexicon;
|
|
190
|
-
/** Target function name (default: first function) */
|
|
191
|
-
functionName?: string;
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Extract schema from CNL source code
|
|
195
|
-
*
|
|
196
|
-
* Parses CNL source and extracts parameter schema for the specified function,
|
|
197
|
-
* suitable for dynamic form generation.
|
|
198
|
-
*
|
|
199
|
-
* @param source - CNL source code
|
|
200
|
-
* @param options - Schema extraction options
|
|
201
|
-
* @returns Schema extraction result
|
|
202
|
-
*
|
|
203
|
-
* @example
|
|
204
|
-
* ```typescript
|
|
205
|
-
* const result = extractSchema(`
|
|
206
|
-
* Module loan.
|
|
207
|
-
* Define LoanApplication has creditScore as Int, amount as Float, term as Int.
|
|
208
|
-
* Rule evaluate given application as LoanApplication, produce Bool:
|
|
209
|
-
* If application.creditScore >= 700 then Return true
|
|
210
|
-
* Otherwise Return false.
|
|
211
|
-
* `);
|
|
212
|
-
*
|
|
213
|
-
* if (result.success) {
|
|
214
|
-
* console.log(result.parameters);
|
|
215
|
-
* // [{ name: 'application', type: 'LoanApplication', typeKind: 'struct', ... }]
|
|
216
|
-
* }
|
|
217
|
-
* ```
|
|
218
|
-
*/
|
|
219
|
-
export declare function extractSchema(source: string, options?: SchemaOptions): SchemaResult;
|
|
173
|
+
export { extractSchema } from './browser/schema.js';
|
|
174
|
+
export type { SchemaResult, SchemaOptions } from './browser/schema.js';
|
|
220
175
|
export { typecheckBrowser } from './typecheck/browser.js';
|
|
221
176
|
export type { BrowserTypecheckOptions } from './typecheck/browser.js';
|
|
222
177
|
export type { TypecheckDiagnostic } from './types.js';
|
|
@@ -226,8 +181,13 @@ export type { TypecheckDiagnostic } from './types.js';
|
|
|
226
181
|
* This is the recommended API for browser/edge use when you need
|
|
227
182
|
* both compilation and type checking.
|
|
228
183
|
*
|
|
184
|
+
* **PII flow analysis is always enabled** since ADR-0009 P0-1. The
|
|
185
|
+
* `enforcePii` option is accepted for source-level backwards compatibility
|
|
186
|
+
* but is ignored — see {@link compileAndTypecheck} options below.
|
|
187
|
+
*
|
|
229
188
|
* @param source - CNL source code
|
|
230
|
-
* @param options - Compile and type check options
|
|
189
|
+
* @param options - Compile and type check options. Note: `enforcePii` is
|
|
190
|
+
* **deprecated** and ignored; PII checks are always on.
|
|
231
191
|
* @returns Object containing compilation result and type diagnostics
|
|
232
192
|
*
|
|
233
193
|
* @example
|
|
@@ -250,6 +210,11 @@ export type { TypecheckDiagnostic } from './types.js';
|
|
|
250
210
|
* ```
|
|
251
211
|
*/
|
|
252
212
|
export declare function compileAndTypecheck(source: string, options?: CompileOptions & {
|
|
213
|
+
/**
|
|
214
|
+
* @deprecated ADR-0009 P0-1: PII flow analysis is always enabled.
|
|
215
|
+
* Setting `false` does NOT disable it. Field kept for source-level
|
|
216
|
+
* backwards compatibility; will be removed next major.
|
|
217
|
+
*/
|
|
253
218
|
enforcePii?: boolean;
|
|
254
219
|
}): CompileResult & {
|
|
255
220
|
typeErrors: import('./types.js').TypecheckDiagnostic[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,QAAQ,EACR,SAAS,EACT,aAAa,GACd,MAAM,6BAA6B,CAAC;AAGrC,mBAAmB,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,QAAQ,EACR,SAAS,EACT,aAAa,GACd,MAAM,6BAA6B,CAAC;AAGrC,mBAAmB,YAAY,CAAC;AAOhC,OAAO,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,eAAe,EACf,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAUpE,OAAO,KAAK,EAAE,IAAI,IAAI,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAM1D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,IAAI,CAAC,EAAE;QACL,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACrC,GAAG,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;KACpC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC;IACxB,gEAAgE;IAChE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,+BAA+B;IAC/B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,qEAAqE;IACrE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,aAAa,CAsF/E;AAED;;;;;;;;;GASG;AACH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,IAAI,CAAC,EAAE;QACL,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACrC,GAAG,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;KACpC,CAAC;CACH;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,eAAe,EAAE,CAmC3F;AAGD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,CAInE;AAQD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,cAAc,GAAG;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GACA,aAAa,GAAG;IAAE,UAAU,EAAE,OAAO,YAAY,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAuB5E"}
|