@strapi/upgrade 5.0.0-beta.1 → 5.0.0-beta.3

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 (58) hide show
  1. package/dist/cli.js +1452 -5
  2. package/dist/cli.js.map +1 -1
  3. package/dist/index.js +228 -92
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +229 -93
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/modules/codemod/codemod.d.ts +4 -2
  8. package/dist/modules/codemod/codemod.d.ts.map +1 -1
  9. package/dist/modules/codemod/types.d.ts +8 -1
  10. package/dist/modules/codemod/types.d.ts.map +1 -1
  11. package/dist/modules/codemod-repository/constants.d.ts.map +1 -1
  12. package/dist/modules/codemod-repository/repository.d.ts +5 -5
  13. package/dist/modules/codemod-repository/repository.d.ts.map +1 -1
  14. package/dist/modules/codemod-repository/types.d.ts +7 -3
  15. package/dist/modules/codemod-repository/types.d.ts.map +1 -1
  16. package/dist/modules/codemod-runner/codemod-runner.d.ts +6 -3
  17. package/dist/modules/codemod-runner/codemod-runner.d.ts.map +1 -1
  18. package/dist/modules/codemod-runner/index.d.ts +1 -0
  19. package/dist/modules/codemod-runner/index.d.ts.map +1 -1
  20. package/dist/modules/codemod-runner/types.d.ts +1 -0
  21. package/dist/modules/codemod-runner/types.d.ts.map +1 -1
  22. package/dist/modules/format/formats.d.ts +5 -0
  23. package/dist/modules/format/formats.d.ts.map +1 -1
  24. package/dist/modules/project/project.d.ts +1 -1
  25. package/dist/modules/project/project.d.ts.map +1 -1
  26. package/dist/modules/project/types.d.ts +1 -0
  27. package/dist/modules/project/types.d.ts.map +1 -1
  28. package/dist/modules/project/utils.d.ts +1 -1
  29. package/dist/modules/project/utils.d.ts.map +1 -1
  30. package/dist/modules/upgrader/upgrader.d.ts.map +1 -1
  31. package/dist/modules/version/range.d.ts +2 -0
  32. package/dist/modules/version/range.d.ts.map +1 -1
  33. package/dist/tasks/codemods/index.d.ts +2 -1
  34. package/dist/tasks/codemods/index.d.ts.map +1 -1
  35. package/dist/tasks/codemods/list-codemods.d.ts +3 -0
  36. package/dist/tasks/codemods/list-codemods.d.ts.map +1 -0
  37. package/dist/tasks/codemods/run-codemods.d.ts +3 -0
  38. package/dist/tasks/codemods/run-codemods.d.ts.map +1 -0
  39. package/dist/tasks/codemods/types.d.ts +9 -3
  40. package/dist/tasks/codemods/types.d.ts.map +1 -1
  41. package/dist/tasks/codemods/utils.d.ts +6 -0
  42. package/dist/tasks/codemods/utils.d.ts.map +1 -0
  43. package/dist/tasks/index.d.ts +1 -1
  44. package/dist/tasks/index.d.ts.map +1 -1
  45. package/package.json +7 -7
  46. package/resources/codemods/5.0.0/entity-service-document-service.code.ts +374 -0
  47. package/resources/codemods/5.0.0/strapi-public-interface.code.ts +126 -0
  48. package/resources/codemods/5.0.0/utils-public-interface.code.ts +320 -0
  49. package/dist/_chunks/codemod-runner-aVWS9EOj.js +0 -798
  50. package/dist/_chunks/codemod-runner-aVWS9EOj.js.map +0 -1
  51. package/dist/_chunks/codemods-FxCTNGki.js +0 -105
  52. package/dist/_chunks/codemods-FxCTNGki.js.map +0 -1
  53. package/dist/_chunks/index-qYtax-pz.js +0 -103
  54. package/dist/_chunks/index-qYtax-pz.js.map +0 -1
  55. package/dist/_chunks/upgrade-_IPNaAR-.js +0 -361
  56. package/dist/_chunks/upgrade-_IPNaAR-.js.map +0 -1
  57. package/dist/tasks/codemods/codemods.d.ts +0 -3
  58. package/dist/tasks/codemods/codemods.d.ts.map +0 -1
