@makeshift27015/typescript-yaml-plugin 1.0.11 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const eslint_config_1 = __importDefault(require("@makeshift27015/eslint-config"));
7
+ const node_path_1 = require("node:path");
8
+ const node_url_1 = require("node:url");
9
+ exports.default = await (0, eslint_config_1.default)({
10
+ languageOptions: {
11
+ parserOptions: {
12
+ tsconfigRootDir: (0, node_path_1.dirname)((0, node_url_1.fileURLToPath)(import.meta.url)),
13
+ },
14
+ },
15
+ ignores: [
16
+ '**/node_modules/**',
17
+ ],
18
+ rules: {
19
+ '@typescript-eslint/require-await': 'off',
20
+ 'import-x/no-nodejs-modules': 'off',
21
+ 'no-param-reassign': 'off',
22
+ '@typescript-eslint/no-duplicate-enum-values': 'off',
23
+ // Way too much typing shenanigans going on for these
24
+ '@typescript-eslint/no-unnecessary-type-parameters': 'off',
25
+ '@typescript-eslint/explicit-function-return-type': 'off',
26
+ },
27
+ });
28
+ //# sourceMappingURL=eslint.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint.config.js","sourceRoot":"","sources":["../eslint.config.ts"],"names":[],"mappings":";;;;;AAAA,kFAAkD;AAClD,yCAAmC;AACnC,uCAAwC;AAExC,kBAAe,MAAM,IAAA,uBAAM,EAAC;IAC1B,eAAe,EAAE;QACf,aAAa,EAAE;YACb,eAAe,EAAE,IAAA,mBAAO,EAAC,IAAA,wBAAa,EAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzD;KACF;IACD,OAAO,EAAE;QACP,oBAAoB;KACrB;IACD,KAAK,EAAE;QACL,kCAAkC,EAAE,KAAK;QACzC,4BAA4B,EAAE,KAAK;QACnC,mBAAmB,EAAE,KAAK;QAC1B,6CAA6C,EAAE,KAAK;QACpD,qDAAqD;QACrD,mDAAmD,EAAE,KAAK;QAC1D,kDAAkD,EAAE,KAAK;KAC1D;CACF,CAAC,CAAA"}
package/dist/index.js CHANGED
@@ -2,28 +2,51 @@
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
- const fs_1 = __importDefault(require("fs"));
6
- const path_1 = __importDefault(require("path"));
5
+ const swagger_parser_1 = __importDefault(require("@apidevtools/swagger-parser"));
6
+ const deasync_1 = __importDefault(require("deasync"));
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
7
9
  const yaml_1 = __importDefault(require("yaml"));
