@jigx/sdk-tools 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/builder/__tests__/build.test.d.ts +2 -0
  3. package/dist/builder/__tests__/build.test.d.ts.map +1 -0
  4. package/dist/builder/__tests__/build.test.js +88 -0
  5. package/dist/builder/__tests__/build.test.js.map +1 -0
  6. package/dist/builder/__tests__/extract-to-folder.test.d.ts +2 -0
  7. package/dist/builder/__tests__/extract-to-folder.test.d.ts.map +1 -0
  8. package/dist/builder/__tests__/extract-to-folder.test.js +198 -0
  9. package/dist/builder/__tests__/extract-to-folder.test.js.map +1 -0
  10. package/dist/builder/__tests__/fixtures/sample-application.d.ts +2 -0
  11. package/dist/builder/__tests__/fixtures/sample-application.d.ts.map +1 -0
  12. package/dist/builder/__tests__/fixtures/sample-application.js +56 -0
  13. package/dist/builder/__tests__/fixtures/sample-application.js.map +1 -0
  14. package/dist/builder/build.d.ts +12 -0
  15. package/dist/builder/build.d.ts.map +1 -0
  16. package/dist/builder/build.js +44 -0
  17. package/dist/builder/build.js.map +1 -0
  18. package/dist/builder/extract-to-folder.d.ts +11 -0
  19. package/dist/builder/extract-to-folder.d.ts.map +1 -0
  20. package/dist/builder/extract-to-folder.js +162 -0
  21. package/dist/builder/extract-to-folder.js.map +1 -0
  22. package/dist/builder/index.d.ts +3 -0
  23. package/dist/builder/index.d.ts.map +1 -0
  24. package/dist/builder/index.js +2 -0
  25. package/dist/builder/index.js.map +1 -0
  26. package/dist/cli.d.ts +3 -0
  27. package/dist/cli.d.ts.map +1 -0
  28. package/dist/cli.js +104 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/creator/__tests__/create.test.d.ts +2 -0
  31. package/dist/creator/__tests__/create.test.d.ts.map +1 -0
  32. package/dist/creator/__tests__/create.test.js +66 -0
  33. package/dist/creator/__tests__/create.test.js.map +1 -0
  34. package/dist/creator/create.d.ts +33 -0
  35. package/dist/creator/create.d.ts.map +1 -0
  36. package/dist/creator/create.js +65 -0
  37. package/dist/creator/create.js.map +1 -0
  38. package/dist/creator/index.d.ts +3 -0
  39. package/dist/creator/index.d.ts.map +1 -0
  40. package/dist/creator/index.js +2 -0
  41. package/dist/creator/index.js.map +1 -0
  42. package/dist/deployer/__tests__/deploy-to-strata.test.d.ts +2 -0
  43. package/dist/deployer/__tests__/deploy-to-strata.test.d.ts.map +1 -0
  44. package/dist/deployer/__tests__/deploy-to-strata.test.js +174 -0
  45. package/dist/deployer/__tests__/deploy-to-strata.test.js.map +1 -0
  46. package/dist/deployer/__tests__/deploy.test.d.ts +2 -0
  47. package/dist/deployer/__tests__/deploy.test.d.ts.map +1 -0
  48. package/dist/deployer/__tests__/deploy.test.js +116 -0
  49. package/dist/deployer/__tests__/deploy.test.js.map +1 -0
  50. package/dist/deployer/deploy-to-strata.d.ts +29 -0
  51. package/dist/deployer/deploy-to-strata.d.ts.map +1 -0
  52. package/dist/deployer/deploy-to-strata.js +161 -0
  53. package/dist/deployer/deploy-to-strata.js.map +1 -0
  54. package/dist/deployer/deploy.d.ts +7 -0
  55. package/dist/deployer/deploy.d.ts.map +1 -0
  56. package/dist/deployer/deploy.js +15 -0
  57. package/dist/deployer/deploy.js.map +1 -0
  58. package/dist/deployer/index.d.ts +5 -0
  59. package/dist/deployer/index.d.ts.map +1 -0
  60. package/dist/deployer/index.js +3 -0
  61. package/dist/deployer/index.js.map +1 -0
  62. package/dist/env-loader/__tests__/load-env.test.d.ts +2 -0
  63. package/dist/env-loader/__tests__/load-env.test.d.ts.map +1 -0
  64. package/dist/env-loader/__tests__/load-env.test.js +46 -0
  65. package/dist/env-loader/__tests__/load-env.test.js.map +1 -0
  66. package/dist/env-loader/index.d.ts +3 -0
  67. package/dist/env-loader/index.d.ts.map +1 -0
  68. package/dist/env-loader/index.js +2 -0
  69. package/dist/env-loader/index.js.map +1 -0
  70. package/dist/env-loader/load-env.d.ts +12 -0
  71. package/dist/env-loader/load-env.d.ts.map +1 -0
  72. package/dist/env-loader/load-env.js +50 -0
  73. package/dist/env-loader/load-env.js.map +1 -0
  74. package/dist/index.d.ts +15 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +8 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/prompts/index.d.ts +3 -0
  79. package/dist/prompts/index.d.ts.map +1 -0
  80. package/dist/prompts/index.js +2 -0
  81. package/dist/prompts/index.js.map +1 -0
  82. package/dist/prompts/prompts.d.ts +11 -0
  83. package/dist/prompts/prompts.d.ts.map +1 -0
  84. package/dist/prompts/prompts.js +45 -0
  85. package/dist/prompts/prompts.js.map +1 -0
  86. package/dist/scaffolder/__tests__/scaffold.test.d.ts +2 -0
  87. package/dist/scaffolder/__tests__/scaffold.test.d.ts.map +1 -0
  88. package/dist/scaffolder/__tests__/scaffold.test.js +112 -0
  89. package/dist/scaffolder/__tests__/scaffold.test.js.map +1 -0
  90. package/dist/scaffolder/index.d.ts +4 -0
  91. package/dist/scaffolder/index.d.ts.map +1 -0
  92. package/dist/scaffolder/index.js +2 -0
  93. package/dist/scaffolder/index.js.map +1 -0
  94. package/dist/scaffolder/scaffold.d.ts +16 -0
  95. package/dist/scaffolder/scaffold.d.ts.map +1 -0
  96. package/dist/scaffolder/scaffold.js +45 -0
  97. package/dist/scaffolder/scaffold.js.map +1 -0
  98. package/dist/scaffolder/templates.d.ts +13 -0
  99. package/dist/scaffolder/templates.d.ts.map +1 -0
  100. package/dist/scaffolder/templates.js +124 -0
  101. package/dist/scaffolder/templates.js.map +1 -0
  102. package/dist/slug/__tests__/validate.test.d.ts +2 -0
  103. package/dist/slug/__tests__/validate.test.d.ts.map +1 -0
  104. package/dist/slug/__tests__/validate.test.js +51 -0
  105. package/dist/slug/__tests__/validate.test.js.map +1 -0
  106. package/dist/slug/index.d.ts +3 -0
  107. package/dist/slug/index.d.ts.map +1 -0
  108. package/dist/slug/index.js +2 -0
  109. package/dist/slug/index.js.map +1 -0
  110. package/dist/slug/validate.d.ts +11 -0
  111. package/dist/slug/validate.d.ts.map +1 -0
  112. package/dist/slug/validate.js +29 -0
  113. package/dist/slug/validate.js.map +1 -0
  114. package/package.json +58 -0
