create-sailor 1.9.5 → 1.10.0

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 (65) hide show
  1. package/README.md +10 -8
  2. package/bin/create-sailor.js +28 -0
  3. package/dist/index.js +137 -138
  4. package/package.json +23 -15
  5. package/templates/backends/gateway/package.json +1 -1
  6. package/templates/docs/docusaurus/package.json +1 -1
  7. package/templates/docs/fumadocs/package.json +1 -1
  8. package/templates/docs/mintlify/package.json +1 -1
  9. package/templates/docs/nextra/package.json +1 -1
  10. package/templates/docs/vitepress/package.json +1 -1
  11. package/templates/infra/ops/README.md +15 -0
  12. package/templates/infra/ops/platform-expected.example.json +45 -0
  13. package/templates/orm/drizzle/package.json +1 -1
  14. package/templates/tests/README.md +18 -0
  15. package/templates/tests/degradation.test.example.ts +469 -0
  16. package/dist/aws-kms-FFRN23DK.js +0 -1
  17. package/dist/bowser-2VXD6AQS.js +0 -11
  18. package/dist/chunk-5ECPN42W.js +0 -1
  19. package/dist/chunk-6MSNEPUX.js +0 -0
  20. package/dist/chunk-A3H5SUSR.js +0 -8
  21. package/dist/chunk-AN6QWW3N.js +0 -1
  22. package/dist/chunk-CVCZBECH.js +0 -1
  23. package/dist/chunk-GA44DNS2.js +0 -1
  24. package/dist/chunk-IYWUY3VA.js +0 -1
  25. package/dist/chunk-LDZWCNWB.js +0 -0
  26. package/dist/chunk-M3NEWJ7L.js +0 -1
  27. package/dist/chunk-MGGNSWUA.js +0 -3
  28. package/dist/chunk-MYIHTCRS.js +0 -4
  29. package/dist/chunk-PA4CKDRJ.js +0 -1
  30. package/dist/chunk-QSLKOXQ6.js +0 -1
  31. package/dist/chunk-S4HCBMFP.js +0 -1
  32. package/dist/chunk-SYWJHPRX.js +0 -0
  33. package/dist/chunk-TW5BOTVX.js +0 -0
  34. package/dist/chunk-UWHWNXNX.js +0 -19
  35. package/dist/chunk-WJLTO7JW.js +0 -0
  36. package/dist/chunk-X6LE6K3W.js +0 -0
  37. package/dist/chunk-XE3I3HCZ.js +0 -40
  38. package/dist/chunk-Z4YWESTY.js +0 -2
  39. package/dist/chunk-ZIBRKYXP.js +0 -23
  40. package/dist/chunk-ZJ3BTCD6.js +0 -17
  41. package/dist/credits-UUPQKRQZ.js +0 -2802
  42. package/dist/dist-23KDUT4O.js +0 -1
  43. package/dist/dist-ZZCU5PKC.js +0 -5
  44. package/dist/dist-es-7HF5URFJ.js +0 -1
  45. package/dist/dist-es-BORZTE76.js +0 -1
  46. package/dist/dist-es-CN2GMFBK.js +0 -1
  47. package/dist/dist-es-FQ6CEUEU.js +0 -1
  48. package/dist/dist-es-FSE4MSDA.js +0 -5
  49. package/dist/dist-es-H47VUS6Q.js +0 -2
  50. package/dist/dist-es-JCIK4C4M.js +0 -2
  51. package/dist/dist-es-MFZXYPBY.js +0 -1
  52. package/dist/dist-es-PREZ4TU2.js +0 -1
  53. package/dist/dist-es-TCZQ4KMP.js +0 -2
  54. package/dist/dist-es-Y7VP7FI6.js +0 -2
  55. package/dist/dist-es-YN4LRIZR.js +0 -5
  56. package/dist/event-streams-TNY7XPBF.js +0 -1
  57. package/dist/loadSso-2XZQIDZP.js +0 -1
  58. package/dist/loadSso-FBBI5PDJ.js +0 -1
  59. package/dist/local-6WWVOMA7.js +0 -1
  60. package/dist/query_compiler_fast_bg.postgresql-JA2BFVW5.js +0 -2
  61. package/dist/query_compiler_fast_bg.postgresql.wasm-base64-URHQ2Y3Y.js +0 -1
  62. package/dist/signin-CJMG23UU.js +0 -1
  63. package/dist/sso-oidc-26OCCRMC.js +0 -1
  64. package/dist/sts-4U2U3ZK4.js +0 -1
  65. package/dist/sts-CP4OREEC.js +0 -1
