@strapi/strapi 5.58.0 → 5.59.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 (27) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/commands/enterprise/install/action.d.ts +0 -1
  3. package/dist/cli/commands/enterprise/install/action.d.ts.map +1 -1
  4. package/dist/cli/commands/enterprise/install/license.d.ts +2 -3
  5. package/dist/cli/commands/enterprise/install/license.d.ts.map +1 -1
  6. package/dist/cli/commands/enterprise/install/package-manager.d.ts.map +1 -1
  7. package/dist/cli/commands/enterprise/install/registry-access.d.ts.map +1 -1
  8. package/dist/node/create-build-context.d.ts.map +1 -1
  9. package/dist/package.json.js +1 -1
  10. package/dist/package.json.mjs +1 -1
  11. package/dist/src/cli/commands/enterprise/install/action.js +0 -2
  12. package/dist/src/cli/commands/enterprise/install/action.js.map +1 -1
  13. package/dist/src/cli/commands/enterprise/install/action.mjs +0 -2
  14. package/dist/src/cli/commands/enterprise/install/action.mjs.map +1 -1
  15. package/dist/src/cli/commands/enterprise/install/license.js +6 -12
  16. package/dist/src/cli/commands/enterprise/install/license.js.map +1 -1
  17. package/dist/src/cli/commands/enterprise/install/license.mjs +6 -12
  18. package/dist/src/cli/commands/enterprise/install/license.mjs.map +1 -1
  19. package/dist/src/cli/commands/enterprise/install/package-manager.js.map +1 -1
  20. package/dist/src/cli/commands/enterprise/install/package-manager.mjs.map +1 -1
  21. package/dist/src/cli/commands/enterprise/install/registry-access.js.map +1 -1
  22. package/dist/src/cli/commands/enterprise/install/registry-access.mjs.map +1 -1
  23. package/dist/src/node/create-build-context.js +5 -1
  24. package/dist/src/node/create-build-context.js.map +1 -1
  25. package/dist/src/node/create-build-context.mjs +5 -1
  26. package/dist/src/node/create-build-context.mjs.map +1 -1
  27. package/package.json +24 -24
package/README.md CHANGED
@@ -136,7 +136,7 @@ You can unlock additional features such as SSO, Audit Logs, Review Workflows in
136
136
 
137
137
  ## Contributing
138
138
 
