@objectstack/cli 4.0.5 → 4.1.1

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 (67) hide show
  1. package/README.md +32 -0
  2. package/dist/commands/cloud/login.d.ts +16 -0
  3. package/dist/commands/cloud/login.d.ts.map +1 -0
  4. package/dist/commands/cloud/login.js +166 -0
  5. package/dist/commands/cloud/login.js.map +1 -0
  6. package/dist/commands/cloud/logout.d.ts +15 -0
  7. package/dist/commands/cloud/logout.d.ts.map +1 -0
  8. package/dist/commands/cloud/logout.js +51 -0
  9. package/dist/commands/cloud/logout.js.map +1 -0
  10. package/dist/commands/cloud/whoami.d.ts +15 -0
  11. package/dist/commands/cloud/whoami.d.ts.map +1 -0
  12. package/dist/commands/cloud/whoami.js +81 -0
  13. package/dist/commands/cloud/whoami.js.map +1 -0
  14. package/dist/commands/dev.d.ts +6 -0
  15. package/dist/commands/dev.d.ts.map +1 -1
  16. package/dist/commands/dev.js +79 -14
  17. package/dist/commands/dev.js.map +1 -1
  18. package/dist/commands/i18n/extract.d.ts +28 -0
  19. package/dist/commands/i18n/extract.d.ts.map +1 -0
  20. package/dist/commands/i18n/extract.js +148 -0
  21. package/dist/commands/i18n/extract.js.map +1 -0
  22. package/dist/commands/login.js +2 -2
  23. package/dist/commands/login.js.map +1 -1
  24. package/dist/commands/package/publish.d.ts +32 -0
  25. package/dist/commands/package/publish.d.ts.map +1 -0
  26. package/dist/commands/package/publish.js +324 -0
  27. package/dist/commands/package/publish.js.map +1 -0
  28. package/dist/commands/publish.d.ts +3 -0
  29. package/dist/commands/publish.d.ts.map +1 -1
  30. package/dist/commands/publish.js +55 -11
  31. package/dist/commands/publish.js.map +1 -1
  32. package/dist/commands/rollback.d.ts +13 -0
  33. package/dist/commands/rollback.d.ts.map +1 -0
  34. package/dist/commands/rollback.js +77 -0
  35. package/dist/commands/rollback.js.map +1 -0
  36. package/dist/commands/serve.d.ts +14 -0
  37. package/dist/commands/serve.d.ts.map +1 -1
  38. package/dist/commands/serve.js +583 -30
  39. package/dist/commands/serve.js.map +1 -1
  40. package/dist/commands/start.d.ts +8 -1
  41. package/dist/commands/start.d.ts.map +1 -1
  42. package/dist/commands/start.js +80 -11
  43. package/dist/commands/start.js.map +1 -1
  44. package/dist/index.d.ts +4 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +6 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/utils/auth-flows.d.ts +31 -0
  49. package/dist/utils/auth-flows.d.ts.map +1 -0
  50. package/dist/utils/auth-flows.js +151 -0
  51. package/dist/utils/auth-flows.js.map +1 -0
  52. package/dist/utils/cloud-config.d.ts +24 -0
  53. package/dist/utils/cloud-config.d.ts.map +1 -0
  54. package/dist/utils/cloud-config.js +75 -0
  55. package/dist/utils/cloud-config.js.map +1 -0
  56. package/dist/utils/console.d.ts +1 -0
  57. package/dist/utils/console.d.ts.map +1 -1
  58. package/dist/utils/console.js +7 -4
  59. package/dist/utils/console.js.map +1 -1
  60. package/dist/utils/i18n-extract.d.ts +102 -0
  61. package/dist/utils/i18n-extract.d.ts.map +1 -0
  62. package/dist/utils/i18n-extract.js +332 -0
  63. package/dist/utils/i18n-extract.js.map +1 -0
  64. package/dist/utils/studio.d.ts.map +1 -1
  65. package/dist/utils/studio.js +5 -6
  66. package/dist/utils/studio.js.map +1 -1
  67. package/package.json +40 -36
@@ -8,6 +8,9 @@ export default class Publish extends Command {
8
8
  server: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
9
  project: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
10
  token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
12
+ note: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ branch: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
14
  };
12
15
  run(): Promise<void>;
13
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,OAAgB,WAAW,SAAsD;IAEjF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;;MAkBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiE3B"}
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAIA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,OAAgB,WAAW,SAAsD;IAEjF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;;;;;MAiCnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2F3B"}
@@ -26,6 +26,21 @@ export default class Publish extends Command {
26
26
  description: 'API key for ObjectStack Cloud',
27
27
  env: 'OS_CLOUD_API_KEY',
28
28
  }),
