@teleporthq/teleport-project-packer 0.18.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2020 teleporthq
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,14 @@
1
+ # teleport-project-packer
2
+
3
+ Bare-bone project packer that accepts any project generator and publisher.
4
+
5
+ > This package is part of the [teleport ecosystem](https://github.com/teleporthq/teleport-code-generators). For a complete guide, check out the [official documentation](https://docs.teleporthq.io/).
6
+
7
+ ## Install
8
+ ```bash
9
+ npm install @teleporthq/teleport-project-packer
10
+ ```
11
+ or
12
+ ```bash
13
+ yarn add @teleporthq/teleport-project-packer
14
+ ```
Binary file
@@ -0,0 +1,177 @@
1
+ import { readFileSync } from 'fs'
2
+ import { join } from 'path'
3
+
4
+ // @ts-ignore
5
+ import projectJson from '../../../examples/test-samples/project-sample.json'
6
+ // @ts-ignore
7
+ import templateDefinition from './template-definition.json'
8
+
9
+ import {
10
+ ProjectUIDL,
11
+ AssetsDefinition,
12
+ Publisher,
13
+ GeneratedFolder,
14
+ GeneratedFile,
15
+ } from '@teleporthq/teleport-types'
16
+
17
+ import { createProjectPacker, PackerFactoryParams } from '../src'
18
+ import { DEFAULT_TEMPLATE } from '../src/constants'
19
+
20
+ const assetFile = readFileSync(join(__dirname, 'asset.png'))
21
+ const base64File = new Buffer(assetFile).toString('base64')
22
+
23
+ const assetsData = {
24
+ assets: [
25
+ {
26
+ content: base64File,
27
+ name: 'asset',
28
+ fileType: 'png',
29
+ },
30
+ ],
31
+ }
32
+
33
+ describe('teleport generic project packer', () => {
34
+ it('creates a new instance of generic packer', () => {
35
+ const packer = createProjectPacker()
36
+ expect(packer.loadRemoteTemplate).toBeDefined()
37
+ expect(packer.pack).toBeDefined()
38
+ expect(packer.setAssets).toBeDefined()
39
+ expect(packer.setGenerator).toBeDefined()
40
+ expect(packer.setPublisher).toBeDefined()
41
+ expect(packer.setTemplate).toBeDefined()
42
+ })
43
+
44
+ it('can set properties from generic packer', () => {
45
+ const packer = createProjectPacker()
46
+
47
+ const assets: AssetsDefinition = { assets: [] }
48
+ const template: GeneratedFolder = DEFAULT_TEMPLATE
49
+ const publisher = createDummyPublisher()
50
+
51
+ expect(() => packer.setAssets(assets)).not.toThrow()
52
+ expect(() => packer.setTemplate(template)).not.toThrow()
53
+ expect(() => packer.setPublisher(publisher)).not.toThrow()
54
+ })
55
+
56
+ it('should fail to pack if no generator function is provided', async () => {
57
+ const packer = createProjectPacker()
58
+ const uidl = (projectJson as unknown) as ProjectUIDL
59
+ const options: PackerFactoryParams = {
60
+ template: templateDefinition,
61
+ remoteTemplateDefinition: { provider: 'github', username: 'test', repo: 'test' },
62
+ }
63
+
64
+ await expect(packer.pack(uidl, options)).rejects.toThrow(Error)
65
+ })
66
+
67
+ it('should return the project folder if no publisher is specified', async () => {
68
+ const packer = createProjectPacker({
69
+ generator: dummyGenerator,
70
+ template: templateDefinition,
71
+ })
72
+
73
+ const { success, payload } = await packer.pack((projectJson as unknown) as ProjectUIDL)
74
+ expect(success).toBeTruthy()
75
+
76
+ expect(payload)
77
+ })
78
+
79
+ it('should pack if all required data is provided', async () => {
80
+ const publisher = createDummyPublisher()
81
+ const packer = createProjectPacker({
82
+ publisher,
83
+ generator: dummyGenerator,
84
+ template: templateDefinition,
85
+ assets: assetsData,
86
+ })
87
+
88
+ const { success, payload } = await packer.pack((projectJson as unknown) as ProjectUIDL)
89
+ expect(success).toBeTruthy()
90
+
91
+ const { project } = payload
92
+
93
+ const assetsFolder = project.subFolders.find((subFolder) => {
94
+ return subFolder.name === 'static'
95
+ })
96
+
97
+ expect(assetsFolder.files[0]).toBeDefined()
98
+
99
+ expect(project.files[0].name).toBe('uidl')
100
+ expect(project.files[0].content).toBeDefined()
101
+
102
+ expect(project.files[1].name).toBe('template')
103
+ expect(project.files[1].content).toBeDefined()
104
+ })
105
+
106
+ it('takes the templateFolder with priority over the remote template definitions', async () => {
107
+ const publisher = createDummyPublisher()
108
+ const packer = createProjectPacker({
109
+ publisher,
110
+ generator: dummyGenerator,
111
+ assets: assetsData,
112
+ })
113
+
114
+ const { success, payload } = await packer.pack((projectJson as unknown) as ProjectUIDL, {
115
+ template: templateDefinition,
116
+ })
117
+ expect(success).toBeTruthy()
118
+
119
+ const { project } = payload
120
+ const assetsFolder = project.subFolders.find((subFolder) => {
121
+ return subFolder.name === 'static'
122
+ })
123
+
124
+ expect(assetsFolder.files[0]).toBeDefined()
125
+
126
+ expect(project.files[0].name).toBe('uidl')
127
+ expect(project.files[0].content).toBeDefined()
128
+
129
+ expect(project.files[1].name).toBe('template')
130
+ expect(project.files[1].content).toBeDefined()
131
+ })
132
+ })
133
+
134
+ const createDummyPublisher = (): Publisher<ProjectUIDL, string> => {
135
+ let project = null
136
+ const publish = async (projectUIDL: ProjectUIDL) => {
137
+ project = projectUIDL
138
+ return { success: true, payload: { ...project } }
139
+ }
140
+
141
+ const getProject = () => {
142
+ return project
143
+ }
144
+ const setProject = (projectToSet: GeneratedFolder) => {
145
+ project = projectToSet
146
+ }
147
+
148
+ return { publish, getProject, setProject }
149
+ }
150
+
151
+ const dummyGeneratorFunction = async (
152
+ uidl: Record<string, unknown>,
153
+ template: GeneratedFolder
154
+ ): Promise<GeneratedFolder> => {
155
+ const uidlFile: GeneratedFile = {
156
+ name: 'uidl',
157
+ fileType: 'txt',
158
+ content: JSON.stringify(uidl),
159
+ }
160
+
161
+ const templateFile: GeneratedFile = {
162
+ name: 'template',
163
+ fileType: 'txt',
164
+ content: JSON.stringify(template),
165
+ }
166
+
167
+ template.files.push(uidlFile)
168
+ template.files.push(templateFile)
169
+
170
+ return template
171
+ }
172
+
173
+ const dummyGenerator = {
174
+ addMapping: jest.fn(),
175
+ getAssetsPath: jest.fn(() => ['static']),
176
+ generateProject: dummyGeneratorFunction,
177
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "next",
3
+ "files": [],
4
+ "subFolders": [
5
+ {
6
+ "name": "components",
7
+ "files": [],
8
+ "subFolders": []
9
+ },
10
+ {
11
+ "name": "pages",
12
+ "files": [],
13
+ "subFolders": []
14
+ },
15
+ {
16
+ "name": "static",
17
+ "files": [],
18
+ "subFolders": []
19
+ }
20
+ ]
21
+ }
@@ -0,0 +1,2 @@
1
+ import { GeneratedFolder } from '@teleporthq/teleport-types';
2
+ export declare const DEFAULT_TEMPLATE: GeneratedFolder;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_TEMPLATE = void 0;
4
+ exports.DEFAULT_TEMPLATE = {
5
+ name: 'teleport-project',
6
+ files: [],
7
+ subFolders: [],
8
+ };
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,EAAE;IACT,UAAU,EAAE,EAAE;CACf,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { AssetsDefinition, Publisher, ProjectGenerator, PublisherResponse, ProjectUIDL, GeneratedFolder, RemoteTemplateDefinition } from '@teleporthq/teleport-types';
2
+ export interface PackerFactoryParams {
3
+ publisher?: Publisher<unknown, unknown>;
4
+ generator?: ProjectGenerator;
5
+ template?: GeneratedFolder;
6
+ remoteTemplateDefinition?: RemoteTemplateDefinition;
7
+ assets?: AssetsDefinition;
8
+ }
9
+ export declare type PackerFactory = (params?: PackerFactoryParams) => {
10
+ pack: (projectUIDL?: ProjectUIDL, params?: PackerFactoryParams) => Promise<PublisherResponse<unknown>>;
11
+ loadRemoteTemplate: (remoteTemplateDefinition: RemoteTemplateDefinition) => Promise<void>;
12
+ setPublisher: <T, U>(publisher: Publisher<T, U>) => void;
13
+ setGenerator: (generator: ProjectGenerator) => void;
14
+ setAssets: (assets: AssetsDefinition) => void;
15
+ setTemplate: (templateFolder: GeneratedFolder) => void;
16
+ };
17
+ export declare const createProjectPacker: PackerFactory;
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createProjectPacker = void 0;
40
+ var teleport_types_1 = require("@teleporthq/teleport-types");
41
+ var utils_1 = require("./utils");
42
+ var constants_1 = require("./constants");
43
+ var createProjectPacker = function (params) {
44
+ if (params === void 0) { params = {}; }
45
+ var assets = params.assets, generator = params.generator, publisher = params.publisher, template = params.template;
46
+ template = template || constants_1.DEFAULT_TEMPLATE;
47
+ var setPublisher = function (publisherToSet) {
48
+ publisher = publisherToSet;
49
+ };
50
+ var setGenerator = function (generatorToSet) {
51
+ generator = generatorToSet;
52
+ };
53
+ var setAssets = function (assetsToSet) {
54
+ assets = assetsToSet;
55
+ };
56
+ var setTemplate = function (templateFolder) {
57
+ template = templateFolder;
58
+ };
59
+ var loadRemoteTemplate = function (remoteDefinition) { return __awaiter(void 0, void 0, void 0, function () {
60
+ return __generator(this, function (_a) {
61
+ switch (_a.label) {
62
+ case 0: return [4 /*yield*/, utils_1.fetchTemplate(remoteDefinition)];
63
+ case 1:
64
+ template = _a.sent();
65
+ return [2 /*return*/];
66
+ }
67
+ });
68
+ }); };
69
+ var pack = function (uidl, packParams) {
70
+ if (packParams === void 0) { packParams = {}; }
71
+ return __awaiter(void 0, void 0, void 0, function () {
72
+ var definedProjectUIDL, packGenerator, packPublisher, packAssets, templateFolder, outputFolder, assetsPath, project;
73
+ return __generator(this, function (_a) {
74
+ switch (_a.label) {
75
+ case 0:
76
+ definedProjectUIDL = uidl;
77
+ packGenerator = packParams.generator || generator;
78
+ if (!packGenerator) {
79
+ throw new teleport_types_1.MissingProjectGeneratorError();
80
+ }
81
+ packPublisher = packParams.publisher || publisher;
82
+ packAssets = packParams.assets || assets;
83
+ templateFolder = packParams.template || template;
84
+ if (!(!packParams.template && packParams.remoteTemplateDefinition)) return [3 /*break*/, 2];
85
+ return [4 /*yield*/, utils_1.fetchTemplate(packParams.remoteTemplateDefinition)];
86
+ case 1:
87
+ templateFolder = _a.sent();
88
+ _a.label = 2;
89
+ case 2: return [4 /*yield*/, packGenerator.generateProject(definedProjectUIDL, templateFolder)];
90
+ case 3:
91
+ outputFolder = _a.sent();
92
+ assetsPath = packGenerator.getAssetsPath();
93
+ return [4 /*yield*/, utils_1.injectAssetsToProject(outputFolder, packAssets, assetsPath)];
94
+ case 4:
95
+ project = _a.sent();
96
+ if (packPublisher) {
97
+ return [2 /*return*/, packPublisher.publish({ project: project })];
98
+ }
99
+ // If no publisher is provided, return the generated project
100
+ return [2 /*return*/, {
101
+ success: true,
102
+ payload: project,
103
+ }];
104
+ }
105
+ });
106
+ });
107
+ };
108
+ return {
109
+ setPublisher: setPublisher,
110
+ setGenerator: setGenerator,
111
+ setAssets: setAssets,
112
+ setTemplate: setTemplate,
113
+ loadRemoteTemplate: loadRemoteTemplate,
114
+ pack: pack,
115
+ };
116
+ };
117
+ exports.createProjectPacker = createProjectPacker;
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DASmC;AACnC,iCAA8D;AAC9D,yCAA8C;AAwBvC,IAAM,mBAAmB,GAAkB,UAAC,MAAgC;IAAhC,uBAAA,EAAA,WAAgC;IAC3E,IAAA,MAAM,GAAqC,MAAM,OAA3C,EAAE,SAAS,GAA0B,MAAM,UAAhC,EAAE,SAAS,GAAe,MAAM,UAArB,EAAE,QAAQ,GAAK,MAAM,SAAX,CAAW;IAEvD,QAAQ,GAAG,QAAQ,IAAI,4BAAgB,CAAA;IAEvC,IAAM,YAAY,GAAG,UAAO,cAA+B;QACzD,SAAS,GAAG,cAAc,CAAA;IAC5B,CAAC,CAAA;IAED,IAAM,YAAY,GAAG,UAAC,cAAgC;QACpD,SAAS,GAAG,cAAc,CAAA;IAC5B,CAAC,CAAA;IAED,IAAM,SAAS,GAAG,UAAC,WAA6B;QAC9C,MAAM,GAAG,WAAW,CAAA;IACtB,CAAC,CAAA;IAED,IAAM,WAAW,GAAG,UAAC,cAA+B;QAClD,QAAQ,GAAG,cAAc,CAAA;IAC3B,CAAC,CAAA;IAED,IAAM,kBAAkB,GAAG,UAAO,gBAA0C;;;wBAC/D,qBAAM,qBAAa,CAAC,gBAAgB,CAAC,EAAA;;oBAAhD,QAAQ,GAAG,SAAqC,CAAA;;;;SACjD,CAAA;IAED,IAAM,IAAI,GAAG,UAAO,IAAiB,EAAE,UAAoC;QAApC,2BAAA,EAAA,eAAoC;;;;;;wBACnE,kBAAkB,GAAG,IAAI,CAAA;wBAEzB,aAAa,GAAG,UAAU,CAAC,SAAS,IAAI,SAAS,CAAA;wBACvD,IAAI,CAAC,aAAa,EAAE;4BAClB,MAAM,IAAI,6CAA4B,EAAE,CAAA;yBACzC;wBAEK,aAAa,GAAG,UAAU,CAAC,SAAS,IAAI,SAAS,CAAA;wBAEjD,UAAU,GAAG,UAAU,CAAC,MAAM,IAAI,MAAM,CAAA;wBAC1C,cAAc,GAAG,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAA;6BAIhD,CAAA,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,wBAAwB,CAAA,EAA3D,wBAA2D;wBAC5C,qBAAM,qBAAa,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAA;;wBAAzE,cAAc,GAAG,SAAwD,CAAA;;4BAGtD,qBAAM,aAAa,CAAC,eAAe,CAAC,kBAAkB,EAAE,cAAc,CAAC,EAAA;;wBAAtF,YAAY,GAAG,SAAuE;wBACtF,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAA;wBAEhC,qBAAM,6BAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,EAAA;;wBAA3E,OAAO,GAAG,SAAiE;wBAEjF,IAAI,aAAa,EAAE;4BACjB,sBAAO,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,SAAA,EAAE,CAAC,EAAA;yBAC1C;wBAED,4DAA4D;wBAC5D,sBAAO;gCACL,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,OAAO;6BACjB,EAAA;;;;KACF,CAAA;IAED,OAAO;QACL,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,SAAS,WAAA;QACT,WAAW,aAAA;QACX,kBAAkB,oBAAA;QAClB,IAAI,MAAA;KACL,CAAA;AACH,CAAC,CAAA;AApEY,QAAA,mBAAmB,uBAoE/B"}
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../teleport-types/dist/cjs/uidl.d.ts","../../../teleport-types/dist/cjs/generators.d.ts","../../../teleport-types/dist/cjs/errors.d.ts","../../../teleport-types/dist/cjs/vuidl.d.ts","../../../teleport-types/dist/cjs/index.d.ts","../../src/constants.ts","../../../teleport-github-gateway/dist/cjs/github-instance.d.ts","../../../teleport-github-gateway/dist/cjs/types.d.ts","../../../teleport-github-gateway/dist/cjs/index.d.ts","../../src/utils.ts","../../src/index.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostic_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/util/types.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/ts3.6/base.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/base.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/types.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/diffLines.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/printDiffs.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../../../../node_modules/@types/jest/node_modules/pretty-format/build/types.d.ts","../../../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../../../node_modules/@types/jest/index.d.ts","../../../../node_modules/@types/jest/ts3.2/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},"d1e076bd03d792a96993f458172927e0c5ac3cb8e1b566f54f925e6ef19bbebb","6a55786dc1b8e3c25bc00e1700a7eb297e20bccae7d4bb5e4a020b97daa2052f","eccf9c0b6e420c47b3e3eb87e8f0dc9df312a9583a6cce96756b18ebff176b70","75ecadee387dde7be130c85ed277fdfcee3923e452260ffaf217ebaefe7bd305","cd619820771edb23926bb084906215ab9c491255fa707488d15748b38909b747","e754cacc993b899150a9e9ff86d68bec25dcd2f46ac7a606749b40716432f842","c9318c4bb0f990c71d6add7e96f8a008f8d3d488cdca280483f772acaf595e99","17b0082643c87ac8ccdcac7261e2fc1d60302f138d5f39d49c393d2548c16119","fec98ff7f14f76cd4616a6a1c8c467362c4235fcd6c5fd386f01bb642ac628c5","18b802c2e9d0daf62d325b94057805aa50d7637c7028d97b81b7df239f4a4957","d09bc0d57562752797ada6f84e30dec115ee221f3e6c42604ca5e983752d7826","c7bdc99177a2a94d25fb13722adaaf5b3291bf70b4d1b27584ba189dd3889ba3",{"version":"d1c92b66c4105659fcad4eb76a1481f7311033e117d0678a1ec545e8ddb8d4c6","affectsGlobalScope":true},"e23424b97418eca3226fd24de079f1203eb70360622e4e093af2aff14d4be6ec","dee93c07b4df5e26010dc9ec4cdf4d6e4076bb4474d2a8371529217c8b2740a4","d55bc773f71c50f55decb39b64a5d8b9889a7c9e94305b36656ebf30e4f47469","04eaa93bd75f937f9184dcb95a7983800c5770cf8ddd8ac0f3734dc02f5b20ef",{"version":"c8155caf28fc7b0a564156a5df28ad8a844a3bd32d331d148d8f3ce88025c870","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","dfc747ab8dd5f623055a4c26fd35e8cceca869fd3f1cf09701c941ca3679665a","c9f5f2920ff61d7158417b8440d5181ddc34a3dfef811a5677dd8a9fb91471e9","5cc0a492da3602510b8f5ed1852b1e0390002780d8758fbc8c0cd023ca7085f8","ec7dafafe751a5121f8f1c80201ebe7e7238c47e6329280a73c4d1ca4bb7fa28","64debeb10e4b7ae4ec9e89bfb4e04c6101ab98c3cc806d14e5488607cfec2753",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"a5782d6cea81fe43d2db7ed41e789458c933ab3ab60602f7b5b14c4da3370496","affectsGlobalScope":true},"b86b7ff709a82ef3cba2184136c025989958bad483ffb13e4ca35d720245adf4","6194335ee3353f7226ba31f31d6301d0c6be87228419c0a08976ccd9d4f1213e","5a173b7da4e6d073f9c18a02f387816a934614e7af306193995935fbb95f10b8","b447e123210c68f205f67b20c996c04a1eb64b0e591c5e06e164cd3d3a869b28","13257840c0850d4ebd7c2b17604a9e006f752de76c2400ebc752bc465c330452","42176966283d3835c34278b9b5c0f470d484c0c0c6a55c20a2c916a1ce69b6e8","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","c55776aa1db2b963a5fb820c0650362e721cba51ebf83b069696f2501378c0f3","e2236264a811ed1d09a2487a433e8f5216ae62378cf233954ae220cf886f6717","3ec1e108d587a5661ec790db607f482605ba9f3830e118ce578e3ffa3c42e22b","100b3bb9d39d2b1b5340f1bf45a52e94ef1692b45232b4ba00fac5c3cc56d331",{"version":"ec1a29ddaecb683aa360df0bd98ab5d4171d2d549554f7c5ab2a5c183a3dcb67","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","992c6f6be16c0a1d2eec13ece33adeea2c747ba27fcd078353a8f4bb5b4fea58","2597718d91e306949d89e285bf34c44192014ef541c3bd7cbb825c022749e974","a6b0abdb67d63ebe964ba5fee31bc3daf10c12eecd46b24d778426010c04c67e","ac4801ebc2355ba32329070123b1cd15891bf71b41dcaf9e75b4744832126a59","fd2298fba0640e7295e7bd545e2dfbfcccbb00c27019e501c87965a02bbdebf6","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","71ddd49185b68f27bfac127ef5d22cb2672c278e53e5370d9020ef50ca9c377d","b1ea7a6eaa7608e0e0529aebd323b526a79c6c05a4e519ae5c779675004dcdf1","9fcb033a6208485d8f3fadde31eb5cbcaf99149cff3e40c0dc53ebc6d0dff4e9","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","dcc6910d95a3625fd2b0487fda055988e46ab46c357a1b3618c27b4a8dd739c9","f4149f1aa299474c7040a35fe8f8ac2ad078cc1b190415adc1fff3ed52d490ea","3730099ed008776216268a97771de31753ef71e0a7d0ec650f588cba2a06ce44","8d649dbc429d7139a1d9a14ea2bf8af1dc089e0a879447539587463d4b6c248c","60c9e27816ec8ac8df7240598bb086e95b47edfb454c5cbf4003c812e0ed6e39","e361aecf17fc4034b4c122a1564471cdcd22ef3a51407803cb5a5fc020c04d02","4926467de88a92a4fc9971d8c6f21b91eca1c0e7fc2a46cc4638ab9440c73875",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"fc0ae4a8ad3c762b96f9d2c3700cb879a373458cb0bf3175478e3b4f85f7ef2f","fabbec378e1ddd86fcf2662e716c2b8318acedb664ee3a4cba6f9e8ee8269cf1","b3593bd345ebea5e4d0a894c03251a3774b34df3d6db57075c18e089a599ba76","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","efd55e8ca79171bf26c0d0e30221cb8ee1f5a31dd0c791ec4b2e886f42bab124","e222104af6cb9415238ad358488b74d76eceeff238c1268ec6e85655b05341da","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","eba230221317c985ab1953ccc3edc517f248b37db4fef7875cb2c8d08aff7be7","b83e796810e475da3564c6515bc0ae9577070596a33d89299b7d99f94ecfd921","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"f624e578325b8c58e55b30c998b1f4c3ec1b61a9fa66373da4250c89b7880d44","affectsGlobalScope":true},{"version":"d3002f620eab4bf6476c9da5c0efb2041d46f7df8b3032a5631bd206abef2c75","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noImplicitAny":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"target":1},"fileIdsList":[[96,98],[92,93],[92,93,94,95],[97],[99],[89],[88,89],[43,48],[54,55,62,71],[44,54,62],[80],[48,55,63],[71,76],[51,54,62],[52],[51],[54],[54,56,71,79],[54,55,71],[62,71,79],[54,55,57,62,71,76,79],[57,76,79],[90],[79],[51,54,71],[64],[42],[78],[69,80,83],[54,72],[71],[74],[48,62],[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],[62],[68],[81],[43,48,54,56,65,71,79,83],[33,36],[36],[33,35],[33],[33,34,38],[33,37],[29],[29,30,31,32]],"referencedMap":[[99,1],[94,2],[96,3],[95,2],[98,4],[100,5],[40,6],[90,7],[43,8],[44,9],[45,10],[46,11],[47,12],[48,13],[49,14],[51,15],[52,16],[53,17],[54,17],[55,18],[56,19],[57,20],[58,21],[59,22],[91,23],[60,17],[61,24],[62,25],[64,26],[65,27],[66,28],[69,17],[70,29],[71,30],[72,31],[74,17],[75,32],[76,33],[88,34],[78,35],[79,36],[80,37],[82,31],[84,38],[85,31],[35,39],[37,40],[36,41],[34,42],[39,43],[38,44],[30,45],[33,46],[32,45]],"exportedModulesMap":[[99,1],[94,2],[96,3],[95,2],[98,4],[100,5],[40,6],[90,7],[43,8],[44,9],[45,10],[46,11],[47,12],[48,13],[49,14],[51,15],[52,16],[53,17],[54,17],[55,18],[56,19],[57,20],[58,21],[59,22],[91,23],[60,17],[61,24],[62,25],[64,26],[65,27],[66,28],[69,17],[70,29],[71,30],[72,31],[74,17],[75,32],[76,33],[88,34],[78,35],[79,36],[80,37],[82,31],[84,38],[85,31],[35,39],[37,40],[36,41],[34,42],[39,43],[38,44],[30,45],[33,46],[32,45]],"semanticDiagnosticsPerFile":[99,92,94,96,95,93,98,97,100,89,40,42,90,43,44,45,46,47,48,49,50,51,52,53,54,55,56,41,86,57,58,59,91,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,88,78,79,80,81,82,83,87,84,85,6,8,7,2,9,10,11,12,13,14,15,16,3,4,20,17,18,19,21,22,23,5,24,25,26,27,1,28,35,37,36,34,39,38,31,30,33,29,32]},"version":"4.3.5"}
@@ -0,0 +1,3 @@
1
+ import { AssetsDefinition, GeneratedFolder, RemoteTemplateDefinition } from '@teleporthq/teleport-types';
2
+ export declare const fetchTemplate: (template: RemoteTemplateDefinition) => Promise<GeneratedFolder>;
3
+ export declare const injectAssetsToProject: (project: GeneratedFolder, assetsData: AssetsDefinition, assetsRootPath: string[]) => Promise<GeneratedFolder>;
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
39
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
40
+ to[j] = from[i];
41
+ return to;
42
+ };
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.injectAssetsToProject = exports.fetchTemplate = void 0;
45
+ var teleport_github_gateway_1 = require("@teleporthq/teleport-github-gateway");
46
+ var fetchTemplate = function (template) { return __awaiter(void 0, void 0, void 0, function () {
47
+ var authData, githubGateway;
48
+ return __generator(this, function (_a) {
49
+ authData = template.auth || {};
50
+ githubGateway = teleport_github_gateway_1.createGithubGateway(authData);
51
+ return [2 /*return*/, githubGateway.getRepository(template)];
52
+ });
53
+ }); };
54
+ exports.fetchTemplate = fetchTemplate;
55
+ var injectAssetsToProject = function (project, assetsData, assetsRootPath) { return __awaiter(void 0, void 0, void 0, function () {
56
+ var assets, _a, path;
57
+ return __generator(this, function (_b) {
58
+ if (!assetsData) {
59
+ return [2 /*return*/, project];
60
+ }
61
+ assets = assetsData.assets, _a = assetsData.path, path = _a === void 0 ? [] : _a;
62
+ assets.forEach(function (asset) {
63
+ var filePath = __spreadArray(__spreadArray([], assetsRootPath), path);
64
+ project = injectFileInGeneratedFolder(project, asset, filePath);
65
+ });
66
+ return [2 /*return*/, project];
67
+ });
68
+ }); };
69
+ exports.injectAssetsToProject = injectAssetsToProject;
70
+ var injectFileInGeneratedFolder = function (generatedFolder, file, path) {
71
+ if (fileMustBeOnFirstLevel(path)) {
72
+ generatedFolder.files.push(file);
73
+ return generatedFolder;
74
+ }
75
+ var currentFolder = generatedFolder;
76
+ path.forEach(function (folderName, index) {
77
+ var subFolder = currentFolder.subFolders.find(function (folder) { return folder.name === folderName; });
78
+ if (!subFolder) {
79
+ subFolder = {
80
+ name: folderName,
81
+ files: [],
82
+ subFolders: [],
83
+ };
84
+ currentFolder.subFolders.push(subFolder);
85
+ }
86
+ currentFolder = subFolder;
87
+ if (index === path.length - 1) {
88
+ currentFolder.files.push(file);
89
+ }
90
+ });
91
+ return generatedFolder;
92
+ };
93
+ var fileMustBeOnFirstLevel = function (path) {
94
+ return !path.length || (path.length === 1 && path[0] === '');
95
+ };
96
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+EAAyE;AASlE,IAAM,aAAa,GAAG,UAAO,QAAkC;;;QAC9D,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAA;QAC9B,aAAa,GAAG,6CAAmB,CAAC,QAAQ,CAAC,CAAA;QACnD,sBAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAA;;KAC7C,CAAA;AAJY,QAAA,aAAa,iBAIzB;AAEM,IAAM,qBAAqB,GAAG,UACnC,OAAwB,EACxB,UAA4B,EAC5B,cAAwB;;;QAExB,IAAI,CAAC,UAAU,EAAE;YACf,sBAAO,OAAO,EAAA;SACf;QAEO,MAAM,GAAgB,UAAU,OAA1B,EAAE,KAAc,UAAU,KAAf,EAAT,IAAI,mBAAG,EAAE,KAAA,CAAe;QAExC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAoB;YAClC,IAAM,QAAQ,mCAAO,cAAc,GAAK,IAAI,CAAC,CAAA;YAC7C,OAAO,GAAG,2BAA2B,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,sBAAO,OAAO,EAAA;;KACf,CAAA;AAjBY,QAAA,qBAAqB,yBAiBjC;AAED,IAAM,2BAA2B,GAAG,UAClC,eAAgC,EAChC,IAAmB,EACnB,IAAc;IAEd,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;QAChC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,OAAO,eAAe,CAAA;KACvB;IAED,IAAI,aAAa,GAAG,eAAe,CAAA;IAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,UAAU,EAAE,KAAK;QAC7B,IAAI,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,UAAU,EAA1B,CAA0B,CAAC,CAAA;QAErF,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG;gBACV,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,EAAE;aACf,CAAA;YACD,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;SACzC;QAED,aAAa,GAAG,SAAS,CAAA;QACzB,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SAC/B;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,eAAe,CAAA;AACxB,CAAC,CAAA;AAED,IAAM,sBAAsB,GAAG,UAAC,IAAc;IAC5C,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;AAC9D,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { GeneratedFolder } from '@teleporthq/teleport-types';
2
+ export declare const DEFAULT_TEMPLATE: GeneratedFolder;
@@ -0,0 +1,6 @@
1
+ export var DEFAULT_TEMPLATE = {
2
+ name: 'teleport-project',
3
+ files: [],
4
+ subFolders: [],
5
+ };
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,IAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,EAAE;IACT,UAAU,EAAE,EAAE;CACf,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { AssetsDefinition, Publisher, ProjectGenerator, PublisherResponse, ProjectUIDL, GeneratedFolder, RemoteTemplateDefinition } from '@teleporthq/teleport-types';
2
+ export interface PackerFactoryParams {
3
+ publisher?: Publisher<unknown, unknown>;
4
+ generator?: ProjectGenerator;
5
+ template?: GeneratedFolder;
6
+ remoteTemplateDefinition?: RemoteTemplateDefinition;
7
+ assets?: AssetsDefinition;
8
+ }
9
+ export declare type PackerFactory = (params?: PackerFactoryParams) => {
10
+ pack: (projectUIDL?: ProjectUIDL, params?: PackerFactoryParams) => Promise<PublisherResponse<unknown>>;
11
+ loadRemoteTemplate: (remoteTemplateDefinition: RemoteTemplateDefinition) => Promise<void>;
12
+ setPublisher: <T, U>(publisher: Publisher<T, U>) => void;
13
+ setGenerator: (generator: ProjectGenerator) => void;
14
+ setAssets: (assets: AssetsDefinition) => void;
15
+ setTemplate: (templateFolder: GeneratedFolder) => void;
16
+ };
17
+ export declare const createProjectPacker: PackerFactory;
@@ -0,0 +1,114 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { MissingProjectGeneratorError, } from '@teleporthq/teleport-types';
38
+ import { injectAssetsToProject, fetchTemplate } from './utils';
39
+ import { DEFAULT_TEMPLATE } from './constants';
40
+ export var createProjectPacker = function (params) {
41
+ if (params === void 0) { params = {}; }
42
+ var assets = params.assets, generator = params.generator, publisher = params.publisher, template = params.template;
43
+ template = template || DEFAULT_TEMPLATE;
44
+ var setPublisher = function (publisherToSet) {
45
+ publisher = publisherToSet;
46
+ };
47
+ var setGenerator = function (generatorToSet) {
48
+ generator = generatorToSet;
49
+ };
50
+ var setAssets = function (assetsToSet) {
51
+ assets = assetsToSet;
52
+ };
53
+ var setTemplate = function (templateFolder) {
54
+ template = templateFolder;
55
+ };
56
+ var loadRemoteTemplate = function (remoteDefinition) { return __awaiter(void 0, void 0, void 0, function () {
57
+ return __generator(this, function (_a) {
58
+ switch (_a.label) {
59
+ case 0: return [4 /*yield*/, fetchTemplate(remoteDefinition)];
60
+ case 1:
61
+ template = _a.sent();
62
+ return [2 /*return*/];
63
+ }
64
+ });
65
+ }); };
66
+ var pack = function (uidl, packParams) {
67
+ if (packParams === void 0) { packParams = {}; }
68
+ return __awaiter(void 0, void 0, void 0, function () {
69
+ var definedProjectUIDL, packGenerator, packPublisher, packAssets, templateFolder, outputFolder, assetsPath, project;
70
+ return __generator(this, function (_a) {
71
+ switch (_a.label) {
72
+ case 0:
73
+ definedProjectUIDL = uidl;
74
+ packGenerator = packParams.generator || generator;
75
+ if (!packGenerator) {
76
+ throw new MissingProjectGeneratorError();
77
+ }
78
+ packPublisher = packParams.publisher || publisher;
79
+ packAssets = packParams.assets || assets;
80
+ templateFolder = packParams.template || template;
81
+ if (!(!packParams.template && packParams.remoteTemplateDefinition)) return [3 /*break*/, 2];
82
+ return [4 /*yield*/, fetchTemplate(packParams.remoteTemplateDefinition)];
83
+ case 1:
84
+ templateFolder = _a.sent();
85
+ _a.label = 2;
86
+ case 2: return [4 /*yield*/, packGenerator.generateProject(definedProjectUIDL, templateFolder)];
87
+ case 3:
88
+ outputFolder = _a.sent();
89
+ assetsPath = packGenerator.getAssetsPath();
90
+ return [4 /*yield*/, injectAssetsToProject(outputFolder, packAssets, assetsPath)];
91
+ case 4:
92
+ project = _a.sent();
93
+ if (packPublisher) {
94
+ return [2 /*return*/, packPublisher.publish({ project: project })];
95
+ }
96
+ // If no publisher is provided, return the generated project
97
+ return [2 /*return*/, {
98
+ success: true,
99
+ payload: project,
100
+ }];
101
+ }
102
+ });
103
+ });
104
+ };
105
+ return {
106
+ setPublisher: setPublisher,
107
+ setGenerator: setGenerator,
108
+ setAssets: setAssets,
109
+ setTemplate: setTemplate,
110
+ loadRemoteTemplate: loadRemoteTemplate,
111
+ pack: pack,
112
+ };
113
+ };
114
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAQL,4BAA4B,GAC7B,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAwB9C,MAAM,CAAC,IAAM,mBAAmB,GAAkB,UAAC,MAAgC;IAAhC,uBAAA,EAAA,WAAgC;IAC3E,IAAA,MAAM,GAAqC,MAAM,OAA3C,EAAE,SAAS,GAA0B,MAAM,UAAhC,EAAE,SAAS,GAAe,MAAM,UAArB,EAAE,QAAQ,GAAK,MAAM,SAAX,CAAW;IAEvD,QAAQ,GAAG,QAAQ,IAAI,gBAAgB,CAAA;IAEvC,IAAM,YAAY,GAAG,UAAO,cAA+B;QACzD,SAAS,GAAG,cAAc,CAAA;IAC5B,CAAC,CAAA;IAED,IAAM,YAAY,GAAG,UAAC,cAAgC;QACpD,SAAS,GAAG,cAAc,CAAA;IAC5B,CAAC,CAAA;IAED,IAAM,SAAS,GAAG,UAAC,WAA6B;QAC9C,MAAM,GAAG,WAAW,CAAA;IACtB,CAAC,CAAA;IAED,IAAM,WAAW,GAAG,UAAC,cAA+B;QAClD,QAAQ,GAAG,cAAc,CAAA;IAC3B,CAAC,CAAA;IAED,IAAM,kBAAkB,GAAG,UAAO,gBAA0C;;;wBAC/D,qBAAM,aAAa,CAAC,gBAAgB,CAAC,EAAA;;oBAAhD,QAAQ,GAAG,SAAqC,CAAA;;;;SACjD,CAAA;IAED,IAAM,IAAI,GAAG,UAAO,IAAiB,EAAE,UAAoC;QAApC,2BAAA,EAAA,eAAoC;;;;;;wBACnE,kBAAkB,GAAG,IAAI,CAAA;wBAEzB,aAAa,GAAG,UAAU,CAAC,SAAS,IAAI,SAAS,CAAA;wBACvD,IAAI,CAAC,aAAa,EAAE;4BAClB,MAAM,IAAI,4BAA4B,EAAE,CAAA;yBACzC;wBAEK,aAAa,GAAG,UAAU,CAAC,SAAS,IAAI,SAAS,CAAA;wBAEjD,UAAU,GAAG,UAAU,CAAC,MAAM,IAAI,MAAM,CAAA;wBAC1C,cAAc,GAAG,UAAU,CAAC,QAAQ,IAAI,QAAQ,CAAA;6BAIhD,CAAA,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,wBAAwB,CAAA,EAA3D,wBAA2D;wBAC5C,qBAAM,aAAa,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAA;;wBAAzE,cAAc,GAAG,SAAwD,CAAA;;4BAGtD,qBAAM,aAAa,CAAC,eAAe,CAAC,kBAAkB,EAAE,cAAc,CAAC,EAAA;;wBAAtF,YAAY,GAAG,SAAuE;wBACtF,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,CAAA;wBAEhC,qBAAM,qBAAqB,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,EAAA;;wBAA3E,OAAO,GAAG,SAAiE;wBAEjF,IAAI,aAAa,EAAE;4BACjB,sBAAO,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,SAAA,EAAE,CAAC,EAAA;yBAC1C;wBAED,4DAA4D;wBAC5D,sBAAO;gCACL,OAAO,EAAE,IAAI;gCACb,OAAO,EAAE,OAAO;6BACjB,EAAA;;;;KACF,CAAA;IAED,OAAO;QACL,YAAY,cAAA;QACZ,YAAY,cAAA;QACZ,SAAS,WAAA;QACT,WAAW,aAAA;QACX,kBAAkB,oBAAA;QAClB,IAAI,MAAA;KACL,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../teleport-types/dist/cjs/uidl.d.ts","../../../teleport-types/dist/cjs/generators.d.ts","../../../teleport-types/dist/cjs/errors.d.ts","../../../teleport-types/dist/cjs/vuidl.d.ts","../../../teleport-types/dist/cjs/index.d.ts","../../src/constants.ts","../../../teleport-github-gateway/dist/cjs/github-instance.d.ts","../../../teleport-github-gateway/dist/cjs/types.d.ts","../../../teleport-github-gateway/dist/cjs/index.d.ts","../../src/utils.ts","../../src/index.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostic_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/util/types.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/ts3.6/base.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/base.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/types.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/diffLines.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/printDiffs.d.ts","../../../../node_modules/@types/jest/node_modules/jest-diff/build/index.d.ts","../../../../node_modules/@types/jest/node_modules/pretty-format/build/types.d.ts","../../../../node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","../../../../node_modules/@types/jest/index.d.ts","../../../../node_modules/@types/jest/ts3.2/index.d.ts"],"fileInfos":[{"version":"ac3a8c4040e183ce38da69d23b96939112457d1936198e6542672b7963cf0fce","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06",{"version":"1dad4fe1561d99dfd6709127608b99a76e5c2643626c800434f99c48038567ee","affectsGlobalScope":true},{"version":"cce43d02223f8049864f8568bed322c39424013275cd3bcc3f51492d8b546cb3","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"8dff1b4c2df638fcd976cbb0e636f23ab5968e836cd45084cc31d47d1ab19c49","affectsGlobalScope":true},{"version":"2bb4b3927299434052b37851a47bf5c39764f2ba88a888a107b32262e9292b7c","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"8f4c9f651c8294a2eb1cbd12581fe25bfb901ab1d474bb93cd38c7e2f4be7a30","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"df9c8a72ca8b0ed62f5470b41208a0587f0f73f0a7db28e5a1272cf92537518e","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"60761e6ea886034af0f294f025a7199360ce4e2c8ba4ec6408bc049cf9b89799","affectsGlobalScope":true},{"version":"506b80b9951c9381dc5f11897b31fca5e2a65731d96ddefa19687fbc26b23c6e","affectsGlobalScope":true},"d1e076bd03d792a96993f458172927e0c5ac3cb8e1b566f54f925e6ef19bbebb","6a55786dc1b8e3c25bc00e1700a7eb297e20bccae7d4bb5e4a020b97daa2052f","eccf9c0b6e420c47b3e3eb87e8f0dc9df312a9583a6cce96756b18ebff176b70","75ecadee387dde7be130c85ed277fdfcee3923e452260ffaf217ebaefe7bd305","cd619820771edb23926bb084906215ab9c491255fa707488d15748b38909b747","e754cacc993b899150a9e9ff86d68bec25dcd2f46ac7a606749b40716432f842","c9318c4bb0f990c71d6add7e96f8a008f8d3d488cdca280483f772acaf595e99","17b0082643c87ac8ccdcac7261e2fc1d60302f138d5f39d49c393d2548c16119","fec98ff7f14f76cd4616a6a1c8c467362c4235fcd6c5fd386f01bb642ac628c5","18b802c2e9d0daf62d325b94057805aa50d7637c7028d97b81b7df239f4a4957","d09bc0d57562752797ada6f84e30dec115ee221f3e6c42604ca5e983752d7826","c7bdc99177a2a94d25fb13722adaaf5b3291bf70b4d1b27584ba189dd3889ba3",{"version":"d1c92b66c4105659fcad4eb76a1481f7311033e117d0678a1ec545e8ddb8d4c6","affectsGlobalScope":true},"e23424b97418eca3226fd24de079f1203eb70360622e4e093af2aff14d4be6ec","dee93c07b4df5e26010dc9ec4cdf4d6e4076bb4474d2a8371529217c8b2740a4","d55bc773f71c50f55decb39b64a5d8b9889a7c9e94305b36656ebf30e4f47469","04eaa93bd75f937f9184dcb95a7983800c5770cf8ddd8ac0f3734dc02f5b20ef",{"version":"c8155caf28fc7b0a564156a5df28ad8a844a3bd32d331d148d8f3ce88025c870","affectsGlobalScope":true},"45ac321f2e15d268fd74a90ddaa6467dcaaff2c5b13f95b4b85831520fb7a491","dfc747ab8dd5f623055a4c26fd35e8cceca869fd3f1cf09701c941ca3679665a","c9f5f2920ff61d7158417b8440d5181ddc34a3dfef811a5677dd8a9fb91471e9","5cc0a492da3602510b8f5ed1852b1e0390002780d8758fbc8c0cd023ca7085f8","ec7dafafe751a5121f8f1c80201ebe7e7238c47e6329280a73c4d1ca4bb7fa28","64debeb10e4b7ae4ec9e89bfb4e04c6101ab98c3cc806d14e5488607cfec2753",{"version":"2866a528b2708aa272ec3eaafd3c980abb23aec1ef831cfc5eb2186b98c37ce5","affectsGlobalScope":true},{"version":"a5782d6cea81fe43d2db7ed41e789458c933ab3ab60602f7b5b14c4da3370496","affectsGlobalScope":true},"b86b7ff709a82ef3cba2184136c025989958bad483ffb13e4ca35d720245adf4","6194335ee3353f7226ba31f31d6301d0c6be87228419c0a08976ccd9d4f1213e","5a173b7da4e6d073f9c18a02f387816a934614e7af306193995935fbb95f10b8","b447e123210c68f205f67b20c996c04a1eb64b0e591c5e06e164cd3d3a869b28","13257840c0850d4ebd7c2b17604a9e006f752de76c2400ebc752bc465c330452","42176966283d3835c34278b9b5c0f470d484c0c0c6a55c20a2c916a1ce69b6e8","0cff7901aedfe78e314f7d44088f07e2afa1b6e4f0473a4169b8456ca2fb245d","c55776aa1db2b963a5fb820c0650362e721cba51ebf83b069696f2501378c0f3","e2236264a811ed1d09a2487a433e8f5216ae62378cf233954ae220cf886f6717","3ec1e108d587a5661ec790db607f482605ba9f3830e118ce578e3ffa3c42e22b","100b3bb9d39d2b1b5340f1bf45a52e94ef1692b45232b4ba00fac5c3cc56d331",{"version":"ec1a29ddaecb683aa360df0bd98ab5d4171d2d549554f7c5ab2a5c183a3dcb67","affectsGlobalScope":true},"7f77304372efe3c9967e5f9ea2061f1b4bf41dc3cda3c83cdd676f2e5af6b7e6","992c6f6be16c0a1d2eec13ece33adeea2c747ba27fcd078353a8f4bb5b4fea58","2597718d91e306949d89e285bf34c44192014ef541c3bd7cbb825c022749e974","a6b0abdb67d63ebe964ba5fee31bc3daf10c12eecd46b24d778426010c04c67e","ac4801ebc2355ba32329070123b1cd15891bf71b41dcaf9e75b4744832126a59","fd2298fba0640e7295e7bd545e2dfbfcccbb00c27019e501c87965a02bbdebf6","4fd3c4debadce3e9ab9dec3eb45f7f5e2e3d4ad65cf975a6d938d883cfb25a50","71ddd49185b68f27bfac127ef5d22cb2672c278e53e5370d9020ef50ca9c377d","b1ea7a6eaa7608e0e0529aebd323b526a79c6c05a4e519ae5c779675004dcdf1","9fcb033a6208485d8f3fadde31eb5cbcaf99149cff3e40c0dc53ebc6d0dff4e9","7df562288f949945cf69c21cd912100c2afedeeb7cdb219085f7f4b46cb7dde4","9d16690485ff1eb4f6fc57aebe237728fd8e03130c460919da3a35f4d9bd97f5","dcc6910d95a3625fd2b0487fda055988e46ab46c357a1b3618c27b4a8dd739c9","f4149f1aa299474c7040a35fe8f8ac2ad078cc1b190415adc1fff3ed52d490ea","3730099ed008776216268a97771de31753ef71e0a7d0ec650f588cba2a06ce44","8d649dbc429d7139a1d9a14ea2bf8af1dc089e0a879447539587463d4b6c248c","60c9e27816ec8ac8df7240598bb086e95b47edfb454c5cbf4003c812e0ed6e39","e361aecf17fc4034b4c122a1564471cdcd22ef3a51407803cb5a5fc020c04d02","4926467de88a92a4fc9971d8c6f21b91eca1c0e7fc2a46cc4638ab9440c73875",{"version":"2708349d5a11a5c2e5f3a0765259ebe7ee00cdcc8161cb9990cb4910328442a1","affectsGlobalScope":true},"fc0ae4a8ad3c762b96f9d2c3700cb879a373458cb0bf3175478e3b4f85f7ef2f","fabbec378e1ddd86fcf2662e716c2b8318acedb664ee3a4cba6f9e8ee8269cf1","b3593bd345ebea5e4d0a894c03251a3774b34df3d6db57075c18e089a599ba76","e61a21e9418f279bc480394a94d1581b2dee73747adcbdef999b6737e34d721b","efd55e8ca79171bf26c0d0e30221cb8ee1f5a31dd0c791ec4b2e886f42bab124","e222104af6cb9415238ad358488b74d76eceeff238c1268ec6e85655b05341da","69da61a7b5093dac77fa3bec8be95dcf9a74c95a0e9161edb98bb24e30e439d2","eba230221317c985ab1953ccc3edc517f248b37db4fef7875cb2c8d08aff7be7","b83e796810e475da3564c6515bc0ae9577070596a33d89299b7d99f94ecfd921","b4439890c168d646357928431100daac5cbdee1d345a34e6bf6eca9f3abe22bc","5d72971a459517c44c1379dab9ed248e87a61ba0a1e0f25c9d67e1e640cd9a09","02d734976af36f4273d930bea88b3e62adf6b078cf120c1c63d49aa8d8427c5c",{"version":"f624e578325b8c58e55b30c998b1f4c3ec1b61a9fa66373da4250c89b7880d44","affectsGlobalScope":true},{"version":"d3002f620eab4bf6476c9da5c0efb2041d46f7df8b3032a5631bd206abef2c75","affectsGlobalScope":true}],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":99,"noImplicitAny":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","sourceMap":true,"target":1},"fileIdsList":[[96,98],[92,93],[92,93,94,95],[97],[99],[89],[88,89],[43,48],[54,55,62,71],[44,54,62],[80],[48,55,63],[71,76],[51,54,62],[52],[51],[54],[54,56,71,79],[54,55,71],[62,71,79],[54,55,57,62,71,76,79],[57,76,79],[90],[79],[51,54,71],[64],[42],[78],[69,80,83],[54,72],[71],[74],[48,62],[40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87],[62],[68],[81],[43,48,54,56,65,71,79,83],[33,36],[36],[33,35],[33],[33,34,38],[33,37],[29],[29,30,31,32]],"referencedMap":[[99,1],[94,2],[96,3],[95,2],[98,4],[100,5],[40,6],[90,7],[43,8],[44,9],[45,10],[46,11],[47,12],[48,13],[49,14],[51,15],[52,16],[53,17],[54,17],[55,18],[56,19],[57,20],[58,21],[59,22],[91,23],[60,17],[61,24],[62,25],[64,26],[65,27],[66,28],[69,17],[70,29],[71,30],[72,31],[74,17],[75,32],[76,33],[88,34],[78,35],[79,36],[80,37],[82,31],[84,38],[85,31],[35,39],[37,40],[36,41],[34,42],[39,43],[38,44],[30,45],[33,46],[32,45]],"exportedModulesMap":[[99,1],[94,2],[96,3],[95,2],[98,4],[100,5],[40,6],[90,7],[43,8],[44,9],[45,10],[46,11],[47,12],[48,13],[49,14],[51,15],[52,16],[53,17],[54,17],[55,18],[56,19],[57,20],[58,21],[59,22],[91,23],[60,17],[61,24],[62,25],[64,26],[65,27],[66,28],[69,17],[70,29],[71,30],[72,31],[74,17],[75,32],[76,33],[88,34],[78,35],[79,36],[80,37],[82,31],[84,38],[85,31],[35,39],[37,40],[36,41],[34,42],[39,43],[38,44],[30,45],[33,46],[32,45]],"semanticDiagnosticsPerFile":[99,92,94,96,95,93,98,97,100,89,40,42,90,43,44,45,46,47,48,49,50,51,52,53,54,55,56,41,86,57,58,59,91,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,88,78,79,80,81,82,83,87,84,85,6,8,7,2,9,10,11,12,13,14,15,16,3,4,20,17,18,19,21,22,23,5,24,25,26,27,1,28,35,37,36,34,39,38,31,30,33,29,32]},"version":"4.3.5"}
@@ -0,0 +1,3 @@
1
+ import { AssetsDefinition, GeneratedFolder, RemoteTemplateDefinition } from '@teleporthq/teleport-types';
2
+ export declare const fetchTemplate: (template: RemoteTemplateDefinition) => Promise<GeneratedFolder>;
3
+ export declare const injectAssetsToProject: (project: GeneratedFolder, assetsData: AssetsDefinition, assetsRootPath: string[]) => Promise<GeneratedFolder>;
@@ -0,0 +1,91 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (_) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
38
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
39
+ to[j] = from[i];
40
+ return to;
41
+ };
42
+ import { createGithubGateway } from '@teleporthq/teleport-github-gateway';
43
+ export var fetchTemplate = function (template) { return __awaiter(void 0, void 0, void 0, function () {
44
+ var authData, githubGateway;
45
+ return __generator(this, function (_a) {
46
+ authData = template.auth || {};
47
+ githubGateway = createGithubGateway(authData);
48
+ return [2 /*return*/, githubGateway.getRepository(template)];
49
+ });
50
+ }); };
51
+ export var injectAssetsToProject = function (project, assetsData, assetsRootPath) { return __awaiter(void 0, void 0, void 0, function () {
52
+ var assets, _a, path;
53
+ return __generator(this, function (_b) {
54
+ if (!assetsData) {
55
+ return [2 /*return*/, project];
56
+ }
57
+ assets = assetsData.assets, _a = assetsData.path, path = _a === void 0 ? [] : _a;
58
+ assets.forEach(function (asset) {
59
+ var filePath = __spreadArray(__spreadArray([], assetsRootPath), path);
60
+ project = injectFileInGeneratedFolder(project, asset, filePath);
61
+ });
62
+ return [2 /*return*/, project];
63
+ });
64
+ }); };
65
+ var injectFileInGeneratedFolder = function (generatedFolder, file, path) {
66
+ if (fileMustBeOnFirstLevel(path)) {
67
+ generatedFolder.files.push(file);
68
+ return generatedFolder;
69
+ }
70
+ var currentFolder = generatedFolder;
71
+ path.forEach(function (folderName, index) {
72
+ var subFolder = currentFolder.subFolders.find(function (folder) { return folder.name === folderName; });
73
+ if (!subFolder) {
74
+ subFolder = {
75
+ name: folderName,
76
+ files: [],
77
+ subFolders: [],
78
+ };
79
+ currentFolder.subFolders.push(subFolder);
80
+ }
81
+ currentFolder = subFolder;
82
+ if (index === path.length - 1) {
83
+ currentFolder.files.push(file);
84
+ }
85
+ });
86
+ return generatedFolder;
87
+ };
88
+ var fileMustBeOnFirstLevel = function (path) {
89
+ return !path.length || (path.length === 1 && path[0] === '');
90
+ };
91
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AASzE,MAAM,CAAC,IAAM,aAAa,GAAG,UAAO,QAAkC;;;QAC9D,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAA;QAC9B,aAAa,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QACnD,sBAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAA;;KAC7C,CAAA;AAED,MAAM,CAAC,IAAM,qBAAqB,GAAG,UACnC,OAAwB,EACxB,UAA4B,EAC5B,cAAwB;;;QAExB,IAAI,CAAC,UAAU,EAAE;YACf,sBAAO,OAAO,EAAA;SACf;QAEO,MAAM,GAAgB,UAAU,OAA1B,EAAE,KAAc,UAAU,KAAf,EAAT,IAAI,mBAAG,EAAE,KAAA,CAAe;QAExC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAoB;YAClC,IAAM,QAAQ,mCAAO,cAAc,GAAK,IAAI,CAAC,CAAA;YAC7C,OAAO,GAAG,2BAA2B,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,sBAAO,OAAO,EAAA;;KACf,CAAA;AAED,IAAM,2BAA2B,GAAG,UAClC,eAAgC,EAChC,IAAmB,EACnB,IAAc;IAEd,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE;QAChC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,OAAO,eAAe,CAAA;KACvB;IAED,IAAI,aAAa,GAAG,eAAe,CAAA;IAEnC,IAAI,CAAC,OAAO,CAAC,UAAC,UAAU,EAAE,KAAK;QAC7B,IAAI,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,IAAI,KAAK,UAAU,EAA1B,CAA0B,CAAC,CAAA;QAErF,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG;gBACV,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,EAAE;gBACT,UAAU,EAAE,EAAE;aACf,CAAA;YACD,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;SACzC;QAED,aAAa,GAAG,SAAS,CAAA;QACzB,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SAC/B;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,eAAe,CAAA;AACxB,CAAC,CAAA;AAED,IAAM,sBAAsB,GAAG,UAAC,IAAc;IAC5C,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;AAC9D,CAAC,CAAA"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@teleporthq/teleport-project-packer",
3
+ "version": "0.18.0",
4
+ "description": "Bare-bone project packer that accepts any project generator and publisher",
5
+ "author": "teleportHQ",
6
+ "license": "MIT",
7
+ "homepage": "https://teleporthq.io/",
8
+ "main": "dist/cjs/index.js",
9
+ "module": "dist/esm/index.js",
10
+ "types": "dist/cjs/index.d.ts",
11
+ "sideEffects": false,
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+ssh://git@github.com/teleporthq/teleport-code-generators.git"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/teleporthq/teleport-code-generators/issues"
18
+ },
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "scripts": {
23
+ "clean": "rimraf dist",
24
+ "build": "tsc -p tsconfig.json && tsc -p tsconfig.json --module commonjs --outDir dist/cjs"
25
+ },
26
+ "dependencies": {
27
+ "@teleporthq/teleport-github-gateway": "^0.18.0",
28
+ "@teleporthq/teleport-types": "^0.18.0",
29
+ "cross-fetch": "^3.0.4"
30
+ },
31
+ "gitHead": "7b47f013bf1889e19b31875a8f3abdc43b22615a"
32
+ }
@@ -0,0 +1,7 @@
1
+ import { GeneratedFolder } from '@teleporthq/teleport-types'
2
+
3
+ export const DEFAULT_TEMPLATE: GeneratedFolder = {
4
+ name: 'teleport-project',
5
+ files: [],
6
+ subFolders: [],
7
+ }
package/src/index.ts ADDED
@@ -0,0 +1,104 @@
1
+ import {
2
+ AssetsDefinition,
3
+ Publisher,
4
+ ProjectGenerator,
5
+ PublisherResponse,
6
+ ProjectUIDL,
7
+ GeneratedFolder,
8
+ RemoteTemplateDefinition,
9
+ MissingProjectGeneratorError,
10
+ } from '@teleporthq/teleport-types'
11
+ import { injectAssetsToProject, fetchTemplate } from './utils'
12
+ import { DEFAULT_TEMPLATE } from './constants'
13
+
14
+ export interface PackerFactoryParams {
15
+ publisher?: Publisher<unknown, unknown>
16
+ generator?: ProjectGenerator
17
+ template?: GeneratedFolder
18
+ remoteTemplateDefinition?: RemoteTemplateDefinition
19
+ assets?: AssetsDefinition
20
+ }
21
+
22
+ export type PackerFactory = (
23
+ params?: PackerFactoryParams
24
+ ) => {
25
+ pack: (
26
+ projectUIDL?: ProjectUIDL,
27
+ params?: PackerFactoryParams
28
+ ) => Promise<PublisherResponse<unknown>>
29
+ loadRemoteTemplate: (remoteTemplateDefinition: RemoteTemplateDefinition) => Promise<void>
30
+ setPublisher: <T, U>(publisher: Publisher<T, U>) => void
31
+ setGenerator: (generator: ProjectGenerator) => void
32
+ setAssets: (assets: AssetsDefinition) => void
33
+ setTemplate: (templateFolder: GeneratedFolder) => void
34
+ }
35
+
36
+ export const createProjectPacker: PackerFactory = (params: PackerFactoryParams = {}) => {
37
+ let { assets, generator, publisher, template } = params
38
+
39
+ template = template || DEFAULT_TEMPLATE
40
+
41
+ const setPublisher = <T, U>(publisherToSet: Publisher<T, U>): void => {
42
+ publisher = publisherToSet
43
+ }
44
+
45
+ const setGenerator = (generatorToSet: ProjectGenerator): void => {
46
+ generator = generatorToSet
47
+ }
48
+
49
+ const setAssets = (assetsToSet: AssetsDefinition): void => {
50
+ assets = assetsToSet
51
+ }
52
+
53
+ const setTemplate = (templateFolder: GeneratedFolder): void => {
54
+ template = templateFolder
55
+ }
56
+
57
+ const loadRemoteTemplate = async (remoteDefinition: RemoteTemplateDefinition): Promise<void> => {
58
+ template = await fetchTemplate(remoteDefinition)
59
+ }
60
+
61
+ const pack = async (uidl: ProjectUIDL, packParams: PackerFactoryParams = {}) => {
62
+ const definedProjectUIDL = uidl
63
+
64
+ const packGenerator = packParams.generator || generator
65
+ if (!packGenerator) {
66
+ throw new MissingProjectGeneratorError()
67
+ }
68
+
69
+ const packPublisher = packParams.publisher || publisher
70
+
71
+ const packAssets = packParams.assets || assets
72
+ let templateFolder = packParams.template || template
73
+
74
+ // If a remote template is supplied at pack time, it will be fetched,
75
+ // but not saved inside the packer for a secondary use
76
+ if (!packParams.template && packParams.remoteTemplateDefinition) {
77
+ templateFolder = await fetchTemplate(packParams.remoteTemplateDefinition)
78
+ }
79
+
80
+ const outputFolder = await packGenerator.generateProject(definedProjectUIDL, templateFolder)
81
+ const assetsPath = packGenerator.getAssetsPath()
82
+
83
+ const project = await injectAssetsToProject(outputFolder, packAssets, assetsPath)
84
+
85
+ if (packPublisher) {
86
+ return packPublisher.publish({ project })
87
+ }
88
+
89
+ // If no publisher is provided, return the generated project
90
+ return {
91
+ success: true,
92
+ payload: project,
93
+ }
94
+ }
95
+
96
+ return {
97
+ setPublisher,
98
+ setGenerator,
99
+ setAssets,
100
+ setTemplate,
101
+ loadRemoteTemplate,
102
+ pack,
103
+ }
104
+ }
package/src/utils.ts ADDED
@@ -0,0 +1,70 @@
1
+ import { createGithubGateway } from '@teleporthq/teleport-github-gateway'
2
+
3
+ import {
4
+ AssetsDefinition,
5
+ GeneratedFolder,
6
+ GeneratedFile,
7
+ RemoteTemplateDefinition,
8
+ } from '@teleporthq/teleport-types'
9
+
10
+ export const fetchTemplate = async (template: RemoteTemplateDefinition) => {
11
+ const authData = template.auth || {}
12
+ const githubGateway = createGithubGateway(authData)
13
+ return githubGateway.getRepository(template)
14
+ }
15
+
16
+ export const injectAssetsToProject = async (
17
+ project: GeneratedFolder,
18
+ assetsData: AssetsDefinition,
19
+ assetsRootPath: string[]
20
+ ): Promise<GeneratedFolder> => {
21
+ if (!assetsData) {
22
+ return project
23
+ }
24
+
25
+ const { assets, path = [] } = assetsData
26
+
27
+ assets.forEach((asset: GeneratedFile) => {
28
+ const filePath = [...assetsRootPath, ...path]
29
+ project = injectFileInGeneratedFolder(project, asset, filePath)
30
+ })
31
+
32
+ return project
33
+ }
34
+
35
+ const injectFileInGeneratedFolder = (
36
+ generatedFolder: GeneratedFolder,
37
+ file: GeneratedFile,
38
+ path: string[]
39
+ ): GeneratedFolder => {
40
+ if (fileMustBeOnFirstLevel(path)) {
41
+ generatedFolder.files.push(file)
42
+ return generatedFolder
43
+ }
44
+
45
+ let currentFolder = generatedFolder
46
+
47
+ path.forEach((folderName, index) => {
48
+ let subFolder = currentFolder.subFolders.find((folder) => folder.name === folderName)
49
+
50
+ if (!subFolder) {
51
+ subFolder = {
52
+ name: folderName,
53
+ files: [],
54
+ subFolders: [],
55
+ }
56
+ currentFolder.subFolders.push(subFolder)
57
+ }
58
+
59
+ currentFolder = subFolder
60
+ if (index === path.length - 1) {
61
+ currentFolder.files.push(file)
62
+ }
63
+ })
64
+
65
+ return generatedFolder
66
+ }
67
+
68
+ const fileMustBeOnFirstLevel = (path: string[]): boolean => {
69
+ return !path.length || (path.length === 1 && path[0] === '')
70
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist/esm"
5
+ },
6
+ "include": [
7
+ "./src"
8
+ ]
9
+ }