aurora-langium 0.0.1

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.
Files changed (47) hide show
  1. package/bin/cli.js +4 -0
  2. package/out/cli/cli-util.d.ts +9 -0
  3. package/out/cli/cli-util.js +39 -0
  4. package/out/cli/cli-util.js.map +1 -0
  5. package/out/cli/generator.d.ts +2 -0
  6. package/out/cli/generator.js +19 -0
  7. package/out/cli/generator.js.map +1 -0
  8. package/out/cli/main.d.ts +5 -0
  9. package/out/cli/main.js +32 -0
  10. package/out/cli/main.js.map +1 -0
  11. package/out/extension/main.cjs +18109 -0
  12. package/out/extension/main.cjs.map +7 -0
  13. package/out/extension/main.d.ts +3 -0
  14. package/out/extension/main.js +37 -0
  15. package/out/extension/main.js.map +1 -0
  16. package/out/language/aurora-module.d.ts +41 -0
  17. package/out/language/aurora-module.js +42 -0
  18. package/out/language/aurora-module.js.map +1 -0
  19. package/out/language/aurora-validator.d.ts +13 -0
  20. package/out/language/aurora-validator.js +25 -0
  21. package/out/language/aurora-validator.js.map +1 -0
  22. package/out/language/generated/ast.d.ts +249 -0
  23. package/out/language/generated/ast.js +375 -0
  24. package/out/language/generated/ast.js.map +1 -0
  25. package/out/language/generated/grammar.d.ts +6 -0
  26. package/out/language/generated/grammar.js +2436 -0
  27. package/out/language/generated/grammar.js.map +1 -0
  28. package/out/language/generated/module.d.ts +12 -0
  29. package/out/language/generated/module.js +20 -0
  30. package/out/language/generated/module.js.map +1 -0
  31. package/out/language/main.cjs +33292 -0
  32. package/out/language/main.cjs.map +7 -0
  33. package/out/language/main.d.ts +1 -0
  34. package/out/language/main.js +11 -0
  35. package/out/language/main.js.map +1 -0
  36. package/package.json +81 -0
  37. package/src/cli/cli-util.ts +51 -0
  38. package/src/cli/generator.ts +22 -0
  39. package/src/cli/main.ts +42 -0
  40. package/src/extension/main.ts +51 -0
  41. package/src/language/aurora-module.ts +68 -0
  42. package/src/language/aurora-validator.ts +31 -0
  43. package/src/language/aurora.langium +130 -0
  44. package/src/language/generated/ast.ts +668 -0
  45. package/src/language/generated/grammar.ts +2438 -0
  46. package/src/language/generated/module.ts +24 -0
  47. package/src/language/main.ts +13 -0