@@ -0,0 +1,116 @@
1
+ import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import path from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, test } from 'vitest';
5
+ import { EnvMissingError } from '../../env-loader/index.js';
6
+ import { deploy } from '../deploy.js';
7
+ function jsonResponse(status, body) {
8
+ return new Response(JSON.stringify(body), {
9
+ status,
10
+ headers: { 'Content-Type': 'application/json' },
11
+ });
12
+ }
13
+ async function createFixture(options) {
14
+ const { env } = options;
15
+ const projectRoot = await mkdtemp(path.join(tmpdir(), 'jigx-sdk-tools-deploy-test-'));
16
+ await writeFile(path.join(projectRoot, 'package.json'), JSON.stringify({ name: 'fixture', private: true, type: 'module' }), 'utf8');
17
+ await mkdir(path.join(projectRoot, 'src'), { recursive: true });
18
+ await writeFile(path.join(projectRoot, 'src', 'app.ts'), `export const app = {
19
+ build: () => ({
20
+ name: 'fixture-app',
21
+ title: 'Fixture Application',
22
+ category: 'business',
23
+ description: 'A fixture',
24
+ type: 'app',
25
+ }),
26
+ }`, 'utf8');
27
+ if (env !== undefined) {
28
+ await writeFile(path.join(projectRoot, '.env'), env, 'utf8');
29
+ }
30
+ return projectRoot;
31
+ }
32
+ describe('deploy (e2e smoke)', () => {
33
+ let projectRoot;
34
+ let originalFetch;
35
+ beforeEach(() => {
36
+ projectRoot = undefined;
37
+ originalFetch = globalThis.fetch;
38
+ });
39
+ afterEach(async () => {
40
+ globalThis.fetch = originalFetch;
41
+ if (projectRoot)
42
+ await rm(projectRoot, { recursive: true, force: true });
43
+ });
44
+ test('builds, loads env, and issues GET → POST → PUT for a new Application against prod URLs', async () => {
45
+ projectRoot = await createFixture({
46
+ env: 'JIGX_API_KEY=test-token\nJIGX_ORGANIZATION_ID=00000000-0000-4000-8000-000000000002\n',
47
+ });
48
+ const calls = [];
49
+ globalThis.fetch = (async (input, init) => {
50
+ const url = typeof input === 'string' ? input : input.toString();
51
+ const method = init?.method ?? 'GET';
52
+ const rawBody = typeof init?.body === 'string' ? init.body : undefined;
53
+ calls.push({ url, method, body: rawBody ? JSON.parse(rawBody) : undefined });
54
+ if (method === 'GET' && url.endsWith('/solutions/fixture-app')) {
55
+ return jsonResponse(404, { error: 'not found' });
56
+ }
57
+ if (method === 'POST' && url.endsWith('/solutions/')) {
58
+ return jsonResponse(201, { solutionId: '00000000-0000-4000-8000-00000000cccc' });
59
+ }
60
+ if (method === 'PUT' &&
61
+ url.endsWith('/solutions/00000000-0000-4000-8000-00000000cccc/content')) {
62
+ return jsonResponse(200, {});
63
+ }
64
+ throw new Error(`unexpected ${method} ${url}`);
65
+ });
66
+ const result = await deploy({ projectRoot, environment: 'prod' });
67
+ expect(result).toEqual({
68
+ applicationName: 'fixture-app',
69
+ solutionId: '00000000-0000-4000-8000-00000000cccc',
70
+ isNewApplication: true,
71
+ manageUrl: 'https://manage.jigx.com/org/00000000-0000-4000-8000-000000000002/solution/00000000-0000-4000-8000-00000000cccc',
72
+ });
73
+ expect(calls.map((c) => `${c.method} ${c.url}`)).toEqual([
74
+ 'GET https://us-east-1.api.jigx.com/v2.0/strata/organizations/00000000-0000-4000-8000-000000000002/solutions/fixture-app',
75
+ 'POST https://us-east-1.api.jigx.com/v2.0/strata/organizations/00000000-0000-4000-8000-000000000002/solutions/',
76
+ 'PUT https://us-east-1.api.jigx.com/v2.0/strata/organizations/00000000-0000-4000-8000-000000000002/solutions/00000000-0000-4000-8000-00000000cccc/content',
77
+ ]);
78
+ });
79
+ test('hits dev URLs when environment is "dev"', async () => {
80
+ projectRoot = await createFixture({
81
+ env: 'JIGX_API_KEY=test-token\nJIGX_ORGANIZATION_ID=00000000-0000-4000-8000-000000000002\n',
82
+ });
83
+ const calls = [];
84
+ globalThis.fetch = (async (input, init) => {
85
+ const url = typeof input === 'string' ? input : input.toString();
86
+ const method = init?.method ?? 'GET';
87
+ calls.push({ url, method });
88
+ if (method === 'GET' && url.endsWith('/solutions/fixture-app')) {
89
+ return jsonResponse(404, { error: 'not found' });
90
+ }
91
+ if (method === 'POST' && url.endsWith('/solutions/')) {
92
+ return jsonResponse(201, { solutionId: '00000000-0000-4000-8000-00000000cccc' });
93
+ }
94
+ if (method === 'PUT' &&
95
+ url.endsWith('/solutions/00000000-0000-4000-8000-00000000cccc/content')) {
96
+ return jsonResponse(200, {});
97
+ }
98
+ throw new Error(`unexpected ${method} ${url}`);
99
+ });
100
+ const result = await deploy({ projectRoot, environment: 'dev' });
101
+ expect(result.manageUrl).toBe('https://manage-dev.jigx.com/org/00000000-0000-4000-8000-000000000002/solution/00000000-0000-4000-8000-00000000cccc');
102
+ expect(calls.every((c) => c.url.startsWith('https://us-west-2.dev-api.jigx.com'))).toBe(true);
103
+ });
104
+ test('throws EnvMissingError before any fetch when .env is absent', async () => {
105
+ projectRoot = await createFixture({});
106
+ let fetchCount = 0;
107
+ globalThis.fetch = (async () => {
108
+ fetchCount++;
109
+ return jsonResponse(200, {});
110
+ });
111
+ const error = await deploy({ projectRoot, environment: 'prod' }).catch((e) => e);
112
+ expect(error).toBeInstanceOf(EnvMissingError);
113
+ expect(fetchCount).toBe(0);
114
+ });
115
+ });
116
+ //# sourceMappingURL=deploy.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.test.js","sourceRoot":"","sources":["../../../src/deployer/__tests__/deploy.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface ApplicationContent {
2
+ readonly name: string;
3
+ readonly title?: string;
4
+ readonly category?: string;
5
+ readonly description?: string;
6
+ readonly type?: string;
7
+ }
8
+ export type DeployEnvironment = 'dev' | 'prod';
9
+ export interface DeployToStrataOptions {
10
+ readonly applicationContent: ApplicationContent;
11
+ readonly organizationId: string;
12
+ readonly apiKey: string;
13
+ readonly environment: DeployEnvironment;
14
+ }
15
+ export interface DeployResult {
16
+ readonly applicationName: string;
17
+ readonly solutionId: string;
18
+ readonly isNewApplication: boolean;
19
+ readonly manageUrl: string;
20
+ }
21
+ export declare class DeployError extends Error {
22
+ readonly status?: number;
23
+ constructor(options: {
24
+ readonly message: string;
25
+ readonly status?: number;
26
+ });
27
+ }
28
+ export declare function deployToStrata(options: DeployToStrataOptions): Promise<DeployResult>;
29
+ //# sourceMappingURL=deploy-to-strata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-to-strata.d.ts","sourceRoot":"","sources":["../../src/deployer/deploy-to-strata.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,CAAA;AAE9C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAExB,YAAY,OAAO,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAI1E;CACF;AA6JD,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0C1F"}
@@ -0,0 +1,161 @@
1
+ export class DeployError extends Error {
2
+ status;
3
+ constructor(options) {
4
+ super(options.message);
5
+ this.name = 'DeployError';
6
+ this.status = options.status;
7
+ }
8
+ }
9
+ const ENVIRONMENT_URLS = {
10
+ dev: {
11
+ strataBaseUrl: 'https://us-west-2.dev-api.jigx.com/v2.0',
12
+ manageBaseUrl: 'https://manage-dev.jigx.com',
13
+ },
14
+ prod: {
15
+ strataBaseUrl: 'https://us-east-1.api.jigx.com/v2.0',
16
+ manageBaseUrl: 'https://manage.jigx.com',
17
+ },
18
+ };
19
+ function authHeaders(apiKey) {
20
+ return {
21
+ Authorization: `Bearer ${apiKey}`,
22
+ 'Content-Type': 'application/json',
23
+ };
24
+ }
25
+ async function readResponseText(response) {
26
+ try {
27
+ return await response.text();
28
+ }
29
+ catch {
30
+ return '';
31
+ }
32
+ }
33
+ function deployErrorFromResponse(options) {
34
+ const { action, response, body } = options;
35
+ const status = response.status;
36
+ const baseMessage = `${action} failed (${status} ${response.statusText || ''}).`.trim();
37
+ const detail = body ? ` Response: ${body.slice(0, 500)}` : '';
38
+ if (status === 401 || status === 403) {
39
+ return new DeployError({
40
+ message: `${baseMessage} Check JIGX_API_KEY in .env — the token is missing or rejected.${detail}`,
41
+ status,
42
+ });
43
+ }
44
+ if (status === 404) {
45
+ return new DeployError({
46
+ message: `${baseMessage} Check JIGX_ORGANIZATION_ID in .env — the organization or Application was not found.${detail}`,
47
+ status,
48
+ });
49
+ }
50
+ return new DeployError({ message: `${baseMessage}${detail}`, status });
51
+ }
52
+ async function findApplicationByName(options) {
53
+ const { strataBaseUrl, organizationId, apiKey, applicationName } = options;
54
+ const url = `${strataBaseUrl}/strata/organizations/${encodeURIComponent(organizationId)}/solutions/${encodeURIComponent(applicationName)}`;
55
+ const response = await fetch(url, { method: 'GET', headers: authHeaders(apiKey) });
56
+ if (response.status === 404)
57
+ return null;
58
+ if (!response.ok) {
59
+ throw deployErrorFromResponse({
60
+ action: `Resolve Application "${applicationName}"`,
61
+ response,
62
+ body: await readResponseText(response),
63
+ });
64
+ }
65
+ const raw = await response.json();
66
+ const payload = raw;
67
+ if (!payload.solutionId) {
68
+ throw new DeployError({
69
+ message: `Resolve Application "${applicationName}" succeeded but response had no solutionId.`,
70
+ status: response.status,
71
+ });
72
+ }
73
+ return { solutionId: payload.solutionId };
74
+ }
75
+ async function createApplication(options) {
76
+ const { strataBaseUrl, organizationId, apiKey, applicationContent } = options;
77
+ const url = `${strataBaseUrl}/strata/organizations/${encodeURIComponent(organizationId)}/solutions/`;
78
+ const response = await fetch(url, {
79
+ method: 'POST',
80
+ headers: authHeaders(apiKey),
81
+ body: JSON.stringify({
82
+ name: applicationContent.name,
83
+ title: applicationContent.title,
84
+ category: applicationContent.category,
85
+ description: applicationContent.description ?? 'no description specified',
86
+ type: applicationContent.type,
87
+ }),
88
+ });
89
+ if (!response.ok) {
90
+ throw deployErrorFromResponse({
91
+ action: `Create Application "${applicationContent.name}"`,
92
+ response,
93
+ body: await readResponseText(response),
94
+ });
95
+ }
96
+ const raw = await response.json();
97
+ const payload = raw;
98
+ if (!payload.solutionId) {
99
+ throw new DeployError({
100
+ message: `Create Application "${applicationContent.name}" succeeded but response had no solutionId.`,
101
+ status: response.status,
102
+ });
103
+ }
104
+ return { solutionId: payload.solutionId };
105
+ }
106
+ async function putApplicationContent(options) {
107
+ const { strataBaseUrl, organizationId, apiKey, solutionId, applicationContent } = options;
108
+ const url = `${strataBaseUrl}/strata/organizations/${encodeURIComponent(organizationId)}/solutions/${encodeURIComponent(solutionId)}/content`;
109
+ const response = await fetch(url, {
110
+ method: 'PUT',
111
+ headers: authHeaders(apiKey),
112
+ body: JSON.stringify(applicationContent),
113
+ });
114
+ if (!response.ok) {
115
+ throw deployErrorFromResponse({
116
+ action: `Deploy Application content for "${applicationContent.name}"`,
117
+ response,
118
+ body: await readResponseText(response),
119
+ });
120
+ }
121
+ }
122
+ export async function deployToStrata(options) {
123
+ const { applicationContent, organizationId, apiKey, environment } = options;
124
+ const { strataBaseUrl, manageBaseUrl } = ENVIRONMENT_URLS[environment];
125
+ const existing = await findApplicationByName({
126
+ strataBaseUrl,
127
+ organizationId,
128
+ apiKey,
129
+ applicationName: applicationContent.name,
130
+ });
131
+ let solutionId;
132
+ let isNewApplication;
133
+ if (existing) {
134
+ solutionId = existing.solutionId;
135
+ isNewApplication = false;
136
+ }
137
+ else {
138
+ const created = await createApplication({
139
+ strataBaseUrl,
140
+ organizationId,
141
+ apiKey,
142
+ applicationContent,
143
+ });
144
+ solutionId = created.solutionId;
145
+ isNewApplication = true;
146
+ }
147
+ await putApplicationContent({
148
+ strataBaseUrl,
149
+ organizationId,
150
+ apiKey,
151
+ solutionId,
152
+ applicationContent,
153
+ });
154
+ return {
155
+ applicationName: applicationContent.name,
156
+ solutionId,
157
+ isNewApplication,
158
+ manageUrl: `${manageBaseUrl}/org/${encodeURIComponent(organizationId)}/solution/${encodeURIComponent(solutionId)}`,
159
+ };
160
+ }
161
+ //# sourceMappingURL=deploy-to-strata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-to-strata.js","sourceRoot":"","sources":["../../src/deployer/deploy-to-strata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type DeployEnvironment, type DeployResult } from './deploy-to-strata.js';
2
+ export interface DeployOptions {
3
+ readonly projectRoot: string;
4
+ readonly environment: DeployEnvironment;
5
+ }
6
+ export declare function deploy(options: DeployOptions): Promise<DeployResult>;
7
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/deployer/deploy.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAA;AAE9B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;CACxC;AAOD,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB1E"}
@@ -0,0 +1,15 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { build } from '../builder/index.js';
3
+ import { loadEnv } from '../env-loader/index.js';
4
+ import { deployToStrata, } from './deploy-to-strata.js';
5
+ export async function deploy(options) {
6
+ const { projectRoot, environment } = options;
7
+ const buildResult = await build({ projectRoot });
8
+ const { apiKey, organizationId } = await loadEnv({ projectRoot });
9
+ const applicationContent = JSON.parse(await readFile(buildResult.outputJsonPath, 'utf8'));
10
+ if (!applicationContent.name) {
11
+ throw new Error(`Built Application is missing a name. Set .name on your ApplicationBuilder in src/app.ts.`);
12
+ }
13
+ return deployToStrata({ applicationContent, organizationId, apiKey, environment });
14
+ }
15
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/deployer/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAIL,cAAc,GACf,MAAM,uBAAuB,CAAA;AAY9B,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB,EAAyB;IAC1E,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAE5C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IAChD,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,CAAA;IAEjE,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CACnC,MAAM,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAC7B,CAAA;IAEvB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAA;IACH,CAAC;IAED,OAAO,cAAc,CAAC,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;AAAA,CACnF"}
@@ -0,0 +1,5 @@
1
+ export { deploy } from './deploy.js';
2
+ export type { DeployOptions } from './deploy.js';
3
+ export { deployToStrata, DeployError } from './deploy-to-strata.js';
4
+ export type { ApplicationContent, DeployEnvironment, DeployToStrataOptions, DeployResult, } from './deploy-to-strata.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/deployer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnE,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,GACb,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { deploy } from './deploy.js';
2
+ export { deployToStrata, DeployError } from './deploy-to-strata.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deployer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=load-env.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-env.test.d.ts","sourceRoot":"","sources":["../../../src/env-loader/__tests__/load-env.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { mkdtemp, rm, writeFile } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import path from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, test } from 'vitest';
5
+ import { EnvMissingError, loadEnv } from '../load-env.js';
6
+ describe('EnvLoader.loadEnv', () => {
7
+ let projectRoot;
8
+ beforeEach(() => {
9
+ projectRoot = undefined;
10
+ });
11
+ afterEach(async () => {
12
+ if (projectRoot)
13
+ await rm(projectRoot, { recursive: true, force: true });
14
+ });
15
+ test('returns apiKey + organizationId when both vars are present in .env', async () => {
16
+ projectRoot = await mkdtemp(path.join(tmpdir(), 'jigx-env-loader-test-'));
17
+ await writeFile(path.join(projectRoot, '.env'), 'JIGX_API_KEY=secret-token\nJIGX_ORGANIZATION_ID=org-abc\n', 'utf8');
18
+ const result = await loadEnv({ projectRoot });
19
+ expect(result).toEqual({ apiKey: 'secret-token', organizationId: 'org-abc' });
20
+ });
21
+ test('throws EnvMissingError naming missing vars when .env omits them', async () => {
22
+ projectRoot = await mkdtemp(path.join(tmpdir(), 'jigx-env-loader-test-'));
23
+ await writeFile(path.join(projectRoot, '.env'), 'JIGX_API_KEY=secret-token\n', 'utf8');
24
+ const error = await loadEnv({ projectRoot }).catch((e) => e);
25
+ expect(error).toBeInstanceOf(EnvMissingError);
26
+ expect(error.message).toMatch(/JIGX_ORGANIZATION_ID/);
27
+ expect(error.message).toMatch(/\.env/);
28
+ });
29
+ test('throws EnvMissingError when .env file does not exist', async () => {
30
+ projectRoot = await mkdtemp(path.join(tmpdir(), 'jigx-env-loader-test-'));
31
+ const error = await loadEnv({ projectRoot }).catch((e) => e);
32
+ expect(error).toBeInstanceOf(EnvMissingError);
33
+ expect(error.message).toMatch(/\.env/);
34
+ expect(error.message).toMatch(/JIGX_API_KEY/);
35
+ expect(error.message).toMatch(/JIGX_ORGANIZATION_ID/);
36
+ });
37
+ test('treats empty values as missing', async () => {
38
+ projectRoot = await mkdtemp(path.join(tmpdir(), 'jigx-env-loader-test-'));
39
+ await writeFile(path.join(projectRoot, '.env'), 'JIGX_API_KEY=\nJIGX_ORGANIZATION_ID=\n', 'utf8');
40
+ const error = await loadEnv({ projectRoot }).catch((e) => e);
41
+ expect(error).toBeInstanceOf(EnvMissingError);
42
+ expect(error.message).toMatch(/JIGX_API_KEY/);
43
+ expect(error.message).toMatch(/JIGX_ORGANIZATION_ID/);
44
+ });
45
+ });
46
+ //# sourceMappingURL=load-env.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-env.test.js","sourceRoot":"","sources":["../../../src/env-loader/__tests__/load-env.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { loadEnv, EnvMissingError } from './load-env.js';
2
+ export type { LoadEnvOptions, LoadedEnv } from './load-env.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/env-loader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACxD,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { loadEnv, EnvMissingError } from './load-env.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/env-loader/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,12 @@
1
+ export interface LoadEnvOptions {
2
+ readonly projectRoot: string;
3
+ }
4
+ export interface LoadedEnv {
5
+ readonly apiKey: string;
6
+ readonly organizationId: string;
7
+ }
8
+ export declare class EnvMissingError extends Error {
9
+ constructor(message: string);
10
+ }
11
+ export declare function loadEnv(options: LoadEnvOptions): Promise<LoadedEnv>;
12
+ //# sourceMappingURL=load-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-env.d.ts","sourceRoot":"","sources":["../../src/env-loader/load-env.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAE7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAgCD,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CA4BzE"}
@@ -0,0 +1,50 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { parseEnv } from 'node:util';
4
+ export class EnvMissingError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'EnvMissingError';
8
+ }
9
+ }
10
+ const REQUIRED_VARS = ['JIGX_API_KEY', 'JIGX_ORGANIZATION_ID'];
11
+ function isFileNotFoundError(error) {
12
+ return (error instanceof Error && 'code' in error && error.code === 'ENOENT');
13
+ }
14
+ function missingVarsMessage(options) {
15
+ const { missing, envPath, fileExists } = options;
16
+ const lead = fileExists
17
+ ? `Missing required environment variables in ${envPath}: ${missing.join(', ')}.`
18
+ : `No .env file found at ${envPath}.`;
19
+ const instruction = fileExists
20
+ ? `Add the variable${missing.length > 1 ? 's' : ''} to .env:`
21
+ : `Create .env with:`;
22
+ const lines = REQUIRED_VARS.map((name) => ` ${name}=<your-${name.toLowerCase()}>`);
23
+ return [lead, instruction, ...lines].join('\n');
24
+ }
25
+ export async function loadEnv(options) {
26
+ const { projectRoot } = options;
27
+ const envPath = path.join(projectRoot, '.env');
28
+ let parsed = {};
29
+ let fileExists = true;
30
+ try {
31
+ parsed = parseEnv(await readFile(envPath, 'utf8'));
32
+ }
33
+ catch (error) {
34
+ if (!isFileNotFoundError(error))
35
+ throw error;
36
+ fileExists = false;
37
+ }
38
+ const apiKey = parsed.JIGX_API_KEY;
39
+ const organizationId = parsed.JIGX_ORGANIZATION_ID;
40
+ const missing = [];
41
+ if (!apiKey)
42
+ missing.push('JIGX_API_KEY');
43
+ if (!organizationId)
44
+ missing.push('JIGX_ORGANIZATION_ID');
45
+ if (missing.length > 0 || !apiKey || !organizationId) {
46
+ throw new EnvMissingError(missingVarsMessage({ missing, envPath, fileExists }));
47
+ }
48
+ return { apiKey, organizationId };
49
+ }
50
+ //# sourceMappingURL=load-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-env.js","sourceRoot":"","sources":["../../src/env-loader/load-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAYpC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe,EAAE;QAC3B,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAAA,CAC9B;CACF;AAED,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,sBAAsB,CAAU,CAAA;AAEvE,SAAS,mBAAmB,CAAC,KAAc,EAAW;IACpD,OAAO,CACL,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,CAChG,CAAA;AAAA,CACF;AAED,SAAS,kBAAkB,CAAC,OAI3B,EAAU;IACT,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAChD,MAAM,IAAI,GAAG,UAAU;QACrB,CAAC,CAAC,6CAA6C,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAChF,CAAC,CAAC,yBAAyB,OAAO,GAAG,CAAA;IACvC,MAAM,WAAW,GAAG,UAAU;QAC5B,CAAC,CAAC,mBAAmB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW;QAC7D,CAAC,CAAC,mBAAmB,CAAA;IACvB,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;IACnF,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAAA,CAChD;AAQD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAuB,EAAsB;IACzE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAE9C,IAAI,MAAM,GAAwB,EAAE,CAAA;IACpC,IAAI,UAAU,GAAG,IAAI,CAAA;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,QAAQ,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAA;QAC5C,UAAU,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAA;IAClC,MAAM,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAA;IAElD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACzC,IAAI,CAAC,cAAc;QAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAKzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACrD,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;IACjF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;AAAA,CAClC"}
@@ -0,0 +1,15 @@
1
+ export { build } from './builder/index.js';
2
+ export type { BuildOptions, BuildResult } from './builder/index.js';
3
+ export { create, detectPackageManager, InstallFailedError } from './creator/index.js';
4
+ export type { CreateOptions, CreateResult, InstallFn, InstallSpawnResult, PackageManager, } from './creator/index.js';
5
+ export { deploy, deployToStrata, DeployError } from './deployer/index.js';
6
+ export type { ApplicationContent, DeployEnvironment, DeployOptions, DeployToStrataOptions, DeployResult, } from './deployer/index.js';
7
+ export { loadEnv, EnvMissingError } from './env-loader/index.js';
8
+ export type { LoadEnvOptions, LoadedEnv } from './env-loader/index.js';
9
+ export { PromptCancelledError, runCreatePrompts } from './prompts/index.js';
10
+ export type { CreatePromptAnswers } from './prompts/index.js';
11
+ export { scaffold, ScaffoldError } from './scaffolder/index.js';
12
+ export type { ApplicationType, ScaffoldOptions, ScaffoldResult, TemplateInputs, } from './scaffolder/index.js';
13
+ export { slugifyTitle, validateApplicationName } from './slug/index.js';
14
+ export type { ValidationError, ValidationOk, ValidationResult } from './slug/index.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACrF,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACzE,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,YAAY,GACb,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAChE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC3E,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAE7D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC/D,YAAY,EACV,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AACvE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export { build } from './builder/index.js';
2
+ export { create, detectPackageManager, InstallFailedError } from './creator/index.js';
3
+ export { deploy, deployToStrata, DeployError } from './deployer/index.js';
4
+ export { loadEnv, EnvMissingError } from './env-loader/index.js';
5
+ export { PromptCancelledError, runCreatePrompts } from './prompts/index.js';
6
+ export { scaffold, ScaffoldError } from './scaffolder/index.js';
7
+ export { slugifyTitle, validateApplicationName } from './slug/index.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAG1C,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AASrF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AASzE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGhE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG3E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAQ/D,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { PromptCancelledError, runCreatePrompts } from './prompts.js';
2
+ export type { CreatePromptAnswers } from './prompts.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACrE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { PromptCancelledError, runCreatePrompts } from './prompts.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type { ApplicationType } from '../scaffolder/index.js';
2
+ export interface CreatePromptAnswers {
3
+ readonly title: string;
4
+ readonly applicationName: string;
5
+ readonly type: ApplicationType;
6
+ }
7
+ export declare class PromptCancelledError extends Error {
8
+ constructor();
9
+ }
10
+ export declare function runCreatePrompts(): Promise<CreatePromptAnswers>;
11
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/prompts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAC/B;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,cAGC;CACF;AAgBD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAqCrE"}