@neurodevs/meta-node 0.13.0 → 0.14.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.
Files changed (25) hide show
  1. package/build/__tests__/AbstractPackageTest.d.ts +21 -0
  2. package/build/__tests__/AbstractPackageTest.js +62 -1
  3. package/build/__tests__/AbstractPackageTest.js.map +1 -1
  4. package/build/__tests__/impl/TypescriptClassSnippetSuite.test.d.ts +21 -2
  5. package/build/__tests__/impl/TypescriptClassSnippetSuite.test.js +200 -35
  6. package/build/__tests__/impl/TypescriptClassSnippetSuite.test.js.map +1 -1
  7. package/build/__tests__/impl/VscodeSnippetKeybinder.test.d.ts +0 -9
  8. package/build/__tests__/impl/VscodeSnippetKeybinder.test.js +2 -25
  9. package/build/__tests__/impl/VscodeSnippetKeybinder.test.js.map +1 -1
  10. package/build/impl/TypescriptClassSnippetSuite.d.ts +39 -1
  11. package/build/impl/TypescriptClassSnippetSuite.js +230 -1
  12. package/build/impl/TypescriptClassSnippetSuite.js.map +1 -1
  13. package/build/scripts/installSnippetSuite.d.ts +1 -0
  14. package/build/scripts/installSnippetSuite.js +17 -0
  15. package/build/scripts/installSnippetSuite.js.map +1 -0
  16. package/build/testDoubles/SnippetSuite/FakeSnippetSuite.d.ts +2 -0
  17. package/build/testDoubles/SnippetSuite/FakeSnippetSuite.js +5 -0
  18. package/build/testDoubles/SnippetSuite/FakeSnippetSuite.js.map +1 -1
  19. package/package.json +1 -1
  20. package/src/__tests__/AbstractPackageTest.ts +51 -1
  21. package/src/__tests__/impl/TypescriptClassSnippetSuite.test.ts +248 -2
  22. package/src/__tests__/impl/VscodeSnippetKeybinder.test.ts +2 -42
  23. package/src/impl/TypescriptClassSnippetSuite.ts +292 -1
  24. package/src/scripts/installSnippetSuite.ts +15 -0
  25. package/src/testDoubles/SnippetSuite/FakeSnippetSuite.ts +6 -0
@@ -2,4 +2,25 @@ import AbstractSpruceTest from '@sprucelabs/test-utils';
2
2
  export default class AbstractPackageTest extends AbstractSpruceTest {
3
3
  protected static beforeEach(): Promise<void>;
4
4
  protected static normalize(input: string): string;
5
+ protected static readonly vscodeDir: string;
6
+ protected static get snippetsPath(): string;
7
+ protected static readonly originalSnippet: {
8
+ [x: string]: {};
9
+ };
10
+ protected static readonly originalSnippets: {
11
+ [x: string]: {};
12
+ };
13
+ protected static readonly originalSnippetsFile: string;
14
+ protected static get keybindingsPath(): string;
15
+ protected static readonly originalKeybinding: {
16
+ key: string;
17
+ command: string;
18
+ };
19
+ protected static readonly originalKeybindings: {
20
+ key: string;
21
+ command: string;
22
+ }[];
23
+ protected static readonly originalKeybindingsFile: string;
24
+ protected static setFakeSnippetsFile(): void;
25
+ protected static setFakeKeybindingsFile(): void;
5
26
  }
