create-100x-mobile 0.6.5 → 0.6.7

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.
@@ -18,6 +18,7 @@ exports.writeInstantEnvironment = writeInstantEnvironment;
18
18
  exports.initializeConvex = initializeConvex;
19
19
  exports.ensureExpoPublicConvexUrl = ensureExpoPublicConvexUrl;
20
20
  exports.setConvexClerkEnv = setConvexClerkEnv;
21
+ exports.pushInstantSchema = pushInstantSchema;
21
22
  exports.setupCloudflare = setupCloudflare;
22
23
  exports.initializeGit = initializeGit;
23
24
  exports.runHealthChecks = runHealthChecks;
@@ -546,6 +547,19 @@ async function setConvexClerkEnv(projectDir, clerkDomain) {
546
547
  return false;
547
548
  }
548
549
  }
550
+ async function pushInstantSchema(projectDir) {
551
+ try {
552
+ prompts_1.log.info("");
553
+ prompts_1.log.info(picocolors_1.default.bold("Pushing InstantDB schema to register entities..."));
554
+ await (0, run_1.run)("npx", ["instant-cli@latest", "push-schema", "--yes"], { cwd: projectDir });
555
+ return true;
556
+ }
557
+ catch (error) {
558
+ prompts_1.log.warn(`InstantDB schema push failed: ${toErrorMessage(error)}`);
559
+ prompts_1.log.info(picocolors_1.default.dim("Run manually: npx instant-cli push-schema"));
560
+ return false;
561
+ }
562
+ }
549
563
  async function setupCloudflare(projectDir) {
550
564
  const result = {
551
565
  configured: false,
@@ -279,9 +279,11 @@ async function cmdNew(rawArgs) {
279
279
  prompts_1.log.info(picocolors_1.default.dim(`Clerk publishable key: ${instant.clerkPublishableKey}`));
280
280
  }
281
281
  const isCloudflareMode = backend === "instantdb" && (0, scaffold_1.isCloudflareInstantAuthMode)(instantAuthMode);
282
+ const hasInstantAppId = instant && "appId" in instant && instant.appId;
282
283
  const totalSteps = 1 + // project generation
283
284
  (options.installDependencies ? 2 : 0) +
284
285
  (backend === "convex" ? 2 + (clerk.domain ? 1 : 0) : 1) +
286
+ (isCloudflareMode && options.installDependencies && hasInstantAppId ? 1 : 0) + // push schema
285
287
  (isCloudflareMode && options.installDependencies ? 1 : 0) + // cloudflare setup
286
288
  (options.initializeGit ? 1 : 0) +
287
289
  1; // health check
@@ -373,6 +375,15 @@ async function cmdNew(rawArgs) {
373
375
  }
374
376
  }
375
377
  if (isCloudflareMode && options.installDependencies) {
378
+ // Push InstantDB schema before Cloudflare deploy so the Worker can write to it
379
+ if (hasInstantAppId) {
380
+ currentStep++;
381
+ prompts_1.log.step(`Pushing InstantDB schema ${stepLabel()}`);
382
+ const schemaPushed = await (0, steps_1.pushInstantSchema)(projectDir);
383
+ if (schemaPushed) {
384
+ prompts_1.log.success("InstantDB schema pushed.");
385
+ }
386
+ }
376
387
  currentStep++;
377
388
  prompts_1.log.step(`Setting up Cloudflare storage ${stepLabel()}`);
378
389
  cloudflareSetup = await (0, steps_1.setupCloudflare)(projectDir);
@@ -625,9 +625,17 @@ async function handleUpload(
625
625
  const objectKey = ["uploads", user.id, uploadId].join("/");
626
626
  let object: R2Object;
627
627
  try {
628
+ const body = await request.arrayBuffer();
629
+ if (body.byteLength > policy.maxUploadBytes) {
630
+ throw createStorageApiError(
631
+ 413,
632
+ "Upload exceeds the configured size limit.",
633
+ { size: body.byteLength, maxUploadBytes: policy.maxUploadBytes },
634
+ );
635
+ }
628
636
  object = await env.STORAGE.put(
629
637
  objectKey,
630
- createLimitedBodyStream(getRequestBody(request), policy.maxUploadBytes),
638
+ body,
631
639
  {
632
640
  httpMetadata: {
633
641
  contentType,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-100x-mobile",
3
- "version": "0.6.5",
3
+ "version": "0.6.7",
4
4
  "description": "Scaffold a full-stack mobile app with Expo + Convex + Clerk in seconds",
5
5
  "main": "dist/cli.js",
6
6
  "bin": {