@@ -1,2 +1,3 @@
1
+ export type * from './types';
1
2
  export { codemodRunnerFactory } from './codemod-runner';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/codemod-runner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/codemod-runner/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,SAAS,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -15,5 +15,6 @@ export interface CodemodRunnerInterface {
15
15
  dry(enabled?: boolean): this;
16
16
  onSelectCodemods(callback: SelectCodemodsCallback | null): this;
17
17
  run(codemodsDirectory?: string): Promise<CodemodRunnerReport>;
18
+ runByUID(uid: string, codemodsDirectory?: string): Promise<CodemodRunnerReport>;
18
19
  }
19
20
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/codemod-runner/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,sBAAsB,GAAG,CACnC,QAAQ,EAAE,OAAO,CAAC,mBAAmB,EAAE,KACpC,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAC3B;IACE,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC;IAEhE,GAAG,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC/D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/codemod-runner/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,sBAAsB,GAAG,CACnC,QAAQ,EAAE,OAAO,CAAC,mBAAmB,EAAE,KACpC,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAE5C,MAAM,MAAM,mBAAmB,GAC3B;IACE,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;CACb,GACD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,GAAG,IAAI,CAAC;IAEhE,GAAG,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACjF"}
@@ -1,11 +1,16 @@
1
+ import type { ProjectType } from '../project';
2
+ import type { Codemod } from '../codemod';
1
3
  import type { Version } from '../version';
2
4
  import type { Report } from '../report';
3
5
  export declare const path: (path: string) => string;
4
6
  export declare const version: (version: Version.LiteralVersion | Version.SemVer) => string;
7
+ export declare const codemodUID: (uid: string) => string;
8
+ export declare const projectType: (type: ProjectType) => string;
5
9
  export declare const versionRange: (range: Version.Range) => string;
6
10
  export declare const transform: (transformFilePath: string) => string;
7
11
  export declare const highlight: (arg: unknown) => string;
8
12
  export declare const upgradeStep: (text: string, step: [current: number, total: number]) => string;
9
13
  export declare const reports: (reports: Report.CodemodReport[]) => string;
14
+ export declare const codemodList: (codemods: Codemod.List) => string;
10
15
  export declare const durationMs: (elapsedMs: number) => string;
11
16
  //# sourceMappingURL=formats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../../src/modules/format/formats.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,eAAO,MAAM,IAAI,SAAU,MAAM,WAAqB,CAAC;AAEvD,eAAO,MAAM,OAAO,YAAa,QAAQ,cAAc,GAAG,QAAQ,MAAM,WAEvE,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,aAAa,WAA+B,CAAC;AAEjF,eAAO,MAAM,SAAS,sBAAuB,MAAM,WAAkC,CAAC;AAEtF,eAAO,MAAM,SAAS,QAAS,OAAO,WAA8B,CAAC;AAErE,eAAO,MAAM,WAAW,SAAU,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,WAE/E,CAAC;AAEF,eAAO,MAAM,OAAO,YAAa,OAAO,aAAa,EAAE,WAgCtD,CAAC;AAEF,eAAO,MAAM,UAAU,cAAe,MAAM,WAI3C,CAAC"}
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../../src/modules/format/formats.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,eAAO,MAAM,IAAI,SAAU,MAAM,WAAqB,CAAC;AAEvD,eAAO,MAAM,OAAO,YAAa,QAAQ,cAAc,GAAG,QAAQ,MAAM,WAEvE,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS,MAAM,WAErC,CAAC;AAEF,eAAO,MAAM,WAAW,SAAU,WAAW,WAAqB,CAAC;AAEnE,eAAO,MAAM,YAAY,UAAW,aAAa,WAAmC,CAAC;AAErF,eAAO,MAAM,SAAS,sBAAuB,MAAM,WAAkC,CAAC;AAEtF,eAAO,MAAM,SAAS,QAAS,OAAO,WAA8B,CAAC;AAErE,eAAO,MAAM,WAAW,SAAU,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,WAE/E,CAAC;AAEF,eAAO,MAAM,OAAO,YAAa,OAAO,aAAa,EAAE,WAgCtD,CAAC;AAEF,eAAO,MAAM,WAAW,oCA2BvB,CAAC;AAEF,eAAO,MAAM,UAAU,cAAe,MAAM,WAI3C,CAAC"}
@@ -17,7 +17,7 @@ export declare class Project {
17
17
  }