@@ -1,9 +1,45 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
38
+ var _a;
5
39
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const test_utils_1 = __importDefault(require("@sprucelabs/test-utils"));
40
+ const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
41
+ const fake_node_core_1 = require("@neurodevs/fake-node-core");
42
+ const expandHomeDir_1 = __importDefault(require("../scripts/expandHomeDir"));
7
43
  class AbstractPackageTest extends test_utils_1.default {
8
44
  static async beforeEach() {
9
45
  await super.beforeEach();
@@ -11,6 +47,31 @@ class AbstractPackageTest extends test_utils_1.default {
11
47
  static normalize(input) {
12
48
  return input.replace(/\s+/g, ' ').trim();
13
49
  }
50
+ static get snippetsPath() {
51
+ return `${this.vscodeDir}/snippets/custom.code-snippets`;
52
+ }
53
+ static get keybindingsPath() {
54
+ return `${this.vscodeDir}/keybindings.json`;
55
+ }
56
+ static setFakeSnippetsFile() {
57
+ (0, fake_node_core_1.setFakeReadFileResult)(this.snippetsPath, this.originalSnippetsFile);
58
+ }
59
+ static setFakeKeybindingsFile() {
60
+ (0, fake_node_core_1.setFakeReadFileResult)(this.keybindingsPath, this.originalKeybindingsFile);
61
+ }
14
62
  }
63
+ _a = AbstractPackageTest;
64
+ AbstractPackageTest.vscodeDir = (0, expandHomeDir_1.default)('~/Library/Application Support/Code/User');
65
+ AbstractPackageTest.originalSnippet = { [(0, test_utils_1.generateId)()]: {} };
66
+ AbstractPackageTest.originalSnippets = {
67
+ ..._a.originalSnippet,
68
+ };
69
+ AbstractPackageTest.originalSnippetsFile = JSON.stringify(_a.originalSnippets, null, 4);
70
+ AbstractPackageTest.originalKeybinding = {
71
+ key: (0, test_utils_1.generateId)(),
72
+ command: (0, test_utils_1.generateId)(),
73
+ };
74
+ AbstractPackageTest.originalKeybindings = [_a.originalKeybinding];
75
+ AbstractPackageTest.originalKeybindingsFile = JSON.stringify(_a.originalKeybindings, null, 4);
15
76
  exports.default = AbstractPackageTest;
16
77
  //# sourceMappingURL=AbstractPackageTest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":";;;;;AAAA,wEAAuD;AAEvD,MAAqB,mBAAoB,SAAQ,oBAAkB;IACrD,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;IAC5B,CAAC;IAES,MAAM,CAAC,SAAS,CAAC,KAAa;QACpC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5C,CAAC;CACJ;AARD,sCAQC"}
1
+ {"version":3,"file":"AbstractPackageTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractPackageTest.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAuE;AACvE,8DAAiE;AACjE,6EAAoD;AAEpD,MAAqB,mBAAoB,SAAQ,oBAAkB;IACrD,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;IAC5B,CAAC;IAES,MAAM,CAAC,SAAS,CAAC,KAAa;QACpC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5C,CAAC;IAMS,MAAM,KAAK,YAAY;QAC7B,OAAO,GAAG,IAAI,CAAC,SAAS,gCAAgC,CAAA;IAC5D,CAAC;IAcS,MAAM,KAAK,eAAe;QAChC,OAAO,GAAG,IAAI,CAAC,SAAS,mBAAmB,CAAA;IAC/C,CAAC;IAeS,MAAM,CAAC,mBAAmB;QAChC,IAAA,sCAAqB,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAA;IACvE,CAAC;IAES,MAAM,CAAC,sBAAsB;QACnC,IAAA,sCAAqB,EACjB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,uBAAuB,CAC/B,CAAA;IACL,CAAC;;;AA9CyB,6BAAS,GAAG,IAAA,uBAAa,EAC/C,yCAAyC,CAC5C,AAFkC,CAElC;AAMyB,mCAAe,GAAG,EAAE,CAAC,IAAA,uBAAU,GAAE,CAAC,EAAE,EAAE,EAAE,AAAzB,CAAyB;AAExC,oCAAgB,GAAG;IACzC,GAAG,EAAI,CAAC,eAAe;CAC1B,AAFyC,CAEzC;AAEyB,wCAAoB,GAAG,IAAI,CAAC,SAAS,CAC3D,EAAI,CAAC,gBAAgB,EACrB,IAAI,EACJ,CAAC,CACJ,AAJ6C,CAI7C;AAMyB,sCAAkB,GAAG;IAC3C,GAAG,EAAE,IAAA,uBAAU,GAAE;IACjB,OAAO,EAAE,IAAA,uBAAU,GAAE;CACxB,AAH2C,CAG3C;AAEyB,uCAAmB,GAAG,CAAC,EAAI,CAAC,kBAAkB,CAAC,AAA5B,CAA4B;AAE/C,2CAAuB,GAAG,IAAI,CAAC,SAAS,CAC9D,EAAI,CAAC,mBAAmB,EACxB,IAAI,EACJ,CAAC,CACJ,AAJgD,CAIhD;kBA5CgB,mBAAmB"}
@@ -1,7 +1,26 @@
1
- import AbstractSpruceTest from '@sprucelabs/test-utils';
2
- export default class TypescriptClassSnippetSuiteTest extends AbstractSpruceTest {
1
+ import AbstractPackageTest from '../AbstractPackageTest';
2
+ export default class TypescriptClassSnippetSuiteTest extends AbstractPackageTest {
3
3
  private static instance;
4
4
  protected static beforeEach(): Promise<void>;
5
5
  protected static createsInstance(): Promise<void>;
6
+ protected static updatesGlobalSnippetsInVscode(): Promise<void>;
7
+ protected static doesNotWriteSnippetsFileIfContentsAreIdentical(): Promise<void>;
8
+ protected static updatesGlobalKeybindingsInVscode(): Promise<void>;
9
+ protected static doesNotWriteKeybindingsFileIfContentsAreIdentical(): Promise<void>;
10
+ private static install;
11
+ private static setFakeReadFile;
12
+ private static setFakeWriteFile;
13
+ private static get updatedSnippetsFile();
14
+ private static get snippetsBlock();
15
+ private static readonly snippetStartMarker;
16
+ private static readonly snippetEndMarker;
17
+ private static get updatedKeybindingsFile();
18
+ private static get keybindingBlock();
19
+ private static readonly keybindingStartMarker;
20
+ private static readonly keybindingEndMarker;
21
+ private static readonly snippets;
22
+ private static readonly indentedSnippets;
23
+ private static readonly keybindings;
24
+ private static readonly indentedKeybindings;
6
25
  private static TypescriptClassSnippetSuite;
7
26
  }
@@ -1,63 +1,228 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
23
7
  };
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
8
  var __importDefault = (this && this.__importDefault) || function (mod) {
42
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
43
10
  };
11
+ var _a;
44
12
  Object.defineProperty(exports, "__esModule", { value: true });
45
- const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
13
+ const test_utils_1 = require("@sprucelabs/test-utils");
14
+ const fake_node_core_1 = require("@neurodevs/fake-node-core");
46
15
  const TypescriptClassSnippetSuite_1 = __importDefault(require("../../impl/TypescriptClassSnippetSuite"));
47
- class TypescriptClassSnippetSuiteTest extends test_utils_1.default {
16
+ const AbstractPackageTest_1 = __importDefault(require("../AbstractPackageTest"));
17
+ class TypescriptClassSnippetSuiteTest extends AbstractPackageTest_1.default {
48
18
  static async beforeEach() {
49
19
  await super.beforeEach();
20
+ this.setFakeReadFile();
21
+ this.setFakeWriteFile();
22
+ this.setFakeSnippetsFile();
23
+ this.setFakeKeybindingsFile();
50
24
  this.instance = this.TypescriptClassSnippetSuite();
51
25
  }
52
26
  static async createsInstance() {
53
27
  test_utils_1.assert.isTruthy(this.instance, 'Failed to create instance!');
54
28
  }
29
+ static async updatesGlobalSnippetsInVscode() {
30
+ await this.instance.install();
31
+ test_utils_1.assert.isEqualDeep(fake_node_core_1.callsToWriteFile[0], {
32
+ file: this.snippetsPath,
33
+ data: this.updatedSnippetsFile,
34
+ options: undefined,
35
+ }, 'Written snippets file is incorrect!');
36
+ }
37
+ static async doesNotWriteSnippetsFileIfContentsAreIdentical() {
38
+ (0, fake_node_core_1.setFakeReadFileResult)(this.snippetsPath, this.updatedSnippetsFile);
39
+ await this.instance.install();
40
+ test_utils_1.assert.isEqual(fake_node_core_1.callsToWriteFile.filter((call) => call.file === this.snippetsPath)
41
+ .length, 0, 'Should not have written snippets file!');
42
+ }
43
+ static async updatesGlobalKeybindingsInVscode() {
44
+ await this.install();
45
+ test_utils_1.assert.isEqualDeep(fake_node_core_1.callsToWriteFile[1], {
46
+ file: this.keybindingsPath,
47
+ data: this.updatedKeybindingsFile,
48
+ options: undefined,
49
+ }, 'Written keybindings file is incorrect!');
50
+ }
51
+ static async doesNotWriteKeybindingsFileIfContentsAreIdentical() {
52
+ (0, fake_node_core_1.setFakeReadFileResult)(this.keybindingsPath, this.updatedKeybindingsFile);
53
+ await this.install();
54
+ test_utils_1.assert.isEqual(fake_node_core_1.callsToWriteFile.filter((call) => call.file === this.keybindingsPath).length, 0, 'Should not have written keybindings file!');
55
+ }
56
+ static async install() {
57
+ return this.instance.install();
58
+ }
59
+ static setFakeReadFile() {
60
+ TypescriptClassSnippetSuite_1.default.readFile =
61
+ fake_node_core_1.fakeReadFile;
62
+ (0, fake_node_core_1.resetCallsToReadFile)();
63
+ }
64
+ static setFakeWriteFile() {
65
+ TypescriptClassSnippetSuite_1.default.writeFile =
66
+ fake_node_core_1.fakeWriteFile;
67
+ (0, fake_node_core_1.resetCallsToWriteFile)();
68
+ }
69
+ static get updatedSnippetsFile() {
70
+ const lastBraceIdx = this.originalSnippetsFile.lastIndexOf('}');
71
+ const before = this.originalSnippetsFile.slice(0, lastBraceIdx);
72
+ return `${before}${this.snippetsBlock}\n}`;
73
+ }
74
+ static get snippetsBlock() {
75
+ return ` ${this.snippetStartMarker}\n${this.indentedSnippets}\n ${this.snippetEndMarker}`;
76
+ }
77
+ static get updatedKeybindingsFile() {
78
+ const lastBraceIdx = this.originalKeybindingsFile.lastIndexOf(']');
79
+ const before = this.originalKeybindingsFile.slice(0, lastBraceIdx);
80
+ return `${before}${this.keybindingBlock}\n]`;
81
+ }
82
+ static get keybindingBlock() {
83
+ return ` ${this.keybindingStartMarker}\n${this.indentedKeybindings}\n ${this.keybindingEndMarker}`;
84
+ }
55
85
  static TypescriptClassSnippetSuite() {
56
86
  return TypescriptClassSnippetSuite_1.default.Create();
57
87
  }
58
88
  }
89
+ _a = TypescriptClassSnippetSuiteTest;
90
+ TypescriptClassSnippetSuiteTest.snippetStartMarker = '// === TYPESCRIPT CLASS SNIPPETS BEGIN ===';
91
+ TypescriptClassSnippetSuiteTest.snippetEndMarker = '// === TYPESCRIPT CLASS SNIPPETS END ===';
92
+ TypescriptClassSnippetSuiteTest.keybindingStartMarker = '// === TYPESCRIPT CLASS KEYBINDINGS BEGIN ===';
93
+ TypescriptClassSnippetSuiteTest.keybindingEndMarker = '// === TYPESCRIPT CLASS KEYBINDINGS END ===';
94
+ TypescriptClassSnippetSuiteTest.snippets = `
95
+ // === PUBLIC ===
96
+ "Public constructor": { "scope": "typescript", "prefix": "public.constructor", "body": ["public constructor() {}"] },
97
+ "Public field": { "scope": "typescript", "prefix": "public.field", "body": ["public newField = undefined"] },
98
+ "Public readonly field": { "scope": "typescript", "prefix": "public.readonly.field", "body": ["public readonly newField = undefined"] },
99
+ "Public getter": { "scope": "typescript", "prefix": "public.getter", "body": ["public get newProperty() { return undefined }"] },
100
+ "Public setter": { "scope": "typescript", "prefix": "public.setter", "body": ["public set newProperty(_value: unknown) {}"] },
101
+ "Public method": { "scope": "typescript", "prefix": "public.method", "body": ["public newMethod() {}"] },
102
+ "Public async method": { "scope": "typescript", "prefix": "public.async.method", "body": ["public async newMethod() {}"] },
103
+ "Public abstract method": { "scope": "typescript", "prefix": "public.abstract.method", "body": ["public abstract newMethod(): unknown"] },
104
+
105
+ // === PROTECTED ===
106
+ "Protected constructor": { "scope": "typescript", "prefix": "protected.constructor", "body": ["protected constructor() {}"] },
107
+ "Protected field": { "scope": "typescript", "prefix": "protected.field", "body": ["protected newField = undefined"] },
108
+ "Protected readonly field": { "scope": "typescript", "prefix": "protected.readonly.field", "body": ["protected readonly newField = undefined"] },
109
+ "Protected getter": { "scope": "typescript", "prefix": "protected.getter", "body": ["protected get newProperty() { return undefined }"] },
110
+ "Protected setter": { "scope": "typescript", "prefix": "protected.setter", "body": ["protected set newProperty(_value: unknown) {}"] },
111
+ "Protected method": { "scope": "typescript", "prefix": "protected.method", "body": ["protected newMethod() {}"] },
112
+ "Protected async method": { "scope": "typescript", "prefix": "protected.async.method", "body": ["protected async newMethod() {}"] },
113
+ "Protected abstract method": { "scope": "typescript", "prefix": "protected.abstract.method", "body": ["protected abstract newMethod(): unknown"] },
114
+
115
+ // === PRIVATE ===
116
+ "Private constructor": { "scope": "typescript", "prefix": "private.constructor", "body": ["private constructor() {}"] },
117
+ "Private field": { "scope": "typescript", "prefix": "private.field", "body": ["private newField = undefined"] },
118
+ "Private readonly field": { "scope": "typescript", "prefix": "private.readonly.field", "body": ["private readonly newField = undefined"] },
119
+ "Private getter": { "scope": "typescript", "prefix": "private.getter", "body": ["private get newProperty() { return undefined }"] },
120
+ "Private setter": { "scope": "typescript", "prefix": "private.setter", "body": ["private set newProperty(_value: unknown) {}"] },
121
+ "Private method": { "scope": "typescript", "prefix": "private.method", "body": ["private newMethod() {}"] },
122
+ "Private async method": { "scope": "typescript", "prefix": "private.async.method", "body": ["private async newMethod() {}"] },
123
+ "Private abstract method": { "scope": "typescript", "prefix": "private.abstract.method", "body": ["private abstract newMethod(): unknown"] },
124
+
125
+ // === PUBLIC STATIC ===
126
+ "Public static field": { "scope": "typescript", "prefix": "public.static.field", "body": ["public static newField = undefined"] },
127
+ "Public static readonly field": { "scope": "typescript", "prefix": "public.static.readonly.field", "body": ["public static readonly newField = undefined"] },
128
+ "Public static getter": { "scope": "typescript", "prefix": "public.static.getter", "body": ["public static get newProperty() { return undefined }"] },
129
+ "Public static setter": { "scope": "typescript", "prefix": "public.static.setter", "body": ["public static set newProperty(_value: unknown) {}"] },
130
+ "Public static method": { "scope": "typescript", "prefix": "public.static.method", "body": ["public static newMethod() {}"] },
131
+ "Public static async method": { "scope": "typescript", "prefix": "public.static.async.method", "body": ["public static async newMethod() {}"] },
132
+
133
+ // === PROTECTED STATIC ===
134
+ "Protected static field": { "scope": "typescript", "prefix": "protected.static.field", "body": ["protected static newField = undefined"] },
135
+ "Protected static readonly field": { "scope": "typescript", "prefix": "protected.static.readonly.field", "body": ["protected static readonly newField = undefined"] },
136
+ "Protected static getter": { "scope": "typescript", "prefix": "protected.static.getter", "body": ["protected static get newProperty() { return undefined }"] },
137
+ "Protected static setter": { "scope": "typescript", "prefix": "protected.static.setter", "body": ["protected static set newProperty(_value: unknown) {}"] },
138
+ "Protected static method": { "scope": "typescript", "prefix": "protected.static.method", "body": ["protected static newMethod() {}"] },
139
+ "Protected static async method": { "scope": "typescript", "prefix": "protected.static.async.method", "body": ["protected static async newMethod() {}"] },
140
+
141
+ // === PRIVATE STATIC ===
142
+ "Private static field": { "scope": "typescript", "prefix": "private.static.field", "body": ["private static newField = undefined"] },
143
+ "Private static readonly field": { "scope": "typescript", "prefix": "private.static.readonly.field", "body": ["private static readonly newField = undefined"] },
144
+ "Private static getter": { "scope": "typescript", "prefix": "private.static.getter", "body": ["private static get newProperty() { return undefined }"] },
145
+ "Private static setter": { "scope": "typescript", "prefix": "private.static.setter", "body": ["private static set newProperty(_value: unknown) {}"] },
146
+ "Private static method": { "scope": "typescript", "prefix": "private.static.method", "body": ["private static newMethod() {}"] },
147
+ "Private static async method": { "scope": "typescript", "prefix": "private.static.async.method", "body": ["private static async newMethod() {}"] }
148
+ `.replace(/^[ \t]+/gm, '');
149
+ TypescriptClassSnippetSuiteTest.indentedSnippets = _a.snippets
150
+ .split('\n')
151
+ .map((line) => (line.trim() ? ' ' + line : line))
152
+ .join('\n');
153
+ TypescriptClassSnippetSuiteTest.keybindings = `
154
+ // === PUBLIC (Ctrl+1) ===
155
+ { "key": "ctrl+1 f1", "command": "editor.action.insertSnippet", "args": { "name": "Public constructor" } },
156
+ { "key": "ctrl+1 f2", "command": "editor.action.insertSnippet", "args": { "name": "Public field" } },
157
+ { "key": "ctrl+1 f3", "command": "editor.action.insertSnippet", "args": { "name": "Public readonly field" } },
158
+ { "key": "ctrl+1 f4", "command": "editor.action.insertSnippet", "args": { "name": "Public getter" } },
159
+ { "key": "ctrl+1 f5", "command": "editor.action.insertSnippet", "args": { "name": "Public setter" } },
160
+ { "key": "ctrl+1 f6", "command": "editor.action.insertSnippet", "args": { "name": "Public method" } },
161
+ { "key": "ctrl+1 f7", "command": "editor.action.insertSnippet", "args": { "name": "Public async method" } },
162
+ { "key": "ctrl+1 f8", "command": "editor.action.insertSnippet", "args": { "name": "Public abstract method" } },
163
+
164
+ // === PROTECTED (Ctrl+2) ===
165
+ { "key": "ctrl+2 f1", "command": "editor.action.insertSnippet", "args": { "name": "Protected constructor" } },
166
+ { "key": "ctrl+2 f2", "command": "editor.action.insertSnippet", "args": { "name": "Protected field" } },
167
+ { "key": "ctrl+2 f3", "command": "editor.action.insertSnippet", "args": { "name": "Protected readonly field" } },
168
+ { "key": "ctrl+2 f4", "command": "editor.action.insertSnippet", "args": { "name": "Protected getter" } },
169
+ { "key": "ctrl+2 f5", "command": "editor.action.insertSnippet", "args": { "name": "Protected setter" } },
170
+ { "key": "ctrl+2 f6", "command": "editor.action.insertSnippet", "args": { "name": "Protected method" } },
171
+ { "key": "ctrl+2 f7", "command": "editor.action.insertSnippet", "args": { "name": "Protected async method" } },
172
+ { "key": "ctrl+2 f8", "command": "editor.action.insertSnippet", "args": { "name": "Protected abstract method" } },
173
+
174
+ // === PRIVATE (Ctrl+3) ===
175
+ { "key": "ctrl+3 f1", "command": "editor.action.insertSnippet", "args": { "name": "Private constructor" } },
176
+ { "key": "ctrl+3 f2", "command": "editor.action.insertSnippet", "args": { "name": "Private field" } },
177
+ { "key": "ctrl+3 f3", "command": "editor.action.insertSnippet", "args": { "name": "Private readonly field" } },
178
+ { "key": "ctrl+3 f4", "command": "editor.action.insertSnippet", "args": { "name": "Private getter" } },
179
+ { "key": "ctrl+3 f5", "command": "editor.action.insertSnippet", "args": { "name": "Private setter" } },
180
+ { "key": "ctrl+3 f6", "command": "editor.action.insertSnippet", "args": { "name": "Private method" } },
181
+ { "key": "ctrl+3 f7", "command": "editor.action.insertSnippet", "args": { "name": "Private async method" } },
182
+ { "key": "ctrl+3 f8", "command": "editor.action.insertSnippet", "args": { "name": "Private abstract method" } },
183
+
184
+ // === PUBLIC STATIC (Ctrl+1 Alt) ===
185
+ { "key": "ctrl+1 alt+f2", "command": "editor.action.insertSnippet", "args": { "name": "Public static field" } },
186
+ { "key": "ctrl+1 alt+f3", "command": "editor.action.insertSnippet", "args": { "name": "Public static readonly field" } },
187
+ { "key": "ctrl+1 alt+f4", "command": "editor.action.insertSnippet", "args": { "name": "Public static getter" } },
188
+ { "key": "ctrl+1 alt+f5", "command": "editor.action.insertSnippet", "args": { "name": "Public static setter" } },
189
+ { "key": "ctrl+1 alt+f6", "command": "editor.action.insertSnippet", "args": { "name": "Public static method" } },
190
+ { "key": "ctrl+1 alt+f7", "command": "editor.action.insertSnippet", "args": { "name": "Public static async method" } },
191
+
192
+ // === PROTECTED STATIC (Ctrl+2 Alt) ===
193
+ { "key": "ctrl+2 alt+f2", "command": "editor.action.insertSnippet", "args": { "name": "Protected static field" } },
194
+ { "key": "ctrl+2 alt+f3", "command": "editor.action.insertSnippet", "args": { "name": "Protected static readonly field" } },
195
+ { "key": "ctrl+2 alt+f4", "command": "editor.action.insertSnippet", "args": { "name": "Protected static getter" } },
196
+ { "key": "ctrl+2 alt+f5", "command": "editor.action.insertSnippet", "args": { "name": "Protected static setter" } },
197
+ { "key": "ctrl+2 alt+f6", "command": "editor.action.insertSnippet", "args": { "name": "Protected static method" } },
198
+ { "key": "ctrl+2 alt+f7", "command": "editor.action.insertSnippet", "args": { "name": "Protected static async method" } },
199
+
200
+ // === PRIVATE STATIC (Ctrl+3 Alt) ===
201
+ { "key": "ctrl+3 alt+f2", "command": "editor.action.insertSnippet", "args": { "name": "Private static field" } },
202
+ { "key": "ctrl+3 alt+f3", "command": "editor.action.insertSnippet", "args": { "name": "Private static readonly field" } },
203
+ { "key": "ctrl+3 alt+f4", "command": "editor.action.insertSnippet", "args": { "name": "Private static getter" } },
204
+ { "key": "ctrl+3 alt+f5", "command": "editor.action.insertSnippet", "args": { "name": "Private static setter" } },
205
+ { "key": "ctrl+3 alt+f6", "command": "editor.action.insertSnippet", "args": { "name": "Private static method" } },
206
+ { "key": "ctrl+3 alt+f7", "command": "editor.action.insertSnippet", "args": { "name": "Private static async method" } }
207
+ `.replace(/^[ \t]+/gm, '');
208
+ TypescriptClassSnippetSuiteTest.indentedKeybindings = _a.keybindings
209
+ .split('\n')
210
+ .map((line) => (line.trim() ? ' ' + line : line))
211
+ .join('\n');
59
212
  exports.default = TypescriptClassSnippetSuiteTest;
60
213
  __decorate([
61
214
  (0, test_utils_1.test)()
62
215
  ], TypescriptClassSnippetSuiteTest, "createsInstance", null);
216
+ __decorate([
217
+ (0, test_utils_1.test)()
218
+ ], TypescriptClassSnippetSuiteTest, "updatesGlobalSnippetsInVscode", null);
219
+ __decorate([
220
+ (0, test_utils_1.test)()
221
+ ], TypescriptClassSnippetSuiteTest, "doesNotWriteSnippetsFileIfContentsAreIdentical", null);
222
+ __decorate([
223
+ (0, test_utils_1.test)()
224
+ ], TypescriptClassSnippetSuiteTest, "updatesGlobalKeybindingsInVscode", null);
225
+ __decorate([
226
+ (0, test_utils_1.test)()
227
+ ], TypescriptClassSnippetSuiteTest, "doesNotWriteKeybindingsFileIfContentsAreIdentical", null);
63
228
  //# sourceMappingURL=TypescriptClassSnippetSuite.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TypescriptClassSnippetSuite.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/TypescriptClassSnippetSuite.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qEAAyE;AACzE,yGAE+C;AAE/C,MAAqB,+BAAgC,SAAQ,oBAAkB;IAGjE,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAA;IACtD,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,mBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IAChE,CAAC;IAEO,MAAM,CAAC,2BAA2B;QACtC,OAAO,qCAA2B,CAAC,MAAM,EAAE,CAAA;IAC/C,CAAC;CACJ;AAjBD,kDAiBC;AAP0B;IADtB,IAAA,iBAAI,GAAE;4DAGN"}
1
+ {"version":3,"file":"TypescriptClassSnippetSuite.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/TypescriptClassSnippetSuite.test.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uDAAqD;AACrD,8DAOkC;AAClC,yGAE+C;AAC/C,iFAAwD;AAExD,MAAqB,+BAAgC,SAAQ,6BAAmB;IAGlE,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAE7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAA;IACtD,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,eAAe;QAClC,mBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IAChE,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,6BAA6B;QAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QAE7B,mBAAM,CAAC,WAAW,CACd,iCAAgB,CAAC,CAAC,CAAC,EACnB;YACI,IAAI,EAAE,IAAI,CAAC,YAAY;YACvB,IAAI,EAAE,IAAI,CAAC,mBAAmB;YAC9B,OAAO,EAAE,SAAS;SACrB,EACD,qCAAqC,CACxC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,8CAA8C;QACjE,IAAA,sCAAqB,EAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAElE,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;QAE7B,mBAAM,CAAC,OAAO,CACV,iCAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC;aAC7D,MAAM,EACX,CAAC,EACD,wCAAwC,CAC3C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QAEpB,mBAAM,CAAC,WAAW,CACd,iCAAgB,CAAC,CAAC,CAAC,EACnB;YACI,IAAI,EAAE,IAAI,CAAC,eAAe;YAC1B,IAAI,EAAE,IAAI,CAAC,sBAAsB;YACjC,OAAO,EAAE,SAAS;SACrB,EACD,wCAAwC,CAC3C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iDAAiD;QACpE,IAAA,sCAAqB,EAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAExE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;QAEpB,mBAAM,CAAC,OAAO,CACV,iCAAgB,CAAC,MAAM,CACnB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,eAAe,CAC/C,CAAC,MAAM,EACR,CAAC,EACD,2CAA2C,CAC9C,CAAA;IACL,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,OAAO;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;IAClC,CAAC;IAEO,MAAM,CAAC,eAAe;QAC1B,qCAA2B,CAAC,QAAQ;YAChC,6BAA0C,CAAA;QAC9C,IAAA,qCAAoB,GAAE,CAAA;IAC1B,CAAC;IAEO,MAAM,CAAC,gBAAgB;QAC3B,qCAA2B,CAAC,SAAS;YACjC,8BAA4C,CAAA;QAChD,IAAA,sCAAqB,GAAE,CAAA;IAC3B,CAAC;IAEO,MAAM,KAAK,mBAAmB;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;QAE/D,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,aAAa,KAAK,CAAA;IAC9C,CAAC;IAEO,MAAM,KAAK,aAAa;QAC5B,OAAO,OAAO,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,gBAAgB,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAA;IACnG,CAAC;IAQO,MAAM,KAAK,sBAAsB;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;QAElE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,eAAe,KAAK,CAAA;IAChD,CAAC;IAEO,MAAM,KAAK,eAAe;QAC9B,OAAO,OAAO,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,mBAAmB,SAAS,IAAI,CAAC,mBAAmB,EAAE,CAAA;IAC5G,CAAC;IAkIO,MAAM,CAAC,2BAA2B;QACtC,OAAO,qCAA2B,CAAC,MAAM,EAAE,CAAA;IAC/C,CAAC;;;AAnJuB,kDAAkB,GACtC,4CAA4C,AADN,CACM;AAExB,gDAAgB,GACpC,0CAA0C,AADN,CACM;AAatB,qDAAqB,GACzC,+CAA+C,AADN,CACM;AAE3B,mDAAmB,GACvC,6CAA6C,AADN,CACM;AAEzB,wCAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsDlC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,AAtDM,CAsDN;AAEF,gDAAgB,GAAG,EAAI,CAAC,QAAQ;KACnD,KAAK,CAAC,IAAI,CAAC;KACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KACnD,IAAI,CAAC,IAAI,CAAC,AAHyB,CAGzB;AAES,2CAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsDrC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,AAtDS,CAsDT;AAEF,mDAAmB,GAAG,EAAI,CAAC,WAAW;KACzD,KAAK,CAAC,IAAI,CAAC;KACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KACnD,IAAI,CAAC,IAAI,CAAC,AAH4B,CAG5B;kBAxPE,+BAA+B;AAezB;IADtB,IAAA,iBAAI,GAAE;4DAGN;AAGsB;IADtB,IAAA,iBAAI,GAAE;0EAaN;AAGsB;IADtB,IAAA,iBAAI,GAAE;2FAYN;AAGsB;IADtB,IAAA,iBAAI,GAAE;6EAaN;AAGsB;IADtB,IAAA,iBAAI,GAAE;8FAaN"}
@@ -11,22 +11,13 @@ export default class VscodeSnippetKeybinderTest extends AbstractPackageTest {
11
11
  private static toCommandId;
12
12
  private static setFakeReadFile;
13
13
  private static setFakeWriteFile;
14
- private static setFakeSnippetsFile;
15
- private static setFakeKeybindingsFile;
16
14
  private static readonly fakeName;
17
15
  private static readonly fakePrefix;
18
16
  private static readonly fakeLines;
19
17
  private static readonly fakeKeybinding;
20
18
  private static readonly fakeDescription;
21
- private static readonly vscodeDir;
22
- private static get snippetsPath();
23
- private static readonly originalSnippet;
24
- private static readonly originalSnippetsFile;
25
19
  private static get updatedSnippetsFile();
26
20
  private static readonly originalSnippetsFileCommented;
27
- private static get keybindingsPath();
28
- private static readonly originalKeybinding;
29
- private static readonly originalKeybindingsFile;
30
21
  private static readonly updatedKeybindingsFile;
31
22
  private static readonly originalKeybindingsFileCommented;
32
23
  private static VscodeSnippetKeybinder;
@@ -13,7 +13,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  const test_utils_1 = require("@sprucelabs/test-utils");
14
14
  const fake_node_core_1 = require("@neurodevs/fake-node-core");
15
15
  const VscodeSnippetKeybinder_1 = __importDefault(require("../../impl/VscodeSnippetKeybinder"));
16
- const expandHomeDir_1 = __importDefault(require("../../scripts/expandHomeDir"));
17
16
  const AbstractPackageTest_1 = __importDefault(require("../AbstractPackageTest"));
18
17
  class VscodeSnippetKeybinderTest extends AbstractPackageTest_1.default {
19
18
  static async beforeEach() {
@@ -83,15 +82,6 @@ class VscodeSnippetKeybinderTest extends AbstractPackageTest_1.default {
83
82
  fake_node_core_1.fakeWriteFile;
84
83
  (0, fake_node_core_1.resetCallsToWriteFile)();
85
84
  }
86
- static setFakeSnippetsFile() {
87
- (0, fake_node_core_1.setFakeReadFileResult)(this.snippetsPath, JSON.stringify(this.originalSnippetsFile, null, 4));
88
- }
89
- static setFakeKeybindingsFile() {
90
- (0, fake_node_core_1.setFakeReadFileResult)(this.keybindingsPath, JSON.stringify(this.originalKeybindingsFile, null, 4));
91
- }
92
- static get snippetsPath() {
93
- return `${this.vscodeDir}/snippets/custom.code-snippets`;
94
- }
95
85
  static get updatedSnippetsFile() {
96
86
  return {
97
87
  ...this.originalSnippet,
@@ -103,9 +93,6 @@ class VscodeSnippetKeybinderTest extends AbstractPackageTest_1.default {
103
93
  },
104
94
  };
105
95
  }
106
- static get keybindingsPath() {
107
- return `${this.vscodeDir}/keybindings.json`;
108
- }
109
96
  static VscodeSnippetKeybinder() {
110
97
  return VscodeSnippetKeybinder_1.default.Create({
111
98
  name: this.fakeName,
@@ -121,20 +108,10 @@ VscodeSnippetKeybinderTest.fakePrefix = _a.toCommandId(_a.fakeName);
121
108
  VscodeSnippetKeybinderTest.fakeLines = [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()];
122
109
  VscodeSnippetKeybinderTest.fakeKeybinding = (0, test_utils_1.generateId)();
123
110
  VscodeSnippetKeybinderTest.fakeDescription = (0, test_utils_1.generateId)();
124
- VscodeSnippetKeybinderTest.vscodeDir = (0, expandHomeDir_1.default)('~/Library/Application Support/Code/User');
125
- VscodeSnippetKeybinderTest.originalSnippet = { [(0, test_utils_1.generateId)()]: {} };
126
- VscodeSnippetKeybinderTest.originalSnippetsFile = {
127
- ..._a.originalSnippet,
128
- };
129
111
  VscodeSnippetKeybinderTest.originalSnippetsFileCommented = `
130
112
  // ${(0, test_utils_1.generateId)()}
131
- ${JSON.stringify(_a.originalSnippetsFile, null, 4)}
113
+ ${JSON.stringify(_a.originalSnippets, null, 4)}
132
114
  `;
133
- VscodeSnippetKeybinderTest.originalKeybinding = {
134
- key: (0, test_utils_1.generateId)(),
135
- command: (0, test_utils_1.generateId)(),
136
- };
137
- VscodeSnippetKeybinderTest.originalKeybindingsFile = [_a.originalKeybinding];
138
115
  VscodeSnippetKeybinderTest.updatedKeybindingsFile = [
139
116
  _a.originalKeybinding,
140
117
  {
@@ -148,7 +125,7 @@ VscodeSnippetKeybinderTest.updatedKeybindingsFile = [
148
125
  ];
149
126
  VscodeSnippetKeybinderTest.originalKeybindingsFileCommented = `
150
127
  // ${(0, test_utils_1.generateId)()}
151
- ${JSON.stringify(_a.originalKeybindingsFile, null, 4)}
128
+ ${JSON.stringify(_a.originalKeybindings, null, 4)}
152
129
  `;
153
130
  exports.default = VscodeSnippetKeybinderTest;
154
131
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"VscodeSnippetKeybinder.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/VscodeSnippetKeybinder.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VscodeSnippetKeybinder.test.js","sourceRoot":"","sources":["../../../src/__tests__/impl/VscodeSnippetKeybinder.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,46 @@
1
+ import { readFile, writeFile } from 'fs/promises';
1
2
  export default class TypescriptClassSnippetSuite implements SnippetSuite {
2
3
  static Class?: SnippetSuiteConstructor;
4
+ static readFile: typeof readFile;
5
+ static writeFile: typeof writeFile;
6
+ private originalSnippetsFile;
7
+ private originalKeybindingsFile;
3
8
  protected constructor();
4
- static Create(): TypescriptClassSnippetSuite;
9
+ static Create(): SnippetSuite;
10
+ install(): Promise<void>;
11
+ private installGlobalSnippets;
12
+ private loadSnippetsFile;
13
+ private get snippetsPath();
14
+ private readonly vscodeDir;
15
+ private get hasSnippetMarkers();
16
+ private get snippetStartIdx();
17
+ private snippetStartMarker;
18
+ private get snippetEndIdx();
19
+ private snippetEndMarker;
20
+ private installFreshSnippets;
21
+ private get freshSnippetsFile();
22
+ private get snippetsBlock();
23
+ private updateExistingSnippets;
24
+ private installGlobalKeybindings;
25
+ private loadKeybindingsFile;
26
+ private get keybindingsPath();
27
+ private get hasKeybindMarkers();
28
+ private get keybindStartIdx();
29
+ private get keybindEndIdx();
30
+ private installFreshKeybindings;
31
+ private get freshKeybindingsFile();
32
+ private get keybindingBlock();
33
+ private keybindStartMarker;
34
+ private keybindEndMarker;
35
+ private updateExistingKeybindings;
36
+ private get readFile();
37
+ private get writeFile();
38
+ private readonly snippets;
39
+ private readonly indentedSnippets;
40
+ private readonly keybindings;
41
+ private readonly indentedKeybindings;
5
42
  }
6
43
  export interface SnippetSuite {
44
+ install(): Promise<void>;
7
45
  }
8
46
  export type SnippetSuiteConstructor = new () => SnippetSuite;