139
- Please read our [Contributing Guide](./CONTRIBUTING.md) before submitting a Pull Request to the project.
139
+ Please read our [Contributing Guide](https://github.com/strapi/strapi/blob/main/CONTRIBUTING.md) before submitting a Pull Request to the project.
140
140
 
141
141
  ## Community support
142
142
 
@@ -6,7 +6,6 @@ interface InstallDependencies {
6
6
  isInteractive: boolean;
7
7
  env: NodeJS.ProcessEnv;
8
8
  homeDir: string;
9
- now: Date;
10
9
  fetchImplementation: typeof fetch;
11
10
  promptForLicense: typeof promptForLicense;
12
11
  promptForPlugins: typeof promptForPlugins;
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/enterprise/install/action.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAuB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAkB,MAAM,WAAW,CAAC;AAK7D,OAAO,EAAkD,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAW/F,UAAU,mBAAmB;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,IAAI,CAAC;IACV,mBAAmB,EAAE,OAAO,KAAK,CAAC;IAClC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,eAAe,EAAE,OAAO,eAAe,CAAC;CACzC;AA0BD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,GAAI,iBAAiB,MAAM,KAAG,gBAqB9D,CAAC;AAqKF,eAAO,MAAM,UAAU,GAAU,qDAK9B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,mBAAmB,CAAC;CACnC,KAAG,OAAO,CAAC,IAAI,CA+Df,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,EAAE,QAAQ,MAAM,KAAG,MAiBnE,CAAC;AAEF,eAAO,MAAM,MAAM,GACjB,kBAAkB,MAAM,EAAE,EAC1B,YAAY;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,KAC7B,OAAO,CAAC,IAAI,CAyBd,CAAC"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/enterprise/install/action.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAuB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAkB,MAAM,WAAW,CAAC;AAK7D,OAAO,EAAkD,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAW/F,UAAU,mBAAmB;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,OAAO,KAAK,CAAC;IAClC,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,eAAe,EAAE,OAAO,eAAe,CAAC;CACzC;AA0BD,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,GAAI,iBAAiB,MAAM,KAAG,gBAqB9D,CAAC;AAqKF,eAAO,MAAM,UAAU,GAAU,qDAK9B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,mBAAmB,CAAC;CACnC,KAAG,OAAO,CAAC,IAAI,CA8Df,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,EAAE,QAAQ,MAAM,KAAG,MAiBnE,CAAC;AAEF,eAAO,MAAM,MAAM,GACjB,kBAAkB,MAAM,EAAE,EAC1B,YAAY;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,KAC7B,OAAO,CAAC,IAAI,CAwBd,CAAC"}
@@ -13,15 +13,14 @@ export declare const findLicense: ({ appDir, env, }: {
13
13
  appDir: string;
14
14
  env: NodeJS.ProcessEnv;
15
15
  }) => Promise<FoundLicense | undefined>;
16
- export declare const validateLicense: (license: string, now: Date) => void;
16
+ export declare const validateLicense: (license: string) => void;
17
17
  export declare const promptForLicense: () => Promise<string>;
18
18
  export declare const saveLicenseFile: (appDir: string, license: string, logger: Logger) => Promise<void>;
19
- export declare const resolveLicense: ({ appDir, isInteractive, logger, env, now, prompt, }: {
19
+ export declare const resolveLicense: ({ appDir, isInteractive, logger, env, prompt, }: {
20
20
  appDir: string;
21
21
  isInteractive: boolean;
22
22
  logger: Logger;
23
23
  env: NodeJS.ProcessEnv;
24
- now: Date;
25
24
  prompt: () => Promise<string>;
26
25
  }) => Promise<ResolvedLicense>;
27
26
  //# sourceMappingURL=license.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/enterprise/install/license.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAC;CAClC;AAuDD,eAAO,MAAM,WAAW,GAAU,kBAG/B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB,KAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAuBnC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,EAAE,KAAK,IAAI,KAAG,IAkB5D,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,MAAM,CAYvD,CAAC;AAuBF,eAAO,MAAM,eAAe,GAC1B,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAOd,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,sDAOlC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B,KAAG,OAAO,CAAC,eAAe,CAwB1B,CAAC"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/enterprise/install/license.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAC;CAClC;AAiDD,eAAO,MAAM,WAAW,GAAU,kBAG/B;IACD,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB,KAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAuBnC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,IAQjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,MAAM,CAYvD,CAAC;AAuBF,eAAO,MAAM,eAAe,GAC1B,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAOd,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,iDAMlC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B,KAAG,OAAO,CAAC,eAAe,CAwB1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/enterprise/install/package-manager.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,sFAAsF;AACtF,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,qFAAqF;AACrF,eAAO,MAAM,wBAAwB,GACnC,qBAAqB,OAAO,KAC3B,sBAAsB,GAAG,SAY3B,CAAC;AAmBF,eAAO,MAAM,oBAAoB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,sBAAsB,CAqBzF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,gBAAgB,sBAAsB,KAAG,OACJ,CAAC"}
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/enterprise/install/package-manager.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,sFAAsF;AACtF,MAAM,MAAM,sBAAsB,GAChC;IAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3F,qFAAqF;AACrF,eAAO,MAAM,wBAAwB,GACnC,qBAAqB,OAAO,KAC3B,sBAAsB,GAAG,SAY3B,CAAC;AAmBF,eAAO,MAAM,oBAAoB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,sBAAsB,CAqBzF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,gBAAgB,sBAAsB,KAAG,OACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry-access.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/enterprise/install/registry-access.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAkB,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAoBhF,KAAK,gBAAgB,GACjB,oBAAoB,GACpB,2BAA2B,GAC3B,mBAAmB,GACnB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACrC,GAAG,CACA;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE;AAC9B,4DAA4D;GAC1D;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CACnD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,KAAG,kBAItD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,EAAE,UAAU,kBAAkB,KAAG,MACC,CAAC;AAUxF,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,EAAE,UAAU,kBAAkB,KAAG,MACZ,CAAC;AAE5E,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,MAAM,KAAG,MACa,CAAC;AAEzF,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,KAAG,MAA2C,CAAC;AAsChG,eAAO,MAAM,YAAY,GACvB,UAAU,MAAM,EAChB,SAAS,MAAM,EACf,UAAU,kBAAkB,EAC5B,cAAc,MAAM,KACnB,OAAO,CAAC,qBAAqB,CAoC/B,CAAC;AAoEF,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,EAChB,SAAS,MAAM,EACf,UAAU,kBAAkB,EAC5B,cAAc,MAAM,KACnB,OAAO,CAAC,qBAAqB,CAwC/B,CAAC;AA6DF,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,gBAAgB,sBAAsB,KACrC,OAAO,CAAC,MAAM,EAAE,CAclB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,iEAM7C;IACD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,sBAAsB,CAAC;IACvC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,KAAG,OAAO,CAAC,MAAM,EAAE,CAwBnB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,4FAA4F;IAC5F,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,qBAAqB,GAAU,2EAQzC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC,cAAc,CAoDzB,CAAC"}
1
+ {"version":3,"file":"registry-access.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/enterprise/install/registry-access.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAkB,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAoBhF,KAAK,gBAAgB,GACnB,oBAAoB,GAAG,2BAA2B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAElG,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACrC,GAAG,CACA;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE;AAC9B,4DAA4D;GAC1D;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CACnD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,KAAG,kBAItD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,EAAE,UAAU,kBAAkB,KAAG,MACC,CAAC;AAUxF,eAAO,MAAM,wBAAwB,GAAI,OAAO,MAAM,EAAE,UAAU,kBAAkB,KAAG,MACZ,CAAC;AAE5E,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,MAAM,KAAG,MACa,CAAC;AAEzF,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,KAAG,MAA2C,CAAC;AAsChG,eAAO,MAAM,YAAY,GACvB,UAAU,MAAM,EAChB,SAAS,MAAM,EACf,UAAU,kBAAkB,EAC5B,cAAc,MAAM,KACnB,OAAO,CAAC,qBAAqB,CAoC/B,CAAC;AAoEF,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,EAChB,SAAS,MAAM,EACf,UAAU,kBAAkB,EAC5B,cAAc,MAAM,KACnB,OAAO,CAAC,qBAAqB,CAwC/B,CAAC;AA6DF,eAAO,MAAM,4BAA4B,GACvC,QAAQ,MAAM,EACd,gBAAgB,sBAAsB,KACrC,OAAO,CAAC,MAAM,EAAE,CAclB,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,iEAM7C;IACD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,sBAAsB,CAAC;IACvC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,KAAG,OAAO,CAAC,MAAM,EAAE,CAwBnB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,4FAA4F;IAC5F,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,qBAAqB,GAAU,2EAQzC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,sBAAsB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,KAAG,OAAO,CAAC,cAAc,CAoDzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-build-context.d.ts","sourceRoot":"","sources":["../../src/node/create-build-context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,UAAU,EAA+C,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,OAAO,EAAmB,MAAM,6BAA6B,CAAC;AAGvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,YAAa,SAAQ,WAAW;IACxC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACtD;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mGAAmG;IACnG,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,UAAU,sBAAuB,SAAQ,UAAU;IACjD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,gHAAgH;IAChH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAkCD,QAAA,MAAM,kBAAkB,GAAU,kDAO/B,sBAAsB,KAAG,OAAO,CAAC,YAAY,CAgJ/C,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"create-build-context.d.ts","sourceRoot":"","sources":["../../src/node/create-build-context.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,UAAU,EAA+C,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,OAAO,EAAmB,MAAM,6BAA6B,CAAC;AAGvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,UAAU,YAAa,SAAQ,WAAW;IACxC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACtD;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mGAAmG;IACnG,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,UAAU,sBAAuB,SAAQ,UAAU;IACjD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,gHAAgH;IAChH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAkCD,QAAA,MAAM,kBAAkB,GAAU,kDAO/B,sBAAsB,KAAG,OAAO,CAAC,YAAY,CAsJ/C,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "5.58.0";
3
+ var version = "5.59.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.js.map
@@ -1,4 +1,4 @@
1
- var version = "5.58.0";
1
+ var version = "5.59.0";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=package.json.mjs.map
@@ -155,7 +155,6 @@ const runInstall = async ({ appDir, packageArguments, logger, dependencies })=>{
155
155
  isInteractive: dependencies.isInteractive,
156
156
  logger,
157
157
  env: dependencies.env,
158
- now: dependencies.now,
159
158
  prompt: dependencies.promptForLicense
160
159
  });
161
160
  const registryAccess$1 = await registryAccess.prepareRegistryAccess({
@@ -234,7 +233,6 @@ const action = async (packageArguments, { logger })=>{
234
233
  isInteractive: Boolean(process.stdin.isTTY && process.stdout.isTTY),
235
234
  env: process.env,
236
235
  homeDir: os__default.default.homedir(),
237
- now: new Date(),
238
236
  fetchImplementation: fetch,
239
237
  promptForLicense: license.promptForLicense,
240
238
  promptForPlugins: selection.promptForPlugins,
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sources":["../../../../../../src/cli/commands/enterprise/install/action.ts"],"sourcesContent":["import os from 'node:os';\n\nimport { loadEnv } from '../../../../node/core/env';\nimport type { Logger } from '../../../utils/logger';\nimport { ENTERPRISE_SCOPE, STRAPI_PACKAGE_NAME } from './constants';\nimport { discoverEnterprisePlugins } from './discovery';\nimport { EnterpriseInstallError, PackageManagerError, PromptCancelledError } from './errors';\nimport { buildInstallCommand, installPackages } from './install-packages';\nimport { promptForLicense, resolveLicense } from './license';\nimport { detectPackageManager } from './package-manager';\nimport { resolvePluginStatus } from './plugin-status';\nimport { prepareRegistryAccess } from './registry-access';\nimport { fetchPackument } from './registry';\nimport { buildPluginRow, isSelectable, orderVisibleRows, promptForPlugins } from './selection';\nimport { printSetupLinks } from './setup-links';\nimport {\n canCheckStrapiCompatibility,\n findUnsupportedStrapiRange,\n isPrerelease,\n readAppDependencyVersion,\n readInstalledVersion,\n resolveRequestedVersion,\n} from './versions';\n\ninterface InstallDependencies {\n isInteractive: boolean;\n env: NodeJS.ProcessEnv;\n homeDir: string;\n now: Date;\n fetchImplementation: typeof fetch;\n promptForLicense: typeof promptForLicense;\n promptForPlugins: typeof promptForPlugins;\n installPackages: typeof installPackages;\n}\n\nconst describeNoStableRelease = (packageName: string) =>\n `${packageName} has no stable release yet. To install a prerelease, name its version: ${packageName}@<version>.`;\n\nconst describeStrapiMismatch = (\n packageName: string,\n requiredStrapiRange: string,\n strapiVersion: string | undefined\n) =>\n `${packageName} requires Strapi ${requiredStrapiRange} and this app uses ${strapiVersion}. Upgrade Strapi first.`;\n\ninterface InstallContext {\n appDir: string;\n license: string;\n strapiVersion?: string;\n logger: Logger;\n dependencies: InstallDependencies;\n}\n\nconst ENTERPRISE_PACKAGE_NAME = new RegExp(`^${ENTERPRISE_SCOPE}/[a-z0-9-][a-z0-9._-]*$`);\nconst MAX_PACKAGE_NAME_LENGTH = 214;\n\nconst isValidPackageName = (packageName: string) =>\n packageName.length <= MAX_PACKAGE_NAME_LENGTH && ENTERPRISE_PACKAGE_NAME.test(packageName);\n\ninterface RequestedPackage {\n packageName: string;\n /** A version or a tag, when the argument names one. */\n requestedVersion?: string;\n}\n\nexport const parsePackageArgument = (packageArgument: string): RequestedPackage => {\n const scopedArgument = packageArgument.startsWith('@')\n ? packageArgument\n : `${ENTERPRISE_SCOPE}/${packageArgument}`;\n const versionSeparatorIndex = scopedArgument.indexOf('@', 1);\n const packageName =\n versionSeparatorIndex === -1 ? scopedArgument : scopedArgument.slice(0, versionSeparatorIndex);\n const requestedVersion =\n versionSeparatorIndex === -1 ? undefined : scopedArgument.slice(versionSeparatorIndex + 1);\n\n if (!packageName.startsWith(`${ENTERPRISE_SCOPE}/`)) {\n throw new EnterpriseInstallError(\n `${packageArgument} is not an Enterprise package. Enterprise packages start with ${ENTERPRISE_SCOPE}/.`\n );\n }\n\n if (!isValidPackageName(packageName)) {\n throw new EnterpriseInstallError(`${packageArgument} is not a valid package name.`);\n }\n\n return { packageName, requestedVersion: requestedVersion || undefined };\n};\n\nconst resolveNamedPackages = async (\n requestedPackages: RequestedPackage[],\n { appDir, license, strapiVersion, logger, dependencies }: InstallContext\n): Promise<string[]> => {\n const installSpecs: string[] = [];\n\n for (const { packageName, requestedVersion } of requestedPackages) {\n const lookup = await fetchPackument({\n packageName,\n license,\n fetchImplementation: dependencies.fetchImplementation,\n });\n const installedVersion = await readAppDependencyVersion(appDir, packageName);\n\n if (requestedVersion && lookup.status === 'available') {\n const resolvedVersion = resolveRequestedVersion(\n lookup.packument,\n requestedVersion,\n strapiVersion\n );\n\n if (!resolvedVersion) {\n throw new EnterpriseInstallError(\n `${packageName} has no version or tag ${requestedVersion}.`\n );\n }\n\n if (resolvedVersion === installedVersion) {\n logger.info(`${packageName} ${resolvedVersion} is already installed.`);\n continue;\n }\n\n const unsupportedStrapiRange = findUnsupportedStrapiRange(\n lookup.packument,\n resolvedVersion,\n strapiVersion\n );\n\n if (unsupportedStrapiRange) {\n logger.warn(\n `${packageName} ${resolvedVersion} requires Strapi ${unsupportedStrapiRange} and this app uses ${strapiVersion}. Strapi may not start until you upgrade it.`\n );\n }\n\n installSpecs.push(`${packageName}@${resolvedVersion}`);\n continue;\n }\n\n const status = resolvePluginStatus({ lookup, installedVersion, strapiVersion });\n\n switch (status.state) {\n case 'not-licensed':\n throw new EnterpriseInstallError(\n `Your license does not include ${packageName}, or it does not exist. Run strapi enterprise install without a name to see the plugins you can install.`\n );\n case 'not-found':\n throw new EnterpriseInstallError(\n `No Enterprise package named ${packageName}. Run strapi enterprise install without a name to see the plugins you can install.`\n );\n case 'no-stable-release':\n throw new EnterpriseInstallError(describeNoStableRelease(packageName));\n case 'no-compatible-version':\n throw new EnterpriseInstallError(\n describeStrapiMismatch(packageName, status.requiredStrapiRange, strapiVersion)\n );\n default:\n break;\n }\n\n if (status.newerVersionNote) {\n logger.info(`${packageName}: ${status.newerVersionNote}`);\n }\n\n if (status.state === 'installed') {\n logger.info(`${packageName} ${installedVersion} is already installed and up to date.`);\n continue;\n }\n\n if (installedVersion && isPrerelease(installedVersion)) {\n logger.info(\n `${packageName}: replacing the installed prerelease ${installedVersion} with the stable release ${status.targetVersion}.`\n );\n }\n\n if (status.state === 'upgrade' && status.isMajorUpgrade) {\n logger.warn(\n `${packageName}: upgrading from ${installedVersion} to ${status.targetVersion}, a major upgrade that may include breaking changes.`\n );\n }\n\n installSpecs.push(`${packageName}@${status.targetVersion}`);\n }\n\n return installSpecs;\n};\n\nconst selectPlugins = async ({\n appDir,\n license,\n strapiVersion,\n logger,\n dependencies,\n}: InstallContext): Promise<string[]> => {\n const discoveredPlugins = await discoverEnterprisePlugins({\n appDir,\n license,\n logger,\n fetchImplementation: dependencies.fetchImplementation,\n });\n\n const rows = discoveredPlugins.map(({ entry, lookup, installedVersion }) =>\n buildPluginRow({ entry, lookup, installedVersion, strapiVersion })\n );\n const isAnyPluginLicensed = discoveredPlugins.some(({ lookup }) => lookup.status === 'available');\n\n rows\n .filter((row) => row.state === 'not-licensed')\n .forEach((row) =>\n logger.warn(`${row.entry.packageName} is installed but is not included in your license.`)\n );\n\n if (!isAnyPluginLicensed && !rows.some((row) => row.state === 'not-licensed')) {\n throw new EnterpriseInstallError('Your license does not include any Enterprise plugins.');\n }\n\n if (!rows.some(isSelectable)) {\n const visibleRows = orderVisibleRows(rows);\n\n // Says why each plugin cannot be installed, rather than calling them all up to date.\n visibleRows.forEach((row) => {\n const { packageName } = row.entry;\n\n if (row.state === 'installed' && row.newerVersionNote) {\n logger.info(`${packageName}: ${row.newerVersionNote}`);\n } else if (row.state === 'no-stable-release') {\n logger.info(describeNoStableRelease(packageName));\n } else if (row.state === 'no-compatible-version') {\n logger.info(describeStrapiMismatch(packageName, row.requiredStrapiRange, strapiVersion));\n }\n });\n\n if (visibleRows.every((row) => row.state === 'installed' || row.state === 'not-licensed')) {\n logger.info('The Enterprise plugins in your license are installed and up to date.');\n }\n\n return [];\n }\n\n return dependencies.promptForPlugins(rows);\n};\n\nconst warnWhenCompatibilityIsUnknown = (strapiVersion: string | undefined, logger: Logger) => {\n if (strapiVersion === undefined) {\n logger.warn(\n `Could not find ${STRAPI_PACKAGE_NAME} in node_modules, so plugin compatibility is not checked. Install the app's dependencies first.`\n );\n } else if (!canCheckStrapiCompatibility(strapiVersion)) {\n logger.warn(\n `This app uses Strapi ${strapiVersion}, a prerelease, so plugin compatibility is not checked.`\n );\n }\n};\n\nexport const runInstall = async ({\n appDir,\n packageArguments,\n logger,\n dependencies,\n}: {\n appDir: string;\n packageArguments: string[];\n logger: Logger;\n dependencies: InstallDependencies;\n}): Promise<void> => {\n // The checks that need no license come first, so a mistake there writes nothing, not even the\n // license.txt a pasted license is saved to.\n const requestedPackages = packageArguments.map(parsePackageArgument);\n\n if (requestedPackages.length === 0 && !dependencies.isInteractive) {\n throw new EnterpriseInstallError(\n 'Pass package names, or run the command in an interactive terminal.'\n );\n }\n\n const packageManager = await detectPackageManager(appDir);\n\n const { license, source: licenseSource } = await resolveLicense({\n appDir,\n isInteractive: dependencies.isInteractive,\n logger,\n env: dependencies.env,\n now: dependencies.now,\n prompt: dependencies.promptForLicense,\n });\n\n const registryAccess = await prepareRegistryAccess({\n appDir,\n packageManager,\n license,\n licenseSource,\n logger,\n env: dependencies.env,\n homeDir: dependencies.homeDir,\n });\n\n const strapiVersion = await readInstalledVersion(appDir, STRAPI_PACKAGE_NAME);\n warnWhenCompatibilityIsUnknown(strapiVersion, logger);\n\n const context: InstallContext = { appDir, license, strapiVersion, logger, dependencies };\n const installSpecs =\n requestedPackages.length > 0\n ? await resolveNamedPackages(requestedPackages, context)\n : await selectPlugins(context);\n\n if (installSpecs.length === 0) {\n logger.info('Nothing to install.');\n return;\n }\n\n await registryAccess.apply();\n\n const { command, args } = buildInstallCommand(packageManager, installSpecs);\n logger.info(`Running ${command} ${args.join(' ')}`);\n\n const installedPackages = await Promise.all(\n installSpecs.map(async (installSpec) => {\n const { packageName } = parsePackageArgument(installSpec);\n const previousVersion = await readAppDependencyVersion(appDir, packageName);\n\n return { packageName, replacesInstalledVersion: previousVersion !== undefined };\n })\n );\n\n await dependencies.installPackages({ appDir, packageManager, installSpecs });\n\n await printSetupLinks({ appDir, installedPackages, logger });\n};\n\n/**\n * The exit code for an error, after reporting it in one line. The package manager prints its own\n * output when an install fails, so only its exit code is kept then.\n */\nexport const reportInstallError = (error: unknown, logger: Logger): number => {\n if (error instanceof PackageManagerError) {\n return error.exitCode;\n }\n\n if (error instanceof PromptCancelledError) {\n return 130;\n }\n\n if (error instanceof EnterpriseInstallError) {\n logger.error(error.message);\n return 1;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`strapi enterprise install failed: ${message}`);\n return 1;\n};\n\nexport const action = async (\n packageArguments: string[],\n { logger }: { logger: Logger }\n): Promise<void> => {\n const appDir = process.cwd();\n\n try {\n // Makes STRAPI_LICENSE from the app's `.env` available, as `strapi build` does.\n await loadEnv(appDir);\n\n await runInstall({\n appDir,\n packageArguments,\n logger,\n dependencies: {\n isInteractive: Boolean(process.stdin.isTTY && process.stdout.isTTY),\n env: process.env,\n homeDir: os.homedir(),\n now: new Date(),\n fetchImplementation: fetch,\n promptForLicense,\n promptForPlugins,\n installPackages,\n },\n });\n } catch (error) {\n process.exit(reportInstallError(error, logger));\n }\n};\n"],"names":["describeNoStableRelease","packageName","describeStrapiMismatch","requiredStrapiRange","strapiVersion","ENTERPRISE_PACKAGE_NAME","RegExp","ENTERPRISE_SCOPE","MAX_PACKAGE_NAME_LENGTH","isValidPackageName","length","test","parsePackageArgument","packageArgument","scopedArgument","startsWith","versionSeparatorIndex","indexOf","slice","requestedVersion","undefined","EnterpriseInstallError","resolveNamedPackages","requestedPackages","appDir","license","logger","dependencies","installSpecs","lookup","fetchPackument","fetchImplementation","installedVersion","readAppDependencyVersion","status","resolvedVersion","resolveRequestedVersion","packument","info","unsupportedStrapiRange","findUnsupportedStrapiRange","warn","push","resolvePluginStatus","state","newerVersionNote","isPrerelease","targetVersion","isMajorUpgrade","selectPlugins","discoveredPlugins","discoverEnterprisePlugins","rows","map","entry","buildPluginRow","isAnyPluginLicensed","some","filter","row","forEach","isSelectable","visibleRows","orderVisibleRows","every","promptForPlugins","warnWhenCompatibilityIsUnknown","STRAPI_PACKAGE_NAME","canCheckStrapiCompatibility","runInstall","packageArguments","isInteractive","packageManager","detectPackageManager","source","licenseSource","resolveLicense","env","now","prompt","promptForLicense","registryAccess","prepareRegistryAccess","homeDir","readInstalledVersion","context","apply","command","args","buildInstallCommand","join","installedPackages","Promise","all","installSpec","previousVersion","replacesInstalledVersion","installPackages","printSetupLinks","reportInstallError","error","PackageManagerError","exitCode","PromptCancelledError","message","Error","String","action","process","cwd","loadEnv","Boolean","stdin","isTTY","stdout","os","homedir","Date","fetch","exit"],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sources":["../../../../../../src/cli/commands/enterprise/install/action.ts"],"sourcesContent":["import os from 'node:os';\n\nimport { loadEnv } from '../../../../node/core/env';\nimport type { Logger } from '../../../utils/logger';\nimport { ENTERPRISE_SCOPE, STRAPI_PACKAGE_NAME } from './constants';\nimport { discoverEnterprisePlugins } from './discovery';\nimport { EnterpriseInstallError, PackageManagerError, PromptCancelledError } from './errors';\nimport { buildInstallCommand, installPackages } from './install-packages';\nimport { promptForLicense, resolveLicense } from './license';\nimport { detectPackageManager } from './package-manager';\nimport { resolvePluginStatus } from './plugin-status';\nimport { prepareRegistryAccess } from './registry-access';\nimport { fetchPackument } from './registry';\nimport { buildPluginRow, isSelectable, orderVisibleRows, promptForPlugins } from './selection';\nimport { printSetupLinks } from './setup-links';\nimport {\n canCheckStrapiCompatibility,\n findUnsupportedStrapiRange,\n isPrerelease,\n readAppDependencyVersion,\n readInstalledVersion,\n resolveRequestedVersion,\n} from './versions';\n\ninterface InstallDependencies {\n isInteractive: boolean;\n env: NodeJS.ProcessEnv;\n homeDir: string;\n fetchImplementation: typeof fetch;\n promptForLicense: typeof promptForLicense;\n promptForPlugins: typeof promptForPlugins;\n installPackages: typeof installPackages;\n}\n\nconst describeNoStableRelease = (packageName: string) =>\n `${packageName} has no stable release yet. To install a prerelease, name its version: ${packageName}@<version>.`;\n\nconst describeStrapiMismatch = (\n packageName: string,\n requiredStrapiRange: string,\n strapiVersion: string | undefined\n) =>\n `${packageName} requires Strapi ${requiredStrapiRange} and this app uses ${strapiVersion}. Upgrade Strapi first.`;\n\ninterface InstallContext {\n appDir: string;\n license: string;\n strapiVersion?: string;\n logger: Logger;\n dependencies: InstallDependencies;\n}\n\nconst ENTERPRISE_PACKAGE_NAME = new RegExp(`^${ENTERPRISE_SCOPE}/[a-z0-9-][a-z0-9._-]*$`);\nconst MAX_PACKAGE_NAME_LENGTH = 214;\n\nconst isValidPackageName = (packageName: string) =>\n packageName.length <= MAX_PACKAGE_NAME_LENGTH && ENTERPRISE_PACKAGE_NAME.test(packageName);\n\ninterface RequestedPackage {\n packageName: string;\n /** A version or a tag, when the argument names one. */\n requestedVersion?: string;\n}\n\nexport const parsePackageArgument = (packageArgument: string): RequestedPackage => {\n const scopedArgument = packageArgument.startsWith('@')\n ? packageArgument\n : `${ENTERPRISE_SCOPE}/${packageArgument}`;\n const versionSeparatorIndex = scopedArgument.indexOf('@', 1);\n const packageName =\n versionSeparatorIndex === -1 ? scopedArgument : scopedArgument.slice(0, versionSeparatorIndex);\n const requestedVersion =\n versionSeparatorIndex === -1 ? undefined : scopedArgument.slice(versionSeparatorIndex + 1);\n\n if (!packageName.startsWith(`${ENTERPRISE_SCOPE}/`)) {\n throw new EnterpriseInstallError(\n `${packageArgument} is not an Enterprise package. Enterprise packages start with ${ENTERPRISE_SCOPE}/.`\n );\n }\n\n if (!isValidPackageName(packageName)) {\n throw new EnterpriseInstallError(`${packageArgument} is not a valid package name.`);\n }\n\n return { packageName, requestedVersion: requestedVersion || undefined };\n};\n\nconst resolveNamedPackages = async (\n requestedPackages: RequestedPackage[],\n { appDir, license, strapiVersion, logger, dependencies }: InstallContext\n): Promise<string[]> => {\n const installSpecs: string[] = [];\n\n for (const { packageName, requestedVersion } of requestedPackages) {\n const lookup = await fetchPackument({\n packageName,\n license,\n fetchImplementation: dependencies.fetchImplementation,\n });\n const installedVersion = await readAppDependencyVersion(appDir, packageName);\n\n if (requestedVersion && lookup.status === 'available') {\n const resolvedVersion = resolveRequestedVersion(\n lookup.packument,\n requestedVersion,\n strapiVersion\n );\n\n if (!resolvedVersion) {\n throw new EnterpriseInstallError(\n `${packageName} has no version or tag ${requestedVersion}.`\n );\n }\n\n if (resolvedVersion === installedVersion) {\n logger.info(`${packageName} ${resolvedVersion} is already installed.`);\n continue;\n }\n\n const unsupportedStrapiRange = findUnsupportedStrapiRange(\n lookup.packument,\n resolvedVersion,\n strapiVersion\n );\n\n if (unsupportedStrapiRange) {\n logger.warn(\n `${packageName} ${resolvedVersion} requires Strapi ${unsupportedStrapiRange} and this app uses ${strapiVersion}. Strapi may not start until you upgrade it.`\n );\n }\n\n installSpecs.push(`${packageName}@${resolvedVersion}`);\n continue;\n }\n\n const status = resolvePluginStatus({ lookup, installedVersion, strapiVersion });\n\n switch (status.state) {\n case 'not-licensed':\n throw new EnterpriseInstallError(\n `Your license does not include ${packageName}, or it does not exist. Run strapi enterprise install without a name to see the plugins you can install.`\n );\n case 'not-found':\n throw new EnterpriseInstallError(\n `No Enterprise package named ${packageName}. Run strapi enterprise install without a name to see the plugins you can install.`\n );\n case 'no-stable-release':\n throw new EnterpriseInstallError(describeNoStableRelease(packageName));\n case 'no-compatible-version':\n throw new EnterpriseInstallError(\n describeStrapiMismatch(packageName, status.requiredStrapiRange, strapiVersion)\n );\n default:\n break;\n }\n\n if (status.newerVersionNote) {\n logger.info(`${packageName}: ${status.newerVersionNote}`);\n }\n\n if (status.state === 'installed') {\n logger.info(`${packageName} ${installedVersion} is already installed and up to date.`);\n continue;\n }\n\n if (installedVersion && isPrerelease(installedVersion)) {\n logger.info(\n `${packageName}: replacing the installed prerelease ${installedVersion} with the stable release ${status.targetVersion}.`\n );\n }\n\n if (status.state === 'upgrade' && status.isMajorUpgrade) {\n logger.warn(\n `${packageName}: upgrading from ${installedVersion} to ${status.targetVersion}, a major upgrade that may include breaking changes.`\n );\n }\n\n installSpecs.push(`${packageName}@${status.targetVersion}`);\n }\n\n return installSpecs;\n};\n\nconst selectPlugins = async ({\n appDir,\n license,\n strapiVersion,\n logger,\n dependencies,\n}: InstallContext): Promise<string[]> => {\n const discoveredPlugins = await discoverEnterprisePlugins({\n appDir,\n license,\n logger,\n fetchImplementation: dependencies.fetchImplementation,\n });\n\n const rows = discoveredPlugins.map(({ entry, lookup, installedVersion }) =>\n buildPluginRow({ entry, lookup, installedVersion, strapiVersion })\n );\n const isAnyPluginLicensed = discoveredPlugins.some(({ lookup }) => lookup.status === 'available');\n\n rows\n .filter((row) => row.state === 'not-licensed')\n .forEach((row) =>\n logger.warn(`${row.entry.packageName} is installed but is not included in your license.`)\n );\n\n if (!isAnyPluginLicensed && !rows.some((row) => row.state === 'not-licensed')) {\n throw new EnterpriseInstallError('Your license does not include any Enterprise plugins.');\n }\n\n if (!rows.some(isSelectable)) {\n const visibleRows = orderVisibleRows(rows);\n\n // Says why each plugin cannot be installed, rather than calling them all up to date.\n visibleRows.forEach((row) => {\n const { packageName } = row.entry;\n\n if (row.state === 'installed' && row.newerVersionNote) {\n logger.info(`${packageName}: ${row.newerVersionNote}`);\n } else if (row.state === 'no-stable-release') {\n logger.info(describeNoStableRelease(packageName));\n } else if (row.state === 'no-compatible-version') {\n logger.info(describeStrapiMismatch(packageName, row.requiredStrapiRange, strapiVersion));\n }\n });\n\n if (visibleRows.every((row) => row.state === 'installed' || row.state === 'not-licensed')) {\n logger.info('The Enterprise plugins in your license are installed and up to date.');\n }\n\n return [];\n }\n\n return dependencies.promptForPlugins(rows);\n};\n\nconst warnWhenCompatibilityIsUnknown = (strapiVersion: string | undefined, logger: Logger) => {\n if (strapiVersion === undefined) {\n logger.warn(\n `Could not find ${STRAPI_PACKAGE_NAME} in node_modules, so plugin compatibility is not checked. Install the app's dependencies first.`\n );\n } else if (!canCheckStrapiCompatibility(strapiVersion)) {\n logger.warn(\n `This app uses Strapi ${strapiVersion}, a prerelease, so plugin compatibility is not checked.`\n );\n }\n};\n\nexport const runInstall = async ({\n appDir,\n packageArguments,\n logger,\n dependencies,\n}: {\n appDir: string;\n packageArguments: string[];\n logger: Logger;\n dependencies: InstallDependencies;\n}): Promise<void> => {\n // The checks that need no license come first, so a mistake there writes nothing, not even the\n // license.txt a pasted license is saved to.\n const requestedPackages = packageArguments.map(parsePackageArgument);\n\n if (requestedPackages.length === 0 && !dependencies.isInteractive) {\n throw new EnterpriseInstallError(\n 'Pass package names, or run the command in an interactive terminal.'\n );\n }\n\n const packageManager = await detectPackageManager(appDir);\n\n const { license, source: licenseSource } = await resolveLicense({\n appDir,\n isInteractive: dependencies.isInteractive,\n logger,\n env: dependencies.env,\n prompt: dependencies.promptForLicense,\n });\n\n const registryAccess = await prepareRegistryAccess({\n appDir,\n packageManager,\n license,\n licenseSource,\n logger,\n env: dependencies.env,\n homeDir: dependencies.homeDir,\n });\n\n const strapiVersion = await readInstalledVersion(appDir, STRAPI_PACKAGE_NAME);\n warnWhenCompatibilityIsUnknown(strapiVersion, logger);\n\n const context: InstallContext = { appDir, license, strapiVersion, logger, dependencies };\n const installSpecs =\n requestedPackages.length > 0\n ? await resolveNamedPackages(requestedPackages, context)\n : await selectPlugins(context);\n\n if (installSpecs.length === 0) {\n logger.info('Nothing to install.');\n return;\n }\n\n await registryAccess.apply();\n\n const { command, args } = buildInstallCommand(packageManager, installSpecs);\n logger.info(`Running ${command} ${args.join(' ')}`);\n\n const installedPackages = await Promise.all(\n installSpecs.map(async (installSpec) => {\n const { packageName } = parsePackageArgument(installSpec);\n const previousVersion = await readAppDependencyVersion(appDir, packageName);\n\n return { packageName, replacesInstalledVersion: previousVersion !== undefined };\n })\n );\n\n await dependencies.installPackages({ appDir, packageManager, installSpecs });\n\n await printSetupLinks({ appDir, installedPackages, logger });\n};\n\n/**\n * The exit code for an error, after reporting it in one line. The package manager prints its own\n * output when an install fails, so only its exit code is kept then.\n */\nexport const reportInstallError = (error: unknown, logger: Logger): number => {\n if (error instanceof PackageManagerError) {\n return error.exitCode;\n }\n\n if (error instanceof PromptCancelledError) {\n return 130;\n }\n\n if (error instanceof EnterpriseInstallError) {\n logger.error(error.message);\n return 1;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`strapi enterprise install failed: ${message}`);\n return 1;\n};\n\nexport const action = async (\n packageArguments: string[],\n { logger }: { logger: Logger }\n): Promise<void> => {\n const appDir = process.cwd();\n\n try {\n // Makes STRAPI_LICENSE from the app's `.env` available, as `strapi build` does.\n await loadEnv(appDir);\n\n await runInstall({\n appDir,\n packageArguments,\n logger,\n dependencies: {\n isInteractive: Boolean(process.stdin.isTTY && process.stdout.isTTY),\n env: process.env,\n homeDir: os.homedir(),\n fetchImplementation: fetch,\n promptForLicense,\n promptForPlugins,\n installPackages,\n },\n });\n } catch (error) {\n process.exit(reportInstallError(error, logger));\n }\n};\n"],"names":["describeNoStableRelease","packageName","describeStrapiMismatch","requiredStrapiRange","strapiVersion","ENTERPRISE_PACKAGE_NAME","RegExp","ENTERPRISE_SCOPE","MAX_PACKAGE_NAME_LENGTH","isValidPackageName","length","test","parsePackageArgument","packageArgument","scopedArgument","startsWith","versionSeparatorIndex","indexOf","slice","requestedVersion","undefined","EnterpriseInstallError","resolveNamedPackages","requestedPackages","appDir","license","logger","dependencies","installSpecs","lookup","fetchPackument","fetchImplementation","installedVersion","readAppDependencyVersion","status","resolvedVersion","resolveRequestedVersion","packument","info","unsupportedStrapiRange","findUnsupportedStrapiRange","warn","push","resolvePluginStatus","state","newerVersionNote","isPrerelease","targetVersion","isMajorUpgrade","selectPlugins","discoveredPlugins","discoverEnterprisePlugins","rows","map","entry","buildPluginRow","isAnyPluginLicensed","some","filter","row","forEach","isSelectable","visibleRows","orderVisibleRows","every","promptForPlugins","warnWhenCompatibilityIsUnknown","STRAPI_PACKAGE_NAME","canCheckStrapiCompatibility","runInstall","packageArguments","isInteractive","packageManager","detectPackageManager","source","licenseSource","resolveLicense","env","prompt","promptForLicense","registryAccess","prepareRegistryAccess","homeDir","readInstalledVersion","context","apply","command","args","buildInstallCommand","join","installedPackages","Promise","all","installSpec","previousVersion","replacesInstalledVersion","installPackages","printSetupLinks","reportInstallError","error","PackageManagerError","exitCode","PromptCancelledError","message","Error","String","action","process","cwd","loadEnv","Boolean","stdin","isTTY","stdout","os","homedir","fetch","exit"],"mappings":"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"}
@@ -149,7 +149,6 @@ const runInstall = async ({ appDir, packageArguments, logger, dependencies })=>{
149
149
  isInteractive: dependencies.isInteractive,
150
150
  logger,
151
151
  env: dependencies.env,
152
- now: dependencies.now,
153
152
  prompt: dependencies.promptForLicense
154
153
  });
155
154
  const registryAccess = await prepareRegistryAccess({
@@ -228,7 +227,6 @@ const action = async (packageArguments, { logger })=>{
228
227
  isInteractive: Boolean(process.stdin.isTTY && process.stdout.isTTY),
229
228
  env: process.env,
230
229
  homeDir: os.homedir(),
231
- now: new Date(),
232
230
  fetchImplementation: fetch,
233
231
  promptForLicense,
234
232
  promptForPlugins,
@@ -1 +1 @@
1
- {"version":3,"file":"action.mjs","sources":["../../../../../../src/cli/commands/enterprise/install/action.ts"],"sourcesContent":["import os from 'node:os';\n\nimport { loadEnv } from '../../../../node/core/env';\nimport type { Logger } from '../../../utils/logger';\nimport { ENTERPRISE_SCOPE, STRAPI_PACKAGE_NAME } from './constants';\nimport { discoverEnterprisePlugins } from './discovery';\nimport { EnterpriseInstallError, PackageManagerError, PromptCancelledError } from './errors';\nimport { buildInstallCommand, installPackages } from './install-packages';\nimport { promptForLicense, resolveLicense } from './license';\nimport { detectPackageManager } from './package-manager';\nimport { resolvePluginStatus } from './plugin-status';\nimport { prepareRegistryAccess } from './registry-access';\nimport { fetchPackument } from './registry';\nimport { buildPluginRow, isSelectable, orderVisibleRows, promptForPlugins } from './selection';\nimport { printSetupLinks } from './setup-links';\nimport {\n canCheckStrapiCompatibility,\n findUnsupportedStrapiRange,\n isPrerelease,\n readAppDependencyVersion,\n readInstalledVersion,\n resolveRequestedVersion,\n} from './versions';\n\ninterface InstallDependencies {\n isInteractive: boolean;\n env: NodeJS.ProcessEnv;\n homeDir: string;\n now: Date;\n fetchImplementation: typeof fetch;\n promptForLicense: typeof promptForLicense;\n promptForPlugins: typeof promptForPlugins;\n installPackages: typeof installPackages;\n}\n\nconst describeNoStableRelease = (packageName: string) =>\n `${packageName} has no stable release yet. To install a prerelease, name its version: ${packageName}@<version>.`;\n\nconst describeStrapiMismatch = (\n packageName: string,\n requiredStrapiRange: string,\n strapiVersion: string | undefined\n) =>\n `${packageName} requires Strapi ${requiredStrapiRange} and this app uses ${strapiVersion}. Upgrade Strapi first.`;\n\ninterface InstallContext {\n appDir: string;\n license: string;\n strapiVersion?: string;\n logger: Logger;\n dependencies: InstallDependencies;\n}\n\nconst ENTERPRISE_PACKAGE_NAME = new RegExp(`^${ENTERPRISE_SCOPE}/[a-z0-9-][a-z0-9._-]*$`);\nconst MAX_PACKAGE_NAME_LENGTH = 214;\n\nconst isValidPackageName = (packageName: string) =>\n packageName.length <= MAX_PACKAGE_NAME_LENGTH && ENTERPRISE_PACKAGE_NAME.test(packageName);\n\ninterface RequestedPackage {\n packageName: string;\n /** A version or a tag, when the argument names one. */\n requestedVersion?: string;\n}\n\nexport const parsePackageArgument = (packageArgument: string): RequestedPackage => {\n const scopedArgument = packageArgument.startsWith('@')\n ? packageArgument\n : `${ENTERPRISE_SCOPE}/${packageArgument}`;\n const versionSeparatorIndex = scopedArgument.indexOf('@', 1);\n const packageName =\n versionSeparatorIndex === -1 ? scopedArgument : scopedArgument.slice(0, versionSeparatorIndex);\n const requestedVersion =\n versionSeparatorIndex === -1 ? undefined : scopedArgument.slice(versionSeparatorIndex + 1);\n\n if (!packageName.startsWith(`${ENTERPRISE_SCOPE}/`)) {\n throw new EnterpriseInstallError(\n `${packageArgument} is not an Enterprise package. Enterprise packages start with ${ENTERPRISE_SCOPE}/.`\n );\n }\n\n if (!isValidPackageName(packageName)) {\n throw new EnterpriseInstallError(`${packageArgument} is not a valid package name.`);\n }\n\n return { packageName, requestedVersion: requestedVersion || undefined };\n};\n\nconst resolveNamedPackages = async (\n requestedPackages: RequestedPackage[],\n { appDir, license, strapiVersion, logger, dependencies }: InstallContext\n): Promise<string[]> => {\n const installSpecs: string[] = [];\n\n for (const { packageName, requestedVersion } of requestedPackages) {\n const lookup = await fetchPackument({\n packageName,\n license,\n fetchImplementation: dependencies.fetchImplementation,\n });\n const installedVersion = await readAppDependencyVersion(appDir, packageName);\n\n if (requestedVersion && lookup.status === 'available') {\n const resolvedVersion = resolveRequestedVersion(\n lookup.packument,\n requestedVersion,\n strapiVersion\n );\n\n if (!resolvedVersion) {\n throw new EnterpriseInstallError(\n `${packageName} has no version or tag ${requestedVersion}.`\n );\n }\n\n if (resolvedVersion === installedVersion) {\n logger.info(`${packageName} ${resolvedVersion} is already installed.`);\n continue;\n }\n\n const unsupportedStrapiRange = findUnsupportedStrapiRange(\n lookup.packument,\n resolvedVersion,\n strapiVersion\n );\n\n if (unsupportedStrapiRange) {\n logger.warn(\n `${packageName} ${resolvedVersion} requires Strapi ${unsupportedStrapiRange} and this app uses ${strapiVersion}. Strapi may not start until you upgrade it.`\n );\n }\n\n installSpecs.push(`${packageName}@${resolvedVersion}`);\n continue;\n }\n\n const status = resolvePluginStatus({ lookup, installedVersion, strapiVersion });\n\n switch (status.state) {\n case 'not-licensed':\n throw new EnterpriseInstallError(\n `Your license does not include ${packageName}, or it does not exist. Run strapi enterprise install without a name to see the plugins you can install.`\n );\n case 'not-found':\n throw new EnterpriseInstallError(\n `No Enterprise package named ${packageName}. Run strapi enterprise install without a name to see the plugins you can install.`\n );\n case 'no-stable-release':\n throw new EnterpriseInstallError(describeNoStableRelease(packageName));\n case 'no-compatible-version':\n throw new EnterpriseInstallError(\n describeStrapiMismatch(packageName, status.requiredStrapiRange, strapiVersion)\n );\n default:\n break;\n }\n\n if (status.newerVersionNote) {\n logger.info(`${packageName}: ${status.newerVersionNote}`);\n }\n\n if (status.state === 'installed') {\n logger.info(`${packageName} ${installedVersion} is already installed and up to date.`);\n continue;\n }\n\n if (installedVersion && isPrerelease(installedVersion)) {\n logger.info(\n `${packageName}: replacing the installed prerelease ${installedVersion} with the stable release ${status.targetVersion}.`\n );\n }\n\n if (status.state === 'upgrade' && status.isMajorUpgrade) {\n logger.warn(\n `${packageName}: upgrading from ${installedVersion} to ${status.targetVersion}, a major upgrade that may include breaking changes.`\n );\n }\n\n installSpecs.push(`${packageName}@${status.targetVersion}`);\n }\n\n return installSpecs;\n};\n\nconst selectPlugins = async ({\n appDir,\n license,\n strapiVersion,\n logger,\n dependencies,\n}: InstallContext): Promise<string[]> => {\n const discoveredPlugins = await discoverEnterprisePlugins({\n appDir,\n license,\n logger,\n fetchImplementation: dependencies.fetchImplementation,\n });\n\n const rows = discoveredPlugins.map(({ entry, lookup, installedVersion }) =>\n buildPluginRow({ entry, lookup, installedVersion, strapiVersion })\n );\n const isAnyPluginLicensed = discoveredPlugins.some(({ lookup }) => lookup.status === 'available');\n\n rows\n .filter((row) => row.state === 'not-licensed')\n .forEach((row) =>\n logger.warn(`${row.entry.packageName} is installed but is not included in your license.`)\n );\n\n if (!isAnyPluginLicensed && !rows.some((row) => row.state === 'not-licensed')) {\n throw new EnterpriseInstallError('Your license does not include any Enterprise plugins.');\n }\n\n if (!rows.some(isSelectable)) {\n const visibleRows = orderVisibleRows(rows);\n\n // Says why each plugin cannot be installed, rather than calling them all up to date.\n visibleRows.forEach((row) => {\n const { packageName } = row.entry;\n\n if (row.state === 'installed' && row.newerVersionNote) {\n logger.info(`${packageName}: ${row.newerVersionNote}`);\n } else if (row.state === 'no-stable-release') {\n logger.info(describeNoStableRelease(packageName));\n } else if (row.state === 'no-compatible-version') {\n logger.info(describeStrapiMismatch(packageName, row.requiredStrapiRange, strapiVersion));\n }\n });\n\n if (visibleRows.every((row) => row.state === 'installed' || row.state === 'not-licensed')) {\n logger.info('The Enterprise plugins in your license are installed and up to date.');\n }\n\n return [];\n }\n\n return dependencies.promptForPlugins(rows);\n};\n\nconst warnWhenCompatibilityIsUnknown = (strapiVersion: string | undefined, logger: Logger) => {\n if (strapiVersion === undefined) {\n logger.warn(\n `Could not find ${STRAPI_PACKAGE_NAME} in node_modules, so plugin compatibility is not checked. Install the app's dependencies first.`\n );\n } else if (!canCheckStrapiCompatibility(strapiVersion)) {\n logger.warn(\n `This app uses Strapi ${strapiVersion}, a prerelease, so plugin compatibility is not checked.`\n );\n }\n};\n\nexport const runInstall = async ({\n appDir,\n packageArguments,\n logger,\n dependencies,\n}: {\n appDir: string;\n packageArguments: string[];\n logger: Logger;\n dependencies: InstallDependencies;\n}): Promise<void> => {\n // The checks that need no license come first, so a mistake there writes nothing, not even the\n // license.txt a pasted license is saved to.\n const requestedPackages = packageArguments.map(parsePackageArgument);\n\n if (requestedPackages.length === 0 && !dependencies.isInteractive) {\n throw new EnterpriseInstallError(\n 'Pass package names, or run the command in an interactive terminal.'\n );\n }\n\n const packageManager = await detectPackageManager(appDir);\n\n const { license, source: licenseSource } = await resolveLicense({\n appDir,\n isInteractive: dependencies.isInteractive,\n logger,\n env: dependencies.env,\n now: dependencies.now,\n prompt: dependencies.promptForLicense,\n });\n\n const registryAccess = await prepareRegistryAccess({\n appDir,\n packageManager,\n license,\n licenseSource,\n logger,\n env: dependencies.env,\n homeDir: dependencies.homeDir,\n });\n\n const strapiVersion = await readInstalledVersion(appDir, STRAPI_PACKAGE_NAME);\n warnWhenCompatibilityIsUnknown(strapiVersion, logger);\n\n const context: InstallContext = { appDir, license, strapiVersion, logger, dependencies };\n const installSpecs =\n requestedPackages.length > 0\n ? await resolveNamedPackages(requestedPackages, context)\n : await selectPlugins(context);\n\n if (installSpecs.length === 0) {\n logger.info('Nothing to install.');\n return;\n }\n\n await registryAccess.apply();\n\n const { command, args } = buildInstallCommand(packageManager, installSpecs);\n logger.info(`Running ${command} ${args.join(' ')}`);\n\n const installedPackages = await Promise.all(\n installSpecs.map(async (installSpec) => {\n const { packageName } = parsePackageArgument(installSpec);\n const previousVersion = await readAppDependencyVersion(appDir, packageName);\n\n return { packageName, replacesInstalledVersion: previousVersion !== undefined };\n })\n );\n\n await dependencies.installPackages({ appDir, packageManager, installSpecs });\n\n await printSetupLinks({ appDir, installedPackages, logger });\n};\n\n/**\n * The exit code for an error, after reporting it in one line. The package manager prints its own\n * output when an install fails, so only its exit code is kept then.\n */\nexport const reportInstallError = (error: unknown, logger: Logger): number => {\n if (error instanceof PackageManagerError) {\n return error.exitCode;\n }\n\n if (error instanceof PromptCancelledError) {\n return 130;\n }\n\n if (error instanceof EnterpriseInstallError) {\n logger.error(error.message);\n return 1;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`strapi enterprise install failed: ${message}`);\n return 1;\n};\n\nexport const action = async (\n packageArguments: string[],\n { logger }: { logger: Logger }\n): Promise<void> => {\n const appDir = process.cwd();\n\n try {\n // Makes STRAPI_LICENSE from the app's `.env` available, as `strapi build` does.\n await loadEnv(appDir);\n\n await runInstall({\n appDir,\n packageArguments,\n logger,\n dependencies: {\n isInteractive: Boolean(process.stdin.isTTY && process.stdout.isTTY),\n env: process.env,\n homeDir: os.homedir(),\n now: new Date(),\n fetchImplementation: fetch,\n promptForLicense,\n promptForPlugins,\n installPackages,\n },\n });\n } catch (error) {\n process.exit(reportInstallError(error, logger));\n }\n};\n"],"names":["describeNoStableRelease","packageName","describeStrapiMismatch","requiredStrapiRange","strapiVersion","ENTERPRISE_PACKAGE_NAME","RegExp","ENTERPRISE_SCOPE","MAX_PACKAGE_NAME_LENGTH","isValidPackageName","length","test","parsePackageArgument","packageArgument","scopedArgument","startsWith","versionSeparatorIndex","indexOf","slice","requestedVersion","undefined","EnterpriseInstallError","resolveNamedPackages","requestedPackages","appDir","license","logger","dependencies","installSpecs","lookup","fetchPackument","fetchImplementation","installedVersion","readAppDependencyVersion","status","resolvedVersion","resolveRequestedVersion","packument","info","unsupportedStrapiRange","findUnsupportedStrapiRange","warn","push","resolvePluginStatus","state","newerVersionNote","isPrerelease","targetVersion","isMajorUpgrade","selectPlugins","discoveredPlugins","discoverEnterprisePlugins","rows","map","entry","buildPluginRow","isAnyPluginLicensed","some","filter","row","forEach","isSelectable","visibleRows","orderVisibleRows","every","promptForPlugins","warnWhenCompatibilityIsUnknown","STRAPI_PACKAGE_NAME","canCheckStrapiCompatibility","runInstall","packageArguments","isInteractive","packageManager","detectPackageManager","source","licenseSource","resolveLicense","env","now","prompt","promptForLicense","registryAccess","prepareRegistryAccess","homeDir","readInstalledVersion","context","apply","command","args","buildInstallCommand","join","installedPackages","Promise","all","installSpec","previousVersion","replacesInstalledVersion","installPackages","printSetupLinks","reportInstallError","error","PackageManagerError","exitCode","PromptCancelledError","message","Error","String","action","process","cwd","loadEnv","Boolean","stdin","isTTY","stdout","os","homedir","Date","fetch","exit"],"mappings":"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"}
1
+ {"version":3,"file":"action.mjs","sources":["../../../../../../src/cli/commands/enterprise/install/action.ts"],"sourcesContent":["import os from 'node:os';\n\nimport { loadEnv } from '../../../../node/core/env';\nimport type { Logger } from '../../../utils/logger';\nimport { ENTERPRISE_SCOPE, STRAPI_PACKAGE_NAME } from './constants';\nimport { discoverEnterprisePlugins } from './discovery';\nimport { EnterpriseInstallError, PackageManagerError, PromptCancelledError } from './errors';\nimport { buildInstallCommand, installPackages } from './install-packages';\nimport { promptForLicense, resolveLicense } from './license';\nimport { detectPackageManager } from './package-manager';\nimport { resolvePluginStatus } from './plugin-status';\nimport { prepareRegistryAccess } from './registry-access';\nimport { fetchPackument } from './registry';\nimport { buildPluginRow, isSelectable, orderVisibleRows, promptForPlugins } from './selection';\nimport { printSetupLinks } from './setup-links';\nimport {\n canCheckStrapiCompatibility,\n findUnsupportedStrapiRange,\n isPrerelease,\n readAppDependencyVersion,\n readInstalledVersion,\n resolveRequestedVersion,\n} from './versions';\n\ninterface InstallDependencies {\n isInteractive: boolean;\n env: NodeJS.ProcessEnv;\n homeDir: string;\n fetchImplementation: typeof fetch;\n promptForLicense: typeof promptForLicense;\n promptForPlugins: typeof promptForPlugins;\n installPackages: typeof installPackages;\n}\n\nconst describeNoStableRelease = (packageName: string) =>\n `${packageName} has no stable release yet. To install a prerelease, name its version: ${packageName}@<version>.`;\n\nconst describeStrapiMismatch = (\n packageName: string,\n requiredStrapiRange: string,\n strapiVersion: string | undefined\n) =>\n `${packageName} requires Strapi ${requiredStrapiRange} and this app uses ${strapiVersion}. Upgrade Strapi first.`;\n\ninterface InstallContext {\n appDir: string;\n license: string;\n strapiVersion?: string;\n logger: Logger;\n dependencies: InstallDependencies;\n}\n\nconst ENTERPRISE_PACKAGE_NAME = new RegExp(`^${ENTERPRISE_SCOPE}/[a-z0-9-][a-z0-9._-]*$`);\nconst MAX_PACKAGE_NAME_LENGTH = 214;\n\nconst isValidPackageName = (packageName: string) =>\n packageName.length <= MAX_PACKAGE_NAME_LENGTH && ENTERPRISE_PACKAGE_NAME.test(packageName);\n\ninterface RequestedPackage {\n packageName: string;\n /** A version or a tag, when the argument names one. */\n requestedVersion?: string;\n}\n\nexport const parsePackageArgument = (packageArgument: string): RequestedPackage => {\n const scopedArgument = packageArgument.startsWith('@')\n ? packageArgument\n : `${ENTERPRISE_SCOPE}/${packageArgument}`;\n const versionSeparatorIndex = scopedArgument.indexOf('@', 1);\n const packageName =\n versionSeparatorIndex === -1 ? scopedArgument : scopedArgument.slice(0, versionSeparatorIndex);\n const requestedVersion =\n versionSeparatorIndex === -1 ? undefined : scopedArgument.slice(versionSeparatorIndex + 1);\n\n if (!packageName.startsWith(`${ENTERPRISE_SCOPE}/`)) {\n throw new EnterpriseInstallError(\n `${packageArgument} is not an Enterprise package. Enterprise packages start with ${ENTERPRISE_SCOPE}/.`\n );\n }\n\n if (!isValidPackageName(packageName)) {\n throw new EnterpriseInstallError(`${packageArgument} is not a valid package name.`);\n }\n\n return { packageName, requestedVersion: requestedVersion || undefined };\n};\n\nconst resolveNamedPackages = async (\n requestedPackages: RequestedPackage[],\n { appDir, license, strapiVersion, logger, dependencies }: InstallContext\n): Promise<string[]> => {\n const installSpecs: string[] = [];\n\n for (const { packageName, requestedVersion } of requestedPackages) {\n const lookup = await fetchPackument({\n packageName,\n license,\n fetchImplementation: dependencies.fetchImplementation,\n });\n const installedVersion = await readAppDependencyVersion(appDir, packageName);\n\n if (requestedVersion && lookup.status === 'available') {\n const resolvedVersion = resolveRequestedVersion(\n lookup.packument,\n requestedVersion,\n strapiVersion\n );\n\n if (!resolvedVersion) {\n throw new EnterpriseInstallError(\n `${packageName} has no version or tag ${requestedVersion}.`\n );\n }\n\n if (resolvedVersion === installedVersion) {\n logger.info(`${packageName} ${resolvedVersion} is already installed.`);\n continue;\n }\n\n const unsupportedStrapiRange = findUnsupportedStrapiRange(\n lookup.packument,\n resolvedVersion,\n strapiVersion\n );\n\n if (unsupportedStrapiRange) {\n logger.warn(\n `${packageName} ${resolvedVersion} requires Strapi ${unsupportedStrapiRange} and this app uses ${strapiVersion}. Strapi may not start until you upgrade it.`\n );\n }\n\n installSpecs.push(`${packageName}@${resolvedVersion}`);\n continue;\n }\n\n const status = resolvePluginStatus({ lookup, installedVersion, strapiVersion });\n\n switch (status.state) {\n case 'not-licensed':\n throw new EnterpriseInstallError(\n `Your license does not include ${packageName}, or it does not exist. Run strapi enterprise install without a name to see the plugins you can install.`\n );\n case 'not-found':\n throw new EnterpriseInstallError(\n `No Enterprise package named ${packageName}. Run strapi enterprise install without a name to see the plugins you can install.`\n );\n case 'no-stable-release':\n throw new EnterpriseInstallError(describeNoStableRelease(packageName));\n case 'no-compatible-version':\n throw new EnterpriseInstallError(\n describeStrapiMismatch(packageName, status.requiredStrapiRange, strapiVersion)\n );\n default:\n break;\n }\n\n if (status.newerVersionNote) {\n logger.info(`${packageName}: ${status.newerVersionNote}`);\n }\n\n if (status.state === 'installed') {\n logger.info(`${packageName} ${installedVersion} is already installed and up to date.`);\n continue;\n }\n\n if (installedVersion && isPrerelease(installedVersion)) {\n logger.info(\n `${packageName}: replacing the installed prerelease ${installedVersion} with the stable release ${status.targetVersion}.`\n );\n }\n\n if (status.state === 'upgrade' && status.isMajorUpgrade) {\n logger.warn(\n `${packageName}: upgrading from ${installedVersion} to ${status.targetVersion}, a major upgrade that may include breaking changes.`\n );\n }\n\n installSpecs.push(`${packageName}@${status.targetVersion}`);\n }\n\n return installSpecs;\n};\n\nconst selectPlugins = async ({\n appDir,\n license,\n strapiVersion,\n logger,\n dependencies,\n}: InstallContext): Promise<string[]> => {\n const discoveredPlugins = await discoverEnterprisePlugins({\n appDir,\n license,\n logger,\n fetchImplementation: dependencies.fetchImplementation,\n });\n\n const rows = discoveredPlugins.map(({ entry, lookup, installedVersion }) =>\n buildPluginRow({ entry, lookup, installedVersion, strapiVersion })\n );\n const isAnyPluginLicensed = discoveredPlugins.some(({ lookup }) => lookup.status === 'available');\n\n rows\n .filter((row) => row.state === 'not-licensed')\n .forEach((row) =>\n logger.warn(`${row.entry.packageName} is installed but is not included in your license.`)\n );\n\n if (!isAnyPluginLicensed && !rows.some((row) => row.state === 'not-licensed')) {\n throw new EnterpriseInstallError('Your license does not include any Enterprise plugins.');\n }\n\n if (!rows.some(isSelectable)) {\n const visibleRows = orderVisibleRows(rows);\n\n // Says why each plugin cannot be installed, rather than calling them all up to date.\n visibleRows.forEach((row) => {\n const { packageName } = row.entry;\n\n if (row.state === 'installed' && row.newerVersionNote) {\n logger.info(`${packageName}: ${row.newerVersionNote}`);\n } else if (row.state === 'no-stable-release') {\n logger.info(describeNoStableRelease(packageName));\n } else if (row.state === 'no-compatible-version') {\n logger.info(describeStrapiMismatch(packageName, row.requiredStrapiRange, strapiVersion));\n }\n });\n\n if (visibleRows.every((row) => row.state === 'installed' || row.state === 'not-licensed')) {\n logger.info('The Enterprise plugins in your license are installed and up to date.');\n }\n\n return [];\n }\n\n return dependencies.promptForPlugins(rows);\n};\n\nconst warnWhenCompatibilityIsUnknown = (strapiVersion: string | undefined, logger: Logger) => {\n if (strapiVersion === undefined) {\n logger.warn(\n `Could not find ${STRAPI_PACKAGE_NAME} in node_modules, so plugin compatibility is not checked. Install the app's dependencies first.`\n );\n } else if (!canCheckStrapiCompatibility(strapiVersion)) {\n logger.warn(\n `This app uses Strapi ${strapiVersion}, a prerelease, so plugin compatibility is not checked.`\n );\n }\n};\n\nexport const runInstall = async ({\n appDir,\n packageArguments,\n logger,\n dependencies,\n}: {\n appDir: string;\n packageArguments: string[];\n logger: Logger;\n dependencies: InstallDependencies;\n}): Promise<void> => {\n // The checks that need no license come first, so a mistake there writes nothing, not even the\n // license.txt a pasted license is saved to.\n const requestedPackages = packageArguments.map(parsePackageArgument);\n\n if (requestedPackages.length === 0 && !dependencies.isInteractive) {\n throw new EnterpriseInstallError(\n 'Pass package names, or run the command in an interactive terminal.'\n );\n }\n\n const packageManager = await detectPackageManager(appDir);\n\n const { license, source: licenseSource } = await resolveLicense({\n appDir,\n isInteractive: dependencies.isInteractive,\n logger,\n env: dependencies.env,\n prompt: dependencies.promptForLicense,\n });\n\n const registryAccess = await prepareRegistryAccess({\n appDir,\n packageManager,\n license,\n licenseSource,\n logger,\n env: dependencies.env,\n homeDir: dependencies.homeDir,\n });\n\n const strapiVersion = await readInstalledVersion(appDir, STRAPI_PACKAGE_NAME);\n warnWhenCompatibilityIsUnknown(strapiVersion, logger);\n\n const context: InstallContext = { appDir, license, strapiVersion, logger, dependencies };\n const installSpecs =\n requestedPackages.length > 0\n ? await resolveNamedPackages(requestedPackages, context)\n : await selectPlugins(context);\n\n if (installSpecs.length === 0) {\n logger.info('Nothing to install.');\n return;\n }\n\n await registryAccess.apply();\n\n const { command, args } = buildInstallCommand(packageManager, installSpecs);\n logger.info(`Running ${command} ${args.join(' ')}`);\n\n const installedPackages = await Promise.all(\n installSpecs.map(async (installSpec) => {\n const { packageName } = parsePackageArgument(installSpec);\n const previousVersion = await readAppDependencyVersion(appDir, packageName);\n\n return { packageName, replacesInstalledVersion: previousVersion !== undefined };\n })\n );\n\n await dependencies.installPackages({ appDir, packageManager, installSpecs });\n\n await printSetupLinks({ appDir, installedPackages, logger });\n};\n\n/**\n * The exit code for an error, after reporting it in one line. The package manager prints its own\n * output when an install fails, so only its exit code is kept then.\n */\nexport const reportInstallError = (error: unknown, logger: Logger): number => {\n if (error instanceof PackageManagerError) {\n return error.exitCode;\n }\n\n if (error instanceof PromptCancelledError) {\n return 130;\n }\n\n if (error instanceof EnterpriseInstallError) {\n logger.error(error.message);\n return 1;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`strapi enterprise install failed: ${message}`);\n return 1;\n};\n\nexport const action = async (\n packageArguments: string[],\n { logger }: { logger: Logger }\n): Promise<void> => {\n const appDir = process.cwd();\n\n try {\n // Makes STRAPI_LICENSE from the app's `.env` available, as `strapi build` does.\n await loadEnv(appDir);\n\n await runInstall({\n appDir,\n packageArguments,\n logger,\n dependencies: {\n isInteractive: Boolean(process.stdin.isTTY && process.stdout.isTTY),\n env: process.env,\n homeDir: os.homedir(),\n fetchImplementation: fetch,\n promptForLicense,\n promptForPlugins,\n installPackages,\n },\n });\n } catch (error) {\n process.exit(reportInstallError(error, logger));\n }\n};\n"],"names":["describeNoStableRelease","packageName","describeStrapiMismatch","requiredStrapiRange","strapiVersion","ENTERPRISE_PACKAGE_NAME","RegExp","ENTERPRISE_SCOPE","MAX_PACKAGE_NAME_LENGTH","isValidPackageName","length","test","parsePackageArgument","packageArgument","scopedArgument","startsWith","versionSeparatorIndex","indexOf","slice","requestedVersion","undefined","EnterpriseInstallError","resolveNamedPackages","requestedPackages","appDir","license","logger","dependencies","installSpecs","lookup","fetchPackument","fetchImplementation","installedVersion","readAppDependencyVersion","status","resolvedVersion","resolveRequestedVersion","packument","info","unsupportedStrapiRange","findUnsupportedStrapiRange","warn","push","resolvePluginStatus","state","newerVersionNote","isPrerelease","targetVersion","isMajorUpgrade","selectPlugins","discoveredPlugins","discoverEnterprisePlugins","rows","map","entry","buildPluginRow","isAnyPluginLicensed","some","filter","row","forEach","isSelectable","visibleRows","orderVisibleRows","every","promptForPlugins","warnWhenCompatibilityIsUnknown","STRAPI_PACKAGE_NAME","canCheckStrapiCompatibility","runInstall","packageArguments","isInteractive","packageManager","detectPackageManager","source","licenseSource","resolveLicense","env","prompt","promptForLicense","registryAccess","prepareRegistryAccess","homeDir","readInstalledVersion","context","apply","command","args","buildInstallCommand","join","installedPackages","Promise","all","installSpec","previousVersion","replacesInstalledVersion","installPackages","printSetupLinks","reportInstallError","error","PackageManagerError","exitCode","PromptCancelledError","message","Error","String","action","process","cwd","loadEnv","Boolean","stdin","isTTY","stdout","os","homedir","fetch","exit"],"mappings":"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"}
@@ -29,7 +29,7 @@ const readLicenseFile = async (appDir)=>{
29
29
  throw error;
30
30
  }
31
31
  };
32
- const readLicenseInfo = (license)=>{
32
+ const assertLicenseFormat = (license)=>{
33
33
  const [signature, base64Content] = Buffer.from(license, 'base64').toString().split('\n');
34
34
  if (!signature || !base64Content) {
35
35
  throw new Error('Invalid license.');
@@ -38,7 +38,6 @@ const readLicenseInfo = (license)=>{
38
38
  if (typeof licenseInfo !== 'object' || licenseInfo === null) {
39
39
  throw new Error('Invalid license.');
40
40
  }
41
- return licenseInfo;
42
41
  };
43
42
  const readEnvFileLicense = async (appDir, env)=>{
44
43
  const envFilePath = env.ENV_PATH ? path__default.default.resolve(appDir, env.ENV_PATH) : path__default.default.join(appDir, '.env');
@@ -70,17 +69,12 @@ const findLicense = async ({ appDir, env })=>{
70
69
  }
71
70
  return undefined;
72
71
  };
73
- const validateLicense = (license, now)=>{
74
- let licenseInfo;
72
+ const validateLicense = (license)=>{
75
73
  try {
76
- licenseInfo = readLicenseInfo(license);
74
+ assertLicenseFormat(license);
77
75
  } catch {
78
76
  throw new errors.EnterpriseInstallError(`This Strapi license is not valid. Check that you copied all of it, or find it at ${constants.BILLING_URL}`);
79
77
  }
80
- const expiresAt = licenseInfo.expireAt === undefined ? undefined : new Date(licenseInfo.expireAt);
81
- if (expiresAt && !Number.isNaN(expiresAt.getTime()) && expiresAt.getTime() < now.getTime()) {
82
- throw new errors.EnterpriseInstallError(`This Strapi license expired on ${expiresAt.toISOString().slice(0, 10)}. Renew it at ${constants.BILLING_URL}`);
83
- }
84
78
  };
85
79
  const promptForLicense = async ()=>{
86
80
  const inquirer = await getInquirer.getInquirer();
@@ -112,13 +106,13 @@ const saveLicenseFile = async (appDir, license, logger)=>{
112
106
  await fse__default.default.chmod(licenseFilePath, 0o600);
113
107
  await ensureLicenseFileIsIgnored(appDir, logger);
114
108
  };
115
- const resolveLicense = async ({ appDir, isInteractive, logger, env, now, prompt })=>{
109
+ const resolveLicense = async ({ appDir, isInteractive, logger, env, prompt })=>{
116
110
  const foundLicense = await findLicense({
117
111
  appDir,
118
112
  env
119
113
  });
120
114
  if (foundLicense) {
121
- validateLicense(foundLicense.license, now);
115
+ validateLicense(foundLicense.license);
122
116
  logger.info(`Using the Strapi license from ${LICENSE_SOURCE_LABELS[foundLicense.source]}.`);
123
117
  return foundLicense;
124
118
  }
@@ -127,7 +121,7 @@ const resolveLicense = async ({ appDir, isInteractive, logger, env, now, prompt
127
121
  }
128
122
  logger.info(`No Strapi license found. You can find yours at ${constants.BILLING_URL}`);
129
123
  const pastedLicense = await prompt();
130
- validateLicense(pastedLicense, now);
124
+ validateLicense(pastedLicense);
131
125
  await saveLicenseFile(appDir, pastedLicense, logger);
132
126
  logger.success(`Saved the license to ${constants.LICENSE_FILE_NAME}.`);
133
127
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sources":["../../../../../../src/cli/commands/enterprise/install/license.ts"],"sourcesContent":["import path from 'node:path';\nimport fse from 'fs-extra';\nimport dotenv from 'dotenv';\n\nimport { getInquirer } from '../../../utils/get-inquirer';\nimport type { Logger } from '../../../utils/logger';\nimport { BILLING_URL, LICENSE_FILE_NAME } from './constants';\nimport { EnterpriseInstallError } from './errors';\n\nexport type LicenseSource = 'environment' | 'env-file' | 'license-file';\n\nexport interface FoundLicense {\n license: string;\n source: LicenseSource;\n}\n\nexport interface ResolvedLicense {\n license: string;\n /** `prompt` when the user pasted it, which also saved it to license.txt. */\n source: LicenseSource | 'prompt';\n}\n\nconst LICENSE_SOURCE_LABELS: Record<LicenseSource, string> = {\n environment: 'the STRAPI_LICENSE environment variable',\n 'env-file': 'STRAPI_LICENSE in .env',\n 'license-file': LICENSE_FILE_NAME,\n};\n\nconst cleanLicense = (value: string | undefined): string | undefined => value?.trim() || undefined;\n\nconst readLicenseFile = async (appDir: string): Promise<string | undefined> => {\n try {\n return await fse.readFile(path.join(appDir, LICENSE_FILE_NAME), 'utf8');\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return undefined;\n }\n\n throw error;\n }\n};\n\ninterface LicenseInfo {\n expireAt?: string | number;\n}\n\nconst readLicenseInfo = (license: string): LicenseInfo => {\n const [signature, base64Content] = Buffer.from(license, 'base64').toString().split('\\n');\n\n if (!signature || !base64Content) {\n throw new Error('Invalid license.');\n }\n\n const licenseInfo: unknown = JSON.parse(Buffer.from(base64Content, 'base64').toString());\n\n if (typeof licenseInfo !== 'object' || licenseInfo === null) {\n throw new Error('Invalid license.');\n }\n\n return licenseInfo as LicenseInfo;\n};\n\nconst readEnvFileLicense = async (\n appDir: string,\n env: NodeJS.ProcessEnv\n): Promise<string | undefined> => {\n const envFilePath = env.ENV_PATH ? path.resolve(appDir, env.ENV_PATH) : path.join(appDir, '.env');\n\n if (!(await fse.pathExists(envFilePath))) {\n return undefined;\n }\n\n return cleanLicense(dotenv.parse(await fse.readFile(envFilePath)).STRAPI_LICENSE);\n};\n\nexport const findLicense = async ({\n appDir,\n env,\n}: {\n appDir: string;\n env: NodeJS.ProcessEnv;\n}): Promise<FoundLicense | undefined> => {\n const licenseFromEnvironment = cleanLicense(env.STRAPI_LICENSE);\n if (licenseFromEnvironment) {\n const isFromEnvFile = (await readEnvFileLicense(appDir, env)) === licenseFromEnvironment;\n\n return { license: licenseFromEnvironment, source: isFromEnvFile ? 'env-file' : 'environment' };\n }\n\n let licenseFromLicenseFile: string | undefined;\n\n try {\n licenseFromLicenseFile = cleanLicense(await readLicenseFile(appDir));\n } catch {\n throw new EnterpriseInstallError(\n `Could not read ${LICENSE_FILE_NAME}. Check its permissions, or set STRAPI_LICENSE instead.`\n );\n }\n\n if (licenseFromLicenseFile) {\n return { license: licenseFromLicenseFile, source: 'license-file' };\n }\n\n return undefined;\n};\n\nexport const validateLicense = (license: string, now: Date): void => {\n let licenseInfo: LicenseInfo;\n\n try {\n licenseInfo = readLicenseInfo(license);\n } catch {\n throw new EnterpriseInstallError(\n `This Strapi license is not valid. Check that you copied all of it, or find it at ${BILLING_URL}`\n );\n }\n\n const expiresAt = licenseInfo.expireAt === undefined ? undefined : new Date(licenseInfo.expireAt);\n\n if (expiresAt && !Number.isNaN(expiresAt.getTime()) && expiresAt.getTime() < now.getTime()) {\n throw new EnterpriseInstallError(\n `This Strapi license expired on ${expiresAt.toISOString().slice(0, 10)}. Renew it at ${BILLING_URL}`\n );\n }\n};\n\nexport const promptForLicense = async (): Promise<string> => {\n const inquirer = await getInquirer();\n const { license } = await inquirer.prompt<{ license: string }>([\n {\n type: 'password',\n name: 'license',\n message: 'Strapi license?',\n validate: (value: string) => value.trim().length > 0 || 'The license cannot be empty.',\n },\n ]);\n\n return license.trim();\n};\n\nconst isLicenseFileIgnored = (gitignoreContent: string): boolean =>\n gitignoreContent\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .some((line) => line === LICENSE_FILE_NAME || line === `/${LICENSE_FILE_NAME}`);\n\nconst ensureLicenseFileIsIgnored = async (appDir: string, logger: Logger): Promise<void> => {\n const gitignorePath = path.join(appDir, '.gitignore');\n const gitignoreContent = (await fse.pathExists(gitignorePath))\n ? await fse.readFile(gitignorePath, 'utf8')\n : '';\n\n if (isLicenseFileIgnored(gitignoreContent)) {\n return;\n }\n\n const separator = gitignoreContent.length > 0 && !gitignoreContent.endsWith('\\n') ? '\\n' : '';\n await fse.writeFile(gitignorePath, `${gitignoreContent}${separator}${LICENSE_FILE_NAME}\\n`);\n logger.info(`Added ${LICENSE_FILE_NAME} to .gitignore so the license is not committed.`);\n};\n\nexport const saveLicenseFile = async (\n appDir: string,\n license: string,\n logger: Logger\n): Promise<void> => {\n const licenseFilePath = path.join(appDir, LICENSE_FILE_NAME);\n\n await fse.writeFile(licenseFilePath, `${license}\\n`);\n // Also restricts a license.txt that already existed, empty, with wider permissions.\n await fse.chmod(licenseFilePath, 0o600);\n await ensureLicenseFileIsIgnored(appDir, logger);\n};\n\nexport const resolveLicense = async ({\n appDir,\n isInteractive,\n logger,\n env,\n now,\n prompt,\n}: {\n appDir: string;\n isInteractive: boolean;\n logger: Logger;\n env: NodeJS.ProcessEnv;\n now: Date;\n prompt: () => Promise<string>;\n}): Promise<ResolvedLicense> => {\n const foundLicense = await findLicense({ appDir, env });\n\n if (foundLicense) {\n validateLicense(foundLicense.license, now);\n logger.info(`Using the Strapi license from ${LICENSE_SOURCE_LABELS[foundLicense.source]}.`);\n\n return foundLicense;\n }\n\n if (!isInteractive) {\n throw new EnterpriseInstallError(\n 'No Strapi license found. Set STRAPI_LICENSE, or run the command in a terminal to paste it.'\n );\n }\n\n logger.info(`No Strapi license found. You can find yours at ${BILLING_URL}`);\n\n const pastedLicense = await prompt();\n validateLicense(pastedLicense, now);\n await saveLicenseFile(appDir, pastedLicense, logger);\n logger.success(`Saved the license to ${LICENSE_FILE_NAME}.`);\n\n return { license: pastedLicense, source: 'prompt' };\n};\n"],"names":["LICENSE_SOURCE_LABELS","environment","LICENSE_FILE_NAME","cleanLicense","value","trim","undefined","readLicenseFile","appDir","fse","readFile","path","join","error","code","readLicenseInfo","license","signature","base64Content","Buffer","from","toString","split","Error","licenseInfo","JSON","parse","readEnvFileLicense","env","envFilePath","ENV_PATH","resolve","pathExists","dotenv","STRAPI_LICENSE","findLicense","licenseFromEnvironment","isFromEnvFile","source","licenseFromLicenseFile","EnterpriseInstallError","validateLicense","now","BILLING_URL","expiresAt","expireAt","Date","Number","isNaN","getTime","toISOString","slice","promptForLicense","inquirer","getInquirer","prompt","type","name","message","validate","length","isLicenseFileIgnored","gitignoreContent","map","line","some","ensureLicenseFileIsIgnored","logger","gitignorePath","separator","endsWith","writeFile","info","saveLicenseFile","licenseFilePath","chmod","resolveLicense","isInteractive","foundLicense","pastedLicense","success"],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sources":["../../../../../../src/cli/commands/enterprise/install/license.ts"],"sourcesContent":["import path from 'node:path';\nimport fse from 'fs-extra';\nimport dotenv from 'dotenv';\n\nimport { getInquirer } from '../../../utils/get-inquirer';\nimport type { Logger } from '../../../utils/logger';\nimport { BILLING_URL, LICENSE_FILE_NAME } from './constants';\nimport { EnterpriseInstallError } from './errors';\n\nexport type LicenseSource = 'environment' | 'env-file' | 'license-file';\n\nexport interface FoundLicense {\n license: string;\n source: LicenseSource;\n}\n\nexport interface ResolvedLicense {\n license: string;\n /** `prompt` when the user pasted it, which also saved it to license.txt. */\n source: LicenseSource | 'prompt';\n}\n\nconst LICENSE_SOURCE_LABELS: Record<LicenseSource, string> = {\n environment: 'the STRAPI_LICENSE environment variable',\n 'env-file': 'STRAPI_LICENSE in .env',\n 'license-file': LICENSE_FILE_NAME,\n};\n\nconst cleanLicense = (value: string | undefined): string | undefined => value?.trim() || undefined;\n\nconst readLicenseFile = async (appDir: string): Promise<string | undefined> => {\n try {\n return await fse.readFile(path.join(appDir, LICENSE_FILE_NAME), 'utf8');\n } catch (error) {\n if ((error as NodeJS.ErrnoException)?.code === 'ENOENT') {\n return undefined;\n }\n\n throw error;\n }\n};\n\nconst assertLicenseFormat = (license: string): void => {\n const [signature, base64Content] = Buffer.from(license, 'base64').toString().split('\\n');\n\n if (!signature || !base64Content) {\n throw new Error('Invalid license.');\n }\n\n const licenseInfo: unknown = JSON.parse(Buffer.from(base64Content, 'base64').toString());\n\n if (typeof licenseInfo !== 'object' || licenseInfo === null) {\n throw new Error('Invalid license.');\n }\n};\n\nconst readEnvFileLicense = async (\n appDir: string,\n env: NodeJS.ProcessEnv\n): Promise<string | undefined> => {\n const envFilePath = env.ENV_PATH ? path.resolve(appDir, env.ENV_PATH) : path.join(appDir, '.env');\n\n if (!(await fse.pathExists(envFilePath))) {\n return undefined;\n }\n\n return cleanLicense(dotenv.parse(await fse.readFile(envFilePath)).STRAPI_LICENSE);\n};\n\nexport const findLicense = async ({\n appDir,\n env,\n}: {\n appDir: string;\n env: NodeJS.ProcessEnv;\n}): Promise<FoundLicense | undefined> => {\n const licenseFromEnvironment = cleanLicense(env.STRAPI_LICENSE);\n if (licenseFromEnvironment) {\n const isFromEnvFile = (await readEnvFileLicense(appDir, env)) === licenseFromEnvironment;\n\n return { license: licenseFromEnvironment, source: isFromEnvFile ? 'env-file' : 'environment' };\n }\n\n let licenseFromLicenseFile: string | undefined;\n\n try {\n licenseFromLicenseFile = cleanLicense(await readLicenseFile(appDir));\n } catch {\n throw new EnterpriseInstallError(\n `Could not read ${LICENSE_FILE_NAME}. Check its permissions, or set STRAPI_LICENSE instead.`\n );\n }\n\n if (licenseFromLicenseFile) {\n return { license: licenseFromLicenseFile, source: 'license-file' };\n }\n\n return undefined;\n};\n\nexport const validateLicense = (license: string): void => {\n try {\n assertLicenseFormat(license);\n } catch {\n throw new EnterpriseInstallError(\n `This Strapi license is not valid. Check that you copied all of it, or find it at ${BILLING_URL}`\n );\n }\n};\n\nexport const promptForLicense = async (): Promise<string> => {\n const inquirer = await getInquirer();\n const { license } = await inquirer.prompt<{ license: string }>([\n {\n type: 'password',\n name: 'license',\n message: 'Strapi license?',\n validate: (value: string) => value.trim().length > 0 || 'The license cannot be empty.',\n },\n ]);\n\n return license.trim();\n};\n\nconst isLicenseFileIgnored = (gitignoreContent: string): boolean =>\n gitignoreContent\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .some((line) => line === LICENSE_FILE_NAME || line === `/${LICENSE_FILE_NAME}`);\n\nconst ensureLicenseFileIsIgnored = async (appDir: string, logger: Logger): Promise<void> => {\n const gitignorePath = path.join(appDir, '.gitignore');\n const gitignoreContent = (await fse.pathExists(gitignorePath))\n ? await fse.readFile(gitignorePath, 'utf8')\n : '';\n\n if (isLicenseFileIgnored(gitignoreContent)) {\n return;\n }\n\n const separator = gitignoreContent.length > 0 && !gitignoreContent.endsWith('\\n') ? '\\n' : '';\n await fse.writeFile(gitignorePath, `${gitignoreContent}${separator}${LICENSE_FILE_NAME}\\n`);\n logger.info(`Added ${LICENSE_FILE_NAME} to .gitignore so the license is not committed.`);\n};\n\nexport const saveLicenseFile = async (\n appDir: string,\n license: string,\n logger: Logger\n): Promise<void> => {\n const licenseFilePath = path.join(appDir, LICENSE_FILE_NAME);\n\n await fse.writeFile(licenseFilePath, `${license}\\n`);\n // Also restricts a license.txt that already existed, empty, with wider permissions.\n await fse.chmod(licenseFilePath, 0o600);\n await ensureLicenseFileIsIgnored(appDir, logger);\n};\n\nexport const resolveLicense = async ({\n appDir,\n isInteractive,\n logger,\n env,\n prompt,\n}: {\n appDir: string;\n isInteractive: boolean;\n logger: Logger;\n env: NodeJS.ProcessEnv;\n prompt: () => Promise<string>;\n}): Promise<ResolvedLicense> => {\n const foundLicense = await findLicense({ appDir, env });\n\n if (foundLicense) {\n validateLicense(foundLicense.license);\n logger.info(`Using the Strapi license from ${LICENSE_SOURCE_LABELS[foundLicense.source]}.`);\n\n return foundLicense;\n }\n\n if (!isInteractive) {\n throw new EnterpriseInstallError(\n 'No Strapi license found. Set STRAPI_LICENSE, or run the command in a terminal to paste it.'\n );\n }\n\n logger.info(`No Strapi license found. You can find yours at ${BILLING_URL}`);\n\n const pastedLicense = await prompt();\n validateLicense(pastedLicense);\n await saveLicenseFile(appDir, pastedLicense, logger);\n logger.success(`Saved the license to ${LICENSE_FILE_NAME}.`);\n\n return { license: pastedLicense, source: 'prompt' };\n};\n"],"names":["LICENSE_SOURCE_LABELS","environment","LICENSE_FILE_NAME","cleanLicense","value","trim","undefined","readLicenseFile","appDir","fse","readFile","path","join","error","code","assertLicenseFormat","license","signature","base64Content","Buffer","from","toString","split","Error","licenseInfo","JSON","parse","readEnvFileLicense","env","envFilePath","ENV_PATH","resolve","pathExists","dotenv","STRAPI_LICENSE","findLicense","licenseFromEnvironment","isFromEnvFile","source","licenseFromLicenseFile","EnterpriseInstallError","validateLicense","BILLING_URL","promptForLicense","inquirer","getInquirer","prompt","type","name","message","validate","length","isLicenseFileIgnored","gitignoreContent","map","line","some","ensureLicenseFileIsIgnored","logger","gitignorePath","separator","endsWith","writeFile","info","saveLicenseFile","licenseFilePath","chmod","resolveLicense","isInteractive","foundLicense","pastedLicense","success"],"mappings":";;;;;;;;;;;;;;;AAsBA,MAAMA,qBAAAA,GAAuD;IAC3DC,WAAAA,EAAa,yCAAA;IACb,UAAA,EAAY,wBAAA;IACZ,cAAA,EAAgBC;AAClB,CAAA;AAEA,MAAMC,YAAAA,GAAe,CAACC,KAAAA,GAAkDA,KAAAA,EAAOC,IAAAA,EAAAA,IAAUC,SAAAA;AAEzF,MAAMC,kBAAkB,OAAOC,MAAAA,GAAAA;IAC7B,IAAI;QACF,OAAO,MAAMC,qBAAIC,QAAQ,CAACC,sBAAKC,IAAI,CAACJ,QAAQN,2BAAAA,CAAAA,EAAoB,MAAA,CAAA;AAClE,IAAA,CAAA,CAAE,OAAOW,KAAAA,EAAO;QACd,IAAKA,KAAAA,EAAiCC,IAAAA,KAAS,QAAA,EAAU;YACvD,OAAOR,SAAAA;AACT,QAAA;QAEA,MAAMO,KAAAA;AACR,IAAA;AACF,CAAA;AAEA,MAAME,sBAAsB,CAACC,OAAAA,GAAAA;AAC3B,IAAA,MAAM,CAACC,SAAAA,EAAWC,aAAAA,CAAc,GAAGC,MAAAA,CAAOC,IAAI,CAACJ,OAAAA,EAAS,QAAA,CAAA,CAAUK,QAAQ,EAAA,CAAGC,KAAK,CAAC,IAAA,CAAA;IAEnF,IAAI,CAACL,SAAAA,IAAa,CAACC,aAAAA,EAAe;AAChC,QAAA,MAAM,IAAIK,KAAAA,CAAM,kBAAA,CAAA;AAClB,IAAA;IAEA,MAAMC,WAAAA,GAAuBC,KAAKC,KAAK,CAACP,OAAOC,IAAI,CAACF,aAAAA,EAAe,QAAA,CAAA,CAAUG,QAAQ,EAAA,CAAA;AAErF,IAAA,IAAI,OAAOG,WAAAA,KAAgB,QAAA,IAAYA,WAAAA,KAAgB,IAAA,EAAM;AAC3D,QAAA,MAAM,IAAID,KAAAA,CAAM,kBAAA,CAAA;AAClB,IAAA;AACF,CAAA;AAEA,MAAMI,kBAAAA,GAAqB,OACzBnB,MAAAA,EACAoB,GAAAA,GAAAA;AAEA,IAAA,MAAMC,WAAAA,GAAcD,GAAAA,CAAIE,QAAQ,GAAGnB,sBAAKoB,OAAO,CAACvB,MAAAA,EAAQoB,GAAAA,CAAIE,QAAQ,CAAA,GAAInB,qBAAAA,CAAKC,IAAI,CAACJ,MAAAA,EAAQ,MAAA,CAAA;AAE1F,IAAA,IAAI,CAAE,MAAMC,oBAAAA,CAAIuB,UAAU,CAACH,WAAAA,CAAAA,EAAe;QACxC,OAAOvB,SAAAA;AACT,IAAA;IAEA,OAAOH,YAAAA,CAAa8B,wBAAOP,KAAK,CAAC,MAAMjB,oBAAAA,CAAIC,QAAQ,CAACmB,WAAAA,CAAAA,CAAAA,CAAcK,cAAc,CAAA;AAClF,CAAA;MAEaC,WAAAA,GAAc,OAAO,EAChC3B,MAAM,EACNoB,GAAG,EAIJ,GAAA;IACC,MAAMQ,sBAAAA,GAAyBjC,YAAAA,CAAayB,GAAAA,CAAIM,cAAc,CAAA;AAC9D,IAAA,IAAIE,sBAAAA,EAAwB;AAC1B,QAAA,MAAMC,aAAAA,GAAiB,MAAMV,kBAAAA,CAAmBnB,QAAQoB,GAAAA,CAAAA,KAAUQ,sBAAAA;QAElE,OAAO;YAAEpB,OAAAA,EAASoB,sBAAAA;AAAwBE,YAAAA,MAAAA,EAAQD,gBAAgB,UAAA,GAAa;AAAc,SAAA;AAC/F,IAAA;IAEA,IAAIE,sBAAAA;IAEJ,IAAI;QACFA,sBAAAA,GAAyBpC,YAAAA,CAAa,MAAMI,eAAAA,CAAgBC,MAAAA,CAAAA,CAAAA;AAC9D,IAAA,CAAA,CAAE,OAAM;AACN,QAAA,MAAM,IAAIgC,6BAAAA,CACR,CAAC,eAAe,EAAEtC,2BAAAA,CAAkB,uDAAuD,CAAC,CAAA;AAEhG,IAAA;AAEA,IAAA,IAAIqC,sBAAAA,EAAwB;QAC1B,OAAO;YAAEvB,OAAAA,EAASuB,sBAAAA;YAAwBD,MAAAA,EAAQ;AAAe,SAAA;AACnE,IAAA;IAEA,OAAOhC,SAAAA;AACT;AAEO,MAAMmC,kBAAkB,CAACzB,OAAAA,GAAAA;IAC9B,IAAI;QACFD,mBAAAA,CAAoBC,OAAAA,CAAAA;AACtB,IAAA,CAAA,CAAE,OAAM;AACN,QAAA,MAAM,IAAIwB,6BAAAA,CACR,CAAC,iFAAiF,EAAEE,qBAAAA,CAAAA,CAAa,CAAA;AAErG,IAAA;AACF;MAEaC,gBAAAA,GAAmB,UAAA;AAC9B,IAAA,MAAMC,WAAW,MAAMC,uBAAAA,EAAAA;AACvB,IAAA,MAAM,EAAE7B,OAAO,EAAE,GAAG,MAAM4B,QAAAA,CAASE,MAAM,CAAsB;AAC7D,QAAA;YACEC,IAAAA,EAAM,UAAA;YACNC,IAAAA,EAAM,SAAA;YACNC,OAAAA,EAAS,iBAAA;AACTC,YAAAA,QAAAA,EAAU,CAAC9C,KAAAA,GAAkBA,KAAAA,CAAMC,IAAI,EAAA,CAAG8C,MAAM,GAAG,CAAA,IAAK;AAC1D;AACD,KAAA,CAAA;AAED,IAAA,OAAOnC,QAAQX,IAAI,EAAA;AACrB;AAEA,MAAM+C,oBAAAA,GAAuB,CAACC,gBAAAA,GAC5BA,gBAAAA,CACG/B,KAAK,CAAC,OAAA,CAAA,CACNgC,GAAG,CAAC,CAACC,IAAAA,GAASA,IAAAA,CAAKlD,IAAI,EAAA,CAAA,CACvBmD,IAAI,CAAC,CAACD,IAAAA,GAASA,IAAAA,KAASrD,+BAAqBqD,IAAAA,KAAS,CAAC,CAAC,EAAErD,2BAAAA,CAAAA,CAAmB,CAAA;AAElF,MAAMuD,0BAAAA,GAA6B,OAAOjD,MAAAA,EAAgBkD,MAAAA,GAAAA;AACxD,IAAA,MAAMC,aAAAA,GAAgBhD,qBAAAA,CAAKC,IAAI,CAACJ,MAAAA,EAAQ,YAAA,CAAA;AACxC,IAAA,MAAM6C,gBAAAA,GAAoB,MAAM5C,oBAAAA,CAAIuB,UAAU,CAAC2B,aAAAA,CAAAA,GAC3C,MAAMlD,oBAAAA,CAAIC,QAAQ,CAACiD,aAAAA,EAAe,MAAA,CAAA,GAClC,EAAA;AAEJ,IAAA,IAAIP,qBAAqBC,gBAAAA,CAAAA,EAAmB;AAC1C,QAAA;AACF,IAAA;IAEA,MAAMO,SAAAA,GAAYP,gBAAAA,CAAiBF,MAAM,GAAG,CAAA,IAAK,CAACE,gBAAAA,CAAiBQ,QAAQ,CAAC,IAAA,CAAA,GAAQ,IAAA,GAAO,EAAA;IAC3F,MAAMpD,oBAAAA,CAAIqD,SAAS,CAACH,aAAAA,EAAe,GAAGN,gBAAAA,CAAAA,EAAmBO,SAAAA,CAAAA,EAAY1D,2BAAAA,CAAkB,EAAE,CAAC,CAAA;AAC1FwD,IAAAA,MAAAA,CAAOK,IAAI,CAAC,CAAC,MAAM,EAAE7D,2BAAAA,CAAkB,+CAA+C,CAAC,CAAA;AACzF,CAAA;AAEO,MAAM8D,eAAAA,GAAkB,OAC7BxD,MAAAA,EACAQ,OAAAA,EACA0C,MAAAA,GAAAA;AAEA,IAAA,MAAMO,eAAAA,GAAkBtD,qBAAAA,CAAKC,IAAI,CAACJ,MAAAA,EAAQN,2BAAAA,CAAAA;AAE1C,IAAA,MAAMO,qBAAIqD,SAAS,CAACG,iBAAiB,CAAA,EAAGjD,OAAAA,CAAQ,EAAE,CAAC,CAAA;;IAEnD,MAAMP,oBAAAA,CAAIyD,KAAK,CAACD,eAAAA,EAAiB,KAAA,CAAA;AACjC,IAAA,MAAMR,2BAA2BjD,MAAAA,EAAQkD,MAAAA,CAAAA;AAC3C;AAEO,MAAMS,cAAAA,GAAiB,OAAO,EACnC3D,MAAM,EACN4D,aAAa,EACbV,MAAM,EACN9B,GAAG,EACHkB,MAAM,EAOP,GAAA;IACC,MAAMuB,YAAAA,GAAe,MAAMlC,WAAAA,CAAY;AAAE3B,QAAAA,MAAAA;AAAQoB,QAAAA;AAAI,KAAA,CAAA;AAErD,IAAA,IAAIyC,YAAAA,EAAc;AAChB5B,QAAAA,eAAAA,CAAgB4B,aAAarD,OAAO,CAAA;AACpC0C,QAAAA,MAAAA,CAAOK,IAAI,CAAC,CAAC,8BAA8B,EAAE/D,qBAAqB,CAACqE,YAAAA,CAAa/B,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAE1F,OAAO+B,YAAAA;AACT,IAAA;AAEA,IAAA,IAAI,CAACD,aAAAA,EAAe;AAClB,QAAA,MAAM,IAAI5B,6BAAAA,CACR,4FAAA,CAAA;AAEJ,IAAA;AAEAkB,IAAAA,MAAAA,CAAOK,IAAI,CAAC,CAAC,+CAA+C,EAAErB,qBAAAA,CAAAA,CAAa,CAAA;AAE3E,IAAA,MAAM4B,gBAAgB,MAAMxB,MAAAA,EAAAA;IAC5BL,eAAAA,CAAgB6B,aAAAA,CAAAA;IAChB,MAAMN,eAAAA,CAAgBxD,QAAQ8D,aAAAA,EAAeZ,MAAAA,CAAAA;AAC7CA,IAAAA,MAAAA,CAAOa,OAAO,CAAC,CAAC,qBAAqB,EAAErE,2BAAAA,CAAkB,CAAC,CAAC,CAAA;IAE3D,OAAO;QAAEc,OAAAA,EAASsD,aAAAA;QAAehC,MAAAA,EAAQ;AAAS,KAAA;AACpD;;;;;;;;"}
@@ -21,7 +21,7 @@ const readLicenseFile = async (appDir)=>{
21
21
  throw error;
22
22
  }
23
23
  };
24
- const readLicenseInfo = (license)=>{
24
+ const assertLicenseFormat = (license)=>{
25
25
  const [signature, base64Content] = Buffer.from(license, 'base64').toString().split('\n');
26
26
  if (!signature || !base64Content) {
27
27
  throw new Error('Invalid license.');
@@ -30,7 +30,6 @@ const readLicenseInfo = (license)=>{
30
30
  if (typeof licenseInfo !== 'object' || licenseInfo === null) {
31
31
  throw new Error('Invalid license.');
32
32
  }
33
- return licenseInfo;
34
33
  };
35
34
  const readEnvFileLicense = async (appDir, env)=>{
36
35
  const envFilePath = env.ENV_PATH ? path.resolve(appDir, env.ENV_PATH) : path.join(appDir, '.env');
@@ -62,17 +61,12 @@ const findLicense = async ({ appDir, env })=>{
62
61
  }
63
62
  return undefined;
64
63
  };
65
- const validateLicense = (license, now)=>{
66
- let licenseInfo;
64
+ const validateLicense = (license)=>{
67
65
  try {
68
- licenseInfo = readLicenseInfo(license);
66
+ assertLicenseFormat(license);
69
67
  } catch {
70
68
  throw new EnterpriseInstallError(`This Strapi license is not valid. Check that you copied all of it, or find it at ${BILLING_URL}`);
71
69
  }
72
- const expiresAt = licenseInfo.expireAt === undefined ? undefined : new Date(licenseInfo.expireAt);
73
- if (expiresAt && !Number.isNaN(expiresAt.getTime()) && expiresAt.getTime() < now.getTime()) {
74
- throw new EnterpriseInstallError(`This Strapi license expired on ${expiresAt.toISOString().slice(0, 10)}. Renew it at ${BILLING_URL}`);
75
- }
76
70
  };
77
71
  const promptForLicense = async ()=>{
78
72
  const inquirer = await getInquirer();
@@ -104,13 +98,13 @@ const saveLicenseFile = async (appDir, license, logger)=>{
104
98
  await fse.chmod(licenseFilePath, 0o600);
105
99
  await ensureLicenseFileIsIgnored(appDir, logger);
106
100
  };
107
- const resolveLicense = async ({ appDir, isInteractive, logger, env, now, prompt })=>{
101
+ const resolveLicense = async ({ appDir, isInteractive, logger, env, prompt })=>{
108
102
  const foundLicense = await findLicense({
109
103
  appDir,
110
104
  env
111
105
  });
112
106
  if (foundLicense) {
113
- validateLicense(foundLicense.license, now);
107
+ validateLicense(foundLicense.license);
114
108
  logger.info(`Using the Strapi license from ${LICENSE_SOURCE_LABELS[foundLicense.source]}.`);
115
109
  return foundLicense;
116
110
  }
@@ -119,7 +113,7 @@ const resolveLicense = async ({ appDir, isInteractive, logger, env, now, prompt
119
113
  }
120
114
  logger.info(`No Strapi license found. You can find yours at ${BILLING_URL}`);
121
115
  const pastedLicense = await prompt();
122
- validateLicense(pastedLicense, now);
116
+ validateLicense(pastedLicense);
123
117
  await saveLicenseFile(appDir, pastedLicense, logger);
124
118
  logger.success(`Saved the license to ${LICENSE_FILE_NAME}.`);
125
119
  return {