@apps-in-toss/web-framework 0.0.7 → 0.0.8

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 (59) hide show
  1. package/dist/chunk-5AYTRYXW.js +27 -0
  2. package/dist/chunk-MHAJE5QI.js +34 -0
  3. package/dist/cli.cjs +4528 -543
  4. package/dist/cli.d.cts +2 -1
  5. package/dist/cli.d.ts +2 -1
  6. package/dist/cli.js +3486 -493
  7. package/dist/config/index.cjs +17 -4
  8. package/dist/config/index.d.cts +19 -3
  9. package/dist/config/index.d.ts +19 -3
  10. package/dist/config/index.js +7714 -23
  11. package/dist/lib-EUN4APCZ.js +1007 -0
  12. package/dist/lib-OD73GAMK.js +1007 -0
  13. package/package.json +14 -12
  14. package/src-web/closeView.d.ts +24 -0
  15. package/src-web/generateHapticFeedback.d.ts +52 -0
  16. package/src-web/getDeviceId.d.ts +32 -0
  17. package/src-web/getLocale.d.ts +31 -0
  18. package/src-web/getNetworkStatus.d.ts +55 -0
  19. package/src-web/getSchemeUri.d.ts +26 -0
  20. package/src-web/index.js +1 -0
  21. package/src-web/setScreenAwakeMode.d.ts +69 -0
  22. package/src-web/setSecureScreen.d.ts +34 -0
  23. package/src-web/share.d.ts +37 -0
  24. package/dist/chunk-CH3CIAIW.js +0 -7688
  25. package/dist/chunk-DI2VGQ6M.js +0 -53
  26. package/dist/chunk-HL7M3JLX.js +0 -53
  27. package/dist/chunk-I3ZDGLIW.js +0 -19
  28. package/dist/chunk-LJBVSTWE.js +0 -7687
  29. package/dist/chunk-OMIGZ2S7.js +0 -7689
  30. package/dist/chunk-TZCMTMV7.js +0 -38
  31. package/dist/cli/index.cjs +0 -644
  32. package/dist/cli/index.d.cts +0 -2
  33. package/dist/cli/index.d.ts +0 -2
  34. package/dist/cli/index.js +0 -592
  35. package/dist/closeView.d.ts +0 -1
  36. package/dist/generateHapticFeedback.d.ts +0 -1
  37. package/dist/getDeviceId.d.ts +0 -1
  38. package/dist/getLocale.d.ts +0 -1
  39. package/dist/getNetworkStatus.d.ts +0 -1
  40. package/dist/getSchemeUri.d.ts +0 -1
  41. package/dist/index.cjs +0 -18
  42. package/dist/index.d.cts +0 -2
  43. package/dist/index.js +0 -1
  44. package/dist/plugins/index.cjs +0 -7682
  45. package/dist/plugins/index.d.cts +0 -15
  46. package/dist/plugins/index.d.ts +0 -15
  47. package/dist/plugins/index.js +0 -11
  48. package/dist/setScreenAwakeMode.d.ts +0 -1
  49. package/dist/setSecureScreen.d.ts +0 -1
  50. package/dist/share.d.ts +0 -1
  51. package/react-native/.bedrock/.env.js +0 -4
  52. /package/{dist → src-web}/fetchAlbumPhotos.d.ts +0 -0
  53. /package/{dist → src-web}/fetchContacts.d.ts +0 -0
  54. /package/{dist → src-web}/getClipboardText.d.ts +0 -0
  55. /package/{dist → src-web}/getCurrentLocation.d.ts +0 -0
  56. /package/{dist → src-web}/index.d.ts +0 -0
  57. /package/{dist → src-web}/openCamera.d.ts +0 -0
  58. /package/{dist → src-web}/setClipboardText.d.ts +0 -0
  59. /package/{dist → src-web}/startUpdateLocation.d.ts +0 -0
