@base44-preview/cli 0.0.31-pr.246.c851bc7 → 0.0.32-pr.166.496e743

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/README.md CHANGED
@@ -83,9 +83,9 @@ base44 <command> --help
83
83
  base44 --version
84
84
  ```
85
85
 
86
- ## Alpha
86
+ ## Beta
87
87
 
88
- The CLI and Base44 backend service are currently in alpha. We're actively improving them based on user feedback. Share your thoughts and feature requests on our [GitHub Discussions](https://github.com/orgs/base44/discussions).
88
+ The CLI and Base44 backend service are currently in beta. We're actively improving them based on user feedback. Share your thoughts and feature requests on our [GitHub Discussions](https://github.com/orgs/base44/discussions).
89
89
 
90
90
  Found a bug? [Open an issue](https://github.com/base44/cli/issues).
91
91
 
package/dist/cli/index.js CHANGED
@@ -1867,6 +1867,23 @@ var require_commander = __commonJS((exports) => {
1867
1867
  exports.InvalidOptionArgumentError = InvalidArgumentError;
1868
1868
  });
1869
1869
 
1870
+ // node_modules/@commander-js/extra-typings/index.js
1871
+ var require_extra_typings = __commonJS((exports, module) => {
1872
+ var commander = require_commander();
1873
+ exports = module.exports = {};
1874
+ exports.program = new commander.Command;
1875
+ exports.Argument = commander.Argument;
1876
+ exports.Command = commander.Command;
1877
+ exports.CommanderError = commander.CommanderError;
1878
+ exports.Help = commander.Help;
1879
+ exports.InvalidArgumentError = commander.InvalidArgumentError;
1880
+ exports.InvalidOptionArgumentError = commander.InvalidArgumentError;
1881
+ exports.Option = commander.Option;
1882
+ exports.createCommand = (name) => new commander.Command(name);
1883
+ exports.createOption = (flags, description) => new commander.Option(flags, description);
1884
+ exports.createArgument = (name, description) => new commander.Argument(name, description);
1885
+ });
1886
+
1870
1887
  // node_modules/sisteransi/src/index.js
1871
1888
  var require_src = __commonJS((exports, module) => {
1872
1889
  var ESC = "\x1B";
@@ -9296,10 +9313,10 @@ var require_ejs = __commonJS((exports) => {
9296
9313
  };
9297
9314
  if (opts.filename && typeof Object.defineProperty === "function") {
9298
9315
  var filename = opts.filename;
9299
- var basename4 = path11.basename(filename, path11.extname(filename));
9316
+ var basename3 = path11.basename(filename, path11.extname(filename));
9300
9317
  try {
9301
9318
  Object.defineProperty(returnedFn, "name", {
9302
- value: basename4,
9319
+ value: basename3,
9303
9320
  writable: false,
9304
9321
  enumerable: false,
9305
9322
  configurable: true
@@ -111567,12 +111584,12 @@ function getLanguageByFileName(languages2, file2) {
111567
111584
  if (!file2) {
111568
111585
  return;
111569
111586
  }
111570
- const basename5 = getFileBasename(file2).toLowerCase();
111587
+ const basename4 = getFileBasename(file2).toLowerCase();
111571
111588
  return languages2.find(({
111572
111589
  filenames
111573
- }) => filenames?.some((name2) => name2.toLowerCase() === basename5)) ?? languages2.find(({
111590
+ }) => filenames?.some((name2) => name2.toLowerCase() === basename4)) ?? languages2.find(({
111574
111591
  extensions
111575
- }) => extensions?.some((extension) => basename5.endsWith(extension)));
111592
+ }) => extensions?.some((extension) => basename4.endsWith(extension)));
111576
111593
  }
111577
111594
  function getLanguageByLanguageName(languages2, languageName) {
111578
111595
  if (!languageName) {
@@ -116794,8 +116811,8 @@ var init_prettier = __esm(() => {
116794
116811
  }
116795
116812
  exports.endsWithSlashGlobStar = endsWithSlashGlobStar;
116796
116813
  function isAffectDepthOfReadingPattern(pattern) {
116797
- const basename5 = path152.basename(pattern);
116798
- return endsWithSlashGlobStar(pattern) || isStaticPattern(basename5);
116814
+ const basename4 = path152.basename(pattern);
116815
+ return endsWithSlashGlobStar(pattern) || isStaticPattern(basename4);
116799
116816
  }
116800
116817
  exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern;
116801
116818
  function expandPatternsWithBraceExpansion(patterns) {
@@ -155679,7 +155696,7 @@ var require_view = __commonJS((exports, module) => {
155679
155696
  var path18 = __require("node:path");
155680
155697
  var fs28 = __require("node:fs");
155681
155698
  var dirname11 = path18.dirname;
155682
- var basename5 = path18.basename;
155699
+ var basename4 = path18.basename;
155683
155700
  var extname2 = path18.extname;
155684
155701
  var join15 = path18.join;
155685
155702
  var resolve5 = path18.resolve;
@@ -155718,7 +155735,7 @@ var require_view = __commonJS((exports, module) => {
155718
155735
  var root2 = roots[i5];
155719
155736
  var loc = resolve5(root2, name2);
155720
155737
  var dir = dirname11(loc);
155721
- var file2 = basename5(loc);
155738
+ var file2 = basename4(loc);
155722
155739
  path19 = this.resolve(dir, file2);
155723
155740
  }
155724
155741
  return path19;
@@ -155748,7 +155765,7 @@ var require_view = __commonJS((exports, module) => {
155748
155765
  if (stat2 && stat2.isFile()) {
155749
155766
  return path19;
155750
155767
  }
155751
- path19 = join15(dir, basename5(file2, ext), "index" + ext);
155768
+ path19 = join15(dir, basename4(file2, ext), "index" + ext);
155752
155769
  stat2 = tryStat(path19);
155753
155770
  if (stat2 && stat2.isFile()) {
155754
155771
  return path19;
@@ -159069,7 +159086,7 @@ var require_content_disposition = __commonJS((exports, module) => {
159069
159086
  */
159070
159087
  module.exports = contentDisposition;
159071
159088
  module.exports.parse = parse10;
159072
- var basename5 = __require("path").basename;
159089
+ var basename4 = __require("path").basename;
159073
159090
  var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g;
159074
159091
  var HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/;
159075
159092
  var HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g;
@@ -159104,9 +159121,9 @@ var require_content_disposition = __commonJS((exports, module) => {
159104
159121
  if (typeof fallback === "string" && NON_LATIN1_REGEXP.test(fallback)) {
159105
159122
  throw new TypeError("fallback must be ISO-8859-1 string");
159106
159123
  }
159107
- var name2 = basename5(filename);
159124
+ var name2 = basename4(filename);
159108
159125
  var isQuotedString = TEXT_REGEXP.test(name2);
159109
- var fallbackName = typeof fallback !== "string" ? fallback && getlatin1(name2) : basename5(fallback);
159126
+ var fallbackName = typeof fallback !== "string" ? fallback && getlatin1(name2) : basename4(fallback);
159110
159127
  var hasFallback = typeof fallbackName === "string" && fallbackName !== name2;
159111
159128
  if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name2)) {
159112
159129
  params["filename*"] = name2;
@@ -162817,8 +162834,8 @@ var require_dist3 = __commonJS((exports, module) => {
162817
162834
  }
162818
162835
  });
162819
162836
 
162820
- // node_modules/commander/esm.mjs
162821
- var import__ = __toESM(require_commander(), 1);
162837
+ // node_modules/@commander-js/extra-typings/esm.mjs
162838
+ var import__ = __toESM(require_extra_typings(), 1);
162822
162839
  var {
162823
162840
  program,
162824
162841
  createCommand,
@@ -185051,6 +185068,10 @@ var TikTokConnectorSchema = exports_external.object({
185051
185068
  type: exports_external.literal("tiktok"),
185052
185069
  scopes: exports_external.array(exports_external.string()).default([])
185053
185070
  });
185071
+ var GoogleBigQueryConnectorSchema = exports_external.object({
185072
+ type: exports_external.literal("googlebigquery"),
185073
+ scopes: exports_external.array(exports_external.string()).default([])
185074
+ });
185054
185075
  var CustomTypeSchema = exports_external.string().min(1).regex(/^[a-z0-9_-]+$/i);
185055
185076
  var GenericConnectorSchema = exports_external.object({
185056
185077
  type: CustomTypeSchema,
@@ -185063,6 +185084,7 @@ var ConnectorResourceSchema = exports_external.union([
185063
185084
  GoogleSheetsConnectorSchema,
185064
185085
  GoogleDocsConnectorSchema,
185065
185086
  GoogleSlidesConnectorSchema,
185087
+ GoogleBigQueryConnectorSchema,
185066
185088
  SlackConnectorSchema,
185067
185089
  NotionConnectorSchema,
185068
185090
  SalesforceConnectorSchema,
@@ -185078,6 +185100,7 @@ var KnownIntegrationTypes = [
185078
185100
  "googlesheets",
185079
185101
  "googledocs",
185080
185102
  "googleslides",
185103
+ "googlebigquery",
185081
185104
  "slack",
185082
185105
  "notion",
185083
185106
  "salesforce",
@@ -185340,7 +185363,10 @@ var connectorResource = {
185340
185363
  // src/core/resources/entity/schema.ts
185341
185364
  var FieldConditionSchema = exports_external.union([
185342
185365
  exports_external.string(),
185343
- exports_external.object({
185366
+ exports_external.number(),
185367
+ exports_external.boolean(),
185368
+ exports_external.null(),
185369
+ exports_external.looseObject({
185344
185370
  $in: exports_external.unknown().optional(),
185345
185371
  $nin: exports_external.unknown().optional(),
185346
185372
  $ne: exports_external.unknown().optional(),
@@ -185357,6 +185383,15 @@ var rlsConditionAllowedKeys = new Set([
185357
185383
  "user_condition",
185358
185384
  "created_by",
185359
185385
  "created_by_id",
185386
+ "id",
185387
+ "_id",
185388
+ "created_date",
185389
+ "updated_date",
185390
+ "app_id",
185391
+ "entity_name",
185392
+ "is_deleted",
185393
+ "deleted_date",
185394
+ "environment",
185360
185395
  "$or",
185361
185396
  "$and",
185362
185397
  "$nor"
@@ -185385,60 +185420,33 @@ var isValidFieldCondition = (value) => {
185385
185420
  }
185386
185421
  return false;
185387
185422
  };
185388
- var RefineRLSConditionSchema = RLSConditionSchema.refine((val) => Object.entries(val).every(([key, value]) => {
185389
- if (rlsConditionAllowedKeys.has(key)) {
185390
- return true;
185391
- }
185392
- if (!key.startsWith("data.")) {
185393
- return false;
185394
- }
185395
- return isValidFieldCondition(value);
185396
- }), "Keys must be known RLS keys or match data.* pattern with valid value");
185423
+ var RefineRLSConditionSchema = RLSConditionSchema.refine((val) => Object.entries(val).every(([key, value]) => rlsConditionAllowedKeys.has(key) || isValidFieldCondition(value)), "Field condition values must be a primitive or an operator object ($in, $nin, $ne, $all)");
185397
185424
  var RLSRuleSchema = exports_external.union([exports_external.boolean(), RefineRLSConditionSchema]);
185398
- var EntityRLSSchema = exports_external.strictObject({
185425
+ var EntityRLSSchema = exports_external.looseObject({
185399
185426
  create: RLSRuleSchema.optional(),
185400
185427
  read: RLSRuleSchema.optional(),
185401
185428
  update: RLSRuleSchema.optional(),
185402
185429
  delete: RLSRuleSchema.optional(),
185403
185430
  write: RLSRuleSchema.optional()
185404
185431
  });
185405
- var FieldRLSSchema = exports_external.strictObject({
185432
+ var FieldRLSSchema = exports_external.looseObject({
185406
185433
  read: RLSRuleSchema.optional(),
185407
185434
  write: RLSRuleSchema.optional(),
185408
185435
  create: RLSRuleSchema.optional(),
185409
185436
  update: RLSRuleSchema.optional(),
185410
185437
  delete: RLSRuleSchema.optional()
185411
185438
  });
185412
- var PropertyTypeSchema = exports_external.enum([
185413
- "string",
185414
- "number",
185415
- "integer",
185416
- "boolean",
185417
- "array",
185418
- "object"
185419
- ]);
185420
- var StringFormatSchema = exports_external.enum([
185421
- "date",
185422
- "date-time",
185423
- "time",
185424
- "email",
185425
- "uri",
185426
- "hostname",
185427
- "ipv4",
185428
- "ipv6",
185429
- "uuid"
185430
- ]);
185431
- var PropertyDefinitionSchema = exports_external.object({
185432
- type: PropertyTypeSchema,
185439
+ var PropertyDefinitionSchema = exports_external.looseObject({
185440
+ type: exports_external.string().optional(),
185433
185441
  title: exports_external.string().optional(),
185434
185442
  description: exports_external.string().optional(),
185435
185443
  minLength: exports_external.number().int().min(0).optional(),
185436
185444
  maxLength: exports_external.number().int().min(0).optional(),
185437
185445
  pattern: exports_external.string().optional(),
185438
- format: StringFormatSchema.optional(),
185446
+ format: exports_external.string().optional(),
185439
185447
  minimum: exports_external.number().optional(),
185440
185448
  maximum: exports_external.number().optional(),
185441
- enum: exports_external.array(exports_external.string()).optional(),
185449
+ enum: exports_external.array(exports_external.unknown()).optional(),
185442
185450
  enumNames: exports_external.array(exports_external.string()).optional(),
185443
185451
  default: exports_external.unknown().optional(),
185444
185452
  $ref: exports_external.string().optional(),
@@ -185451,12 +185459,12 @@ var PropertyDefinitionSchema = exports_external.object({
185451
185459
  return exports_external.record(exports_external.string(), PropertyDefinitionSchema).optional();
185452
185460
  }
185453
185461
  });
185454
- var EntitySchema = exports_external.object({
185455
- type: exports_external.literal("object"),
185456
- name: exports_external.string().regex(/^[a-zA-Z0-9]+$/, "Entity name must be alphanumeric only"),
185462
+ var EntitySchema = exports_external.looseObject({
185463
+ type: exports_external.literal("object").default("object"),
185464
+ name: exports_external.string().min(1).regex(/^[a-zA-Z0-9]+$/, "Entity name must be alphanumeric only"),
185457
185465
  title: exports_external.string().optional(),
185458
185466
  description: exports_external.string().optional(),
185459
- properties: exports_external.record(exports_external.string(), PropertyDefinitionSchema),
185467
+ properties: exports_external.record(exports_external.string(), PropertyDefinitionSchema).default({}),
185460
185468
  required: exports_external.array(exports_external.string()).optional(),
185461
185469
  rls: EntityRLSSchema.optional()
185462
185470
  });
@@ -185615,7 +185623,7 @@ async function deployFunctions(functions) {
185615
185623
  return result.data;
185616
185624
  }
185617
185625
  // src/core/resources/function/config.ts
185618
- import { basename as basename2, dirname as dirname4, join as join5 } from "node:path";
185626
+ import { dirname as dirname4, join as join5 } from "node:path";
185619
185627
  async function readFunctionConfig(configPath) {
185620
185628
  const parsed = await readJsonFile(configPath);
185621
185629
  const result = FunctionConfigSchema.safeParse(parsed);
@@ -185646,24 +185654,7 @@ async function readAllFunctions(functionsDir) {
185646
185654
  cwd: functionsDir,
185647
185655
  absolute: true
185648
185656
  });
185649
- const indexFiles = await globby(`*/index.{js,ts}`, {
185650
- cwd: functionsDir,
185651
- absolute: true
185652
- });
185653
- const configFilesDirs = new Set(configFiles.map((f) => dirname4(f)));
185654
- const indexFilesDirs = indexFiles.filter((indexFile) => !configFilesDirs.has(dirname4(indexFile)));
185655
- const functionsFromConfig = await Promise.all(configFiles.map((configPath) => readFunction(configPath)));
185656
- const functionsWithoutConfig = await Promise.all(indexFilesDirs.map(async (functionFile) => {
185657
- const functionDir = dirname4(functionFile);
185658
- const filePaths = await globby("*.{js,ts,json}", {
185659
- cwd: functionDir,
185660
- absolute: true
185661
- });
185662
- const name2 = basename2(functionDir);
185663
- const entry = basename2(functionFile);
185664
- return { name: name2, entry, entryPath: functionFile, filePaths };
185665
- }));
185666
- const functions = [...functionsFromConfig, ...functionsWithoutConfig];
185657
+ const functions = await Promise.all(configFiles.map((configPath) => readFunction(configPath)));
185667
185658
  const names = new Set;
185668
185659
  for (const fn of functions) {
185669
185660
  if (names.has(fn.name)) {
@@ -185674,11 +185665,11 @@ async function readAllFunctions(functionsDir) {
185674
185665
  return functions;
185675
185666
  }
185676
185667
  // src/core/resources/function/deploy.ts
185677
- import { basename as basename3 } from "node:path";
185668
+ import { basename as basename2 } from "node:path";
185678
185669
  async function loadFunctionCode(fn) {
185679
185670
  const loadedFiles = await Promise.all(fn.filePaths.map(async (filePath) => {
185680
185671
  const content = await readTextFile(filePath);
185681
- return { path: basename3(filePath), content };
185672
+ return { path: basename2(filePath), content };
185682
185673
  }));
185683
185674
  return { ...fn, files: loadedFiles };
185684
185675
  }
@@ -186041,7 +186032,7 @@ async function handleUnauthorized(request, _options, response) {
186041
186032
  return;
186042
186033
  }
186043
186034
  retriedRequests.add(request);
186044
- return distribution_default(request, {
186035
+ return distribution_default(request.clone(), {
186045
186036
  headers: { Authorization: `Bearer ${newAccessToken}` }
186046
186037
  });
186047
186038
  }
@@ -193462,7 +193453,7 @@ var {
193462
193453
  // package.json
193463
193454
  var package_default = {
193464
193455
  name: "base44",
193465
- version: "0.0.31",
193456
+ version: "0.0.32",
193466
193457
  description: "Base44 CLI - Unified interface for managing Base44 applications",
193467
193458
  type: "module",
193468
193459
  bin: {
@@ -193500,6 +193491,7 @@ var package_default = {
193500
193491
  devDependencies: {
193501
193492
  "@biomejs/biome": "^2.0.0",
193502
193493
  "@clack/prompts": "^0.11.0",
193494
+ "@commander-js/extra-typings": "^12.1.0",
193503
193495
  "@types/bun": "^1.2.15",
193504
193496
  "@types/common-tags": "^1.8.4",
193505
193497
  "@types/cors": "^2.8.19",
@@ -194646,7 +194638,7 @@ function getFunctionsDeployCommand(context) {
194646
194638
  }
194647
194639
 
194648
194640
  // src/cli/commands/project/create.ts
194649
- import { basename as basename4, join as join11, resolve as resolve2 } from "node:path";
194641
+ import { basename as basename3, join as join11, resolve as resolve2 } from "node:path";
194650
194642
  var import_lodash = __toESM(require_lodash(), 1);
194651
194643
  var DEFAULT_TEMPLATE_ID = "backend-only";
194652
194644
  async function getTemplateById(templateId) {
@@ -194681,8 +194673,8 @@ async function createInteractive(options) {
194681
194673
  name: () => {
194682
194674
  return options.name ? Promise.resolve(options.name) : he({
194683
194675
  message: "What is the name of your project?",
194684
- placeholder: basename4(process.cwd()),
194685
- initialValue: basename4(process.cwd()),
194676
+ placeholder: basename3(process.cwd()),
194677
+ initialValue: basename3(process.cwd()),
194686
194678
  validate: (value) => {
194687
194679
  if (!value || value.trim().length === 0) {
194688
194680
  return "Every project deserves a name";
@@ -199777,4 +199769,4 @@ export {
199777
199769
  CLIExitError
199778
199770
  };
199779
199771
 
199780
- //# debugId=26F49567E6DDC3D964756E2164756E21
199772
+ //# debugId=83DE11188CBE46DA64756E2164756E21