18
18
  export declare class AppProject extends Project {
19
19
  strapiVersion: Version.SemVer;
20
- readonly type: "app";
20
+ readonly type: "application";
21
21
  constructor(cwd: string);
22
22
  refresh(): this;
23
23
  private refreshStrapiVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/modules/project/project.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAErF,qBAAa,OAAO;IACX,GAAG,EAAE,MAAM,CAAC;IAIZ,KAAK,EAAG,MAAM,EAAE,CAAC;IAEjB,eAAe,EAAG,MAAM,CAAC;IAEzB,WAAW,EAAG,kBAAkB,CAAC;gBAE5B,GAAG,EAAE,MAAM;IAUvB,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE;IAQhD,OAAO;IAOD,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB;IAgBrE,OAAO,CAAC,4BAA4B;IA2BpC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,mBAAmB;CAgB5B;AAED,qBAAa,UAAW,SAAQ,OAAO;IAC9B,aAAa,EAAG,OAAO,CAAC,MAAM,CAAC;IAEtC,QAAQ,CAAC,IAAI,QAAkB;gBAEnB,GAAG,EAAE,MAAM;IAKvB,OAAO;IAMP,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,uCAAuC;IAgB/C,OAAO,CAAC,iCAAiC;CA2B1C;AAWD,qBAAa,aAAc,SAAQ,OAAO;IACxC,QAAQ,CAAC,IAAI,WAAqB;CACnC;AAmBD,eAAO,MAAM,cAAc,QAAS,MAAM,+BAQzC,CAAC"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/modules/project/project.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAe,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElG,qBAAa,OAAO;IACX,GAAG,EAAE,MAAM,CAAC;IAIZ,KAAK,EAAG,MAAM,EAAE,CAAC;IAEjB,eAAe,EAAG,MAAM,CAAC;IAEzB,WAAW,EAAG,kBAAkB,CAAC;gBAE5B,GAAG,EAAE,MAAM;IAUvB,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE;IAQhD,OAAO;IAOD,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB;IAgBrE,OAAO,CAAC,4BAA4B;IA2BpC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,mBAAmB;CAgB5B;AAED,qBAAa,UAAW,SAAQ,OAAO;IAC9B,aAAa,EAAG,OAAO,CAAC,MAAM,CAAC;IAEtC,QAAQ,CAAC,IAAI,gBAAgD;gBAEjD,GAAG,EAAE,MAAM;IAKvB,OAAO;IAMP,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,uCAAuC;IAgB/C,OAAO,CAAC,iCAAiC;CA2B1C;AAWD,qBAAa,aAAc,SAAQ,OAAO;IACxC,QAAQ,CAAC,IAAI,WAA2C;CACzD;AAmBD,eAAO,MAAM,cAAc,QAAS,MAAM,+BAQzC,CAAC"}
@@ -2,6 +2,7 @@ import type { Utils } from '@strapi/types';
2
2
  import type { Codemod } from '../codemod';
3
3
  import type { Report } from '../report';
4
4
  export type FileExtension = `.${string}`;
