@postxl/generator 0.5.0 → 0.6.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.
- package/dist/{src/generator.js → generator.js} +42 -59
- package/dist/{src/generators → generators}/enums/react.generator.d.ts +1 -1
- package/dist/{src/generators → generators}/enums/react.generator.js +2 -2
- package/dist/{src/generators → generators}/models/react.generator/index.d.ts +1 -1
- package/dist/{src/generators → generators}/models/react.generator/index.js +2 -2
- package/package.json +6 -6
- package/dist/jest.config.d.ts +0 -3
- package/dist/jest.config.js +0 -17
- package/dist/src/lib/vfs.d.ts +0 -137
- package/dist/src/lib/vfs.js +0 -431
- package/dist/tests/attributes.test.d.ts +0 -1
- package/dist/tests/attributes.test.js +0 -76
- package/dist/tests/file.test.d.ts +0 -1
- package/dist/tests/file.test.js +0 -26
- package/dist/tests/utils/random.d.ts +0 -3
- package/dist/tests/utils/random.js +0 -15
- package/dist/tests/vfs.test.d.ts +0 -1
- package/dist/tests/vfs.test.js +0 -74
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src/generator.d.ts → generator.d.ts} +0 -0
- /package/dist/{src/generators → generators}/enums/types.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/enums/types.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/datamockmodule.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/datamockmodule.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/datamodule.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/datamodule.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/dataservice.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/dataservice.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/emptydatabasemigration.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/emptydatabasemigration.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/repositories.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/repositories.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/seed.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/seed.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/stubs.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/stubs.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/testdataservice.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/testdataservice.generator.js +0 -0
- /package/dist/{src/generators → generators}/indices/types.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/indices/types.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/react.generator/context.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/react.generator/context.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/react.generator/library.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/react.generator/library.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/react.generator/lookup.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/react.generator/lookup.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/react.generator/modals.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/react.generator/modals.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/repository.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/repository.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/route.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/route.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/seed.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/seed.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/stub.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/stub.generator.js +0 -0
- /package/dist/{src/generators → generators}/models/types.generator.d.ts +0 -0
- /package/dist/{src/generators → generators}/models/types.generator.js +0 -0
- /package/dist/{src/lib → lib}/attributes.d.ts +0 -0
- /package/dist/{src/lib → lib}/attributes.js +0 -0
- /package/dist/{src/lib → lib}/exports.d.ts +0 -0
- /package/dist/{src/lib → lib}/exports.js +0 -0
- /package/dist/{src/lib → lib}/imports.d.ts +0 -0
- /package/dist/{src/lib → lib}/imports.js +0 -0
- /package/dist/{src/lib → lib}/meta.d.ts +0 -0
- /package/dist/{src/lib → lib}/meta.js +0 -0
- /package/dist/{src/lib → lib}/schema/fields.d.ts +0 -0
- /package/dist/{src/lib → lib}/schema/fields.js +0 -0
- /package/dist/{src/lib → lib}/schema/schema.d.ts +0 -0
- /package/dist/{src/lib → lib}/schema/schema.js +0 -0
- /package/dist/{src/lib → lib}/schema/types.d.ts +0 -0
- /package/dist/{src/lib → lib}/schema/types.js +0 -0
- /package/dist/{src/lib → lib}/schema/zod.d.ts +0 -0
- /package/dist/{src/lib → lib}/schema/zod.js +0 -0
- /package/dist/{src/lib → lib}/serializer.d.ts +0 -0
- /package/dist/{src/lib → lib}/serializer.js +0 -0
- /package/dist/{src/lib → lib}/types.d.ts +0 -0
- /package/dist/{src/lib → lib}/types.js +0 -0
- /package/dist/{src/lib → lib}/utils/error.d.ts +0 -0
- /package/dist/{src/lib → lib}/utils/error.js +0 -0
- /package/dist/{src/lib → lib}/utils/file.d.ts +0 -0
- /package/dist/{src/lib → lib}/utils/file.js +0 -0
- /package/dist/{src/lib → lib}/utils/logger.d.ts +0 -0
- /package/dist/{src/lib → lib}/utils/logger.js +0 -0
- /package/dist/{src/lib → lib}/utils/string.d.ts +0 -0
- /package/dist/{src/lib → lib}/utils/string.js +0 -0
- /package/dist/{src/lib → lib}/utils/types.d.ts +0 -0
- /package/dist/{src/lib → lib}/utils/types.js +0 -0
- /package/dist/{src/prisma → prisma}/attributes.d.ts +0 -0
- /package/dist/{src/prisma → prisma}/attributes.js +0 -0
- /package/dist/{src/prisma → prisma}/client-path.d.ts +0 -0
- /package/dist/{src/prisma → prisma}/client-path.js +0 -0
- /package/dist/{src/prisma → prisma}/parse.d.ts +0 -0
- /package/dist/{src/prisma → prisma}/parse.js +0 -0
|
@@ -32,22 +32,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
32
32
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
33
33
|
});
|
|
34
34
|
};
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
36
|
exports.generate = void 0;
|
|
40
37
|
const faker_1 = require("@faker-js/faker");
|
|
38
|
+
const lock_1 = require("@postxl/lock");
|
|
41
39
|
const generator_helper_1 = require("@prisma/generator-helper");
|
|
42
40
|
const internals_1 = require("@prisma/internals");
|
|
43
41
|
const prettier = __importStar(require("prettier"));
|
|
44
42
|
const zod_1 = require("zod");
|
|
45
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
46
43
|
const react_generator_1 = require("./generators/enums/react.generator");
|
|
47
44
|
const types_generator_1 = require("./generators/enums/types.generator");
|
|
48
45
|
const datamockmodule_generator_1 = require("./generators/indices/datamockmodule.generator");
|
|
49
46
|
const datamodule_generator_1 = require("./generators/indices/datamodule.generator");
|
|
50
47
|
const dataservice_generator_1 = require("./generators/indices/dataservice.generator");
|
|
48
|
+
const emptydatabasemigration_generator_1 = require("./generators/indices/emptydatabasemigration.generator");
|
|
51
49
|
const repositories_generator_1 = require("./generators/indices/repositories.generator");
|
|
52
50
|
const seed_generator_1 = require("./generators/indices/seed.generator");
|
|
53
51
|
const stubs_generator_1 = require("./generators/indices/stubs.generator");
|
|
@@ -61,10 +59,8 @@ const stub_generator_1 = require("./generators/models/stub.generator");
|
|
|
61
59
|
const types_generator_3 = require("./generators/models/types.generator");
|
|
62
60
|
const meta_1 = require("./lib/meta");
|
|
63
61
|
const types_1 = require("./lib/schema/types");
|
|
64
|
-
const vfs_1 = require("./lib/vfs");
|
|
65
62
|
const client_path_1 = require("./prisma/client-path");
|
|
66
63
|
const parse_1 = require("./prisma/parse");
|
|
67
|
-
const emptydatabasemigration_generator_1 = require("./generators/indices/emptydatabasemigration.generator");
|
|
68
64
|
const configDecoder = zod_1.z
|
|
69
65
|
.object({
|
|
70
66
|
project: zod_1.z.string(),
|
|
@@ -133,102 +129,89 @@ const configDecoder = zod_1.z
|
|
|
133
129
|
* Generates PXL files and flushes them to disk.
|
|
134
130
|
*/
|
|
135
131
|
const generate = ({ models, enums, config, prismaClientPath, logger, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
136
|
-
const
|
|
132
|
+
const root = yield lock_1.LockUtils.findProjectRoot();
|
|
133
|
+
if (root == undefined) {
|
|
134
|
+
throw new Error(`Could not find lock file. Make sure you are running the generator in a project folder.`);
|
|
135
|
+
}
|
|
137
136
|
faker_1.faker.seed(config.randomSeed);
|
|
137
|
+
const vfs = yield lock_1.VirtualFS.fromLockFile(root);
|
|
138
|
+
const generated = new lock_1.VirtualFS();
|
|
138
139
|
// Generate Models
|
|
139
140
|
for (const model of models) {
|
|
140
141
|
const meta = (0, meta_1.getModelMetadata)({ model });
|
|
141
142
|
// Types
|
|
142
143
|
if (!config.disableGenerators.types) {
|
|
143
|
-
|
|
144
|
+
generated.write(`/${meta.types.filePath}.ts`, (0, types_generator_3.generateModelTypes)({ model, meta }));
|
|
144
145
|
}
|
|
145
146
|
// Seed
|
|
146
147
|
if (!config.disableGenerators.seed) {
|
|
147
|
-
|
|
148
|
+
generated.write(`/${meta.seed.filePath}.ts`, (0, seed_generator_2.generateSeedModel)({ model, itemCount: 5, meta }));
|
|
148
149
|
}
|
|
149
150
|
// Generate Repositories
|
|
150
151
|
if (!config.disableGenerators.data) {
|
|
151
|
-
|
|
152
|
-
|
|
152
|
+
generated.write(`/${meta.data.stubFilePath}.ts`, (0, stub_generator_1.generateStub)({ model, meta }));
|
|
153
|
+
generated.write(`/${meta.data.repoFilePath}.ts`, (0, repository_generator_1.generateRepository)({ model, meta }));
|
|
153
154
|
}
|
|
154
155
|
// Routes
|
|
155
156
|
if (!config.disableGenerators.trpc) {
|
|
156
|
-
|
|
157
|
+
generated.write(`/${meta.trpc.routerFilePath}.ts`, (0, route_generator_1.generateRoute)({ model, meta }));
|
|
157
158
|
}
|
|
158
159
|
// React
|
|
159
160
|
if (!config.disableGenerators.react) {
|
|
160
|
-
|
|
161
|
+
generated.copy((0, react_generator_2.generateReactComponentsForModel)({ model, meta }), meta.react.folderPath);
|
|
161
162
|
}
|
|
162
|
-
logger.log(
|
|
163
|
+
logger.log(`- ${model.name} processed`);
|
|
163
164
|
}
|
|
164
165
|
// Generate Enums
|
|
165
166
|
for (const enumerator of enums.values()) {
|
|
166
167
|
const meta = (0, meta_1.getEnumMetadata)({ enumerator });
|
|
167
168
|
if (!config.disableGenerators.types) {
|
|
168
|
-
|
|
169
|
+
generated.write(`/${meta.types.filePath}.ts`, (0, types_generator_1.generateEnumType)({ enumerator, prismaClientPath, meta }));
|
|
169
170
|
}
|
|
170
171
|
if (!config.disableGenerators.react) {
|
|
171
|
-
|
|
172
|
+
generated.copy((0, react_generator_1.generateEnumReactComponents)({ enumerator, meta }), meta.react.folderPath);
|
|
172
173
|
}
|
|
173
174
|
}
|
|
174
175
|
// Generate Index Files and Services
|
|
175
176
|
const meta = (0, meta_1.getSchemaMetadata)({ config });
|
|
176
177
|
if (!config.disableGenerators.data) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
178
|
+
generated.write(`/${meta.data.dataMockModuleFilePath}.ts`, (0, datamockmodule_generator_1.generateDataMockModule)({ models, meta }));
|
|
179
|
+
generated.write(`/${meta.data.dataModuleFilePath}.ts`, (0, datamodule_generator_1.generateDataModule)({ models, meta }));
|
|
180
|
+
generated.write(`/${meta.data.dataServiceFilePath}.ts`, (0, dataservice_generator_1.generateDataService)({ models, meta }));
|
|
181
|
+
generated.write(`/${meta.data.testDataServiceFilePath}.ts`, (0, testdataservice_generator_1.generateTestDataService)({ meta }));
|
|
182
|
+
generated.write(`/${meta.data.repositoriesConstFilePath}.ts`, (0, repositories_generator_1.generateRepositoriesArray)({ models, meta }));
|
|
183
|
+
generated.write(`/${meta.data.repositoriesIndexFilePath}.ts`, (0, repositories_generator_1.generateRepositoriesIndex)({ models, meta }));
|
|
184
|
+
generated.write(`/${meta.data.stubIndexFilePath}.ts`, (0, stubs_generator_1.generateStubsIndex)({ models, meta }));
|
|
185
|
+
generated.write(`/${meta.migrationsPath}/emptyDatabase.template.sql`, (0, emptydatabasemigration_generator_1.generateEmptyDatabaseStoredProcedure)({ models, meta }));
|
|
185
186
|
}
|
|
186
187
|
if (!config.disableGenerators.seed) {
|
|
187
|
-
|
|
188
|
+
generated.write(`/${meta.seed.indexFilePath}.ts`, (0, seed_generator_1.generateSeedIndex)({ models, meta }));
|
|
188
189
|
}
|
|
189
190
|
if (!config.disableGenerators.trpc) {
|
|
190
|
-
|
|
191
|
+
generated.write(`/${meta.trpc.routesFilePath}.ts`, (0, route_generator_1.generateRoutesIndex)({ models, meta }));
|
|
191
192
|
}
|
|
192
193
|
if (!config.disableGenerators.types) {
|
|
193
|
-
|
|
194
|
+
generated.write(`/${meta.types.indexFilePath}.ts`, (0, types_generator_2.generateTypesIndex)({ models, enums, meta }));
|
|
194
195
|
}
|
|
195
196
|
// -------------------------------------------------------------------------
|
|
196
197
|
// Add disclaimer and format.
|
|
197
198
|
const prettierConfig = yield prettier.resolveConfig(process.cwd());
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
if (unchanged.length > 0) {
|
|
208
|
-
logger.info(`PXL ${chalk_1.default.dim(`skipped ${unchanged.length} files`)} because no change occurded since last generation.`);
|
|
209
|
-
}
|
|
210
|
-
if (changes.length === 0) {
|
|
211
|
-
logger.info(`PXL generated no files.`);
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
logger.info(`PXL ${chalk_1.default.green(`generated the following ${changes.length}`)} files:`);
|
|
215
|
-
for (const file of changes) {
|
|
216
|
-
logger.info(`+ [generated] ${file.path}`);
|
|
217
|
-
}
|
|
218
|
-
logger.info(`PXL finished! 🚀`);
|
|
199
|
+
generated.transformUTF8Files((path, content) => `${DISCLAIMER}\n${content}`);
|
|
200
|
+
generated.format(prettierConfig);
|
|
201
|
+
// -------------------------------------------------------------------------
|
|
202
|
+
// Merge with existing files.
|
|
203
|
+
vfs.copy(generated, './');
|
|
204
|
+
// Flush to disk.
|
|
205
|
+
const changes = yield vfs.flush(process.cwd(), { force: config.force });
|
|
206
|
+
const log = lock_1.ConsoleUtils.getFilesChangelog(changes);
|
|
207
|
+
console.info(log);
|
|
219
208
|
});
|
|
220
209
|
exports.generate = generate;
|
|
221
|
-
const DISCLAIMER =
|
|
222
|
-
|
|
210
|
+
const DISCLAIMER = `
|
|
211
|
+
/**
|
|
212
|
+
* This file was generated by PostXL generator.
|
|
223
213
|
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
* To modify this file, edit the Prisma schema file and run
|
|
227
|
-
* \`prisma generate\` or \`pnpm prisma generate\`
|
|
228
|
-
* again!
|
|
229
|
-
*
|
|
230
|
-
* If you need to modify the structure of this file, please edit the generator
|
|
231
|
-
* at \`packages/generator/\`
|
|
232
|
-
*
|
|
214
|
+
* Feel free to manually edit it. The generator will not overwrite it. We suggest you
|
|
215
|
+
* remove the disclaimer to avoid confusion.
|
|
233
216
|
**/
|
|
234
217
|
`;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateEnumReactComponents = void 0;
|
|
4
|
+
const lock_1 = require("@postxl/lock");
|
|
4
5
|
const imports_1 = require("../../lib/imports");
|
|
5
|
-
const vfs_1 = require("../../lib/vfs");
|
|
6
6
|
/**
|
|
7
7
|
* Generates React components for a given enumerator.
|
|
8
8
|
*/
|
|
9
9
|
function generateEnumReactComponents({ enumerator, meta }) {
|
|
10
|
-
const vfs = new
|
|
10
|
+
const vfs = new lock_1.VirtualFS({
|
|
11
11
|
'index.ts': `
|
|
12
12
|
export * from './Select'
|
|
13
13
|
`,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateReactComponentsForModel = void 0;
|
|
4
|
+
const lock_1 = require("@postxl/lock");
|
|
4
5
|
const exports_1 = require("../../../lib/exports");
|
|
5
|
-
const vfs_1 = require("../../../lib/vfs");
|
|
6
6
|
const context_generator_1 = require("./context.generator");
|
|
7
7
|
const library_generator_1 = require("./library.generator");
|
|
8
8
|
const lookup_generator_1 = require("./lookup.generator");
|
|
@@ -11,7 +11,7 @@ const modals_generator_1 = require("./modals.generator");
|
|
|
11
11
|
* Generates generic React components for a given model.
|
|
12
12
|
*/
|
|
13
13
|
function generateReactComponentsForModel({ model, meta }) {
|
|
14
|
-
const vfs = new
|
|
14
|
+
const vfs = new lock_1.VirtualFS({});
|
|
15
15
|
const exports = exports_1.ExportsGenerator.fromRoot()
|
|
16
16
|
.exportEverythingFromFile('./CreateModal')
|
|
17
17
|
.exportEverythingFromFile('./EditModal')
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@postxl/generator",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"main": "./dist/
|
|
5
|
-
"typings": "./dist/
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"main": "./dist/generator.js",
|
|
5
|
+
"typings": "./dist/generator.d.ts",
|
|
6
6
|
"bin": {
|
|
7
|
-
"@postxl/generator": "./dist/
|
|
7
|
+
"@postxl/generator": "./dist/generator.js"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist"
|
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
"@faker-js/faker": "7.6.0",
|
|
18
18
|
"@prisma/generator-helper": "4.12.0",
|
|
19
19
|
"@prisma/internals": "^4.12.0",
|
|
20
|
-
"chalk": "^4.1.2",
|
|
21
20
|
"fast-glob": "^3.2.12",
|
|
22
21
|
"prettier": "^2.8.7",
|
|
23
22
|
"remeda": "1.9.4",
|
|
24
|
-
"zod": "3.21.4"
|
|
23
|
+
"zod": "3.21.4",
|
|
24
|
+
"@postxl/lock": "0.1.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@prisma/client": "4.12.0",
|
package/dist/jest.config.d.ts
DELETED
package/dist/jest.config.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// import { pathsToModuleNameMapper } from 'ts-jest'
|
|
4
|
-
// import { compilerOptions } from './tsconfig.json'
|
|
5
|
-
const config = {
|
|
6
|
-
verbose: true,
|
|
7
|
-
// roots: ['<rootDir>/tests', '<rootDir>/src'],
|
|
8
|
-
testEnvironment: 'node',
|
|
9
|
-
transform: {
|
|
10
|
-
'^.+\\.tsx?$': 'ts-jest',
|
|
11
|
-
},
|
|
12
|
-
testRegex: '(\\.|/)test\\.tsx?$',
|
|
13
|
-
testPathIgnorePatterns: ['/node_modules/', '/__fixtures__/'],
|
|
14
|
-
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
|
|
15
|
-
// moduleNameMapper: pathsToModuleNameMapper(compilerOptions.paths, { prefix: '<rootDir>/src/' }),
|
|
16
|
-
};
|
|
17
|
-
exports.default = config;
|
package/dist/src/lib/vfs.d.ts
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import * as prettier from 'prettier';
|
|
2
|
-
type FileWriteError = 'EIP' | 'EISDIR';
|
|
3
|
-
type FileReadError = 'ENF' | 'EISDIR';
|
|
4
|
-
type FileStatus = 'UNCHANGED' | 'WRITTEN' | 'SKIPPED';
|
|
5
|
-
/**
|
|
6
|
-
* A utility class that helps you manage a collection of files.
|
|
7
|
-
*/
|
|
8
|
-
export declare class VirtualFS {
|
|
9
|
-
/**
|
|
10
|
-
* Human readable messages for file write errors.
|
|
11
|
-
*/
|
|
12
|
-
static WRITE_ERROR_MESSAGES: {
|
|
13
|
-
[Key in FileWriteError]: string;
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* Human readable messages for file read errors.
|
|
17
|
-
*/
|
|
18
|
-
static READ_ERROR_MESSAGES: {
|
|
19
|
-
[Key in FileReadError]: string;
|
|
20
|
-
};
|
|
21
|
-
private _files;
|
|
22
|
-
constructor(files?: {
|
|
23
|
-
[key: string]: string;
|
|
24
|
-
});
|
|
25
|
-
/**
|
|
26
|
-
* Returns the chunks of the resolved path.
|
|
27
|
-
*/
|
|
28
|
-
private _parse;
|
|
29
|
-
/**
|
|
30
|
-
* Writes the given contents to the given path. Path should be a relative path from the root
|
|
31
|
-
* of the virtual file system with no special characters.
|
|
32
|
-
*/
|
|
33
|
-
write(path: string, content: string): {
|
|
34
|
-
ok: true;
|
|
35
|
-
} | {
|
|
36
|
-
ok: false;
|
|
37
|
-
path: string;
|
|
38
|
-
err: FileWriteError;
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* Appends given content to the file at a given path if it exists.
|
|
42
|
-
*/
|
|
43
|
-
append(path: string, content: string): {
|
|
44
|
-
ok: true;
|
|
45
|
-
} | {
|
|
46
|
-
ok: false;
|
|
47
|
-
path: string;
|
|
48
|
-
err: FileWriteError | FileReadError;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* Copies given files to the given path.
|
|
52
|
-
*/
|
|
53
|
-
copy(files: VirtualFS, path: string): void;
|
|
54
|
-
/**
|
|
55
|
-
* Lists all files and folders in the given path.
|
|
56
|
-
*/
|
|
57
|
-
list(path: string): {
|
|
58
|
-
kind: 'FILE' | 'FOLDER';
|
|
59
|
-
name: string;
|
|
60
|
-
}[];
|
|
61
|
-
/**
|
|
62
|
-
* Returns a dictionary of all files in the virtual file system indexed by their paths.
|
|
63
|
-
*/
|
|
64
|
-
files(): {
|
|
65
|
-
[path: string]: string;
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* Lets you read the contents of a file in the given path.
|
|
69
|
-
*/
|
|
70
|
-
read(path: string): {
|
|
71
|
-
ok: true;
|
|
72
|
-
content: string;
|
|
73
|
-
} | {
|
|
74
|
-
ok: false;
|
|
75
|
-
path: string;
|
|
76
|
-
err: FileReadError;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* Writes files to the given path, overriding managed files and ignoring
|
|
80
|
-
* detached files (i.e. files that don't have a checksum value).
|
|
81
|
-
*
|
|
82
|
-
* Returns a list of paths that were written.
|
|
83
|
-
*/
|
|
84
|
-
flush(relativeOutPath: string, force?: boolean): Promise<{
|
|
85
|
-
status: FileStatus;
|
|
86
|
-
path: string;
|
|
87
|
-
}[]>;
|
|
88
|
-
/**
|
|
89
|
-
* Writes the contents of the file to a given path. If there's already a file there,
|
|
90
|
-
* it checks the checksum and overrides it if the content hasn't changed.
|
|
91
|
-
*
|
|
92
|
-
* Returns `true` if the file was written, `false` if it wasn't.
|
|
93
|
-
*/
|
|
94
|
-
private _safeWriteUTF8File;
|
|
95
|
-
/**
|
|
96
|
-
* Tries to read a file at a given path and surpresses the error if it fails to do so.
|
|
97
|
-
*/
|
|
98
|
-
private _safeReadUTF8File;
|
|
99
|
-
private static CHECKSUM_PREFIX;
|
|
100
|
-
private static META_PREFIX;
|
|
101
|
-
/**
|
|
102
|
-
* Returns the checksum of the given content, ignoring
|
|
103
|
-
* the line containing the checksum if present.
|
|
104
|
-
*/
|
|
105
|
-
private _calculateContentChecksum;
|
|
106
|
-
/**
|
|
107
|
-
* Adds the checksum indicator to the given content.
|
|
108
|
-
*/
|
|
109
|
-
private _appendChecksumToContent;
|
|
110
|
-
/**
|
|
111
|
-
* Adds arbitrary meta information to the given content.
|
|
112
|
-
*
|
|
113
|
-
* NOTE: This only changes when the content changes regardless of the change of the meta value.
|
|
114
|
-
*/
|
|
115
|
-
private _appendMetaToContent;
|
|
116
|
-
/**
|
|
117
|
-
* Extracts the checksum from the given content.
|
|
118
|
-
*/
|
|
119
|
-
private _extractChecksumFromContent;
|
|
120
|
-
/**
|
|
121
|
-
* Creates a new file system from the given directory.
|
|
122
|
-
*/
|
|
123
|
-
static fromDirectory(cwd: string): Promise<VirtualFS>;
|
|
124
|
-
/**
|
|
125
|
-
* Walks the file tree, calling the given function for each file.
|
|
126
|
-
*/
|
|
127
|
-
walk(fn: (path: string, content: string) => void): void;
|
|
128
|
-
/**
|
|
129
|
-
* Transforms files in the file system.
|
|
130
|
-
*/
|
|
131
|
-
transform(fn: (path: string, content: string) => string): void;
|
|
132
|
-
/**
|
|
133
|
-
* Formats the file system using configuration in the given directory.
|
|
134
|
-
*/
|
|
135
|
-
format(options?: prettier.Options | null): void;
|
|
136
|
-
}
|
|
137
|
-
export {};
|