intelligent-system-design-language 0.3.13
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/.claude/agents/langium-language-designer.md +38 -0
- package/.claude/agents/typescript-vscode-expert.md +29 -0
- package/.claude/agents/ui-ux-designer.md +36 -0
- package/.claude/settings.local.json +33 -0
- package/.idea/inspectionProfiles/Project_Default.xml +7 -0
- package/.idea/isdl.iml +14 -0
- package/.idea/modules.xml +9 -0
- package/.idea/vcs.xml +7 -0
- package/.idea/watcherTasks.xml +4 -0
- package/.vscodeignore +18 -0
- package/LICENSE +674 -0
- package/README.md +86 -0
- package/bin/cli.js +4 -0
- package/bin/lsp.js +8 -0
- package/isdl.png +0 -0
- package/out/_backgrounds.scss +91 -0
- package/out/_handlebars.scss +505 -0
- package/out/_isdlStyles.scss +1357 -0
- package/out/_vuetifyOverrides.scss +425 -0
- package/out/_vuetifyStyles.scss +31957 -0
- package/out/cli/cli-util.js +39 -0
- package/out/cli/cli-util.js.map +1 -0
- package/out/cli/components/_backgrounds.scss +91 -0
- package/out/cli/components/_handlebars.scss +505 -0
- package/out/cli/components/_isdlStyles.scss +1357 -0
- package/out/cli/components/_vuetifyOverrides.scss +425 -0
- package/out/cli/components/_vuetifyStyles.scss +31957 -0
- package/out/cli/components/active-effect-sheet-generator.js +643 -0
- package/out/cli/components/active-effect-sheet-generator.js.map +1 -0
- package/out/cli/components/base-actor-sheet-generator.js +125 -0
- package/out/cli/components/base-actor-sheet-generator.js.map +1 -0
- package/out/cli/components/base-sheet-generator.js +525 -0
- package/out/cli/components/base-sheet-generator.js.map +1 -0
- package/out/cli/components/chat-card-generator.js +683 -0
- package/out/cli/components/chat-card-generator.js.map +1 -0
- package/out/cli/components/css-generator.js +58 -0
- package/out/cli/components/css-generator.js.map +1 -0
- package/out/cli/components/damage-roll-generator.js +173 -0
- package/out/cli/components/damage-roll-generator.js.map +1 -0
- package/out/cli/components/datamodel-generator.js +672 -0
- package/out/cli/components/datamodel-generator.js.map +1 -0
- package/out/cli/components/derived-data-generator.js +1340 -0
- package/out/cli/components/derived-data-generator.js.map +1 -0
- package/out/cli/components/hotbar-drop-hook-generator.js +95 -0
- package/out/cli/components/hotbar-drop-hook-generator.js.map +1 -0
- package/out/cli/components/init-hook-generator.js +597 -0
- package/out/cli/components/init-hook-generator.js.map +1 -0
- package/out/cli/components/keywords-generator.js +220 -0
- package/out/cli/components/keywords-generator.js.map +1 -0
- package/out/cli/components/language-generator.js +110 -0
- package/out/cli/components/language-generator.js.map +1 -0
- package/out/cli/components/measured-template-preview.js +234 -0
- package/out/cli/components/measured-template-preview.js.map +1 -0
- package/out/cli/components/method-generator.js +1812 -0
- package/out/cli/components/method-generator.js.map +1 -0
- package/out/cli/components/ready-hook-generator.js +448 -0
- package/out/cli/components/ready-hook-generator.js.map +1 -0
- package/out/cli/components/token-generator.js +138 -0
- package/out/cli/components/token-generator.js.map +1 -0
- package/out/cli/components/utils.js +176 -0
- package/out/cli/components/utils.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-attribute.js +148 -0
- package/out/cli/components/vue/base-components/vue-attribute.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-boolean.js +77 -0
- package/out/cli/components/vue/base-components/vue-boolean.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-calculator.js +106 -0
- package/out/cli/components/vue/base-components/vue-calculator.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-damage-application.js +369 -0
- package/out/cli/components/vue/base-components/vue-damage-application.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-damage-bonuses.js +225 -0
- package/out/cli/components/vue/base-components/vue-damage-bonuses.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-damage-resistances.js +256 -0
- package/out/cli/components/vue/base-components/vue-damage-resistances.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-damage-track.js +134 -0
- package/out/cli/components/vue/base-components/vue-damage-track.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-date-time.js +55 -0
- package/out/cli/components/vue/base-components/vue-date-time.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-dice.js +111 -0
- package/out/cli/components/vue/base-components/vue-dice.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-die.js +86 -0
- package/out/cli/components/vue/base-components/vue-die.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-document-choice.js +172 -0
- package/out/cli/components/vue/base-components/vue-document-choice.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-document-choices.js +203 -0
- package/out/cli/components/vue/base-components/vue-document-choices.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-document-link.js +73 -0
- package/out/cli/components/vue/base-components/vue-document-link.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-extended-choice.js +101 -0
- package/out/cli/components/vue/base-components/vue-extended-choice.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-inventory.js +532 -0
- package/out/cli/components/vue/base-components/vue-inventory.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-macro-choice.js +150 -0
- package/out/cli/components/vue/base-components/vue-macro-choice.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-measured-template.js +543 -0
- package/out/cli/components/vue/base-components/vue-measured-template.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-money.js +496 -0
- package/out/cli/components/vue/base-components/vue-money.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-number.js +184 -0
- package/out/cli/components/vue/base-components/vue-number.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-paperdoll.js +56 -0
- package/out/cli/components/vue/base-components/vue-paperdoll.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-parent-property-reference.js +89 -0
- package/out/cli/components/vue/base-components/vue-parent-property-reference.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-prosemirror.js +31 -0
- package/out/cli/components/vue/base-components/vue-prosemirror.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-resource.js +149 -0
- package/out/cli/components/vue/base-components/vue-resource.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-roll-visualizer.js +121 -0
- package/out/cli/components/vue/base-components/vue-roll-visualizer.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-self-property-reference.js +75 -0
- package/out/cli/components/vue/base-components/vue-self-property-reference.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-string-choice.js +111 -0
- package/out/cli/components/vue/base-components/vue-string-choice.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-string-choices.js +216 -0
- package/out/cli/components/vue/base-components/vue-string-choices.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-string.js +73 -0
- package/out/cli/components/vue/base-components/vue-string.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-text-field.js +66 -0
- package/out/cli/components/vue/base-components/vue-text-field.js.map +1 -0
- package/out/cli/components/vue/base-components/vue-tracker.js +444 -0
- package/out/cli/components/vue/base-components/vue-tracker.js.map +1 -0
- package/out/cli/components/vue/vue-action-component-generator.js +88 -0
- package/out/cli/components/vue/vue-action-component-generator.js.map +1 -0
- package/out/cli/components/vue/vue-active-effect-sheet-generator.js +1016 -0
- package/out/cli/components/vue/vue-active-effect-sheet-generator.js.map +1 -0
- package/out/cli/components/vue/vue-base-components-generator.js +59 -0
- package/out/cli/components/vue/vue-base-components-generator.js.map +1 -0
- package/out/cli/components/vue/vue-datatable-component-generator.js +307 -0
- package/out/cli/components/vue/vue-datatable-component-generator.js.map +1 -0
- package/out/cli/components/vue/vue-datatable-sheet-class-generator.js +342 -0
- package/out/cli/components/vue/vue-datatable-sheet-class-generator.js.map +1 -0
- package/out/cli/components/vue/vue-datatable2-component-generator.js +939 -0
- package/out/cli/components/vue/vue-datatable2-component-generator.js.map +1 -0
- package/out/cli/components/vue/vue-document-creation-app.js +140 -0
- package/out/cli/components/vue/vue-document-creation-app.js.map +1 -0
- package/out/cli/components/vue/vue-document-creation-sheet.js +105 -0
- package/out/cli/components/vue/vue-document-creation-sheet.js.map +1 -0
- package/out/cli/components/vue/vue-generator.js +240 -0
- package/out/cli/components/vue/vue-generator.js.map +1 -0
- package/out/cli/components/vue/vue-mixin.js +338 -0
- package/out/cli/components/vue/vue-mixin.js.map +1 -0
- package/out/cli/components/vue/vue-pinned-datatable-component-generator.js +306 -0
- package/out/cli/components/vue/vue-pinned-datatable-component-generator.js.map +1 -0
- package/out/cli/components/vue/vue-prompt-generator.js +201 -0
- package/out/cli/components/vue/vue-prompt-generator.js.map +1 -0
- package/out/cli/components/vue/vue-prompt-sheet-class-generator.js +252 -0
- package/out/cli/components/vue/vue-prompt-sheet-class-generator.js.map +1 -0
- package/out/cli/components/vue/vue-sheet-application-generator.js +2008 -0
- package/out/cli/components/vue/vue-sheet-application-generator.js.map +1 -0
- package/out/cli/components/vue/vue-sheet-class-generator.js +484 -0
- package/out/cli/components/vue/vue-sheet-class-generator.js.map +1 -0
- package/out/cli/generator.js +659 -0
- package/out/cli/generator.js.map +1 -0
- package/out/cli/main.js +43 -0
- package/out/cli/main.js.map +1 -0
- package/out/datatables.min.css +54 -0
- package/out/datatables.min.js +178 -0
- package/out/extension/github/githubAuthProvider.js +345 -0
- package/out/extension/github/githubAuthProvider.js.map +1 -0
- package/out/extension/github/githubConfig.js +132 -0
- package/out/extension/github/githubConfig.js.map +1 -0
- package/out/extension/github/githubGistActions.js +251 -0
- package/out/extension/github/githubGistActions.js.map +1 -0
- package/out/extension/github/githubGistManager.js +255 -0
- package/out/extension/github/githubGistManager.js.map +1 -0
- package/out/extension/github/githubManager.js +1735 -0
- package/out/extension/github/githubManager.js.map +1 -0
- package/out/extension/github/githubQuickActions.js +659 -0
- package/out/extension/github/githubQuickActions.js.map +1 -0
- package/out/extension/github/githubTreeProvider.js +181 -0
- package/out/extension/github/githubTreeProvider.js.map +1 -0
- package/out/extension/github/system-workflow.yml +48 -0
- package/out/extension/main.cjs +70315 -0
- package/out/extension/main.cjs.map +7 -0
- package/out/extension/main.js +237 -0
- package/out/extension/main.js.map +1 -0
- package/out/extension/package.json +426 -0
- package/out/isdl.png +0 -0
- package/out/language/generated/ast.js +2992 -0
- package/out/language/generated/ast.js.map +1 -0
- package/out/language/generated/grammar.js +13970 -0
- package/out/language/generated/grammar.js.map +1 -0
- package/out/language/generated/module.js +20 -0
- package/out/language/generated/module.js.map +1 -0
- package/out/language/intelligent-system-design-language-formatter.js +85 -0
- package/out/language/intelligent-system-design-language-formatter.js.map +1 -0
- package/out/language/intelligent-system-design-language-module.js +69 -0
- package/out/language/intelligent-system-design-language-module.js.map +1 -0
- package/out/language/intelligent-system-design-language-quickfixes.js +37 -0
- package/out/language/intelligent-system-design-language-quickfixes.js.map +1 -0
- package/out/language/intelligent-system-design-language-validator.js +515 -0
- package/out/language/intelligent-system-design-language-validator.js.map +1 -0
- package/out/language/isdl-hover-provider.js +77 -0
- package/out/language/isdl-hover-provider.js.map +1 -0
- package/out/language/isdl-scope-provider.js +149 -0
- package/out/language/isdl-scope-provider.js.map +1 -0
- package/out/language/main.cjs +47655 -0
- package/out/language/main.cjs.map +7 -0
- package/out/language/main.js +11 -0
- package/out/language/main.js.map +1 -0
- package/out/missing-character.png +0 -0
- package/out/package.json +426 -0
- package/out/paperdoll_default.png +0 -0
- package/out/progressbar.min.js +7 -0
- package/out/styles.scss +722 -0
- package/out/test/formatting/formatter.test.js +46 -0
- package/out/test/formatting/formatter.test.js.map +1 -0
- package/out/vuetify.esm.js +30279 -0
- package/package.json +426 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import * as vscode from 'vscode';
|
|
2
|
+
export class GitHubAuthProvider {
|
|
3
|
+
constructor(context) {
|
|
4
|
+
this.context = context;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Authenticate user with GitHub and store credentials securely
|
|
8
|
+
*/
|
|
9
|
+
async authenticateUser() {
|
|
10
|
+
try {
|
|
11
|
+
// Show progress while authenticating
|
|
12
|
+
return await vscode.window.withProgress({
|
|
13
|
+
location: vscode.ProgressLocation.Notification,
|
|
14
|
+
title: "Connecting to GitHub...",
|
|
15
|
+
cancellable: true
|
|
16
|
+
}, async (progress) => {
|
|
17
|
+
// Use VS Code's built-in GitHub authentication
|
|
18
|
+
const session = await vscode.authentication.getSession(GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID, GitHubAuthProvider.SCOPES, { createIfNone: true });
|
|
19
|
+
if (!session) {
|
|
20
|
+
vscode.window.showErrorMessage('Failed to authenticate with GitHub');
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
// Store the session information securely
|
|
24
|
+
await this.storeGitHubSession(session);
|
|
25
|
+
// Get user information
|
|
26
|
+
const userInfo = await this.getUserInfo(session.accessToken);
|
|
27
|
+
if (userInfo) {
|
|
28
|
+
await this.storeUserInfo(userInfo);
|
|
29
|
+
vscode.window.showInformationMessage(`Successfully connected to GitHub as ${userInfo.login}`, 'View Profile').then(selection => {
|
|
30
|
+
if (selection === 'View Profile') {
|
|
31
|
+
vscode.env.openExternal(vscode.Uri.parse(`https://github.com/${userInfo.login}`));
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return userInfo;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error('GitHub authentication failed:', error);
|
|
40
|
+
vscode.window.showErrorMessage(`GitHub authentication failed: ${error}`);
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if user is currently authenticated
|
|
46
|
+
*/
|
|
47
|
+
async isAuthenticated() {
|
|
48
|
+
try {
|
|
49
|
+
const session = await vscode.authentication.getSession(GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID, GitHubAuthProvider.SCOPES, { silent: true });
|
|
50
|
+
return !!session;
|
|
51
|
+
}
|
|
52
|
+
catch (_a) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get current GitHub session
|
|
58
|
+
*/
|
|
59
|
+
async getCurrentSession() {
|
|
60
|
+
try {
|
|
61
|
+
return await vscode.authentication.getSession(GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID, GitHubAuthProvider.SCOPES, { silent: true });
|
|
62
|
+
}
|
|
63
|
+
catch (_a) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get stored user information
|
|
69
|
+
*/
|
|
70
|
+
async getStoredUserInfo() {
|
|
71
|
+
try {
|
|
72
|
+
const userInfoJson = await this.context.secrets.get('github.userInfo');
|
|
73
|
+
return userInfoJson ? JSON.parse(userInfoJson) : undefined;
|
|
74
|
+
}
|
|
75
|
+
catch (_a) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Sign out from GitHub
|
|
81
|
+
*/
|
|
82
|
+
async signOut() {
|
|
83
|
+
try {
|
|
84
|
+
const session = await this.getCurrentSession();
|
|
85
|
+
if (session) {
|
|
86
|
+
// Remove the session
|
|
87
|
+
await vscode.authentication.getSession(GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID, GitHubAuthProvider.SCOPES, { clearSessionPreference: true, silent: true });
|
|
88
|
+
}
|
|
89
|
+
// Clear stored information
|
|
90
|
+
await this.context.secrets.delete('github.userInfo');
|
|
91
|
+
await this.context.secrets.delete('github.session');
|
|
92
|
+
vscode.window.showInformationMessage('Successfully signed out from GitHub');
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error('Error signing out:', error);
|
|
96
|
+
vscode.window.showErrorMessage(`Failed to sign out: ${error}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get user information from GitHub API
|
|
101
|
+
*/
|
|
102
|
+
async getUserInfo(accessToken) {
|
|
103
|
+
try {
|
|
104
|
+
const response = await fetch('https://api.github.com/user', {
|
|
105
|
+
headers: {
|
|
106
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
107
|
+
'Accept': 'application/vnd.github.v3+json',
|
|
108
|
+
'User-Agent': 'ISDL-VSCode-Extension'
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
if (!response.ok) {
|
|
112
|
+
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`);
|
|
113
|
+
}
|
|
114
|
+
let jsonResponse = await response.json();
|
|
115
|
+
return jsonResponse;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
console.error('Failed to get user info:', error);
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Store GitHub session securely
|
|
124
|
+
*/
|
|
125
|
+
async storeGitHubSession(session) {
|
|
126
|
+
const sessionData = {
|
|
127
|
+
accessToken: session.accessToken,
|
|
128
|
+
account: session.account,
|
|
129
|
+
id: session.id,
|
|
130
|
+
scopes: session.scopes
|
|
131
|
+
};
|
|
132
|
+
await this.context.secrets.store('github.session', JSON.stringify(sessionData));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Store user information securely
|
|
136
|
+
*/
|
|
137
|
+
async storeUserInfo(userInfo) {
|
|
138
|
+
await this.context.secrets.store('github.userInfo', JSON.stringify(userInfo));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
GitHubAuthProvider.GITHUB_AUTH_PROVIDER_ID = 'github';
|
|
142
|
+
GitHubAuthProvider.SCOPES = ['repo', 'user:email', 'actions:write', 'contents:write', 'workflow', 'gist'];
|
|
143
|
+
// src/github/GitHubSetupWizard.ts
|
|
144
|
+
export class GitHubSetupWizard {
|
|
145
|
+
constructor(authProvider) {
|
|
146
|
+
this.authProvider = authProvider;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Run the complete GitHub setup wizard
|
|
150
|
+
*/
|
|
151
|
+
async runSetupWizard() {
|
|
152
|
+
// Step 1: Welcome and explanation
|
|
153
|
+
const shouldContinue = await this.showWelcomeStep();
|
|
154
|
+
if (!shouldContinue)
|
|
155
|
+
return false;
|
|
156
|
+
// Step 2: Check if already authenticated
|
|
157
|
+
const isAuthenticated = await this.authProvider.isAuthenticated();
|
|
158
|
+
if (isAuthenticated) {
|
|
159
|
+
const userInfo = await this.authProvider.getStoredUserInfo();
|
|
160
|
+
const reconnect = await vscode.window.showInformationMessage(`You're already connected to GitHub as ${(userInfo === null || userInfo === void 0 ? void 0 : userInfo.login) || 'unknown user'}. Would you like to reconnect?`, 'Reconnect', 'Cancel');
|
|
161
|
+
if (reconnect !== 'Reconnect')
|
|
162
|
+
return false;
|
|
163
|
+
// Sign out first
|
|
164
|
+
await this.authProvider.signOut();
|
|
165
|
+
}
|
|
166
|
+
// Step 3: Authenticate with GitHub
|
|
167
|
+
const userInfo = await this.authProvider.authenticateUser();
|
|
168
|
+
if (!userInfo)
|
|
169
|
+
return false;
|
|
170
|
+
// Step 4: Show success and next steps
|
|
171
|
+
await this.showSuccessStep(userInfo);
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Show welcome step with explanation
|
|
176
|
+
*/
|
|
177
|
+
async showWelcomeStep() {
|
|
178
|
+
var _a;
|
|
179
|
+
const items = [
|
|
180
|
+
{
|
|
181
|
+
label: '$(github) Connect to GitHub',
|
|
182
|
+
description: 'Set up GitHub publishing for your ISDL systems',
|
|
183
|
+
detail: 'This will allow you to publish and share your tabletop RPG systems'
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
label: '$(x) Cancel',
|
|
187
|
+
description: 'Skip GitHub setup for now'
|
|
188
|
+
}
|
|
189
|
+
];
|
|
190
|
+
const selection = await vscode.window.showQuickPick(items, {
|
|
191
|
+
title: 'ISDL GitHub Publishing Setup',
|
|
192
|
+
placeHolder: 'Choose an option to continue',
|
|
193
|
+
ignoreFocusOut: true
|
|
194
|
+
});
|
|
195
|
+
return (_a = selection === null || selection === void 0 ? void 0 : selection.label.includes('Connect to GitHub')) !== null && _a !== void 0 ? _a : false;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Show success step with next actions
|
|
199
|
+
*/
|
|
200
|
+
async showSuccessStep(userInfo) {
|
|
201
|
+
const items = [
|
|
202
|
+
{
|
|
203
|
+
label: '$(repo-create) Create New Repository',
|
|
204
|
+
description: 'Create a new GitHub repository for your system',
|
|
205
|
+
detail: 'Set up a fresh repository to publish your ISDL system'
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
label: '$(repo) Use Existing Repository',
|
|
209
|
+
description: 'Connect to an existing GitHub repository',
|
|
210
|
+
detail: 'Publish to a repository you already own'
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
label: '$(gear) Configure Settings',
|
|
214
|
+
description: 'Configure publishing preferences',
|
|
215
|
+
detail: 'Set up default options for system publishing'
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
label: '$(check) Done',
|
|
219
|
+
description: 'Complete setup and return to work'
|
|
220
|
+
}
|
|
221
|
+
];
|
|
222
|
+
const selection = await vscode.window.showQuickPick(items, {
|
|
223
|
+
title: `Welcome ${userInfo.name || userInfo.login}!`,
|
|
224
|
+
placeHolder: 'What would you like to do next?',
|
|
225
|
+
ignoreFocusOut: true
|
|
226
|
+
});
|
|
227
|
+
// Handle the selection
|
|
228
|
+
switch (selection === null || selection === void 0 ? void 0 : selection.label) {
|
|
229
|
+
case '$(repo-create) Create New Repository':
|
|
230
|
+
await this.showCreateRepositoryWizard();
|
|
231
|
+
break;
|
|
232
|
+
case '$(repo) Use Existing Repository':
|
|
233
|
+
await this.showSelectRepositoryWizard();
|
|
234
|
+
break;
|
|
235
|
+
case '$(gear) Configure Settings':
|
|
236
|
+
await this.showSettingsWizard();
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Show create repository wizard (placeholder)
|
|
242
|
+
*/
|
|
243
|
+
async showCreateRepositoryWizard() {
|
|
244
|
+
vscode.window.showInformationMessage('Create repository wizard coming soon!');
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Show select repository wizard (placeholder)
|
|
248
|
+
*/
|
|
249
|
+
async showSelectRepositoryWizard() {
|
|
250
|
+
vscode.window.showInformationMessage('Select repository wizard coming soon!');
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Show settings wizard (placeholder)
|
|
254
|
+
*/
|
|
255
|
+
async showSettingsWizard() {
|
|
256
|
+
vscode.window.showInformationMessage('Settings wizard coming soon!');
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// src/github/GitHubStatusProvider.ts
|
|
260
|
+
export class GitHubStatusProvider {
|
|
261
|
+
constructor(authProvider) {
|
|
262
|
+
this.authProvider = authProvider;
|
|
263
|
+
this._onDidChangeTreeData = new vscode.EventEmitter();
|
|
264
|
+
this.onDidChangeTreeData = this._onDidChangeTreeData.event;
|
|
265
|
+
}
|
|
266
|
+
refresh() {
|
|
267
|
+
this._onDidChangeTreeData.fire();
|
|
268
|
+
}
|
|
269
|
+
getTreeItem(element) {
|
|
270
|
+
return element;
|
|
271
|
+
}
|
|
272
|
+
async getChildren(element) {
|
|
273
|
+
if (!element) {
|
|
274
|
+
// Root level items
|
|
275
|
+
const isAuthenticated = await this.authProvider.isAuthenticated();
|
|
276
|
+
if (!isAuthenticated) {
|
|
277
|
+
return [
|
|
278
|
+
new GitHubStatusItem('Not Connected', 'Click to connect to GitHub', vscode.TreeItemCollapsibleState.None, {
|
|
279
|
+
command: 'isdl.github.setup',
|
|
280
|
+
title: 'Connect to GitHub'
|
|
281
|
+
}, 'warning')
|
|
282
|
+
];
|
|
283
|
+
}
|
|
284
|
+
// User is authenticated
|
|
285
|
+
const userInfo = await this.authProvider.getStoredUserInfo();
|
|
286
|
+
return [
|
|
287
|
+
new GitHubStatusItem(`Connected as ${(userInfo === null || userInfo === void 0 ? void 0 : userInfo.login) || 'Unknown'}`, (userInfo === null || userInfo === void 0 ? void 0 : userInfo.name) || 'GitHub User', vscode.TreeItemCollapsibleState.Expanded, undefined, 'account'),
|
|
288
|
+
new GitHubStatusItem('Publish System', 'Publish your ISDL system to GitHub', vscode.TreeItemCollapsibleState.None, {
|
|
289
|
+
command: 'isdl.github.publish',
|
|
290
|
+
title: 'Publish System'
|
|
291
|
+
}, 'repo-push')
|
|
292
|
+
];
|
|
293
|
+
}
|
|
294
|
+
return [];
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
class GitHubStatusItem extends vscode.TreeItem {
|
|
298
|
+
constructor(label, description, collapsibleState, command, iconName) {
|
|
299
|
+
super(label, collapsibleState);
|
|
300
|
+
this.label = label;
|
|
301
|
+
this.description = description;
|
|
302
|
+
this.collapsibleState = collapsibleState;
|
|
303
|
+
this.command = command;
|
|
304
|
+
this.description = description;
|
|
305
|
+
this.tooltip = description;
|
|
306
|
+
if (iconName) {
|
|
307
|
+
this.iconPath = new vscode.ThemeIcon(iconName);
|
|
308
|
+
}
|
|
309
|
+
if (command) {
|
|
310
|
+
this.command = command;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
// Extension activation code (add to your main extension file)
|
|
315
|
+
export function registerGitHubCommands(context) {
|
|
316
|
+
const authProvider = new GitHubAuthProvider(context);
|
|
317
|
+
const setupWizard = new GitHubSetupWizard(authProvider);
|
|
318
|
+
const statusProvider = new GitHubStatusProvider(authProvider);
|
|
319
|
+
// Register tree view
|
|
320
|
+
const treeView = vscode.window.createTreeView('isdl.github', {
|
|
321
|
+
treeDataProvider: statusProvider,
|
|
322
|
+
showCollapseAll: false
|
|
323
|
+
});
|
|
324
|
+
// Register commands
|
|
325
|
+
const setupCommand = vscode.commands.registerCommand('isdl.github.setup', async () => {
|
|
326
|
+
await setupWizard.runSetupWizard();
|
|
327
|
+
statusProvider.refresh();
|
|
328
|
+
});
|
|
329
|
+
const signOutCommand = vscode.commands.registerCommand('isdl.github.signout', async () => {
|
|
330
|
+
await authProvider.signOut();
|
|
331
|
+
statusProvider.refresh();
|
|
332
|
+
});
|
|
333
|
+
const refreshCommand = vscode.commands.registerCommand('isdl.github.refresh', () => {
|
|
334
|
+
statusProvider.refresh();
|
|
335
|
+
});
|
|
336
|
+
// Placeholder for future publish command
|
|
337
|
+
const publishCommand = vscode.commands.registerCommand('isdl.github.publish', () => {
|
|
338
|
+
vscode.window.showInformationMessage('Publishing feature coming soon!');
|
|
339
|
+
});
|
|
340
|
+
// Add to context subscriptions
|
|
341
|
+
context.subscriptions.push(treeView, setupCommand, signOutCommand, refreshCommand, publishCommand);
|
|
342
|
+
// Refresh status on activation
|
|
343
|
+
statusProvider.refresh();
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=githubAuthProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"githubAuthProvider.js","sourceRoot":"","sources":["../../../src/extension/github/githubAuthProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import * as vscode from 'vscode';
|
|
2
|
+
/**
|
|
3
|
+
* Simple configuration manager for GitHub settings
|
|
4
|
+
*/
|
|
5
|
+
export class GitHubConfigurationManager {
|
|
6
|
+
/**
|
|
7
|
+
* Get current publishing configuration
|
|
8
|
+
*/
|
|
9
|
+
getConfig() {
|
|
10
|
+
const config = vscode.workspace.getConfiguration(GitHubConfigurationManager.CONFIG_KEY);
|
|
11
|
+
return {
|
|
12
|
+
defaultBranch: config.get('defaultBranch', 'main'),
|
|
13
|
+
includeDocumentation: config.get('includeDocumentation', true),
|
|
14
|
+
includeBuildScripts: config.get('includeBuildScripts', true),
|
|
15
|
+
templateRepository: config.get('templateRepository'),
|
|
16
|
+
commitMessage: config.get('commitMessage', 'Update system files'),
|
|
17
|
+
tagReleases: config.get('tagReleases', true),
|
|
18
|
+
generateChangelog: config.get('generateChangelog', true),
|
|
19
|
+
respositoryVisibility: config.get('repositoryVisibility', 'public'),
|
|
20
|
+
licenseTemplate: config.get('licenseTemplate')
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Update configuration values
|
|
25
|
+
*/
|
|
26
|
+
async updateConfig(updates) {
|
|
27
|
+
const config = vscode.workspace.getConfiguration(GitHubConfigurationManager.CONFIG_KEY);
|
|
28
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
29
|
+
await config.update(key, value, vscode.ConfigurationTarget.Global);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Show configuration wizard
|
|
34
|
+
*/
|
|
35
|
+
async showConfigurationWizard() {
|
|
36
|
+
const currentConfig = this.getConfig();
|
|
37
|
+
// Simple configuration dialog
|
|
38
|
+
const items = [
|
|
39
|
+
{
|
|
40
|
+
label: `Default Branch: ${currentConfig.defaultBranch}`,
|
|
41
|
+
description: 'Change default branch name'
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
label: `Documentation: ${currentConfig.includeDocumentation ? 'Enabled' : 'Disabled'}`,
|
|
45
|
+
description: 'Toggle automatic documentation generation'
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
label: `Build Scripts: ${currentConfig.includeBuildScripts ? 'Enabled' : 'Disabled'}`,
|
|
49
|
+
description: 'Toggle GitHub Actions workflows'
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: `Repository Visibility: ${currentConfig.respositoryVisibility}`,
|
|
53
|
+
description: 'Change default repository visibility'
|
|
54
|
+
}
|
|
55
|
+
];
|
|
56
|
+
const selection = await vscode.window.showQuickPick(items, {
|
|
57
|
+
title: 'GitHub Configuration',
|
|
58
|
+
placeHolder: 'Select a setting to change'
|
|
59
|
+
});
|
|
60
|
+
if (!selection)
|
|
61
|
+
return;
|
|
62
|
+
// Handle the selected configuration change
|
|
63
|
+
if (selection.label.startsWith('Default Branch')) {
|
|
64
|
+
const newBranch = await vscode.window.showInputBox({
|
|
65
|
+
title: 'Default Branch',
|
|
66
|
+
prompt: 'Enter default branch name',
|
|
67
|
+
value: currentConfig.defaultBranch
|
|
68
|
+
});
|
|
69
|
+
if (newBranch) {
|
|
70
|
+
await this.updateConfig({ defaultBranch: newBranch });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if (selection.label.startsWith('Documentation')) {
|
|
74
|
+
await this.updateConfig({ includeDocumentation: !currentConfig.includeDocumentation });
|
|
75
|
+
}
|
|
76
|
+
else if (selection.label.startsWith('Build Scripts')) {
|
|
77
|
+
await this.updateConfig({ includeBuildScripts: !currentConfig.includeBuildScripts });
|
|
78
|
+
}
|
|
79
|
+
else if (selection.label.startsWith('Repository Visibility')) {
|
|
80
|
+
const visibility = await vscode.window.showQuickPick([
|
|
81
|
+
{ label: 'Public', description: 'Anyone can see this repository' },
|
|
82
|
+
{ label: 'Private', description: 'Only you can see this repository' }
|
|
83
|
+
], {
|
|
84
|
+
title: 'Repository Visibility',
|
|
85
|
+
placeHolder: 'Choose default visibility for new repositories'
|
|
86
|
+
});
|
|
87
|
+
if (visibility) {
|
|
88
|
+
await this.updateConfig({
|
|
89
|
+
respositoryVisibility: visibility.label.toLowerCase()
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
vscode.window.showInformationMessage('GitHub configuration updated!');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
GitHubConfigurationManager.CONFIG_KEY = 'isdl.github';
|
|
97
|
+
/**
|
|
98
|
+
* Simple validation utilities
|
|
99
|
+
*/
|
|
100
|
+
export class GitHubValidation {
|
|
101
|
+
/**
|
|
102
|
+
* Validate repository name
|
|
103
|
+
*/
|
|
104
|
+
static validateRepositoryName(name) {
|
|
105
|
+
if (!name)
|
|
106
|
+
return 'Repository name is required';
|
|
107
|
+
if (!/^[a-zA-Z0-9._-]+$/.test(name))
|
|
108
|
+
return 'Invalid characters in repository name';
|
|
109
|
+
if (name.length > 100)
|
|
110
|
+
return 'Repository name too long';
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Validate system files
|
|
115
|
+
*/
|
|
116
|
+
static async validateSystemFiles(workspaceFolder, repositoryManager) {
|
|
117
|
+
const errors = [];
|
|
118
|
+
// Check if ISDL files exist
|
|
119
|
+
const isdlFiles = await vscode.workspace.findFiles('**/*.isdl', null, 1);
|
|
120
|
+
if (isdlFiles.length === 0) {
|
|
121
|
+
errors.push('No ISDL files found in workspace');
|
|
122
|
+
}
|
|
123
|
+
// Check if system has been generated
|
|
124
|
+
const config = vscode.workspace.getConfiguration('isdl');
|
|
125
|
+
const lastSelectedFolder = config.get('lastSelectedFolder');
|
|
126
|
+
if (!lastSelectedFolder) {
|
|
127
|
+
errors.push('No generated system files found. Please generate your system first.');
|
|
128
|
+
}
|
|
129
|
+
return errors;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=githubConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"githubConfig.js","sourceRoot":"","sources":["../../../src/extension/github/githubConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAcjC;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAGnC;;OAEG;IACH,SAAS;QACL,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAExF,OAAO;YACH,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC;YAClD,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC;YAC9D,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC;YAC5D,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACpD,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,qBAAqB,CAAC;YACjE,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC;YAC5C,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC;YACxD,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC;YACnE,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;SACjD,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAwC;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAExF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAChD,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;SACtE;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEvC,8BAA8B;QAC9B,MAAM,KAAK,GAA2B;YAClC;gBACI,KAAK,EAAE,mBAAmB,aAAa,CAAC,aAAa,EAAE;gBACvD,WAAW,EAAE,4BAA4B;aAC5C;YACD;gBACI,KAAK,EAAE,kBAAkB,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;gBACtF,WAAW,EAAE,2CAA2C;aAC3D;YACD;gBACI,KAAK,EAAE,kBAAkB,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;gBACrF,WAAW,EAAE,iCAAiC;aACjD;YACD;gBACI,KAAK,EAAE,0BAA0B,aAAa,CAAC,qBAAqB,EAAE;gBACtE,WAAW,EAAE,sCAAsC;aACtD;SACJ,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;YACvD,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE,4BAA4B;SAC5C,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,2CAA2C;QAC3C,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;YAC9C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC/C,KAAK,EAAE,gBAAgB;gBACvB,MAAM,EAAE,2BAA2B;gBACnC,KAAK,EAAE,aAAa,CAAC,aAAa;aACrC,CAAC,CAAC;YACH,IAAI,SAAS,EAAE;gBACX,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;aACzD;SACJ;aAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC,CAAC;SAC1F;aAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;YACpD,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC;SACxF;aAAM,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE;YAC5D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;gBACjD,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;gBAClE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kCAAkC,EAAE;aACxE,EAAE;gBACC,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EAAE,gDAAgD;aAChE,CAAC,CAAC;YACH,IAAI,UAAU,EAAE;gBACZ,MAAM,IAAI,CAAC,YAAY,CAAC;oBACpB,qBAAqB,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,EAA0B;iBAChF,CAAC,CAAC;aACN;SACJ;QAED,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,+BAA+B,CAAC,CAAC;IAC1E,CAAC;;AA/FuB,qCAAU,GAAG,aAAa,CAAC;AAkGvD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACzB;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,IAAY;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,6BAA6B,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,uCAAuC,CAAC;QACpF,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;YAAE,OAAO,0BAA0B,CAAC;QACzD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAC5B,eAAuC,EACvC,iBAAsB;QAEtB,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,4BAA4B;QAC5B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;SACnD;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,kBAAkB,GAAuB,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAChF,IAAI,CAAC,kBAAkB,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;SACtF;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
|