29
+ timeout: Flags.integer({
30
+ description: 'Upload timeout in milliseconds (use a higher value on slow networks; 0 disables timeout)',
31
+ env: 'OS_CLOUD_TIMEOUT_MS',
32
+ default: 60_000,
33
+ }),
34
+ note: Flags.string({
35
+ char: 'n',
36
+ description: 'Optional human-readable note to attach to this revision',
37
+ }),
38
+ branch: Flags.string({
39
+ char: 'b',
40
+ description: 'Logical branch this publish belongs to (e.g. main, staging, feature-x). Default: main.',
41
+ env: 'OS_PUBLISH_BRANCH',
42
+ default: 'main',
43
+ }),
29
44
  };
30
45
  async run() {
31
46
  const { args, flags } = await this.parse(Publish);
@@ -48,16 +63,41 @@ export default class Publish extends Command {
48
63
  const artifact = JSON.parse(artifactRaw);
49
64
  printSuccess(`Loaded artifact (${(artifactRaw.length / 1024).toFixed(1)} KB)`);
50
65
  // 2. POST to the control-plane publish endpoint
51
- const serverUrl = `${flags.server}/api/v1/cloud/projects/${flags.project}/metadata`;
66
+ const qsParams = new URLSearchParams();
67
+ if (flags.note)
68
+ qsParams.set('note', flags.note);
69
+ if (flags.branch)
70
+ qsParams.set('branch', flags.branch);
71
+ const qs = qsParams.toString();
72
+ const serverUrl = `${flags.server}/api/v1/cloud/projects/${flags.project}/metadata${qs ? `?${qs}` : ''}`;
52
73
  printStep(`Publishing to ${serverUrl}...`);
53
- const response = await fetch(serverUrl, {
54
- method: 'POST',
55
- headers: {
56
- 'Content-Type': 'application/json',
57
- ...(flags.token && { Authorization: `Bearer ${flags.token}` }),
58
- },
59
- body: artifactRaw,
60
- });
74
+ const response = await (async () => {
75
+ const controller = new AbortController();
76
+ const timer = flags.timeout > 0
77
+ ? setTimeout(() => controller.abort(), flags.timeout)
78
+ : undefined;
79
+ try {
80
+ return await fetch(serverUrl, {
81
+ method: 'POST',
82
+ headers: {
83
+ 'Content-Type': 'application/json',
84
+ ...(flags.token && { Authorization: `Bearer ${flags.token}` }),
85
+ },
86
+ body: artifactRaw,
87
+ signal: controller.signal,
88
+ });
89
+ }
90
+ catch (err) {
91
+ if (err?.name === 'AbortError') {
92
+ throw new Error(`Upload timed out after ${flags.timeout}ms. Use --timeout <ms> or set OS_CLOUD_TIMEOUT_MS to extend it (0 disables).`);
93
+ }
94
+ throw err;
95
+ }
96
+ finally {
97
+ if (timer)
98
+ clearTimeout(timer);
99
+ }
100
+ })();
61
101
  if (!response.ok) {
62
102
  let errMsg;
63
103
  try {
@@ -76,10 +116,14 @@ export default class Publish extends Command {
76
116
  console.log('');
77
117
  printSuccess('Artifact published successfully');
78
118
  printKV(' Project', flags.project);
119
+ printKV(' Branch', data?.branch ?? flags.branch);
79
120
  if (data?.commitId)
80
121
  printKV(' Commit', data.commitId);
81
- if (data?.checksum?.value)
82
- printKV(' Checksum', data.checksum.value.slice(0, 16));
122
+ const checksumStr = typeof data?.checksum === 'string'
123
+ ? data.checksum
124
+ : (data?.checksum?.value ?? null);
125
+ if (checksumStr)
126
+ printKV(' Checksum', String(checksumStr).slice(0, 16));
83
127
  printKV(' Server', flags.server);
84
128
  }
85
129
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Rollback extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ server: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ project: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
+ commit: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ token: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ };
11
+ run(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAG7C,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,OAAgB,WAAW,SAAkF;IAE7G,OAAgB,QAAQ,WAGtB;IAEF,OAAgB,KAAK;;;;;MAuBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4C3B"}
@@ -0,0 +1,77 @@
1
+ // Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
2
+ import { Command, Flags } from '@oclif/core';
3
+ import { printHeader, printKV, printSuccess, printError, printStep } from '../utils/format.js';
4
+ export default class Rollback extends Command {
5
+ static description = 'Activate a previously published artifact revision (rollback or roll-forward)';
6
+ static examples = [
7
+ '<%= config.bin %> <%= command.id %> --commit 9ce1bd48dd70',
8
+ 'OS_PROJECT_ID=proj_crm <%= config.bin %> <%= command.id %> --commit abcdef123456',
9
+ ];
10
+ static flags = {
11
+ server: Flags.string({
12
+ char: 's',
13
+ description: 'ObjectStack Cloud control-plane URL',
14
+ env: 'OS_CLOUD_URL',
15
+ default: 'http://localhost:4000',
16
+ }),
17
+ project: Flags.string({
18
+ char: 'p',
19
+ description: 'Project ID (required)',
20
+ env: 'OS_PROJECT_ID',
21
+ required: true,
22
+ }),
23
+ commit: Flags.string({
24
+ char: 'c',
25
+ description: 'Commit ID (full or 12+ char prefix) of the revision to activate',
26
+ required: true,
27
+ }),
28
+ token: Flags.string({
29
+ char: 't',
30
+ description: 'API key for ObjectStack Cloud',
31
+ env: 'OS_CLOUD_API_KEY',
32
+ }),
33
+ };
34
+ async run() {
35
+ const { flags } = await this.parse(Rollback);
36
+ printHeader('Rollback / Activate Revision');
37
+ try {
38
+ const url = `${flags.server}/api/v1/cloud/projects/${flags.project}/revisions/${flags.commit}/activate`;
39
+ printStep(`POST ${url}`);
40
+ const response = await fetch(url, {
41
+ method: 'POST',
42
+ headers: {
43
+ 'Content-Type': 'application/json',
44
+ ...(flags.token && { Authorization: `Bearer ${flags.token}` }),
45
+ },
46
+ });
47
+ if (!response.ok) {
48
+ let errMsg;
49
+ try {
50
+ const errBody = await response.json();
51
+ errMsg = errBody?.error ?? response.statusText;
52
+ }
53
+ catch {
54
+ errMsg = response.statusText;
55
+ }
56
+ printError(`Activate failed (${response.status}): ${errMsg}`);
57
+ this.exit(1);
58
+ return;
59
+ }
60
+ const result = await response.json();
61
+ const data = result?.data ?? result;
62
+ console.log('');
63
+ printSuccess('Revision activated');
64
+ printKV(' Project', flags.project);
65
+ if (data?.commitId)
66
+ printKV(' Commit', data.commitId);
67
+ if (data?.previousCommitId)
68
+ printKV(' Previous', data.previousCommitId);
69
+ printKV(' Server', flags.server);
70
+ }
71
+ catch (error) {
72
+ printError(error.message);
73
+ this.exit(1);
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/F,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,OAAO;IAC3C,MAAM,CAAU,WAAW,GAAG,8EAA8E,CAAC;IAE7G,MAAM,CAAU,QAAQ,GAAG;QACzB,2DAA2D;QAC3D,kFAAkF;KACnF,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,qCAAqC;YAClD,GAAG,EAAE,cAAc;YACnB,OAAO,EAAE,uBAAuB;SACjC,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,uBAAuB;YACpC,GAAG,EAAE,eAAe;YACpB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,iEAAiE;YAC9E,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,+BAA+B;YAC5C,GAAG,EAAE,kBAAkB;SACxB,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE7C,WAAW,CAAC,8BAA8B,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,0BAA0B,KAAK,CAAC,OAAO,cAAc,KAAK,CAAC,MAAM,WAAW,CAAC;YACxG,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;YAEzB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;iBAC/D;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,MAAc,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;oBAC7C,MAAM,GAAG,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC;gBACjD,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;gBAC/B,CAAC;gBACD,UAAU,CAAC,oBAAoB,QAAQ,CAAC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;gBAC9D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC;YAEpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,YAAY,CAAC,oBAAoB,CAAC,CAAC;YACnC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,IAAI,EAAE,QAAQ;gBAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,IAAI,EAAE,gBAAgB;gBAAE,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACzE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;IACH,CAAC"}
@@ -8,10 +8,24 @@ export default class Serve extends Command {
8
8
  port: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
9
  dev: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
10
  ui: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ console: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
12
  server: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
13
  prebuilt: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
14
  preset: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
15
  };
16
+ /**
17
+ * Capabilities auto-added to every app's `requires` for every preset
18
+ * EXCEPT `minimal`. These form the foundation that every server-side
19
+ * runtime expects to exist (background work, settings persistence,
20
+ * transactional mail, file uploads). Apps may still list these in
21
+ * `requires:` explicitly — duplicates are de-duped.
22
+ *
23
+ * Opt out: `objectstack serve --preset minimal`.
24
+ *
25
+ * Mirrored on hosted objectos per-project kernels by
26
+ * `mountDefaultProjectPlugins()` in `@objectstack/service-cloud`.
27
+ */
28
+ static readonly ALWAYS_ON_CAPABILITIES: readonly string[];
15
29
  /**
16
30
  * Auto-registered plugin tiers. Plugins explicitly listed in
17
31
  * `config.plugins` are always loaded — tiers only gate the optional
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AA8DnD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,WAAW,SAA8D;IAEzF,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;;;;;MAUnB;IAEF;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAIpD;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA40B3B"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AA8DnD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,OAAgB,WAAW,SAAkM;IAE7N,OAAgB,IAAI;;MAElB;IAEF,OAAgB,KAAK;;;;;;;;MAenB;IAEF;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAEtD;IAEH;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAIpD;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAq1C3B"}