@factiii/stack 0.1.25 → 0.1.27

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 (52) hide show
  1. package/dist/cli/init.d.ts.map +1 -1
  2. package/dist/cli/init.js +285 -6
  3. package/dist/cli/init.js.map +1 -1
  4. package/dist/cli/scan.d.ts.map +1 -1
  5. package/dist/cli/scan.js +28 -13
  6. package/dist/cli/scan.js.map +1 -1
  7. package/dist/constants/config-files.d.ts +6 -0
  8. package/dist/constants/config-files.d.ts.map +1 -1
  9. package/dist/constants/config-files.js +16 -1
  10. package/dist/constants/config-files.js.map +1 -1
  11. package/dist/plugins/pipelines/factiii/index.d.ts +5 -3
  12. package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
  13. package/dist/plugins/pipelines/factiii/index.js +14 -77
  14. package/dist/plugins/pipelines/factiii/index.js.map +1 -1
  15. package/dist/plugins/pipelines/factiii/scanfix/env-files.d.ts +12 -0
  16. package/dist/plugins/pipelines/factiii/scanfix/env-files.d.ts.map +1 -0
  17. package/dist/plugins/pipelines/factiii/scanfix/env-files.js +310 -0
  18. package/dist/plugins/pipelines/factiii/scanfix/env-files.js.map +1 -0
  19. package/dist/plugins/pipelines/factiii/scanfix/local-config.d.ts +7 -0
  20. package/dist/plugins/pipelines/factiii/scanfix/local-config.d.ts.map +1 -0
  21. package/dist/plugins/pipelines/factiii/scanfix/local-config.js +70 -0
  22. package/dist/plugins/pipelines/factiii/scanfix/local-config.js.map +1 -0
  23. package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -1
  24. package/dist/plugins/pipelines/factiii/scanfix/workflows.js +10 -24
  25. package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -1
  26. package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -1
  27. package/dist/plugins/pipelines/factiii/utils/workflows.js +5 -20
  28. package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -1
  29. package/dist/plugins/pipelines/factiii/workflows/stack-ci.yml +56 -0
  30. package/dist/plugins/pipelines/factiii/workflows/stack-cicd-prod.yml +35 -96
  31. package/dist/utils/config-helpers.d.ts +15 -0
  32. package/dist/utils/config-helpers.d.ts.map +1 -1
  33. package/dist/utils/config-helpers.js +57 -5
  34. package/dist/utils/config-helpers.js.map +1 -1
  35. package/package.json +1 -1
  36. package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +0 -115
  37. package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +0 -120
  38. package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +0 -132
  39. package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +0 -202
  40. package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +0 -181
  41. package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +0 -178
  42. package/dist/plugins/pipelines/factiii/workflows/factiii-pr-check.yml +0 -106
  43. package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +0 -183
  44. package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +0 -96
  45. package/dist/plugins/pipelines/factiii/workflows/stack-cicd-staging.yml +0 -120
  46. package/dist/plugins/pipelines/factiii/workflows/stack-command.yml +0 -132
  47. package/dist/plugins/pipelines/factiii/workflows/stack-deploy.yml +0 -202
  48. package/dist/plugins/pipelines/factiii/workflows/stack-dev-sync.yml +0 -181
  49. package/dist/plugins/pipelines/factiii/workflows/stack-fix.yml +0 -177
  50. package/dist/plugins/pipelines/factiii/workflows/stack-pr-check.yml +0 -106
  51. package/dist/plugins/pipelines/factiii/workflows/stack-scan.yml +0 -182
  52. package/dist/plugins/pipelines/factiii/workflows/stack-undeploy.yml +0 -96
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * Local config scanfix for Factiii Pipeline plugin
4
+ * Warns if stack.local.yml is missing (per-developer, gitignored config)
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.localConfigFixes = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const config_files_js_1 = require("../../../../constants/config-files.js");
43
+ exports.localConfigFixes = [
44
+ {
45
+ id: 'missing-local-config',
46
+ stage: 'dev',
47
+ severity: 'warning',
48
+ description: config_files_js_1.STACK_LOCAL_FILENAME + ' not found (specifies your dev OS)',
49
+ scan: async (_config, rootDir) => {
50
+ const localPath = (0, config_files_js_1.getStackLocalPath)(rootDir);
51
+ return !fs.existsSync(localPath);
52
+ },
53
+ fix: async (_config, rootDir) => {
54
+ const localPath = (0, config_files_js_1.getStackLocalPath)(rootDir);
55
+ let devOS = 'ubuntu';
56
+ if (process.platform === 'darwin')
57
+ devOS = 'mac';
58
+ else if (process.platform === 'win32')
59
+ devOS = 'windows';
60
+ const content = '# Local machine config (gitignored - each developer has their own)\n' +
61
+ '# Generated by: npx stack fix\n' +
62
+ '\n' +
63
+ 'dev_os: ' + devOS + '\n';
64
+ fs.writeFileSync(localPath, content, 'utf8');
65
+ return true;
66
+ },
67
+ manualFix: 'Create ' + config_files_js_1.STACK_LOCAL_FILENAME + ' with: dev_os: mac|windows|ubuntu',
68
+ },
69
+ ];
70
+ //# sourceMappingURL=local-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-config.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/local-config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAEzB,2EAAgG;AAEnF,QAAA,gBAAgB,GAAU;IACrC;QACE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sCAAoB,GAAG,oCAAoC;QACxE,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,MAAM,SAAS,GAAG,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACvE,MAAM,SAAS,GAAG,IAAA,mCAAiB,EAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,KAAK,GAAG,QAAQ,CAAC;YACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAAE,KAAK,GAAG,KAAK,CAAC;iBAC5C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAAE,KAAK,GAAG,SAAS,CAAC;YAEzD,MAAM,OAAO,GACX,sEAAsE;gBACtE,iCAAiC;gBACjC,IAAI;gBACJ,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;YAE5B,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,SAAS,GAAG,sCAAoB,GAAG,mCAAmC;KAClF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/workflows.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAIrE,eAAO,MAAM,aAAa,EAAE,GAAG,EA6I9B,CAAC"}
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/workflows.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAIrE,eAAO,MAAM,aAAa,EAAE,GAAG,EAmI9B,CAAC"}
@@ -51,7 +51,7 @@ exports.workflowFixes = [
51
51
  description: 'GitHub workflows not generated',
52
52
  scan: async (_config, rootDir) => {
53
53
  const workflowsDir = path.join(rootDir, '.github', 'workflows');
54
- return !fs.existsSync(path.join(workflowsDir, 'stack-deploy.yml'));
54
+ return !fs.existsSync(path.join(workflowsDir, 'stack-ci.yml'));
55
55
  },
56
56
  fix: async (_config, rootDir) => {
57
57
  await (0, workflows_js_1.generateWorkflows)(rootDir);
@@ -65,7 +65,7 @@ exports.workflowFixes = [
65
65
  severity: 'info',
66
66
  description: 'GitHub workflows may be outdated',
67
67
  scan: async (_config, rootDir) => {
68
- const workflowPath = path.join(rootDir, '.github', 'workflows', 'stack-deploy.yml');
68
+ const workflowPath = path.join(rootDir, '.github', 'workflows', 'stack-ci.yml');
69
69
  if (!fs.existsSync(workflowPath))
70
70
  return false;
71
71
  const content = fs.readFileSync(workflowPath, 'utf8');
@@ -95,41 +95,27 @@ exports.workflowFixes = [
95
95
  const workflowsDir = path.join(rootDir, '.github', 'workflows');
96
96
  if (!fs.existsSync(workflowsDir))
97
97
  return false;
98
- // List of workflows we currently generate
98
+ // List of workflows we currently generate (CI testing only)
99
99
  const validWorkflows = [
100
- 'stack-deploy.yml',
101
- 'stack-fix.yml',
102
- 'stack-scan.yml',
103
- 'stack-undeploy.yml',
104
- 'stack-pr-check.yml',
105
- 'stack-command.yml',
106
- 'stack-cicd-staging.yml',
100
+ 'stack-ci.yml',
107
101
  'stack-cicd-prod.yml',
108
- 'stack-dev-sync.yml', // Only in dev mode
109
102
  ];
110
- // Find all stack-*.yml files
103
+ // Find all stack-*.yml and factiii-*.yml files (clean up legacy too)
111
104
  const files = fs.readdirSync(workflowsDir);
112
- const stackFiles = files.filter((f) => f.startsWith('stack-') && f.endsWith('.yml'));
105
+ const managedFiles = files.filter((f) => (f.startsWith('stack-') || f.startsWith('factiii-')) && f.endsWith('.yml'));
113
106
  // Check for orphaned files
114
- const orphaned = stackFiles.filter((f) => !validWorkflows.includes(f));
107
+ const orphaned = managedFiles.filter((f) => !validWorkflows.includes(f));
115
108
  return orphaned.length > 0;
116
109
  },
117
110
  fix: async (_config, rootDir) => {
118
111
  const workflowsDir = path.join(rootDir, '.github', 'workflows');
119
112
  const validWorkflows = [
120
- 'stack-deploy.yml',
121
- 'stack-fix.yml',
122
- 'stack-scan.yml',
123
- 'stack-undeploy.yml',
124
- 'stack-pr-check.yml',
125
- 'stack-command.yml',
126
- 'stack-cicd-staging.yml',
113
+ 'stack-ci.yml',
127
114
  'stack-cicd-prod.yml',
128
- 'stack-dev-sync.yml',
129
115
  ];
130
116
  const files = fs.readdirSync(workflowsDir);
131
- const stackFiles = files.filter((f) => f.startsWith('stack-') && f.endsWith('.yml'));
132
- const orphaned = stackFiles.filter((f) => !validWorkflows.includes(f));
117
+ const managedFiles = files.filter((f) => (f.startsWith('stack-') || f.startsWith('factiii-')) && f.endsWith('.yml'));
118
+ const orphaned = managedFiles.filter((f) => !validWorkflows.includes(f));
133
119
  for (const file of orphaned) {
134
120
  const filePath = path.join(workflowsDir, file);
135
121
  fs.unlinkSync(filePath);
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/workflows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/workflows.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDtE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmCtE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAClC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
@@ -60,29 +60,14 @@ async function generateWorkflows(rootDir) {
60
60
  if (!fs.existsSync(workflowsDir)) {
61
61
  fs.mkdirSync(workflowsDir, { recursive: true });
62
62
  }
63
- // Copy workflow files and inject version
64
- // Infrastructure management (manual dispatch):
65
- // - stack-deploy.yml: Manual deploy with --staging or --prod
66
- // - stack-fix.yml: Manual fix with matrix for all configured envs
67
- // - stack-scan.yml: Manual scan with matrix for all configured envs
68
- // - stack-undeploy.yml: Manual cleanup
69
- // CI/CD (auto on push):
70
- // - stack-cicd-staging.yml: Auto-deploy on push to main
71
- // - stack-cicd-prod.yml: Auto-deploy on push to prod
63
+ // CI workflows (testing only - no SSH, no deployment):
64
+ // - stack-ci.yml: Build + test on push/PR to main
65
+ // - stack-cicd-prod.yml: Build + test on push to prod
66
+ // Deployment is handled via SSH from dev machine, not workflows.
72
67
  const workflows = [
73
- 'stack-deploy.yml',
74
- 'stack-fix.yml',
75
- 'stack-scan.yml',
76
- 'stack-undeploy.yml',
77
- 'stack-pr-check.yml',
78
- 'stack-cicd-staging.yml',
68
+ 'stack-ci.yml',
79
69
  'stack-cicd-prod.yml',
80
- 'stack-command.yml',
81
70
  ];
82
- // Only add dev-sync workflow in dev mode
83
- if (process.env.DEV_MODE === 'true') {
84
- workflows.push('stack-dev-sync.yml');
85
- }
86
71
  for (const workflow of workflows) {
87
72
  const sourcePath = path.join(sourceDir, workflow);
88
73
  const destPath = path.join(workflowsDir, workflow);
@@ -1 +1 @@
1
- {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/utils/workflows.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,8CAmCC;AAKD,0CAmCC;AArFD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AACzC,wCAAwC;AACxC,wEAAgE;AAChE,yEAAuE;AAEvE;;GAEG;AACI,KAAK,UAAU,iBAAiB,CAAC,OAAe;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAEvD,sBAAsB;IACtB,MAAM,OAAO,GAAG,IAAA,oCAAiB,GAAE,CAAC;IAEpC,+CAA+C;IAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,uDAAuD;IACvD,oDAAoD;IACpD,wDAAwD;IACxD,iEAAiE;IACjE,MAAM,SAAS,GAAG;QAChB,cAAc;QACd,qBAAqB;KACtB,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEnD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAElD,kDAAkD;YAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;YAE1D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,YAAoB,EACpB,SAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAG,4CAAkB,CAAC,WAAW,EAAE,CAAC;IAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,qBAAqB;IACrB,IAAI,GAAG,GAAG,MAAM,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAA,wBAAQ,EAAC,iCAAiC,EAAE;YAChD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;SAClC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,cAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7C,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC;QAChD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW,EAAE,YAAY;QACzB,GAAG;QACH,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,56 @@
1
+ name: Stack CI
2
+
3
+ # Generated by @factiii/stack v{VERSION}
4
+ # Runs builds and tests on push/PR to main.
5
+ # No deployment - deploy via SSH from dev machine.
6
+
7
+ on:
8
+ push:
9
+ branches: [main]
10
+ pull_request:
11
+ branches: [main]
12
+
13
+ jobs:
14
+ ci:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - name: Checkout
18
+ uses: actions/checkout@v4
19
+
20
+ - name: Setup Node.js
21
+ uses: actions/setup-node@v4
22
+ with:
23
+ node-version: '20'
24
+
25
+ - name: Setup pnpm
26
+ uses: pnpm/action-setup@v4
27
+ with:
28
+ version: 9
29
+
30
+ - name: Install dependencies
31
+ run: pnpm install --frozen-lockfile
32
+
33
+ - name: Build server
34
+ run: pnpm build
35
+ working-directory: apps/server
36
+
37
+ - name: Build client
38
+ run: pnpm build
39
+ working-directory: client
40
+ if: hashFiles('client/package.json') != ''
41
+
42
+ - name: Setup Java (for Android)
43
+ uses: actions/setup-java@v4
44
+ with:
45
+ distribution: 'temurin'
46
+ java-version: '17'
47
+ if: hashFiles('apps/mobile/android/build.gradle') != ''
48
+
49
+ - name: Build Android
50
+ run: |
51
+ cd apps/mobile/android
52
+ ./gradlew assembleRelease
53
+ if: hashFiles('apps/mobile/android/build.gradle') != ''
54
+
55
+ - name: Run tests
56
+ run: pnpm test
@@ -1,115 +1,54 @@
1
- name: Stack CI/CD Prod
1
+ name: Stack CI Prod
2
2
 
3
3
  # Generated by @factiii/stack v{VERSION}
4
- # CI/CD: Auto-deploy to prod on push to prod branch
5
- # This is the app's CI/CD pipeline, NOT infrastructure management.
6
- # For manual infrastructure operations, use stack-deploy.yml
4
+ # Runs builds and tests on push to prod branch.
5
+ # No deployment - deploy via SSH from dev machine.
7
6
 
8
7
  on:
9
8
  push:
10
- branches:
11
- - prod
9
+ branches: [prod]
12
10
 
13
11
  jobs:
14
- deploy:
12
+ ci:
15
13
  runs-on: ubuntu-latest
16
14
  steps:
17
- - name: Checkout code
15
+ - name: Checkout
18
16
  uses: actions/checkout@v4
19
17
 
20
- - name: Install yq
21
- run: |
22
- sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
23
- sudo chmod +x /usr/local/bin/yq
18
+ - name: Setup Node.js
19
+ uses: actions/setup-node@v4
20
+ with:
21
+ node-version: '20'
24
22
 
25
- - name: Read config
26
- id: config
27
- run: |
28
- CONFIG_FILE="stack.yml"
29
- if [ ! -f "$CONFIG_FILE" ]; then CONFIG_FILE="factiii.yml"; fi
30
- if [ ! -f "$CONFIG_FILE" ]; then
31
- echo "❌ stack.yml or factiii.yml not found"
32
- exit 1
33
- fi
23
+ - name: Setup pnpm
24
+ uses: pnpm/action-setup@v4
25
+ with:
26
+ version: 9
34
27
 
35
- REPO_NAME=$(yq eval '.name' "$CONFIG_FILE")
36
- HOST=$(yq eval '.prod.domain // ""' "$CONFIG_FILE")
37
- SSH_USER=$(yq eval '.prod.ssh_user // "ubuntu"' "$CONFIG_FILE")
28
+ - name: Install dependencies
29
+ run: pnpm install --frozen-lockfile
38
30
 
39
- echo "repo_name=$REPO_NAME" >> $GITHUB_OUTPUT
40
- echo "host=$HOST" >> $GITHUB_OUTPUT
41
- echo "ssh_user=$SSH_USER" >> $GITHUB_OUTPUT
31
+ - name: Build server
32
+ run: pnpm build
33
+ working-directory: apps/server
42
34
 
43
- - name: Check if prod configured
44
- id: check_prod
45
- run: |
46
- CONFIG_FILE="stack.yml"; if [ ! -f "$CONFIG_FILE" ]; then CONFIG_FILE="factiii.yml"; fi
47
- HAS_PROD=$(yq eval '.prod != null' "$CONFIG_FILE")
48
- echo "has_prod=$HAS_PROD" >> $GITHUB_OUTPUT
35
+ - name: Build client
36
+ run: pnpm build
37
+ working-directory: client
38
+ if: hashFiles('client/package.json') != ''
49
39
 
50
- if [ "$HAS_PROD" != "true" ]; then
51
- echo "⏭️ Prod not configured - skipping deployment"
52
- exit 0
53
- fi
40
+ - name: Setup Java (for Android)
41
+ uses: actions/setup-java@v4
42
+ with:
43
+ distribution: 'temurin'
44
+ java-version: '17'
45
+ if: hashFiles('apps/mobile/android/build.gradle') != ''
54
46
 
55
- - name: Setup SSH
56
- if: steps.check_prod.outputs.has_prod == 'true'
57
- env:
58
- SSH_KEY: ${{ secrets.PROD_SSH }}
47
+ - name: Build Android
59
48
  run: |
60
- if [ -z "$SSH_KEY" ]; then
61
- echo "❌ Missing PROD_SSH secret"
62
- exit 1
63
- fi
64
-
65
- mkdir -p ~/.ssh
66
- echo "$SSH_KEY" > ~/.ssh/deploy_key
67
- chmod 600 ~/.ssh/deploy_key
49
+ cd apps/mobile/android
50
+ ./gradlew assembleRelease
51
+ if: hashFiles('apps/mobile/android/build.gradle') != ''
68
52
 
69
- - name: Deploy via CLI
70
- if: steps.check_prod.outputs.has_prod == 'true'
71
- env:
72
- HOST: ${{ steps.config.outputs.host }}
73
- USER: ${{ steps.config.outputs.ssh_user }}
74
- REPO_NAME: ${{ steps.config.outputs.repo_name }}
75
- COMMIT_HASH: ${{ github.sha }}
76
- BRANCH: ${{ github.ref_name }}
77
- GITHUB_REPO: ${{ github.repository }}
78
- PROD_ENVS: ${{ secrets.PROD_ENVS }}
79
- run: |
80
- if [ -z "$HOST" ]; then
81
- echo "❌ Missing prod.domain in config"
82
- exit 1
83
- fi
84
-
85
- echo "🚀 Deploying to prod ($HOST)..."
86
-
87
- # Prepare environment variables for SSH (base64 encode to handle special characters)
88
- ENV_VARS_EXPORT=""
89
- if [ -n "$PROD_ENVS" ]; then
90
- ENV_VARS_B64=$(echo -n "$PROD_ENVS" | base64 -w 0)
91
- ENV_VARS_EXPORT="PROD_ENVS=\$(echo '$ENV_VARS_B64' | base64 -d) && export PROD_ENVS && "
92
- fi
93
-
94
- ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no "$USER@$HOST" \
95
- "export PATH=\"/opt/homebrew/bin:/usr/local/bin:\$PATH\" && \
96
- REPO_DIR=\"\$HOME/.factiii/$REPO_NAME\" && \
97
- if [ -d \"\$REPO_DIR\" ]; then \
98
- cd \"\$REPO_DIR\" && \
99
- $ENV_VARS_EXPORT GITHUB_ACTIONS=true COMMIT_HASH=$COMMIT_HASH BRANCH=$BRANCH GITHUB_REPO=$GITHUB_REPO \
100
- npx stack deploy --prod --commit $COMMIT_HASH --branch $BRANCH; \
101
- else \
102
- echo \"❌ Repo directory not found at \$REPO_DIR\"; \
103
- echo \"Run deployment first to clone the repository\"; \
104
- exit 1; \
105
- fi"
106
-
107
- DEPLOY_EXIT_CODE=$?
108
- rm -f ~/.ssh/deploy_key
109
-
110
- if [ $DEPLOY_EXIT_CODE -eq 0 ]; then
111
- echo "✅ Prod deployment complete!"
112
- else
113
- echo "❌ Prod deployment failed with exit code $DEPLOY_EXIT_CODE"
114
- exit $DEPLOY_EXIT_CODE
115
- fi
53
+ - name: Run tests
54
+ run: pnpm test
@@ -68,5 +68,20 @@ export declare function getUsedPlugins(config: FactiiiConfig): Set<string>;
68
68
  * @param name - Environment name to validate
69
69
  * @returns Error message if invalid, null if valid
70
70
  */
71
+ /**
72
+ * Local config interface (stack.local.yml)
73
+ * Per-developer settings that are gitignored
74
+ */
75
+ export interface LocalConfig {
76
+ dev_os?: 'mac' | 'windows' | 'ubuntu';
77
+ }
78
+ /**
79
+ * Load local config from stack.local.yml (or factiii.local.yml)
80
+ * Returns empty object if file doesn't exist
81
+ *
82
+ * @param rootDir - Root directory of the project
83
+ * @returns Parsed local config or empty object
84
+ */
85
+ export declare function loadLocalConfig(rootDir: string): LocalConfig;
71
86
  export declare function validateEnvironmentName(name: string): string | null;
72
87
  //# sourceMappingURL=config-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/config-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAU1E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sKAWvB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAgBnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAU9D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,KAAK,GACX,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAgBnC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAWvE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBnE"}
1
+ {"version":3,"file":"config-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/config-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAW1E;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sKAWvB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,GACpB,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAgBnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAU9D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,KAAK,GACX,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAgBnC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAWvE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAED;;;;;;;GAOG;AACH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CACvC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAW5D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBnE"}
@@ -5,6 +5,42 @@
5
5
  * Helper functions for working with factiii.yml config where
6
6
  * environments are stored as top-level keys.
7
7
  */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
8
44
  Object.defineProperty(exports, "__esModule", { value: true });
9
45
  exports.RESERVED_CONFIG_KEYS = void 0;
10
46
  exports.extractEnvironments = extractEnvironments;
@@ -12,7 +48,11 @@ exports.getStageFromEnvironment = getStageFromEnvironment;
12
48
  exports.getEnvironmentsForStage = getEnvironmentsForStage;
13
49
  exports.getUsedServerPlugins = getUsedServerPlugins;
14
50
  exports.getUsedPlugins = getUsedPlugins;
51
+ exports.loadLocalConfig = loadLocalConfig;
15
52
  exports.validateEnvironmentName = validateEnvironmentName;
53
+ const fs = __importStar(require("fs"));
54
+ const js_yaml_1 = __importDefault(require("js-yaml"));
55
+ const config_files_js_1 = require("../constants/config-files.js");
16
56
  // ============================================================
17
57
  // CRITICAL: Config Environment Extraction
18
58
  // ============================================================
@@ -142,13 +182,25 @@ function getUsedPlugins(config) {
142
182
  return plugins;
143
183
  }
144
184
  /**
145
- * Validate environment name
146
- * Checks that environment name doesn't conflict with reserved keys
147
- * and follows naming conventions
185
+ * Load local config from stack.local.yml (or factiii.local.yml)
186
+ * Returns empty object if file doesn't exist
148
187
  *
149
- * @param name - Environment name to validate
150
- * @returns Error message if invalid, null if valid
188
+ * @param rootDir - Root directory of the project
189
+ * @returns Parsed local config or empty object
151
190
  */
191
+ function loadLocalConfig(rootDir) {
192
+ const localPath = (0, config_files_js_1.getStackLocalPath)(rootDir);
193
+ if (!fs.existsSync(localPath)) {
194
+ return {};
195
+ }
196
+ try {
197
+ const content = fs.readFileSync(localPath, 'utf8');
198
+ return js_yaml_1.default.load(content) ?? {};
199
+ }
200
+ catch {
201
+ return {};
202
+ }
203
+ }
152
204
  function validateEnvironmentName(name) {
153
205
  // Check for reserved key conflicts
154
206
  if (exports.RESERVED_CONFIG_KEYS.includes(name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"config-helpers.js","sourceRoot":"","sources":["../../src/utils/config-helpers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAyCH,kDAkBC;AAeD,0DAUC;AASD,0DAmBC;AASD,oDAWC;AASD,wCAaC;AAUD,0DAoBC;AApLD,+DAA+D;AAC/D,0CAA0C;AAC1C,+DAA+D;AAC/D,6DAA6D;AAC7D,oEAAoE;AACpE,sDAAsD;AACtD,+DAA+D;AAE/D;;;GAGG;AACU,QAAA,oBAAoB,GAAG;IAClC,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,UAAU;IACV,eAAe;IACf,gBAAgB;IAChB,sBAAsB;IACtB,iBAAiB;IACjB,SAAS,EAAG,mDAAmD;CACvD,CAAC;AAOX;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,MAAqB;IAErB,MAAM,YAAY,GAAsC,EAAE,CAAC;IAE3D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,qBAAqB;QACrB,IAAI,4BAAoB,CAAC,QAAQ,CAAC,GAA4C,CAAC,EAAE,CAAC;YAChF,SAAS;QACX,CAAC;QAED,uDAAuD;QACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACzE,YAAY,CAAC,GAAG,CAAC,GAAG,KAA0B,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACpF,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,MAAM,CAAC;IAE1E,MAAM,IAAI,KAAK,CACb,2CAA2C,OAAO,IAAI;QACpD,6EAA6E,CAChF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CACrC,MAAqB,EACrB,KAAY;IAEZ,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAsC,EAAE,CAAC;IAEvD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC;YACH,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC5C,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;YACvD,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,MAAqB;IACxD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAEjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,MAAqB;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAEjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,IAAY;IAClD,mCAAmC;IACnC,IAAI,4BAAoB,CAAC,QAAQ,CAAC,IAA6C,CAAC,EAAE,CAAC;QACjF,OAAO,6BAA6B,IAAI,4EAA4E,IAAI,4BAA4B,CAAC;IACvJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,6BAA6B,IAAI,gEAAgE,CAAC;IAC3G,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC;QACH,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"config-helpers.js","sourceRoot":"","sources":["../../src/utils/config-helpers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@factiii/stack",
3
- "version": "0.1.25",
3
+ "version": "0.1.27",
4
4
  "description": "Infrastructure management package for deploying services to servers",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",