package/bin/cli.js ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+
3
+ import main from '../out/cli/main.js';
4
+ main();
@@ -0,0 +1,9 @@
1
+ import type { AstNode, LangiumCoreServices, LangiumDocument } from 'langium';
2
+ export declare function extractDocument(fileName: string, services: LangiumCoreServices): Promise<LangiumDocument>;
3
+ export declare function extractAstNode<T extends AstNode>(fileName: string, services: LangiumCoreServices): Promise<T>;
4
+ interface FilePathData {
5
+ destination: string;
6
+ name: string;
7
+ }
8
+ export declare function extractDestinationAndName(filePath: string, destination: string | undefined): FilePathData;
9
+ export {};
@@ -0,0 +1,39 @@
1
+ import chalk from 'chalk';
2
+ import * as path from 'node:path';
3
+ import * as fs from 'node:fs';
4
+ import { URI } from 'langium';
5
+ export async function extractDocument(fileName, services) {
6
+ var _a;
7
+ const extensions = services.LanguageMetaData.fileExtensions;
8
+ if (!extensions.includes(path.extname(fileName))) {
9
+ console.error(chalk.yellow(`Please choose a file with one of these extensions: ${extensions}.`));
10
+ process.exit(1);
11
+ }
12
+ if (!fs.existsSync(fileName)) {
13
+ console.error(chalk.red(`File ${fileName} does not exist.`));
14
+ process.exit(1);
15
+ }
16
+ const document = await services.shared.workspace.LangiumDocuments.getOrCreateDocument(URI.file(path.resolve(fileName)));
17
+ await services.shared.workspace.DocumentBuilder.build([document], { validation: true });
18
+ const validationErrors = ((_a = document.diagnostics) !== null && _a !== void 0 ? _a : []).filter(e => e.severity === 1);
19
+ if (validationErrors.length > 0) {
20
+ console.error(chalk.red('There are validation errors:'));
21
+ for (const validationError of validationErrors) {
22
+ console.error(chalk.red(`line ${validationError.range.start.line + 1}: ${validationError.message} [${document.textDocument.getText(validationError.range)}]`));
23
+ }
24
+ process.exit(1);
25
+ }
26
+ return document;
27
+ }
28
+ export async function extractAstNode(fileName, services) {
29
+ var _a;
30
+ return (_a = (await extractDocument(fileName, services)).parseResult) === null || _a === void 0 ? void 0 : _a.value;
31
+ }
32
+ export function extractDestinationAndName(filePath, destination) {
33
+ filePath = path.basename(filePath, path.extname(filePath)).replace(/[.-]/g, '');
34
+ return {
35
+ destination: destination !== null && destination !== void 0 ? destination : path.join(path.dirname(filePath), 'generated'),
36
+ name: path.basename(filePath)
37
+ };
38
+ }
39
+ //# sourceMappingURL=cli-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-util.js","sourceRoot":"","sources":["../../src/cli/cli-util.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,QAA6B;;IACjF,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;QAC9C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,sDAAsD,UAAU,GAAG,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,QAAQ,kBAAkB,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxH,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAExF,MAAM,gBAAgB,GAAG,CAAC,MAAA,QAAQ,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;IACpF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzD,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE;YAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CACnB,QAAQ,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,eAAe,CAAC,OAAO,KAAK,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CACvI,CAAC,CAAC;SACN;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACnB;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAoB,QAAgB,EAAE,QAA6B;;IACnG,OAAO,MAAA,CAAC,MAAM,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,0CAAE,KAAU,CAAC;AAC/E,CAAC;AAOD,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,WAA+B;IACvF,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO;QACH,WAAW,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;QAC1E,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAChC,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { PCM } from '../language/generated/ast.js';
2
+ export declare function generateJavaScript(model: PCM, filePath: string, destination: string | undefined): string;
@@ -0,0 +1,19 @@
1
+ import { expandToNode, joinToNode, toString } from 'langium/generate';
2
+ import * as fs from 'node:fs';
3
+ import * as path from 'node:path';
4
+ import { extractDestinationAndName } from './cli-util.js';
5
+ export function generateJavaScript(model, filePath, destination) {
6
+ const data = extractDestinationAndName(filePath, destination);
7
+ const generatedFilePath = `${path.join(data.destination, data.name)}.js`;
8
+ const fileNode = expandToNode `
9
+ "use strict";
10
+
11
+ ${joinToNode(model.imports, greeting => `console.log('Hello, ${greeting.importedNamespace}!');`, { appendNewLineIfNotEmpty: true })}
12
+ `.appendNewLineIfNotEmpty();
13
+ if (!fs.existsSync(data.destination)) {
14
+ fs.mkdirSync(data.destination, { recursive: true });
15
+ }
16
+ fs.writeFileSync(generatedFilePath, toString(fileNode));
17
+ return generatedFilePath;
18
+ }
19
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/cli/generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,UAAU,kBAAkB,CAAC,KAAU,EAAE,QAAgB,EAAE,WAA+B;IAC5F,MAAM,IAAI,GAAG,yBAAyB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC9D,MAAM,iBAAiB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAEzE,MAAM,QAAQ,GAAG,YAAY,CAAA;;;UAGvB,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,uBAAuB,QAAQ,CAAC,iBAAiB,MAAM,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;KACtI,CAAC,uBAAuB,EAAE,CAAC;IAE5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAClC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KACvD;IACD,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,OAAO,iBAAiB,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const generateAction: (fileName: string, opts: GenerateOptions) => Promise<void>;
2
+ export type GenerateOptions = {
3
+ destination?: string;
4
+ };
5
+ export default function (): void;
@@ -0,0 +1,32 @@
1
+ import chalk from 'chalk';
2
+ import { Command } from 'commander';
3
+ import { AuroraLanguageMetaData } from '../language/generated/module.js';
4
+ import { createAuroraServices } from '../language/aurora-module.js';
5
+ import { extractAstNode } from './cli-util.js';
6
+ import { generateJavaScript } from './generator.js';
7
+ import { NodeFileSystem } from 'langium/node';
8
+ import * as url from 'node:url';
9
+ import * as fs from 'node:fs/promises';
10
+ import * as path from 'node:path';
11
+ const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
12
+ const packagePath = path.resolve(__dirname, '..', '..', 'package.json');
13
+ const packageContent = await fs.readFile(packagePath, 'utf-8');
14
+ export const generateAction = async (fileName, opts) => {
15
+ const services = createAuroraServices(NodeFileSystem).Aurora;
16
+ const PCM = await extractAstNode(fileName, services);
17
+ const generatedFilePath = generateJavaScript(PCM, fileName, opts.destination);
18
+ console.log(chalk.green(`JavaScript code generated successfully: ${generatedFilePath}`));
19
+ };
20
+ export default function () {
21
+ const program = new Command();
22
+ program.version(JSON.parse(packageContent).version);
23
+ const fileExtensions = AuroraLanguageMetaData.fileExtensions.join(', ');
24
+ program
25
+ .command('generate')
26
+ .argument('<file>', `source file (possible file extensions: ${fileExtensions})`)
27
+ .option('-d, --destination <dir>', 'destination directory of generating')
28
+ .description('generates JavaScript code that prints "Hello, {name}!" for each greeting in a source file')
29
+ .action(generateAction);
30
+ program.parse(process.argv);
31
+ }
32
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACxE,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,QAAgB,EAAE,IAAqB,EAAiB,EAAE;IAC3F,MAAM,QAAQ,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAM,cAAc,CAAM,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2CAA2C,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC,CAAC;AAMF,MAAM,CAAC,OAAO;IACV,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,cAAc,GAAG,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,OAAO;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,QAAQ,CAAC,QAAQ,EAAE,0CAA0C,cAAc,GAAG,CAAC;SAC/E,MAAM,CAAC,yBAAyB,EAAE,qCAAqC,CAAC;SACxE,WAAW,CAAC,2FAA2F,CAAC;SACxG,MAAM,CAAC,cAAc,CAAC,CAAC;IAE5B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}