8
- const hasConstAttribute = (ts_, node) => {
9
- var _a, _b;
10
- const importDecl = ts_.isImportDeclaration(node.parent) ? node.parent : (_a = node.parent) === null || _a === void 0 ? void 0 : _a.parent;
10
+ const dereferenceSync = (0, deasync_1.default)((api, callback) => {
11
+ swagger_parser_1.default.dereference(api, (err, doc) => {
12
+ callback(err, doc);
13
+ });
14
+ });
15
+ const getStringAttribute = (ts_, node, attributeName) => {
16
+ const importDecl = ts_.isImportDeclaration(node.parent) ? node.parent : node.parent?.parent;
11
17
  if (!importDecl || !ts_.isImportDeclaration(importDecl))
12
- return false;
13
- const attributes = (_b = importDecl.attributes) === null || _b === void 0 ? void 0 : _b.elements;
18
+ return undefined;
19
+ const attributes = importDecl.attributes?.elements;
14
20
  if (!attributes)
15
- return false;
16
- return attributes.some(attr => attr.name.text === 'const' &&
17
- ts_.isStringLiteral(attr.value) &&
18
- attr.value.text === 'true');
21
+ return undefined;
22
+ const attribute = attributes.find(attr => attr.name.text === attributeName);
23
+ if (!attribute)
24
+ return undefined;
25
+ return ts_.isStringLiteral(attribute.value) ? attribute.value.text : undefined;
26
+ };
27
+ const hasStringAttribute = (ts_, node, attributeName, attributeValue) => {
28
+ const value = getStringAttribute(ts_, node, attributeName);
29
+ if (attributeValue) {
30
+ return value === attributeValue;
31
+ }
32
+ return !!value;
33
+ };
34
+ const parseAsOpenAPIDocument = (content, version) => {
35
+ // getScriptSnapshot expects a synchronous function, so we have to wrap the async OpenApiParser calls
36
+ try {
37
+ return dereferenceSync(content);
38
+ }
39
+ catch (error) {
40
+ throw new Error(`[typescript-plugin-yaml] OpenAPI parse error:\n${error}`);
41
+ }
19
42
  };
20
43
  module.exports = ({ typescript: ts_ }) => ({
21
44
  create: (info) => {
22
- var _a;
23
- const logger = info.project.projectService.logger;
45
+ const { logger } = info.project.projectService;
24
46
  const { languageServiceHost, languageService } = info;
25
47
  const constImports = new Set();
26
- const getScriptKind = (_a = languageServiceHost.getScriptKind) === null || _a === void 0 ? void 0 : _a.bind(languageServiceHost);
48
+ let openAPIVersion;
49
+ const getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost);
27
50
  languageServiceHost.getScriptKind = fileName => {
28
51
  if (!getScriptKind)
29
52
  return ts_.ScriptKind.Unknown;
@@ -38,16 +61,34 @@ module.exports = ({ typescript: ts_ }) => ({
38
61
  return getScriptSnapshot(fileName);
39
62
  if (!fileExists(fileName))
40
63
  return;
41
- const content = fs_1.default.readFileSync(fileName, 'utf8');
64
+ const content = node_fs_1.default.readFileSync(fileName, 'utf8');
42
65
  let object;
66
+ let text = '';
67
+ let asConst = '';
43
68
  try {
44
69
  object = yaml_1.default.parse(content);
45
70
  }
46
71
  catch (error) {
47
72
  logger.info(`[typescript-plugin-yaml] YAML.parse error:\n${error}`);
48
73
  }
49
- const asConst = constImports.has(fileName) ? ' as const' : '';
50
- const text = `export default ${JSON.stringify(object)}${asConst};`;
74
+ if (constImports.has(fileName)) {
75
+ asConst = 'as const';
76
+ }
77
+ if (openAPIVersion) {
78
+ const parsedDoc = parseAsOpenAPIDocument(object, openAPIVersion);
79
+ text = `import type { OpenAPI } from 'openapi-types'
80
+ const parsed = ${JSON.stringify(parsedDoc)} ${asConst}
81
+ export default parsed`;
82
+ // This overrode the asConst :/
83
+ // if (openAPIVersion) {
84
+ // text += ' satisfies OpenAPI.OpenAPIV' + openAPIVersion.replace('.', '_')
85
+ // } else {
86
+ // text += ' satisfies OpenAPI.Document'
87
+ // }
88
+ }
89
+ else {
90
+ text = `export default ${JSON.stringify(object)} ${asConst}`;
91
+ }
51
92
  return ts_.ScriptSnapshot.fromString(text);
52
93
  };
53
94
  const resolveModuleNameLiterals = languageServiceHost.resolveModuleNameLiterals.bind(languageServiceHost);
@@ -57,46 +98,48 @@ module.exports = ({ typescript: ts_ }) => ({
57
98
  if (!/\.ya?ml$/.test(moduleName))
58
99
  return resolvedModule;
59
100
  const resolvedFileName = resolvedModule.failedLookupLocations[1].slice(0, -3);
60
- if (hasConstAttribute(ts_, moduleLiteral)) {
101
+ if (hasStringAttribute(ts_, moduleLiteral, 'const', 'true')) {
61
102
  constImports.add(resolvedFileName);
62
103
  }
104
+ if (hasStringAttribute(ts_, moduleLiteral, 'openAPI', 'true') || hasStringAttribute(ts_, moduleLiteral, 'openAPIVersion')) {
105
+ openAPIVersion = getStringAttribute(ts_, moduleLiteral, 'openAPIVersion') ?? '3.1.0';
106
+ }
63
107
  return {
64
108
  ...resolvedModule,
65
109
  resolvedModule: {
66
110
  extension: ts_.Extension.Ts,
67
111
  isExternalLibraryImport: false,
68
- resolvedFileName
69
- }
112
+ resolvedFileName,
113
+ },
70
114
  };
71
115
  });
72
116
  const languageServiceOverride = {
73
117
  getCompletionsAtPosition(fileName, position, options, formattingSettings) {
74
- var _a;
75
118
  const completions = languageService.getCompletionsAtPosition(fileName, position, options, formattingSettings);
76
119
  if (!completions)
77
120
  return completions;
78
- const sourceFile = (_a = info.languageService.getProgram()) === null || _a === void 0 ? void 0 : _a.getSourceFile(fileName);
121
+ const sourceFile = info.languageService.getProgram()?.getSourceFile(fileName);
79
122
  if (!sourceFile)
80
123
  return completions;
81
124
  const token = ts_.getTokenAtPosition(sourceFile, position);
82
125
  if (!ts_.isModuleSpecifierLike(token))
83
126
  return completions;
84
127
  const [{ failedLookupLocations }] = resolveModuleNameLiterals([token], fileName, undefined, info.project.getCompilerOptions(), sourceFile, undefined);
85
- fs_1.default.globSync(`${path_1.default.dirname(failedLookupLocations[0])}/*.{yaml,yml}`)
86
- .map(fileName => path_1.default.basename(fileName))
128
+ node_fs_1.default.globSync(`${node_path_1.default.dirname(failedLookupLocations[0])}/*.{yaml,yml}`)
129
+ .map(fileName => node_path_1.default.basename(fileName))
87
130
  .forEach(baseFileName => completions.entries.push({
88
131
  name: baseFileName,
89
132
  kind: ts_.ScriptElementKind.scriptElement,
90
133
  kindModifiers: '.yaml',
91
- sortText: '11'
134
+ sortText: '11',
92
135
  }));
93
136
  return completions;
94
- }
137
+ },
95
138
  };
96
139
  const languageServiceProxy = new Proxy(languageService, {
97
- get: (target, key) => { var _a; return (_a = languageServiceOverride[key]) !== null && _a !== void 0 ? _a : target[key]; }
140
+ get: (target, key) => languageServiceOverride[key] ?? target[key],
98
141
  });
99
142
  return languageServiceProxy;
100
- }
143
+ },
101
144
  });