5
+ export type ProjectType = 'plugin' | 'application';
5
6
  export interface RunCodemodsOptions {
6
7
  dry?: boolean;
7
8
  onCodemodStartRunning?(codemod: Codemod.Codemod, index: number): Promise<void> | void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/project/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,aAAa,GAAG,IAAI,MAAM,EAAE,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,qBAAqB,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtF,sBAAsB,CAAC,CACrB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,GAAG,KAAK,CAAC,UAAU,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/project/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,aAAa,GAAG,IAAI,MAAM,EAAE,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,qBAAqB,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtF,sBAAsB,CAAC,CACrB,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,GAAG,KAAK,CAAC,UAAU,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { AppProject, PluginProject } from './project';
2
2
  export declare const isPluginProject: (project: unknown) => project is PluginProject;
3
3
  export declare function assertPluginProject(project: unknown): asserts project is PluginProject;
4
- export declare const isAppProject: (project: unknown) => project is AppProject;
4
+ export declare const isApplicationProject: (project: unknown) => project is AppProject;
5
5
  export declare function assertAppProject(project: unknown): asserts project is AppProject;
6
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/modules/project/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEtD,eAAO,MAAM,eAAe,YAAa,OAAO,6BAE/C,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,aAAa,CAItF;AAED,eAAO,MAAM,YAAY,YAAa,OAAO,0BAE5C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAIhF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/modules/project/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEtD,eAAO,MAAM,eAAe,YAAa,OAAO,6BAE/C,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,aAAa,CAItF;AAED,eAAO,MAAM,oBAAoB,YAAa,OAAO,0BAEpD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,CAIhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../../src/modules/upgrader/upgrader.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,IAAI,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI5D,qBAAa,QAAS,YAAW,iBAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IAErC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEzC,OAAO,CAAC,MAAM,CAAiB;IAE/B,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,KAAK,CAAU;IAEvB,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,YAAY,CAA4B;IAEhD,OAAO,CAAC,oBAAoB,CAA8B;gBAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO;IAehF,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,WAAW,EAAE;IAKvD,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM;IAKhC,kBAAkB;IAqBlB,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM;IAU7C,SAAS,CAAC,MAAM,EAAE,MAAM;IAKxB,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAK/C,GAAG,CAAC,OAAO,GAAE,OAAc;IAK3B,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW;IAW7C,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;YAgDzB,iBAAiB;YAejB,uBAAuB;YAWvB,mBAAmB;YAyBnB,kBAAkB;IA6BhC,OAAO,CAAC,2BAA2B;YAkBrB,mBAAmB;YAkBnB,WAAW;CAQ1B;AA6BD,eAAO,MAAM,eAAe,YACjB,UAAU,UACX,QAAQ,WAAW,GAAG,QAAQ,MAAM,cAChC,IAAI,OAAO,aAcxB,CAAC"}
1
+ {"version":3,"file":"upgrader.d.ts","sourceRoot":"","sources":["../../../src/modules/upgrader/upgrader.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,IAAI,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAI5D,qBAAa,QAAS,YAAW,iBAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IAErC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;IAEzC,OAAO,CAAC,MAAM,CAAiB;IAE/B,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,KAAK,CAAU;IAEvB,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,CAAC,YAAY,CAA4B;IAEhD,OAAO,CAAC,oBAAoB,CAA8B;gBAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO;IAehF,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,WAAW,EAAE;IAKvD,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM;IAKhC,kBAAkB;IAqBlB,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM;IAU7C,SAAS,CAAC,MAAM,EAAE,MAAM;IAKxB,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAK/C,GAAG,CAAC,OAAO,GAAE,OAAc;IAK3B,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW;IAW7C,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;YAgDzB,iBAAiB;YAejB,uBAAuB;YAWvB,mBAAmB;YAyBnB,kBAAkB;IA+BhC,OAAO,CAAC,2BAA2B;YAkBrB,mBAAmB;YAkBnB,WAAW;CAQ1B;AA6BD,eAAO,MAAM,eAAe,YACjB,UAAU,UACX,QAAQ,WAAW,GAAG,QAAQ,MAAM,cAChC,IAAI,OAAO,aAcxB,CAAC"}
@@ -3,4 +3,6 @@ import * as Version from './types';
3
3
  export declare const rangeFactory: (range: string) => Version.Range;
4
4
  export declare const rangeFromReleaseType: (current: Version.SemVer, identifier: Version.ReleaseType) => semver.Range;
5
5
  export declare const rangeFromVersions: (currentVersion: Version.SemVer, target: Version.ReleaseType | Version.SemVer) => semver.Range;
6
+ export declare const isValidStringifiedRange: (str: string) => boolean;
7
+ export declare const isRangeInstance: (range: unknown) => range is semver.Range;
6
8
  //# sourceMappingURL=range.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../src/modules/version/range.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,aAE5C,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAa,QAAQ,MAAM,cAAc,QAAQ,WAAW,iBAwB5F,CAAC;AAEF,eAAO,MAAM,iBAAiB,mBACZ,QAAQ,MAAM,UACtB,QAAQ,WAAW,GAAG,QAAQ,MAAM,iBAW7C,CAAC"}
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../src/modules/version/range.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,eAAO,MAAM,YAAY,UAAW,MAAM,KAAG,aAE5C,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAa,QAAQ,MAAM,cAAc,QAAQ,WAAW,iBAwB5F,CAAC;AAEF,eAAO,MAAM,iBAAiB,mBACZ,QAAQ,MAAM,UACtB,QAAQ,WAAW,GAAG,QAAQ,MAAM,iBAW7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAS,MAAM,YAAoC,CAAC;AAExF,eAAO,MAAM,eAAe,UAAW,OAAO,0BAE7C,CAAC"}
@@ -1,2 +1,3 @@
1
- export * from './codemods';
1
+ export * from './run-codemods';
2
+ export * from './list-codemods';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ListCodemodsOptions } from './types';
2
+ export declare const listCodemods: (options: ListCodemodsOptions) => Promise<void>;
3
+ //# sourceMappingURL=list-codemods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-codemods.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/list-codemods.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,eAAO,MAAM,YAAY,YAAmB,mBAAmB,kBAmC9D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { RunCodemodsOptions } from './types';
2
+ export declare const runCodemods: (options: RunCodemodsOptions) => Promise<void>;
3
+ //# sourceMappingURL=run-codemods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-codemods.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/run-codemods.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD,eAAO,MAAM,WAAW,YAAmB,kBAAkB,kBAsC5D,CAAC"}
@@ -1,5 +1,5 @@
1
- import { SelectCodemodsCallback } from '../../modules/codemod-runner/types';
2
- import { ConfirmationCallback } from '../../modules/common/types';
1
+ import type { SelectCodemodsCallback } from '../../modules/codemod-runner';
2
+ import type { ConfirmationCallback } from '../../modules/common/types';
3
3
  import type { Logger } from '../../modules/logger';
4
4
  import type { Version } from '../../modules/version';
5
5
  export interface RunCodemodsOptions {
@@ -8,6 +8,12 @@ export interface RunCodemodsOptions {
8
8
  selectCodemods: SelectCodemodsCallback;
9
9
  cwd?: string;
10
10
  dry?: boolean;
11
- target: Version.ReleaseType | Version.LiteralSemVer;
11
+ target: Version.ReleaseType | Version.LiteralSemVer | Version.Range;
12
+ uid?: string;
13
+ }
14
+ export interface ListCodemodsOptions {
15
+ logger: Logger;
16
+ cwd?: string;
17
+ target: Version.ReleaseType | Version.LiteralSemVer | Version.Range;
12
18
  }
13
19
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,cAAc,EAAE,sBAAsB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CACrD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,cAAc,EAAE,sBAAsB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;CACrE"}
@@ -0,0 +1,6 @@
1
+ import { Version } from '../../modules/version';
2
+ import type { Project } from '../../modules/project';
3
+ export declare const resolvePath: (cwd?: string) => string;
4
+ export declare const getRangeFromTarget: (currentVersion: Version.SemVer, target: Version.ReleaseType | Version.LiteralSemVer) => Version.Range;
5
+ export declare const findRangeFromTarget: (project: Project, target: Version.ReleaseType | Version.LiteralSemVer | Version.Range) => Version.Range;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tasks/codemods/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAmD,MAAM,uBAAuB,CAAC;AAEjG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,eAAO,MAAM,WAAW,SAAU,MAAM,WAAuC,CAAC;AAEhF,eAAO,MAAM,kBAAkB,mBACb,QAAQ,MAAM,UACtB,QAAQ,WAAW,GAAG,QAAQ,aAAa,kBAkBpD,CAAC;AAEF,eAAO,MAAM,mBAAmB,YACrB,OAAO,UACR,QAAQ,WAAW,GAAG,QAAQ,aAAa,GAAG,aAAa,KAClE,aAeF,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export type { Upgrade } from './upgrade';
2
2
  export { upgrade } from './upgrade';
3
- export { codemods } from './codemods';
3
+ export { runCodemods, listCodemods } from './codemods';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/upgrade",
3
- "version": "5.0.0-beta.1",
3
+ "version": "5.0.0-beta.3",
4
4
  "description": "CLI to upgrade Strapi applications effortless",
5
5
  "keywords": [
6
6
  "strapi",
@@ -59,7 +59,7 @@
59
59
  "watch": "pack-up watch"
60
60
  },
61
61
  "dependencies": {
62
- "@strapi/utils": "5.0.0-beta.1",
62
+ "@strapi/utils": "5.0.0-beta.3",
63
63
  "chalk": "4.1.2",
64
64
  "cli-table3": "0.6.2",
65
65
  "commander": "8.3.0",
@@ -75,15 +75,15 @@
75
75
  "simple-git": "3.21.0"
76
76
  },
77
77
  "devDependencies": {
78
- "@strapi/pack-up": "5.0.0-beta.1",
79
- "@strapi/types": "5.0.0-beta.1",
78
+ "@strapi/pack-up": "5.0.0-beta.3",
79
+ "@strapi/types": "5.0.0-beta.3",
80
80
  "@types/jscodeshift": "0.11.10",
81
- "eslint-config-custom": "5.0.0-beta.1",
82
- "rimraf": "3.0.2"
81
+ "eslint-config-custom": "5.0.0-beta.3",
82
+ "rimraf": "5.0.5"
83
83
  },
84
84
  "engines": {
85
85
  "node": ">=18.0.0 <=20.x.x",
86
86
  "npm": ">=6.0.0"
87
87
  },
88
- "gitHead": "ae773621dfcbc67c49dc6fa52ac41ea5de676ecb"
88
+ "gitHead": "cff608ed925db31db7f6cb84aac4a0576f54e90c"
89
89
  }
@@ -0,0 +1,374 @@
1
+ import type { Transform, JSCodeshift, ASTPath, ObjectExpression } from 'jscodeshift';
2
+
3
+ /*
4
+ This codemod transforms entity service calls to match the new document service interface.
5
+ It supports all kind of argument parsing, including spread elements & deeply nested objects.
6
+
7
+ Here is a list of scenarios this was tested against
8
+
9
+ const uid = "api::xxx.xxx";
10
+ const entityId = 1;
11
+
12
+ Case: basic call
13
+
14
+ strapi.entityService.findOne(uid, entityId, {
15
+ fields: ["id", "name", "description"],
16
+ populate: ["author", "comments"],
17
+ publicationState: "preview",
18
+ });
19
+
20
+
21
+ Case: using a variable declared somewhere else
22
+
23
+ const objectParam_2 = {
24
+ fields: ["id", "name", "description"],
25
+ populate: ["author", "comments"],
26
+ publicationState: "preview",
27
+ };
28
+
29
+ strapi.entityService.findOne(uid, entityId, objectParam_2);
30
+
31
+ Case: using a variable declared somewhere else with a spread element
32
+
33
+ const objectParam_3 = {
34
+ fields: ["id", "name", "description"],
35
+ populate: ["author", "comments"],
36
+ publicationState: "preview",
37
+ };
38
+
39
+ strapi.entityService.findOne(uid, entityId, {
40
+ ...objectParam_3,
41
+ });
42
+
43
+
44
+ Case: using a variable declared somewhere else with a spread element and overwritten properties
45
+
46
+ const objectParam_4_1 = {
47
+ fields: ["id", "name", "description"],
48
+ populate: ["author", "comments"],
49
+ publicationState: "preview",
50
+ };
51
+
52
+ const objectParam_4 = {
53
+ publicationState: "live",
54
+ ...objectParam_4_1,
55
+ };
56
+
57
+ strapi.entityService.findOne(uid, entityId, {
58
+ ...objectParam_4,
59
+ });
60
+
61
+ Case: using a variable declared somewhere else with a spread array element while that need its 1st element to be moved
62
+
63
+ const objectParam_5 = [
64
+ uid,
65
+ entityId,
66
+ {
67
+ fields: ["id", "name", "description"],
68
+ populate: ["author", "comments"],
69
+ publicationState: "preview",
70
+ },
71
+ ];
72
+
73
+ strapi.entityService.findOne(...objectParam_5);
74
+
75
+ Case: using a variable declared somewhere else with a partial spread array
76
+
77
+ const objectParam_6 = [
78
+ entityId,
79
+ {
80
+ fields: ["id", "name", "description"],
81
+ populate: ["author", "comments"],
82
+ publicationState: "preview",
83
+ },
84
+ ];
85
+
86
+ strapi.entityService.findOne(uid, ...objectParam_6);
87
+
88
+ Case: using a variable declared somewhere else with a partial & nested spread arrays
89
+
90
+ const objectParam_7_1 = [
91
+ {
92
+ fields: ["id", "name", "description"],
93
+ populate: ["author", "comments"],
94
+ publicationState: "preview",
95
+ },
96
+ ];
97
+
98
+ const objectParam_7 = [entityId, ...objectParam_7_1];
99
+
100
+ strapi.entityService.findOne(uid, ...objectParam_7);
101
+
102
+ Case: using a variable declared somewhere else with a partial & nested spread arrays & objects
103
+
104
+ const objectParam_8_1 = {
105
+ publicationState: "preview",
106
+ };
107
+
108
+ const objectParam_8 = [
109
+ entityId,
110
+ {
111
+ fields: ["id", "name", "description"],
112
+ populate: ["author", "comments"],
113
+ ...objectParam_8_1,
114
+ },
115
+ ];
116
+
117
+ strapi.entityService.findOne(uid, ...objectParam_8);
118
+
119
+
120
+ Case: some sort of mix of all the above
121
+
122
+ const objectParam_9_1 = {
123
+ publicationState: "preview",
124
+ };
125
+
126
+ const objectParam_9 = {
127
+ fields: ["id", "name", "description"],
128
+ populate: ["author", "comments"],
129
+ ...objectParam_9_1,
130
+ };
131
+
132
+ strapi.entityService.findOne(uid, ...[entityId, [objectParam_9]]);
133
+
134
+ Case: even more complex
135
+
136
+ const objectParam_10_1 = {
137
+ publicationState: "preview",
138
+ };
139
+
140
+ const objectParam_10_2 = [uid, ...[12], ...[objectParam_10_1]];
141
+ const objectParam_10 = [...objectParam_10_2];
142
+
143
+ strapi.entityService.findOne(...[...objectParam_10]);
144
+
145
+ */
146
+
147
+ const movedFunctions = ['findOne', 'find', 'count', 'create', 'update', 'delete'];
148
+
149
+ const transformDeclaration = (path: ASTPath<any>, name: any, j: JSCodeshift) => {
150
+ const declaration = findClosesDeclaration(path, name, j);
151
+
152
+ if (!declaration) {
153
+ return;
154
+ }
155
+
156
+ transformElement(path, declaration.init, j);
157
+ };
158
+
159
+ const transformElement = (path: ASTPath<any>, element: any, j: JSCodeshift) => {
160
+ switch (true) {
161
+ case j.ObjectExpression.check(element): {
162
+ transformObjectParam(path, element, j);
163
+ break;
164
+ }
165
+
166
+ case j.Identifier.check(element): {
167
+ transformDeclaration(path, element.name, j);
168
+ break;
169
+ }
170
+
171
+ case j.SpreadElement.check(element): {
172
+ transformElement(path, element.argument, j);
173
+ break;
174
+ }
175
+
176
+ case j.ArrayExpression.check(element): {
177
+ element.elements.forEach((element) => {
178
+ transformElement(path, element, j);
179
+ });
180
+ break;
181
+ }
182
+ default: {
183
+ break;
184
+ }
185
+ }
186
+ };
187
+
188
+ const transformObjectParam = (path: ASTPath<any>, expression: ObjectExpression, j: JSCodeshift) => {
189
+ expression.properties.forEach((prop) => {
190
+ switch (true) {
191
+ case j.ObjectProperty.check(prop): {
192
+ if (!j.Identifier.check(prop.key) && !j.Literal.check(prop.key)) {
193
+ return;
194
+ }
195
+
196
+ if (j.Identifier.check(prop.key) && prop.key.name !== 'publicationState') {
197
+ return;
198
+ }
199
+
200
+ if (j.Literal.check(prop.key) && prop.key.value !== 'publicationState') {
201
+ return;
202
+ }
203
+
204
+ if (j.Identifier.check(prop.key) && prop.key.name === 'publicationState') {
205
+ if (!prop.computed && !prop.shorthand) {
206
+ prop.key.name = 'status';
207
+ }
208
+
209
+ if (prop.shorthand && !prop.computed) {
210
+ prop.shorthand = false;
211
+ prop.key = j.identifier('status');
212
+ prop.value = j.identifier('publicationState');
213
+ }
214
+ } else if (j.Literal.check(prop.key) && prop.key.value === 'publicationState') {
215
+ prop.key.value = 'status';
216
+ }
217
+
218
+ switch (true) {
219
+ case j.Literal.check(prop.value): {
220
+ prop.value = prop.value.value === 'live' ? j.literal('published') : j.literal('draft');
221
+
222
+ break;
223
+ }
224
+ case j.Identifier.check(prop.value): {
225
+ const declaration = findClosesDeclaration(path, prop.value.name, j);
226
+
227
+ if (!declaration) {
228
+ return;
229
+ }
230
+
231
+ if (j.Literal.check(declaration.init)) {
232
+ declaration.init =
233
+ declaration.init.value === 'live' ? j.literal('published') : j.literal('draft');
234
+ }
235
+
236
+ break;
237
+ }
238
+ default: {
239
+ break;
240
+ }
241
+ }
242
+
243
+ break;
244
+ }
245
+ case j.SpreadElement.check(prop): {
246
+ transformElement(path, prop.argument, j);
247
+ break;
248
+ }
249
+ default: {
250
+ break;
251
+ }
252
+ }
253
+ });
254
+ };
255
+
256
+ const findClosesDeclaration = (path: ASTPath<any>, name: string, j) => {
257
+ // find Identifier declaration
258
+ const scope = path.scope.lookup(name);
259
+
260
+ if (!scope) {
261
+ return;
262
+ }
263
+
264
+ return j(scope.path)
265
+ .find(j.VariableDeclarator, { id: { type: 'Identifier', name } })
266
+ .nodes()[0];
267
+ };
268
+
269
+ const transform: Transform = (file, api) => {
270
+ const j = api.jscodeshift;
271
+
272
+ const root = j(file.source);
273
+
274
+ root
275
+ .find(j.CallExpression, {
276
+ callee: {
277
+ type: 'MemberExpression',
278
+ object: {
279
+ type: 'MemberExpression',
280
+ object: {
281
+ type: 'Identifier',
282
+ name: 'strapi',
283
+ },
284
+ property: {
285
+ type: 'Identifier',
286
+ name: 'entityService',
287
+ },
288
+ },
289
+ property: {
290
+ type: 'Identifier',
291
+ name: (name) => movedFunctions.includes(name),
292
+ },
293
+ },
294
+ })
295
+ .replaceWith((path) => {
296
+ if (!j.MemberExpression.check(path.value.callee)) {
297
+ return;
298
+ }
299
+
300
+ const args = path.value.arguments;
301
+
302
+ if (args.length === 0) {
303
+ // we don't know how to transform this
304
+ return;
305
+ }
306
+
307
+ type Args = typeof path.value.arguments;
308
+
309
+ function resolveArgs(args: Args): Args {
310
+ return args.flatMap((arg: Args[number]) => {
311
+ switch (true) {
312
+ case j.Identifier.check(arg):
313
+ case j.Literal.check(arg): {
314
+ return arg;
315
+ }
316
+ case j.SpreadElement.check(arg): {
317
+ switch (true) {
318
+ case j.Identifier.check(arg.argument): {
319
+ const identifier = arg.argument;
320
+
321
+ const declaration = findClosesDeclaration(path, identifier.name, j);
322
+
323
+ if (!declaration) {
324
+ return arg;
325
+ }
326
+
327
+ switch (true) {
328
+ case j.ArrayExpression.check(declaration.init): {
329
+ return resolveArgs(declaration.init.elements);
330
+ }
331
+ default:
332
+ return arg;
333
+ }
334
+ }
335
+ case j.ArrayExpression.check(arg.argument): {
336
+ return resolveArgs(arg.argument.elements as Args);
337
+ }
338
+ default: {
339
+ return arg;
340
+ }
341
+ }
342
+ }
343
+ default: {
344
+ return arg;
345
+ }
346
+ }
347
+ });
348
+ }
349
+
350
+ const resolvedArgs = resolveArgs(args);
351
+
352
+ const [docUID, ...rest] = resolvedArgs;
353
+
354
+ path.value.arguments.forEach((arg) => {
355
+ transformElement(path, arg, j);
356
+ });
357
+
358
+ return j.callExpression(
359
+ j.memberExpression(
360
+ j.callExpression(j.memberExpression(j.identifier('strapi'), j.identifier('documents')), [
361
+ docUID,
362
+ ]),
363
+ path.value.callee.property
364
+ ),
365
+ rest
366
+ );
367
+ });
368
+
369
+ return root.toSource();
370
+ };
371
+
372
+ export const parser = 'tsx';
373
+
374
+ export default transform;