@@ -1,38 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
-
3
- // src/config/defineConfig.ts
4
- import { z } from "zod";
5
- var AppsInTossConfigSchema = z.object({
6
- appName: z.string(),
7
- web: z.object({
8
- port: z.number(),
9
- commands: z.object({
10
- dev: z.string(),
11
- build: z.string()
12
- })
13
- })
14
- });
15
- var defineConfig = (config) => {
16
- return AppsInTossConfigSchema.parse(config);
17
- };
18
-
19
- // src/config/loadConfig.ts
20
- import { cosmiconfig } from "cosmiconfig";
21
- import { TypeScriptLoader } from "cosmiconfig-typescript-loader";
22
- var loadConfig = async () => {
23
- const explorer = cosmiconfig("apps-in-toss", {
24
- searchPlaces: ["apps-in-toss.config.web.ts", "apps-in-toss.config.web.mts"],
25
- loaders: {
26
- ".ts": TypeScriptLoader(),
27
- ".mts": TypeScriptLoader()
28
- }
29
- });
30
- const result = await explorer.search(process.cwd());
31
- const config = defineConfig(result?.config ?? {});
32
- return config;
33
- };
34
-
35
- export {
36
- defineConfig,
37
- loadConfig
38
- };
@@ -1,644 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
- // If the importer is in node compatibility mode or this is not an ESM
18
- // file that has been converted to a CommonJS file using a Babel-
19
- // compatible transform (i.e. "__esModule" has not been set), then set
20
- // "default" to the CommonJS "module.exports" for node compatibility.
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
- mod
23
- ));
24
-
25
- // src/cli/index.ts
26
- var import_clipanion5 = require("clipanion");
27
-
28
- // src/cli/BuildCommand/BuildCommand.ts
29
- var import_cli_presets2 = require("@apps-in-toss/framework/cli-presets");
30
- var import_clipanion = require("clipanion");
31
- var import_picocolors = __toESM(require("picocolors"), 1);
32
-
33
- // src/cli/BuildCommand/build.ts
34
- var import_fs = __toESM(require("fs"), 1);
35
- var import_path = __toESM(require("path"), 1);
36
- var import_cli_presets = require("@apps-in-toss/framework/cli-presets");
37
- var mpack = __toESM(require("@react-native-bedrock/mpack-next"), 1);
38
- var import_plugins = require("@react-native-bedrock/mpack-next/plugins");
39
- var import_execa = require("execa");
40
- var import_presets = __toESM(require("react-native-bedrock/presets"), 1);
41
-
42
- // src/config/loadConfig.ts
43
- var import_cosmiconfig = require("cosmiconfig");
44
- var import_cosmiconfig_typescript_loader = require("cosmiconfig-typescript-loader");
45
-
46
- // src/config/defineConfig.ts
47
- var import_zod = require("zod");
48
- var AppsInTossConfigSchema = import_zod.z.object({
49
- appName: import_zod.z.string(),
50
- web: import_zod.z.object({
51
- port: import_zod.z.number(),
52
- commands: import_zod.z.object({
53
- dev: import_zod.z.string(),
54
- build: import_zod.z.string()
55
- })
56
- })
57
- });
58
- var defineConfig = (config) => {
59
- return AppsInTossConfigSchema.parse(config);
60
- };
61
-
62
- // src/config/loadConfig.ts
63
- var loadConfig = async () => {
64
- const explorer = (0, import_cosmiconfig.cosmiconfig)("apps-in-toss", {
65
- searchPlaces: ["apps-in-toss.config.web.ts", "apps-in-toss.config.web.mts"],
66
- loaders: {
67
- ".ts": (0, import_cosmiconfig_typescript_loader.TypeScriptLoader)(),
68
- ".mts": (0, import_cosmiconfig_typescript_loader.TypeScriptLoader)()
69
- }
70
- });
71
- const result = await explorer.search(process.cwd());
72
- const config = defineConfig(result?.config ?? {});
73
- return config;
74
- };
75
-
76
- // src/cli/utils/getPackageManager.ts
77
- function getPackageManager({ isExecutor = false } = {}) {
78
- const userAgent = process.env.npm_config_user_agent;
79
- const packageManagerCommands = {
80
- npm: isExecutor ? "npx" : "npm",
81
- pnpm: "pnpm",
82
- yarn: "yarn"
83
- };
84
- if (!userAgent) {
85
- return {
86
- packageManager: packageManagerCommands["npm"],
87
- version: "0.0.0"
88
- };
89
- }
90
- const [packageManagerInfo] = userAgent.match(/(\w+)\/(\d+\.\d+\.\d+)/) || [];
91
- const [packageManager, version2] = packageManagerInfo?.split("/") ?? ["npm", null];
92
- if (!packageManager) {
93
- return {
94
- packageManager: packageManagerCommands["npm"],
95
- version: "0.0.0"
96
- };
97
- }
98
- return {
99
- packageManager: packageManagerCommands[packageManager],
100
- version: version2 ?? "0.0.0"
101
- };
102
- }
103
-
104
- // src/cli/BuildCommand/build.ts
105
- async function build({
106
- distDirname,
107
- cache,
108
- deploymentId
109
- }) {
110
- const config = await loadConfig();
111
- const rootDir = process.cwd();
112
- const reactNativeProjectDir = import_path.default.resolve(__dirname, "..", "react-native");
113
- const projectRootTmp = import_path.default.resolve(process.cwd(), ".bedrock");
114
- await import_fs.default.promises.mkdir(projectRootTmp, { recursive: true });
115
- await import_fs.default.promises.writeFile(
116
- import_path.default.join(projectRootTmp, "metadata.json"),
117
- JSON.stringify({ appName: config.appName, webPort: config.web.port })
118
- );
119
- const appName = config.appName;
120
- const { packageManager } = getPackageManager({ isExecutor: true });
121
- const distDir = import_path.default.join(rootDir, distDirname);
122
- const webDistDir = import_path.default.join(distDir, "web");
123
- await import_fs.default.promises.rm(distDir, { recursive: true, force: true });
124
- await (0, import_execa.execa)(packageManager, config.web.commands.build.split(" "), {
125
- cwd: process.cwd(),
126
- stdio: "inherit"
127
- });
128
- await import_fs.default.promises.mkdir(webDistDir, { recursive: true });
129
- const items = await import_fs.default.promises.readdir(distDir);
130
- for (const item of items) {
131
- const src = import_path.default.join(distDir, item);
132
- const dest = import_path.default.join(webDistDir, item);
133
- if (src === webDistDir) {
134
- continue;
135
- }
136
- await import_fs.default.promises.rename(src, dest);
137
- }
138
- const appsInTossPreset = (0, import_cli_presets.getPreset)(deploymentId);
139
- const buildResults = await mpack.runBundle({
140
- clean: false,
141
- metafile: false,
142
- dev: false,
143
- rootDir: reactNativeProjectDir,
144
- cache,
145
- plugins: [import_plugins.statusPlugin],
146
- config: {
147
- appName,
148
- services: {
149
- sentry: {
150
- enabled: false
151
- }
152
- },
153
- concurrency: 2,
154
- tasks: [
155
- {
156
- tag: `${appName}-ios`,
157
- presets: [import_presets.default.service(), appsInTossPreset],
158
- build: {
159
- babel: {
160
- conditions: [(_code) => _code.includes("Ait")],
161
- plugins: [
162
- [
163
- require.resolve("@apps-in-toss/babel-plugin-json"),
164
- { jsonPath: "./.bedrock/metadata.json", identifierName: "Ait" }
165
- ]
166
- ]
167
- },
168
- platform: "ios",
169
- entry: import_path.default.join(reactNativeProjectDir, "src", "_app.tsx"),
170
- outfile: import_path.default.join(distDir, `${appName}.ios.js`)
171
- }
172
- },
173
- {
174
- tag: `${appName}-android`,
175
- presets: [import_presets.default.service(), appsInTossPreset],
176
- build: {
177
- babel: {
178
- conditions: [(_code) => _code.includes("Ait")],
179
- plugins: [
180
- [
181
- require.resolve("@apps-in-toss/babel-plugin-json"),
182
- { jsonPath: "./.bedrock/metadata.json", identifierName: "Ait" }
183
- ]
184
- ]
185
- },
186
- platform: "android",
187
- entry: import_path.default.join(reactNativeProjectDir, "src", "_app.tsx"),
188
- outfile: import_path.default.join(distDir, `${appName}.android.js`)
189
- }
190
- }
191
- ]
192
- }
193
- });
194
- const artifactOutfile = await (0, import_cli_presets.createArtifact)({
195
- buildResults,
196
- rootDir,
197
- deploymentId,
198
- reactNativeProjectDir,
199
- webOutDir: webDistDir
200
- });
201
- if (!artifactOutfile) {
202
- throw new Error("\uC544\uD2F0\uD329\uD2B8 \uC0DD\uC131\uC5D0 \uC2E4\uD328\uD588\uC5B4\uC694.");
203
- }
204
- return artifactOutfile;
205
- }
206
-
207
- // src/cli/constants.ts
208
- var APP_MANIFEST_NAME = "app.json";
209
- var DEFAULT_DIST_DIR = "dist";
210
- var DEFAULT_API_BASE_URL = "https://apps-in-toss.toss.im/console";
211
- var DEFAULT_LOCALHOST_PORT = 8081;
212
- var DEFAULT_HOST = "localhost";
213
-
214
- // src/cli/BuildCommand/BuildCommand.ts
215
- var BuildCommand = class extends import_clipanion.Command {
216
- static paths = [[`build`]];
217
- static usage = import_clipanion.Command.Usage({
218
- category: "Build",
219
- description: "Apps In Toss \uBE4C\uB4DC \uC544\uD2F0\uD329\uD2B8\uB97C \uC0DD\uC131\uD569\uB2C8\uB2E4",
220
- examples: [["\uBE4C\uB4DC \uC544\uD2F0\uD329\uD2B8 \uC0DD\uC131\uD558\uAE30", "ait build"]]
221
- });
222
- cache = import_clipanion.Option.Boolean("--cache", true);
223
- async execute() {
224
- const deploymentId = (0, import_cli_presets2.generateDeploymentId)();
225
- const artifactOutfile = await build({
226
- distDirname: DEFAULT_DIST_DIR,
227
- cache: this.cache,
228
- deploymentId
229
- });
230
- console.log(`
231
- ${import_picocolors.default.blue(artifactOutfile)}
232
- `);
233
- }
234
- };
235
-
236
- // src/cli/DeployCommand/DeployCommand.ts
237
- var import_assert = __toESM(require("assert"), 1);
238
- var import_path2 = __toESM(require("path"), 1);
239
- var import_cli_presets3 = require("@apps-in-toss/framework/cli-presets");
240
- var p = __toESM(require("@clack/prompts"), 1);
241
- var import_clipanion2 = require("clipanion");
242
- var import_debug2 = __toESM(require("debug"), 1);
243
- var import_picocolors2 = __toESM(require("picocolors"), 1);
244
-
245
- // src/cli/DeployCommand/upload.ts
246
- var import_fs2 = __toESM(require("fs"), 1);
247
- var import_debug = __toESM(require("debug"), 1);
248
- var debug = (0, import_debug.default)("cli:deploy");
249
- async function uploadArtifact(config) {
250
- debug("uploadArtifact", config);
251
- const baseUrl = config.baseUrl ?? DEFAULT_API_BASE_URL;
252
- const response = await fetch(
253
- `${baseUrl}/api-public/v3/appsintossconsole/bundles/${config.appName}/deployments/${config.deploymentId}/upload`,
254
- {
255
- method: "POST",
256
- headers: {
257
- "Content-Type": "application/octet-stream",
258
- "X-Ait-Console-Api-Key": config.apiKey
259
- },
260
- body: import_fs2.default.createReadStream(config.artifactPath),
261
- duplex: "half"
262
- }
263
- );
264
- return handleResponse(response);
265
- }
266
- async function handleResponse(response) {
267
- debug(`Response ${response.status} ${response.statusText}`);
268
- if (!response.ok) {
269
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
270
- }
271
- const data = await response.clone().json();
272
- debug("uploadArtifact response", data);
273
- if (data.resultType !== "SUCCESS") {
274
- const errorCode = data?.error?.errorCode ?? "-1";
275
- const errorReason = data?.error.reason ?? "unknown";
276
- throw new Error(`${errorReason} (Code: ${errorCode})`);
277
- }
278
- }
279
-
280
- // src/cli/utils/readZipContent.ts
281
- var import_yauzl = __toESM(require("yauzl"), 1);
282
- function readZipContent(zipPath, fileName) {
283
- return new Promise((resolve, reject) => {
284
- import_yauzl.default.open(zipPath, { lazyEntries: true }, (error, zipFile) => {
285
- if (error) {
286
- reject(error);
287
- return;
288
- }
289
- zipFile.on("entry", (entry) => {
290
- if (entry.fileName === fileName) {
291
- zipFile.openReadStream(entry, (error2, readStream) => {
292
- if (error2) {
293
- throw error2;
294
- }
295
- let fileData = "";
296
- readStream.on("data", (chunk) => fileData += chunk.toString("utf8")).on("end", () => {
297
- zipFile.close();
298
- resolve(fileData);
299
- });
300
- });
301
- } else {
302
- zipFile.readEntry();
303
- }
304
- }).on("end", () => {
305
- zipFile.close();
306
- reject(new Error(`'${fileName}' not found in zip file`));
307
- }).on("error", (error2) => {
308
- zipFile.close();
309
- reject(error2);
310
- });
311
- zipFile.readEntry();
312
- });
313
- });
314
- }
315
-
316
- // src/cli/DeployCommand/DeployCommand.ts
317
- var debug2 = (0, import_debug2.default)("cli:deploy");
318
- var DeployCommand = class extends import_clipanion2.Command {
319
- static paths = [["deploy"]];
320
- apiKey = import_clipanion2.Option.String("--api-key", {
321
- required: false,
322
- description: "\uC54C\uD30C \uBC30\uD3EC\uB97C \uC704\uD55C API \uD0A4"
323
- });
324
- baseUrl = import_clipanion2.Option.String("--base-url", {
325
- description: "API Base URL"
326
- });
327
- async execute() {
328
- const baseUrl = this.baseUrl;
329
- const apiKey = this.apiKey || await p.password({
330
- message: "\uC571\uC778\uD1A0\uC2A4 \uBC30\uD3EC API \uD0A4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694",
331
- validate: (value) => {
332
- if (value.length === 0) {
333
- return "API \uD0A4\uB294 \uD544\uC218 \uC785\uB825 \uD56D\uBAA9\uC785\uB2C8\uB2E4.";
334
- }
335
- return;
336
- }
337
- });
338
- if (p.isCancel(apiKey)) {
339
- return;
340
- }
341
- try {
342
- const deploymentId = (0, import_cli_presets3.generateDeploymentId)();
343
- const artifactOutfile = await build({
344
- distDirname: DEFAULT_DIST_DIR,
345
- cache: false,
346
- deploymentId
347
- });
348
- const rootDir = process.cwd();
349
- const resolvedArtifactPath = import_path2.default.resolve(rootDir, artifactOutfile);
350
- const appIdentifier = await readZipContent(resolvedArtifactPath, APP_MANIFEST_NAME).then((rawAppManifest) => {
351
- const appManifest = JSON.parse(rawAppManifest);
352
- const appIdentifier2 = appManifest.appName;
353
- (0, import_assert.default)(typeof appIdentifier2 === "string", "invalid appName");
354
- return appIdentifier2;
355
- }).catch((error) => {
356
- debug2("invalid ait file", error);
357
- throw new Error("\uC720\uD6A8\uD558\uC9C0 \uC54A\uC740 ait \uD30C\uC77C\uC785\uB2C8\uB2E4");
358
- });
359
- const colorAppName = import_picocolors2.default.underline(import_picocolors2.default.cyan(appIdentifier));
360
- await p.tasks([
361
- {
362
- title: `${colorAppName} \uC571 \uBC30\uD3EC \uC911...`,
363
- task: async () => {
364
- await uploadArtifact({
365
- artifactPath: resolvedArtifactPath,
366
- appName: appIdentifier,
367
- deploymentId,
368
- apiKey,
369
- baseUrl
370
- });
371
- return `${colorAppName} \uBC30\uD3EC\uAC00 \uC644\uB8CC\uB418\uC5C8\uC5B4\uC694`;
372
- }
373
- }
374
- ]);
375
- p.note(import_picocolors2.default.underline(import_picocolors2.default.green(`intoss-sandbox://${appIdentifier}?_deploymentId=${deploymentId}`)));
376
- } catch (error) {
377
- if (error instanceof Error) {
378
- p.log.error(error.message);
379
- } else {
380
- console.error(error);
381
- }
382
- process.exit(1);
383
- }
384
- }
385
- };
386
-
387
- // src/cli/DevCommand/DevCommand.ts
388
- var import_fs4 = __toESM(require("fs"), 1);
389
- var import_path4 = __toESM(require("path"), 1);
390
- var import_cli_presets4 = require("@apps-in-toss/framework/cli-presets");
391
- var mpack2 = __toESM(require("@react-native-bedrock/mpack-next"), 1);
392
- var import_clipanion3 = require("clipanion");
393
- var import_execa2 = require("execa");
394
- var import_presets2 = __toESM(require("react-native-bedrock/presets"), 1);
395
-
396
- // src/cli/utils/getPackageRoot.ts
397
- var import_fs3 = __toESM(require("fs"), 1);
398
- var import_path3 = __toESM(require("path"), 1);
399
- function getPackageRoot() {
400
- let cwd = process.cwd();
401
- const root = import_path3.default.parse(cwd).root;
402
- while (cwd !== root) {
403
- if (import_fs3.default.existsSync(import_path3.default.join(cwd, "package.json"))) {
404
- return cwd;
405
- }
406
- cwd = import_path3.default.dirname(cwd);
407
- }
408
- return cwd;
409
- }
410
-
411
- // src/cli/DevCommand/DevCommand.ts
412
- var DevCommand = class extends import_clipanion3.Command {
413
- static paths = [[`dev`]];
414
- static usage = import_clipanion3.Command.Usage({
415
- category: "Development",
416
- description: "AppsInToss \uAC1C\uBC1C \uC11C\uBC84\uB97C \uC2E4\uD589\uD569\uB2C8\uB2E4",
417
- examples: [["\uAC1C\uBC1C \uC11C\uBC84 \uC2E4\uD589\uD558\uAE30", "ait dev"]]
418
- });
419
- host = import_clipanion3.Option.String("--host");
420
- port = import_clipanion3.Option.String("--port");
421
- async execute() {
422
- const config = await loadConfig();
423
- const serverOptions = {
424
- host: this.host,
425
- port: this.port ? parseInt(this.port, 10) : void 0
426
- };
427
- const packageRoot = getPackageRoot();
428
- const cwd = import_path4.default.resolve(__dirname, "..", "react-native");
429
- const projectRootTmp = import_path4.default.resolve(process.cwd(), ".bedrock");
430
- const appsInTossSpecificMiddlewares = [await (0, import_cli_presets4.createServePermissionsMiddleware)(packageRoot)];
431
- await import_fs4.default.promises.mkdir(projectRootTmp, { recursive: true });
432
- await import_fs4.default.promises.writeFile(
433
- import_path4.default.join(projectRootTmp, "metadata.json"),
434
- JSON.stringify({ appName: config.appName, webPort: config.web.port })
435
- );
436
- const appName = config.appName;
437
- await mpack2.runServer({
438
- host: serverOptions.host,
439
- port: serverOptions.port,
440
- middlewares: appsInTossSpecificMiddlewares,
441
- enableEmbeddedReactDevTools: true,
442
- enableRouterGen: false,
443
- onServerReady: async () => {
444
- this.context.stdout.write(
445
- `Server is running on http://${serverOptions.host || DEFAULT_HOST}:${serverOptions.port || DEFAULT_LOCALHOST_PORT}
446
- `
447
- );
448
- const { packageManager } = getPackageManager({ isExecutor: true });
449
- await (0, import_execa2.execa)(packageManager, config.web.commands.dev.split(" "), {
450
- cwd: process.cwd(),
451
- stdio: "inherit"
452
- });
453
- },
454
- cwd,
455
- config: {
456
- appName,
457
- services: {
458
- sentry: {
459
- enabled: false
460
- }
461
- },
462
- devServer: {
463
- presets: [import_presets2.default.service()],
464
- build: {
465
- entry: "./src/_app.tsx"
466
- }
467
- },
468
- tasks: []
469
- }
470
- });
471
- }
472
- };
473
-
474
- // src/cli/InitCommand/InitCommand.ts
475
- var import_fs5 = __toESM(require("fs"), 1);
476
- var import_path5 = __toESM(require("path"), 1);
477
- var p2 = __toESM(require("@clack/prompts"), 1);
478
- var import_clipanion4 = require("clipanion");
479
- var import_es_toolkit = require("es-toolkit");
480
- var import_execa3 = require("execa");
481
- var import_yaml = __toESM(require("yaml"), 1);
482
-
483
- // src/cli/InitCommand/templates/index.tsx
484
- var CONFIG_TEMPLATE = `import { defineConfig } from '@apps-in-toss/web-framework/config';
485
-
486
- export default defineConfig({
487
- appName: '%%appName%%',
488
- web: {
489
- port: %%webPort%%,
490
- commands: {
491
- dev: '%%webDevCommand%%',
492
- build: '%%webBuildCommand%%',
493
- },
494
- },
495
- });
496
- `;
497
-
498
- // src/cli/utils/transformTemplate.ts
499
- function transformTemplate(templateString, values) {
500
- let result = templateString;
501
- for (const key in values) {
502
- const placeholder = `%%${key}%%`;
503
- result = result.replace(new RegExp(placeholder, "g"), values[key]);
504
- }
505
- return result;
506
- }
507
-
508
- // src/cli/InitCommand/InitCommand.ts
509
- var import_meta = {};
510
- async function getPnpRoot() {
511
- try {
512
- const pnpapi = (await import_meta.resolve("pnpapi")).replace("file://", "");
513
- return import_path5.default.dirname(pnpapi);
514
- } catch {
515
- return null;
516
- }
517
- }
518
- var InitCommand = class extends import_clipanion4.Command {
519
- static paths = [[`init`]];
520
- async execute() {
521
- const cwd = getPackageRoot();
522
- p2.intro("\u{1F680} \uC571 \uCD08\uAE30\uD654\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4");
523
- const appName = await p2.text({
524
- message: "Enter app name",
525
- validate: (value) => {
526
- if (!value) {
527
- return "\uC571 \uC774\uB984\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694";
528
- }
529
- const kebabCaseValue = (0, import_es_toolkit.kebabCase)(value);
530
- if (value !== kebabCaseValue) {
531
- return `\uC571 \uC774\uB984\uC740 \uCF00\uBC25-\uCF00\uC774\uC2A4 \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4 (\uC608\uC2DC: ${kebabCaseValue})`;
532
- }
533
- return;
534
- }
535
- });
536
- if (p2.isCancel(appName)) {
537
- p2.cancel("\uCD08\uAE30\uD654\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4");
538
- return;
539
- }
540
- p2.log.step(`\uC571 \uC774\uB984\uC774 '${appName}'\uC73C\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4`);
541
- const webPort = await p2.text({
542
- message: "Enter web port",
543
- placeholder: "5173",
544
- defaultValue: "5173"
545
- });
546
- if (p2.isCancel(webPort)) {
547
- p2.cancel("\uCD08\uAE30\uD654\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4");
548
- return;
549
- }
550
- p2.log.step("package.json \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uC124\uC815\uD558\uB294 \uC911...");
551
- const packageJson = await import_fs5.default.promises.readFile(import_path5.default.join(cwd, "package.json"), {
552
- encoding: "utf-8"
553
- });
554
- const scripts = JSON.parse(packageJson);
555
- const original = {
556
- dev: scripts?.scripts?.dev || scripts?.scripts?.start,
557
- build: scripts?.scripts?.build
558
- };
559
- scripts.scripts.dev = "ait dev";
560
- scripts.scripts.build = "ait build";
561
- scripts.scripts.deploy = "ait deploy";
562
- await import_fs5.default.promises.writeFile(import_path5.default.join(cwd, "package.json"), JSON.stringify(scripts, null, 2), {
563
- encoding: "utf-8"
564
- });
565
- p2.log.step("apps-in-toss.config.web.ts \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uB294 \uC911...");
566
- const config = transformTemplate(CONFIG_TEMPLATE, {
567
- appName,
568
- webPort,
569
- webDevCommand: original.dev === "ait dev" ? "" : original.dev,
570
- webBuildCommand: original.build === "ait build" ? "" : original.build
571
- });
572
- await import_fs5.default.promises.writeFile(import_path5.default.join(cwd, "apps-in-toss.config.web.ts"), config, {
573
- encoding: "utf-8"
574
- });
575
- p2.log.step(".gitignore \uD30C\uC77C\uC744 \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911...");
576
- await import_fs5.default.promises.appendFile(import_path5.default.join(cwd, ".gitignore"), "\n.bedrock\n");
577
- p2.log.step("app.json \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uB294 \uC911...");
578
- await import_fs5.default.promises.writeFile(
579
- import_path5.default.join(cwd, "app.json"),
580
- JSON.stringify({
581
- clientId: "",
582
- appName,
583
- permissions: []
584
- }),
585
- {
586
- encoding: "utf-8"
587
- }
588
- );
589
- const pnpRoot = await getPnpRoot();
590
- if (pnpRoot) {
591
- const yarnrcPath = import_path5.default.join(pnpRoot, ".yarnrc.yml");
592
- let yarnrc = {};
593
- try {
594
- const yarnrcContent = await import_fs5.default.promises.readFile(yarnrcPath, { encoding: "utf-8" });
595
- yarnrc = import_yaml.default.parse(yarnrcContent);
596
- } catch {
597
- p2.log.info(".yarnrc.yml \uD30C\uC77C\uC774 \uC5C6\uC5B4 \uC0C8\uB85C \uC0DD\uC131\uD569\uB2C8\uB2E4.");
598
- }
599
- p2.log.step(".yarnrc.yml \uD30C\uC77C\uC744 \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911...");
600
- yarnrc = (0, import_es_toolkit.merge)(yarnrc, {
601
- packageExtensions: {
602
- "@react-native-community/cli-debugger-ui@*": {
603
- dependencies: {
604
- "@babel/runtime": "^7"
605
- }
606
- },
607
- "react-native-video@*": {
608
- peerDependencies: {
609
- react: "*",
610
- "react-native": "*"
611
- }
612
- },
613
- "react-native-fast-image@*": {
614
- dependencies: {
615
- "@babel/runtime": "^7"
616
- }
617
- }
618
- }
619
- });
620
- await import_fs5.default.promises.writeFile(yarnrcPath, import_yaml.default.stringify(yarnrc), { encoding: "utf-8" });
621
- await (0, import_execa3.execa)("yarn", ["install"], {
622
- cwd,
623
- stdio: "inherit"
624
- });
625
- }
626
- p2.outro("\u2728 \uCD08\uAE30\uD654\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4!");
627
- }
628
- };
629
-
630
- // package.json
631
- var version = "0.1.6-next.6";
632
-
633
- // src/cli/index.ts
634
- var cli = new import_clipanion5.Cli({
635
- binaryLabel: "apps-in-toss",
636
- binaryName: "apps-in-toss",
637
- binaryVersion: version,
638
- enableCapture: true
639
- });
640
- cli.register(InitCommand);
641
- cli.register(DevCommand);
642
- cli.register(BuildCommand);
643
- cli.register(DeployCommand);
644
- cli.runExit(process.argv.slice(2));
@@ -1,2 +0,0 @@
1
-
2
- export { }
@@ -1,2 +0,0 @@
1
-
2
- export { }