102
145
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ const swagger_parser_1 = __importDefault(require("@apidevtools/swagger-parser"));
6
+ const deasync_1 = __importDefault(require("deasync"));
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const yaml_1 = __importDefault(require("yaml"));
10
+ const dereferenceSync = (0, deasync_1.default)((api, callback) => {
11
+ swagger_parser_1.default.dereference(api, (err, doc) => {
12
+ callback(err, doc);
13
+ });
14
+ });
15
+ const getStringAttribute = (ts_, node, attributeName) => {
16
+ const importDecl = ts_.isImportDeclaration(node.parent) ? node.parent : node.parent?.parent;
17
+ if (!importDecl || !ts_.isImportDeclaration(importDecl))
18
+ return undefined;
19
+ const attributes = importDecl.attributes?.elements;
20
+ if (!attributes)
21
+ return undefined;
22
+ const attribute = attributes.find(attr => attr.name.text === attributeName);
23
+ if (!attribute)
24
+ return undefined;
25
+ return ts_.isStringLiteral(attribute.value) ? attribute.value.text : undefined;
26
+ };
27
+ const hasStringAttribute = (ts_, node, attributeName, attributeValue) => {
28
+ const value = getStringAttribute(ts_, node, attributeName);
29
+ if (attributeValue) {
30
+ return value === attributeValue;
31
+ }
32
+ return !!value;
33
+ };
34
+ const parseAsOpenAPIDocument = (content, version) => {
35
+ // getScriptSnapshot expects a synchronous function, so we have to wrap the async OpenApiParser calls
36
+ try {
37
+ return dereferenceSync(content);
38
+ }
39
+ catch (error) {
40
+ throw new Error(`[typescript-plugin-yaml] OpenAPI parse error:\n${error}`);
41
+ }
42
+ };
43
+ module.exports = ({ typescript: ts_ }) => ({
44
+ create: (info) => {
45
+ const { logger } = info.project.projectService;
46
+ const { languageServiceHost, languageService } = info;
47
+ const constImports = new Set();
48
+ let openAPIVersion;
49
+ const getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost);
50
+ languageServiceHost.getScriptKind = fileName => {
51
+ if (!getScriptKind)
52
+ return ts_.ScriptKind.Unknown;
53
+ if (/\.ya?ml$/.test(fileName))
54
+ return ts_.ScriptKind.TS;
55
+ return getScriptKind(fileName);
56
+ };
57
+ const fileExists = languageServiceHost.fileExists.bind(languageServiceHost);
58
+ const getScriptSnapshot = languageServiceHost.getScriptSnapshot.bind(languageServiceHost);
59
+ languageServiceHost.getScriptSnapshot = fileName => {
60
+ if (!/\.ya?ml$/.test(fileName))
61
+ return getScriptSnapshot(fileName);
62
+ if (!fileExists(fileName))
63
+ return;
64
+ const content = node_fs_1.default.readFileSync(fileName, 'utf8');
65
+ let object;
66
+ let text = '';
67
+ try {
68
+ object = yaml_1.default.parse(content);
69
+ }
70
+ catch (error) {
71
+ logger.info(`[typescript-plugin-yaml] YAML.parse error:\n${error}`);
72
+ }
73
+ if (openAPIVersion) {
74
+ text = `export default ${JSON.stringify(parseAsOpenAPIDocument(object, openAPIVersion))}`;
75
+ }
76
+ else {
77
+ text = `export default ${JSON.stringify(object)}`;
78
+ if (constImports.has(fileName)) {
79
+ text += ' as const';
80
+ }
81
+ }
82
+ return ts_.ScriptSnapshot.fromString(text);
83
+ };
84
+ const resolveModuleNameLiterals = languageServiceHost.resolveModuleNameLiterals.bind(languageServiceHost);
85
+ languageServiceHost.resolveModuleNameLiterals = (moduleLiterals, containingFile, ...rest) => resolveModuleNameLiterals(moduleLiterals, containingFile, ...rest).map((resolvedModule, index) => {
86
+ const moduleLiteral = moduleLiterals[index];
87
+ const moduleName = moduleLiteral.text;
88
+ if (!/\.ya?ml$/.test(moduleName))
89
+ return resolvedModule;
90
+ const resolvedFileName = resolvedModule.failedLookupLocations[1].slice(0, -3);
91
+ if (hasStringAttribute(ts_, moduleLiteral, 'const', 'true')) {
92
+ constImports.add(resolvedFileName);
93
+ }
94
+ if (hasStringAttribute(ts_, moduleLiteral, 'openAPI', 'true') || hasStringAttribute(ts_, moduleLiteral, 'openAPIVersion')) {
95
+ openAPIVersion = getStringAttribute(ts_, moduleLiteral, 'openAPIVersion') ?? '3.1.0';
96
+ }
97
+ return {
98
+ ...resolvedModule,
99
+ resolvedModule: {
100
+ extension: ts_.Extension.Ts,
101
+ isExternalLibraryImport: false,
102
+ resolvedFileName,
103
+ },
104
+ };
105
+ });
106
+ const languageServiceOverride = {
107
+ getCompletionsAtPosition(fileName, position, options, formattingSettings) {
108
+ const completions = languageService.getCompletionsAtPosition(fileName, position, options, formattingSettings);
109
+ if (!completions)
110
+ return completions;
111
+ const sourceFile = info.languageService.getProgram()?.getSourceFile(fileName);
112
+ if (!sourceFile)
113
+ return completions;
114
+ const token = ts_.getTokenAtPosition(sourceFile, position);
115
+ if (!ts_.isModuleSpecifierLike(token))
116
+ return completions;
117
+ const [{ failedLookupLocations }] = resolveModuleNameLiterals([token], fileName, undefined, info.project.getCompilerOptions(), sourceFile, undefined);
118
+ node_fs_1.default.globSync(`${node_path_1.default.dirname(failedLookupLocations[0])}/*.{yaml,yml}`)
119
+ .map(fileName => node_path_1.default.basename(fileName))
120
+ .forEach(baseFileName => completions.entries.push({
121
+ name: baseFileName,
122
+ kind: ts_.ScriptElementKind.scriptElement,
123
+ kindModifiers: '.yaml',
124
+ sortText: '11',
125
+ }));
126
+ return completions;
127
+ },
128
+ };
129
+ const languageServiceProxy = new Proxy(languageService, {
130
+ get: (target, key) => languageServiceOverride[key] ?? target[key],
131
+ });
132
+ return languageServiceProxy;
133
+ },
134
+ });
135
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makeshift27015/typescript-yaml-plugin",
3
- "version": "1.0.11",
3
+ "version": "1.1.0",
4
4
  "description": "TypeScript Language Service plugin for YAML",
5
5
  "keywords": [
6
6
  "typescript",
@@ -15,6 +15,7 @@
15
15
  "autocomplete"
16
16
  ],
17
17
  "author": "João Cabral Pinto",
18
+ "packageManager": "bun@1.3.3",
18
19
  "repository": {
19
20
  "type": "git",
20
21
  "url": "git+https://github.com/cabralpinto/typescript-yaml-plugin.git"
@@ -37,10 +38,13 @@
37
38
  "typescript": ">=5.0"
38
39
  },
39
40
  "dependencies": {
41
+ "@apidevtools/swagger-parser": "^12.1.0",
42
+ "deasync": "^0.1.31",
40
43
  "typescript": "^5.9.3",
41
44
  "yaml": "^2.8.1"
42
45
  },
43
46
  "devDependencies": {
47
+ "@types/deasync": "^0.1.5",
44
48
  "@types/node": "^24.2.0",
45
49
  "prettier": "^3.6.2"
46
50
  }