package/README.md CHANGED
@@ -3,8 +3,8 @@
3
3
  > Governed scaffolding for AI-native SaaS. Bootstrap the Nebutra Sailor platform baseline with multi-tenant foundations, region-aware defaults, and production-ready AI integrations.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/create-sailor.svg?color=0033FE)](https://www.npmjs.com/package/create-sailor)
6
- [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-0033FE.svg)](https://www.gnu.org/licenses/agpl-3.0)
7
- [![Commercial License](https://img.shields.io/badge/Licensing-Commercial%20Options-0BF1C3.svg)](https://nebutra.com/licensing)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-0033FE.svg)](https://opensource.org/licenses/MIT)
7
+ [![Licensing](https://img.shields.io/badge/Licensing-MIT%20%2B%20optional%20support-0BF1C3.svg)](https://nebutra.com/licensing)
8
8
 
9
9
  ## Quick Start
10
10
 
@@ -92,7 +92,7 @@ npm create sailor@latest my-app \
92
92
  | `--analytics` | `posthog` · `plausible` · `umami` · `baidu` · `sensors` · `none` | region-based |
93
93
  | `--sms` | `twilio` · `aliyun-sms` · `tencent-sms` · `yunpian` · `none` | region-based |
94
94
  | `--deploy` | `vercel` · `railway` · `cloudflare` · `selfhost` | `vercel` |
95
- | `--docs` | `fumadocs` · `none` | `fumadocs` |
95
+ | `--docs` | `fumadocs` · `mintlify` · `docusaurus` · `nextra` · `vitepress` · `none` | `fumadocs` |
96
96
  | `--orm` | `prisma` · `drizzle` · `none` | `prisma` |
97
97
  | `--db` | `postgres` · `mysql` · `sqlite` · `none` | `postgresql` |
98
98
  | `--queue` | `qstash` · `bullmq` · `upstash` · `sqs` · `none` | region-based |
@@ -109,7 +109,7 @@ npm create sailor@latest my-app \
109
109
  | `--idp` | `clerk` · `oauth-server` | `clerk` |
110
110
  | `--access-gate` | `none` · `invite` | `none` |
111
111
  | `--cron-jobs` | `true` · `false` — scaffold scheduled cron handlers | `true` |
112
- | `--audit-log` | `true` · `false` — enable `/settings/audit-log` + arch test | `true` |
112
+ | `--audit-log` | `true` · `false` — enable `/settings/audit-log` + arch test | `false` (`@nebutra/audit` is WIP) |
113
113
  | `--api-keys` | `true` · `false` — enable `/settings/api-keys` page | `true` |
114
114
  | `--command-palette` | `true` · `false` — enable ⌘K command palette | `true` |
115
115
  | `--cookie-consent` | `true` · `false` — enable GDPR/CCPA cookie banner | `true` |
@@ -190,13 +190,15 @@ single monorepo you can extend instead of re-assembling from scratch.
190
190
  - **Getting Started**: [docs.nebutra.com/getting-started/installation](https://docs.nebutra.com/getting-started/installation)
191
191
  - **Customization Guide**: [docs.nebutra.com/customization/overview](https://docs.nebutra.com/customization/overview)
192
192
  - **Licensing**: [nebutra.com/licensing](https://nebutra.com/licensing)
193
- - **Get Free License**: [nebutra.com/get-license](https://nebutra.com/get-license)
194
193
 
195
194
  ## License
196
195
 
197
- AGPL-3.0 with a commercial license exception.
198
- See [LICENSE-COMMERCIAL.md](https://github.com/Nebutra/Nebutra-Sailor/blob/main/LICENSE-COMMERCIAL.md) for details.
199
- Commercial and individual licensing details: [get-license](https://nebutra.com/get-license).
196
+ MIT. This package and the projects it scaffolds are MIT — commercial use is
197
+ free, with no registration, licence key, or attribution requirement.
198
+
199
+ The upstream [Nebutra-Sailor](https://github.com/Nebutra/Nebutra-Sailor)
200
+ monorepo is FSL-1.1-ALv2. Optional paid support tiers do not gate the
201
+ software. See [nebutra.com/licensing](https://nebutra.com/licensing).
200
202
 
201
203
  ---
202
204
 
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ // Committed bin entry for `create-sailor`.
3
+ //
4
+ // pnpm links bins before any lifecycle script or build runs, so package.json#bin
5
+ // must point at a file that exists in a fresh checkout — dist/ does not. This
6
+ // file exists at link time and hands off to the tsup output once it is built.
7
+ // Guarded by tests/architecture/workspace-bin-stubs.test.ts.
8
+ import { existsSync } from "node:fs";
9
+ import { dirname, resolve } from "node:path";
10
+ import { fileURLToPath, pathToFileURL } from "node:url";
11
+
12
+ const entry = resolve(dirname(fileURLToPath(import.meta.url)), "../dist/index.js");
13
+
14
+ if (!existsSync(entry)) {
15
+ process.stderr.write(
16
+ [
17
+ `create-sailor: built entry not found at ${entry}`,
18
+ "The package has not been built yet. Run `pnpm --filter create-sailor build` and retry.",
19
+ "",
20
+ ].join("\n"),
21
+ );
22
+ process.exit(1);
23
+ }
24
+
25
+ // Keep argv identical to a direct `node dist/index.js …` so commander and any
26
+ // main-module check in the built entry see exactly what they saw before.
27
+ process.argv[1] = entry;
28
+ await import(pathToFileURL(entry).href);