@bscotch/sprite-source 1.4.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 (67) hide show
  1. package/LICENSE.md +29 -0
  2. package/README.md +84 -0
  3. package/dist/SpriteCache.d.ts +67 -0
  4. package/dist/SpriteCache.d.ts.map +1 -0
  5. package/dist/SpriteCache.js +139 -0
  6. package/dist/SpriteCache.js.map +1 -0
  7. package/dist/SpriteCache.schemas.d.ts +74 -0
  8. package/dist/SpriteCache.schemas.d.ts.map +1 -0
  9. package/dist/SpriteCache.schemas.js +51 -0
  10. package/dist/SpriteCache.schemas.js.map +1 -0
  11. package/dist/SpriteDest.actions.d.ts +18 -0
  12. package/dist/SpriteDest.actions.d.ts.map +1 -0
  13. package/dist/SpriteDest.actions.js +163 -0
  14. package/dist/SpriteDest.actions.js.map +1 -0
  15. package/dist/SpriteDest.d.ts +35 -0
  16. package/dist/SpriteDest.d.ts.map +1 -0
  17. package/dist/SpriteDest.js +359 -0
  18. package/dist/SpriteDest.js.map +1 -0
  19. package/dist/SpriteDest.schemas.d.ts +45 -0
  20. package/dist/SpriteDest.schemas.d.ts.map +1 -0
  21. package/dist/SpriteDest.schemas.js +33 -0
  22. package/dist/SpriteDest.schemas.js.map +1 -0
  23. package/dist/SpriteDir.d.ts +39 -0
  24. package/dist/SpriteDir.d.ts.map +1 -0
  25. package/dist/SpriteDir.js +240 -0
  26. package/dist/SpriteDir.js.map +1 -0
  27. package/dist/SpriteFrame.d.ts +36 -0
  28. package/dist/SpriteFrame.d.ts.map +1 -0
  29. package/dist/SpriteFrame.js +225 -0
  30. package/dist/SpriteFrame.js.map +1 -0
  31. package/dist/SpriteSource.d.ts +60 -0
  32. package/dist/SpriteSource.d.ts.map +1 -0
  33. package/dist/SpriteSource.js +153 -0
  34. package/dist/SpriteSource.js.map +1 -0
  35. package/dist/SpriteSource.schemas.d.ts +56 -0
  36. package/dist/SpriteSource.schemas.d.ts.map +1 -0
  37. package/dist/SpriteSource.schemas.js +54 -0
  38. package/dist/SpriteSource.schemas.js.map +1 -0
  39. package/dist/checksum.d.ts +4 -0
  40. package/dist/checksum.d.ts.map +1 -0
  41. package/dist/checksum.js +28 -0
  42. package/dist/checksum.js.map +1 -0
  43. package/dist/cli.d.mts +3 -0
  44. package/dist/cli.d.mts.map +1 -0
  45. package/dist/cli.mjs +113 -0
  46. package/dist/cli.mjs.map +1 -0
  47. package/dist/constants.d.ts +8 -0
  48. package/dist/constants.d.ts.map +1 -0
  49. package/dist/constants.js +10 -0
  50. package/dist/constants.js.map +1 -0
  51. package/dist/index.d.ts +9 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +8 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/safeFs.d.ts +5 -0
  56. package/dist/safeFs.d.ts.map +1 -0
  57. package/dist/safeFs.js +34 -0
  58. package/dist/safeFs.js.map +1 -0
  59. package/dist/types.d.ts +25 -0
  60. package/dist/types.d.ts.map +1 -0
  61. package/dist/types.js +2 -0
  62. package/dist/types.js.map +1 -0
  63. package/dist/utility.d.ts +25 -0
  64. package/dist/utility.d.ts.map +1 -0
  65. package/dist/utility.js +101 -0
  66. package/dist/utility.js.map +1 -0
  67. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteDest.actions.js","sourceRoot":"","sources":["../src/SpriteDest.actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,EAAE,EAEF,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAe1C,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EACtC,cAAc,EACd,MAAM,EACN,GAAG,GACsB;IACzB,IAAI,KAAK,GAAU,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,2DAA2D;QAC3D,6DAA6D;QAC7D,gEAAgE;QAChE,4BAA4B;QAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;YACnD,MAAM,YAAY,CAAC,MAAM,CAAC;gBACxB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAI;gBACX,UAAU,EAAE,eAAe;gBAC3B,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC,CAAC;QACvC,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;QAErC,yDAAyD;QACzD,KAAK,CAAC,IAAI,CAAC,WAAW,YAAY,CAAC,QAAQ,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,oBAAoB,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChE,wBAAwB,CAAC,YAAY,CAAC;YACtC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC;SACxC,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,oBAAoB;aAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,eAAe;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAE1E,sBAAsB;QACtB,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAE3C,8CAA8C;QAC9C,MAAM,MAAM,GACV,gBAAgB,CAAC,IAAI,CACnB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CACtE,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,EAAE,YAAY,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,CAAC,KAAK,CACZ,MAAM,CAAC,QAAQ,EACf;gBACE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK;gBACL,MAAM;gBACN,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAS;aAC/B,EACR,SAAS,EACT,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEnD,mCAAmC;QACnC,gIAAgI;QAChI,MAAM,MAAM,GAAuB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QACrD,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9B,0CAA0C;YAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/B,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACzD,KAAK,MAAM,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;gBAChD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAE,CAAC;gBACtE,MAAM,QAAQ,GAAG,KAAK,CACpB,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,EAAE,EAC5D,YAAY,CACb,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,OAAO,QAAQ,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CACV,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;oBACzC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACnB,MAAM,MAAM,CAAC;gBACf,CAAC,CAAC,CACH,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,sBAAsB;YACtB,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAC9C,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;oBAC/B,OAAO,CAAC,IAAI,CACV,IAAI;yBACD,MAAM,CAAC;wBACN,KAAK,EAAE,IAAI;wBACX,UAAU,EAAE,eAAe;wBAC3B,UAAU,EAAE,eAAe;qBAC5B,CAAC;yBACD,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;wBAChB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACnB,MAAM,MAAM,CAAC;oBACf,CAAC,CAAC,CACL,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAClC,gDAAgD;YAChD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAEzE,8CAA8C;YAC9C,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;YACjB,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC;YAEnB,qBAAqB;YACrB,MAAM,OAAO,GAAmB,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE,YAAY,CAAC,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,QAAQ,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CACV,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;oBAClC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACnB,MAAM,MAAM,CAAC;gBACf,CAAC,CAAC,CACH,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/C,CAAC;YACD,sBAAsB;YACtB,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;gBACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAC9C,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;oBAC/B,OAAO,CAAC,IAAI,CACV,IAAI;yBACD,MAAM,CAAC;wBACN,KAAK,EAAE,IAAI;wBACX,UAAU,EAAE,eAAe;wBAC3B,UAAU,EAAE,eAAe;qBAC5B,CAAC;yBACD,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;wBAChB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACnB,MAAM,MAAM,CAAC;oBACf,CAAC,CAAC,CACL,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,mBAAmB;QACnB,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;QACvC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QAEpD,6DAA6D;QAC7D,OAAO;YACL,QAAQ,EAAE;gBACR,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;aACxD;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI;gBACpB,UAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI;aAC3B;YACD,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { Pathy } from '@bscotch/pathy';
2
+ import { SpriteCache } from './SpriteCache.js';
3
+ import { type SpritesInfo } from './SpriteCache.schemas.js';
4
+ import { type SpriteDestActionResult } from './SpriteDest.actions.js';
5
+ import { SpriteDestAction, type SpriteDestConfig, type SpriteDestSource } from './SpriteDest.schemas.js';
6
+ import { Reporter } from './types.js';
7
+ export interface SpriteDestImportOptions {
8
+ allowedNamePatterns?: (string | RegExp)[];
9
+ }
10
+ export declare class SpriteDest extends SpriteCache {
11
+ readonly yypPath: Pathy;
12
+ protected constructor(spritesRoot: string | Pathy, yypPath: Pathy);
13
+ get configFile(): Pathy<{
14
+ $schema?: string | undefined;
15
+ sources?: {
16
+ [x: string]: unknown;
17
+ source: string;
18
+ collaboratorSources?: string[] | undefined;
19
+ ignore?: string[] | null | undefined;
20
+ prefix?: string | undefined;
21
+ }[] | undefined;
22
+ }>;
23
+ protected inferChangeActions(sourceConfig: SpriteDestSource, destSpritesCache: SpritesInfo): Promise<SpriteDestAction[]>;
24
+ /**
25
+ * @param overrides Optionally override the configuration file (if it exists)
26
+ */
27
+ import(overrides?: SpriteDestConfig, reporter?: Reporter, options?: SpriteDestImportOptions): Promise<SpriteDestActionResult[] | undefined>;
28
+ /**
29
+ * Load the config, ensuring it exists on disk. If overrides
30
+ * are provided the config will be updated with those values.
31
+ */
32
+ loadConfig(overrides?: SpriteDestConfig): Promise<SpriteDestConfig>;
33
+ static from(projectYypPath: string | Pathy): Promise<SpriteDest>;
34
+ }
35
+ //# sourceMappingURL=SpriteDest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteDest.d.ts","sourceRoot":"","sources":["../src/SpriteDest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAS,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAEhB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,MAAM,WAAW,uBAAuB;IACtC,mBAAmB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;CAC3C;AAED,qBAAa,UAAW,SAAQ,WAAW;IAGvC,QAAQ,CAAC,OAAO,EAAE,KAAK;IAFzB,SAAS,aACP,WAAW,EAAE,MAAM,GAAG,KAAK,EAClB,OAAO,EAAE,KAAK;IAKzB,IAAI,UAAU;;;;;;;;;OAIb;cAGe,kBAAkB,CAChC,YAAY,EAAE,gBAAgB,EAC9B,gBAAgB,EAAE,WAAW;IA8K/B;;OAEG;IAEG,MAAM,CACV,SAAS,CAAC,EAAE,gBAAgB,EAC5B,QAAQ,CAAC,EAAE,QAAQ,EACnB,OAAO,CAAC,EAAE,uBAAuB;IA0KnC;;;OAGG;IACG,UAAU,CACd,SAAS,GAAE,gBAAqB,GAC/B,OAAO,CAAC,gBAAgB,CAAC;WA6Bf,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,KAAK;CA2DjD"}
@@ -0,0 +1,359 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { pathy } from '@bscotch/pathy';
3
+ import { sequential } from '@bscotch/utility';
4
+ import { Yy } from '@bscotch/yy';
5
+ import { SpriteCache } from './SpriteCache.js';
6
+ import { isNewer, } from './SpriteCache.schemas.js';
7
+ import { applySpriteAction, } from './SpriteDest.actions.js';
8
+ import { spriteDestConfigSchema, } from './SpriteDest.schemas.js';
9
+ import { SpriteSource } from './SpriteSource.js';
10
+ import { retryOptions, spriteCacheFilename, spriteDestConfigFilename, } from './constants.js';
11
+ import { SpriteSourceError, assert, rethrow } from './utility.js';
12
+ export class SpriteDest extends SpriteCache {
13
+ yypPath;
14
+ constructor(spritesRoot, yypPath) {
15
+ super(spritesRoot, 1);
16
+ this.yypPath = yypPath;
17
+ }
18
+ get configFile() {
19
+ return this.stitchDir
20
+ .join(spriteDestConfigFilename)
21
+ .withValidator(spriteDestConfigSchema);
22
+ }
23
+ async inferChangeActions(sourceConfig, destSpritesCache) {
24
+ const destSpritesInfo = destSpritesCache.info;
25
+ // Get the most up-to-date source and dest info
26
+ const ignorePatterns = (sourceConfig.ignore || []).map((x) => new RegExp(x));
27
+ const cleanSpriteName = (sourcePath) => `${sourceConfig.prefix || ''}${sourcePath
28
+ .split('/')
29
+ .pop()
30
+ .replace(/[^a-z0-9_]/gi, '_')}`;
31
+ // The source pathy is either absolute or relative to the project root
32
+ const sourceRoot = pathy(sourceConfig.source, this.yypPath.up());
33
+ const collaboratorSourceRoots = (sourceConfig.collaboratorSources || []).map((s) => pathy(s, this.yypPath.up()));
34
+ const collaboratorSourcesWait = Promise.allSettled(collaboratorSourceRoots.map((s) => SpriteSource.from(s).then((s) => s.update().then((x) => x.info))));
35
+ const source = await SpriteSource.from(sourceRoot);
36
+ const sourceSpritesInfo = await source.update().then((x) => {
37
+ this.logs.push(...source.logs);
38
+ this.issues.push(...source.issues);
39
+ return x.info;
40
+ });
41
+ const collaboratorSources = (await collaboratorSourcesWait)
42
+ .map((r) => (r.status === 'fulfilled' ? r.value : undefined))
43
+ .filter((x) => x);
44
+ // Get all of the sprite names and last-updated dates from the collaborator
45
+ // sources, so that we can check against them later.
46
+ const collaboratorSprites = new Map();
47
+ /**
48
+ * Returns true if the left sprite is newer than the right sprite.
49
+ */
50
+ const isNewerThanCollaboratorSprites = (potentiallyNewer, replaceIfNewer) => {
51
+ const currentNewest = collaboratorSprites.get(potentiallyNewer.name.toLowerCase());
52
+ if (currentNewest && !isNewer(potentiallyNewer, currentNewest)) {
53
+ return false;
54
+ }
55
+ if (replaceIfNewer) {
56
+ collaboratorSprites.set(potentiallyNewer.name.toLowerCase(), potentiallyNewer);
57
+ }
58
+ return true;
59
+ };
60
+ for (const collaboratorSource of collaboratorSources) {
61
+ for (const [path, sprite] of Object.entries(collaboratorSource)) {
62
+ const name = cleanSpriteName(path);
63
+ isNewerThanCollaboratorSprites({
64
+ ...sprite,
65
+ path,
66
+ name,
67
+ }, true);
68
+ }
69
+ }
70
+ /** Map of destName.toLower() to the source info */
71
+ const sourceSprites = new Map();
72
+ for (const [sourcePath, sourceSprite] of Object.entries(sourceSpritesInfo)) {
73
+ // Skip it if it matches the ignore patterns
74
+ if (ignorePatterns.some((x) => x.test(sourcePath))) {
75
+ continue;
76
+ }
77
+ // Get the name it should have in the project
78
+ const name = cleanSpriteName(sourcePath);
79
+ // Check for name collisions. If found, they should be reported as issues.
80
+ if (sourceSprites.get(name.toLowerCase())) {
81
+ this.issues.push(new SpriteSourceError(`Source sprite name collision: ${name}`));
82
+ }
83
+ sourceSprites.set(name.toLowerCase(), {
84
+ ...sourceSprite,
85
+ path: sourcePath,
86
+ name,
87
+ });
88
+ }
89
+ /** Map of destName.toLower() to the dest info */
90
+ const destSprites = new Map();
91
+ for (const [destPath, destSprite] of Object.entries(destSpritesInfo)) {
92
+ destSprites.set(destPath.toLowerCase(), {
93
+ ...destSprite,
94
+ path: destPath,
95
+ name: destPath,
96
+ });
97
+ }
98
+ // For each source sprite, diff with the dest sprite to determine what actions need to be performed. Create a list of actions to perform for later execution.
99
+ const actions = [];
100
+ for (const [normalizedName, sourceSprite] of sourceSprites) {
101
+ const destSprite = destSprites.get(normalizedName);
102
+ const sourceDir = source.spritesRoot.join(sourceSprite.path).absolute;
103
+ const destDir = this.spritesRoot.join(destSprite?.path || sourceSprite.name).absolute;
104
+ if (!isNewerThanCollaboratorSprites(sourceSprite, false)) {
105
+ this.logs.push({
106
+ action: 'skipped-collaborator-owned',
107
+ path: sourceDir,
108
+ });
109
+ continue;
110
+ }
111
+ if (!destSprite || sourceSprite.spine !== destSprite.spine) {
112
+ actions.push({
113
+ kind: 'create',
114
+ spine: sourceSprite.spine,
115
+ name: sourceSprite.name,
116
+ source: sourceDir,
117
+ dest: destDir,
118
+ sourceRoot: source.spritesRoot.absolute,
119
+ });
120
+ }
121
+ else if (sourceSprite.spine &&
122
+ destSprite.spine &&
123
+ sourceSprite.checksum !== destSprite.checksum) {
124
+ actions.push({
125
+ kind: 'update',
126
+ spine: true,
127
+ name: destSprite.name,
128
+ source: sourceDir,
129
+ dest: destDir,
130
+ sourceRoot: source.spritesRoot.absolute,
131
+ });
132
+ }
133
+ else if (!sourceSprite.spine &&
134
+ !destSprite.spine &&
135
+ sourceSprite.checksum !== destSprite.checksum) {
136
+ actions.push({
137
+ kind: 'update',
138
+ spine: false,
139
+ name: destSprite.name,
140
+ source: sourceDir,
141
+ dest: destDir,
142
+ sourceRoot: source.spritesRoot.absolute,
143
+ });
144
+ }
145
+ }
146
+ return actions;
147
+ }
148
+ /**
149
+ * @param overrides Optionally override the configuration file (if it exists)
150
+ */
151
+ async import(overrides, reporter, options) {
152
+ let percentComplete = 0;
153
+ const report = (byPercent, message) => {
154
+ percentComplete += byPercent;
155
+ reporter?.report({ message, increment: byPercent });
156
+ };
157
+ report(0, 'Updating project cache...');
158
+ const [configResult, destSpritesInfoResult, yypResult] = await Promise.allSettled([
159
+ this.loadConfig(overrides),
160
+ this.updateSpriteInfo(),
161
+ Yy.read(this.yypPath.absolute, 'project'),
162
+ ]);
163
+ assert(yypResult.status === 'fulfilled', 'Project file is invalid', yypResult.status === 'rejected' ? yypResult.reason : undefined);
164
+ assert(configResult.status === 'fulfilled', 'Could not load config', configResult.status === 'rejected' ? configResult.reason : undefined);
165
+ assert(destSpritesInfoResult.status === 'fulfilled', 'Could not load sprites info', destSpritesInfoResult.status === 'rejected'
166
+ ? destSpritesInfoResult.reason
167
+ : undefined);
168
+ const config = configResult.value;
169
+ const destSpritesInfo = destSpritesInfoResult.value;
170
+ const yyp = yypResult.value;
171
+ // Collect info from the yyp about existing folders, sprites,
172
+ // and assets. Goals are:
173
+ // - Faster lookups (e.g. using sets)
174
+ // - Ensure we won't have an asset name clash
175
+ const existingFolders = new Set();
176
+ const existingSprites = new Set();
177
+ const existingNonSpriteAssets = new Set();
178
+ yyp.resources.forEach((r) => {
179
+ if (r.id.path.startsWith('sprites')) {
180
+ existingSprites.add(r.id.name);
181
+ }
182
+ else {
183
+ existingNonSpriteAssets.add(r.id.name);
184
+ }
185
+ });
186
+ yyp.Folders.forEach((f) => {
187
+ existingFolders.add(f.folderPath);
188
+ });
189
+ // Try to do it all at the same time for perf. Race conditions
190
+ // and order-of-ops issues indicate some kind of user
191
+ // config failure, so we'll let that be their problem.
192
+ report(10, 'Applying staging actions and computing changes...');
193
+ const actions = [];
194
+ const getActionsWaits = [];
195
+ for (const sourceConfig of config.sources || []) {
196
+ // Report errors but do not throw. We want to continue
197
+ // to subsequent sources even if one fails.
198
+ getActionsWaits.push(this.inferChangeActions(sourceConfig, destSpritesInfo).then((a) => {
199
+ actions.push(...a);
200
+ }, (err) => {
201
+ this.issues.push(new SpriteSourceError(`Failed to infer actions for "${sourceConfig.source}"`, err));
202
+ }));
203
+ }
204
+ await Promise.allSettled(getActionsWaits);
205
+ // Apply the actions (in parellel)
206
+ report(10, `Applying changes to ${actions.length} sprites...`);
207
+ const appliedActions = [];
208
+ const applyActionsWaits = [];
209
+ const percentForYypUpdate = 5;
210
+ const percentPerAction = (100 - percentComplete - percentForYypUpdate) / actions.length;
211
+ for (const action of actions) {
212
+ if (existingNonSpriteAssets.has(action.name)) {
213
+ this.issues.push(new SpriteSourceError(`Asset name collision: ${action.name}`));
214
+ continue;
215
+ }
216
+ // If we're trying to create a new asset with an invalid name, error!
217
+ if (action.kind === 'create' && options?.allowedNamePatterns?.length) {
218
+ const isValidName = options.allowedNamePatterns.some((pattern) => {
219
+ pattern = typeof pattern === 'string' ? new RegExp(pattern) : pattern;
220
+ return pattern.test(action.name);
221
+ });
222
+ if (!isValidName) {
223
+ this.issues.push(new SpriteSourceError(`Sprite name violates rules: ${action.name}`));
224
+ continue;
225
+ }
226
+ }
227
+ applyActionsWaits.push(applySpriteAction({
228
+ projectYypPath: this.yypPath.absolute,
229
+ action,
230
+ yyp,
231
+ })
232
+ .then((result) => {
233
+ appliedActions.push(result);
234
+ })
235
+ .catch((err) => {
236
+ this.issues.push(new SpriteSourceError(`Error applying action: ${JSON.stringify(action)}`, err));
237
+ })
238
+ .finally(() => {
239
+ report(percentPerAction);
240
+ }));
241
+ }
242
+ await Promise.allSettled(applyActionsWaits);
243
+ if (!appliedActions.length) {
244
+ return;
245
+ }
246
+ // Ensure the .yyp is up to date
247
+ report(0, 'Updating project file...');
248
+ for (const appliedAction of appliedActions) {
249
+ if (!existingSprites.has(appliedAction.resource.name)) {
250
+ // Add to a random spot in the resources array to reduce git conflicts,
251
+ // skipping the last spot entirely if possible
252
+ const insertAt = Math.max(Math.floor(Math.random() * yyp.resources.length) - 1, 0);
253
+ yyp.resources.splice(insertAt, 0, {
254
+ id: appliedAction.resource,
255
+ });
256
+ existingSprites.add(appliedAction.resource.name);
257
+ }
258
+ if (!existingFolders.has(appliedAction.folder.folderPath)) {
259
+ // Also add to a random spot in the Folders array
260
+ const insertAt = Math.max(Math.floor(Math.random() * yyp.Folders.length) - 1, 0);
261
+ // @ts-expect-error The object is partial, but gets validated and completed on write
262
+ yyp.Folders.splice(insertAt, 0, appliedAction.folder);
263
+ existingFolders.add(appliedAction.folder.folderPath);
264
+ }
265
+ }
266
+ await Yy.write(this.yypPath.absolute, yyp, 'project');
267
+ // Refresh the cache
268
+ report(percentForYypUpdate, 'Updating project cache...');
269
+ await this.updateSpriteInfo();
270
+ return appliedActions;
271
+ }
272
+ /**
273
+ * Load the config, ensuring it exists on disk. If overrides
274
+ * are provided the config will be updated with those values.
275
+ */
276
+ async loadConfig(overrides = {}) {
277
+ // Validate options. Show error out if invalid.
278
+ try {
279
+ overrides = spriteDestConfigSchema.parse(overrides);
280
+ }
281
+ catch (err) {
282
+ rethrow(err, 'Invalid SpriteDest options');
283
+ }
284
+ assert(await this.spritesRoot.isDirectory(), 'Source must be an existing directory.');
285
+ // Update the config
286
+ await this.stitchDir.ensureDirectory();
287
+ const config = await this.configFile.read({
288
+ fallback: { sources: [] },
289
+ ...retryOptions,
290
+ });
291
+ let wasEmpty = !config.sources?.length;
292
+ if (overrides?.sources?.length) {
293
+ config.sources = overrides.sources;
294
+ }
295
+ if ((wasEmpty && config.sources?.length) || !wasEmpty) {
296
+ await this.configFile.write(config, {
297
+ ...retryOptions,
298
+ });
299
+ }
300
+ return config;
301
+ }
302
+ static async from(projectYypPath) {
303
+ // Ensure the project file exists
304
+ assert(projectYypPath.toString().endsWith('.yyp'), 'The project path must be to a .yyp file');
305
+ const projectYyp = pathy(projectYypPath);
306
+ assert(await projectYyp.exists(), `Project file does not exist: ${projectYyp}`);
307
+ // Ensure the project has a sprites folder
308
+ const projectFolder = projectYyp.up();
309
+ const spritesRoot = projectFolder.join('sprites');
310
+ await spritesRoot.ensureDirectory();
311
+ // Create the cache in the sprites folder
312
+ const cache = new SpriteDest(spritesRoot, projectYyp);
313
+ await cache.loadConfig(); // Ensure a config file exists
314
+ // Keep the config and cache out of gitignore
315
+ const gitDb = await cache.stitchDir.findInParents('.git');
316
+ if (!gitDb) {
317
+ console.warn("WARNING: Your GameMaker projects is not in a Git repo! It's dangerous to use this tool without protecting your files with version control.");
318
+ }
319
+ else {
320
+ const gitIgnorePath = gitDb.up().join('.gitignore');
321
+ let gitignoreContent = (await gitIgnorePath.read({
322
+ fallback: '',
323
+ encoding: 'utf8',
324
+ }));
325
+ const lines = gitignoreContent.split(/[\r\n+]/g);
326
+ for (const toIgnore of [
327
+ {
328
+ name: cache.configFile.basename,
329
+ comment: 'If all of your sprite sources are in this repo you can stick a "!" in front of this to track this file. Otherwise this file is machine-specific and should be ignored.',
330
+ },
331
+ {
332
+ name: spriteCacheFilename,
333
+ comment: 'This is a cache file for speeding up subsequent pipeline operations. It should not be tracked in git.',
334
+ },
335
+ ]) {
336
+ if (!lines.includes(toIgnore.name) &&
337
+ !lines.includes('!' + toIgnore.name)) {
338
+ gitignoreContent += `\n# ${toIgnore.comment}\n${toIgnore.name}`;
339
+ console.log(' added', toIgnore, 'to .gitignore');
340
+ }
341
+ }
342
+ await gitIgnorePath.write(gitignoreContent);
343
+ }
344
+ return cache;
345
+ }
346
+ }
347
+ __decorate([
348
+ sequential,
349
+ __metadata("design:type", Function),
350
+ __metadata("design:paramtypes", [Object, Object]),
351
+ __metadata("design:returntype", Promise)
352
+ ], SpriteDest.prototype, "inferChangeActions", null);
353
+ __decorate([
354
+ sequential,
355
+ __metadata("design:type", Function),
356
+ __metadata("design:paramtypes", [Object, Object, Object]),
357
+ __metadata("design:returntype", Promise)
358
+ ], SpriteDest.prototype, "import", null);
359
+ //# sourceMappingURL=SpriteDest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteDest.js","sourceRoot":"","sources":["../src/SpriteDest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ export interface SpriteDestAction {
3
+ kind: 'update' | 'create';
4
+ spine: boolean;
5
+ /** The name of the sprite */
6
+ name: string;
7
+ /** The fullpath to the folder containing the source files */
8
+ source: string;
9
+ /** The fullpath to the {project}/sprites/{spriteName} folder where this sprite asset does (or should) live */
10
+ dest: string;
11
+ /** The fullpath to the SpriteSource folder containing this sprite */
12
+ sourceRoot: string;
13
+ }
14
+ export type SpriteDestSource = z.infer<typeof spriteDestSourceSchema>;
15
+ declare const spriteDestSourceSchema: z.ZodObject<{
16
+ source: z.ZodString;
17
+ collaboratorSources: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ ignore: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
19
+ prefix: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$loose>;
21
+ export type SpriteDestConfig = z.infer<typeof spriteDestConfigSchema>;
22
+ export declare const spriteDestConfigSchema: z.ZodObject<{
23
+ $schema: z.ZodOptional<z.ZodDefault<z.ZodString>>;
24
+ sources: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
25
+ source: z.ZodString;
26
+ collaboratorSources: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ ignore: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
28
+ prefix: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$loose>>>>;
30
+ }, z.core.$strip>;
31
+ export declare const spriteDestConfigInfo: {
32
+ schema: z.ZodObject<{
33
+ $schema: z.ZodOptional<z.ZodDefault<z.ZodString>>;
34
+ sources: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
35
+ source: z.ZodString;
36
+ collaboratorSources: z.ZodOptional<z.ZodArray<z.ZodString>>;
37
+ ignore: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
38
+ prefix: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$loose>>>>;
40
+ }, z.core.$strip>;
41
+ name: string;
42
+ filename: string;
43
+ };
44
+ export {};
45
+ //# sourceMappingURL=SpriteDest.schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteDest.schemas.d.ts","sourceRoot":"","sources":["../src/SpriteDest.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,8GAA8G;IAC9G,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,QAAA,MAAM,sBAAsB;;;;;iBA0B1B,CAAC;AAIH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,eAAO,MAAM,sBAAsB;;;;;;;;iBAGjC,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CAIhC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ import { jsonSchemaRemoteDir } from './constants.js';
3
+ const spriteDestSourceSchema = z.looseObject({
4
+ source: z
5
+ .string()
6
+ .describe('Path to a configured Sprite Source directory. Either absolute or relative to the GameMaker project folder.'),
7
+ collaboratorSources: z
8
+ .string()
9
+ .array()
10
+ .optional()
11
+ .describe("Paths to other SpriteSource directories that may overlap with this source. Any sprites that are found in the source *and* one or more collaborator sources must be the latest in 'source' for it to be imported as part of the pipeline."),
12
+ ignore: z
13
+ .array(z.string())
14
+ .nullable()
15
+ .optional()
16
+ .describe('Pattern to match against the folder path (relative to the SpriteSource root, using POSIX seps) for it to be skipped during import. If omitted, all sprites are included. Converted to a regex with `new RegExp(ignore)`.'),
17
+ prefix: z
18
+ .string()
19
+ .optional()
20
+ .describe('Prefix to add to the sprite name when adding to the project as a sprite asset.'),
21
+ });
22
+ const schemaFilename = 'stitch.sprite-imports.schema.json';
23
+ const remoteFilename = `${jsonSchemaRemoteDir}/${schemaFilename}`;
24
+ export const spriteDestConfigSchema = z.object({
25
+ $schema: z.string().default(remoteFilename).optional(),
26
+ sources: z.array(spriteDestSourceSchema).default([]).optional(),
27
+ });
28
+ export const spriteDestConfigInfo = {
29
+ schema: spriteDestConfigSchema,
30
+ name: 'Sprite Import Configuration',
31
+ filename: schemaFilename,
32
+ };
33
+ //# sourceMappingURL=SpriteDest.schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteDest.schemas.js","sourceRoot":"","sources":["../src/SpriteDest.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAgBrD,MAAM,sBAAsB,GAAG,CAAC,CAAC,WAAW,CAAC;IAC3C,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,CACP,4GAA4G,CAC7G;IACH,mBAAmB,EAAE,CAAC;SACnB,MAAM,EAAE;SACR,KAAK,EAAE;SACP,QAAQ,EAAE;SACV,QAAQ,CACP,0OAA0O,CAC3O;IACH,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,0NAA0N,CAC3N;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,gFAAgF,CACjF;CACJ,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,mCAAmC,CAAC;AAC3D,MAAM,cAAc,GAAG,GAAG,mBAAmB,IAAI,cAAc,EAAE,CAAC;AAElE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IACtD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,sBAAsB;IAC9B,IAAI,EAAE,6BAA6B;IACnC,QAAQ,EAAE,cAAc;CACzB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { Pathy } from '@bscotch/pathy';
2
+ import type { SpritesInfo } from './SpriteCache.schemas.js';
3
+ import { SpriteFrame } from './SpriteFrame.js';
4
+ import type { Log } from './types.js';
5
+ export declare class SpriteDir {
6
+ readonly path: Pathy;
7
+ readonly logs: Log[];
8
+ readonly issues: Error[];
9
+ protected _frames: SpriteFrame[];
10
+ protected _isSpine: boolean;
11
+ protected _spinePaths: undefined | {
12
+ atlas: Pathy;
13
+ json: Pathy;
14
+ pngs: Pathy[];
15
+ };
16
+ protected constructor(path: Pathy, logs: Log[], issues: Error[]);
17
+ get isSpine(): boolean;
18
+ get frames(): SpriteFrame[];
19
+ get spinePaths(): {
20
+ atlas: Pathy;
21
+ json: Pathy;
22
+ pngs: Pathy[];
23
+ };
24
+ updateCache(cache: SpritesInfo): Promise<void>;
25
+ bleed(): Promise<void>;
26
+ crop(): Promise<void>;
27
+ moveTo(newSpriteDir: Pathy): Promise<void>;
28
+ /**
29
+ * If there are images in this directory, get a `SpriteDir`
30
+ * instance. Else get `undefined`.
31
+ */
32
+ static from(path: Pathy, logs?: Log[], issues?: Error[]): Promise<SpriteDir | undefined>;
33
+ toJSON(): {
34
+ path: Pathy<unknown>;
35
+ isSpine: boolean;
36
+ framePaths: SpriteFrame[];
37
+ };
38
+ }
39
+ //# sourceMappingURL=SpriteDir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpriteDir.d.ts","sourceRoot":"","sources":["../src/SpriteDir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI/C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,qBAAa,SAAS;IAQlB,QAAQ,CAAC,IAAI,EAAE,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE;IAT1B,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,CAAM;IACtC,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,WAAW,EACjB,SAAS,GACT;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,KAAK,EAAE,CAAA;KAAE,CAAC;IAEjD,SAAS,aACE,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,GAAG,EAAE,EACX,MAAM,EAAE,KAAK,EAAE;IAG1B,IAAI,OAAO,YAEV;IAED,IAAI,MAAM,kBAET;IAED,IAAI,UAAU;eAhBD,KAAK;cAAQ,KAAK;cAAQ,KAAK,EAAE;MAmB7C;IAEK,WAAW,CAAC,KAAK,EAAE,WAAW;IA2E9B,KAAK;IAOL,IAAI;IAqBJ,MAAM,CAAC,YAAY,EAAE,KAAK;IA0EhC;;;OAGG;WACU,IAAI,CACf,IAAI,EAAE,KAAK,EACX,IAAI,GAAE,GAAG,EAAO,EAChB,MAAM,GAAE,KAAK,EAAO,GACnB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAuFjC,MAAM;;;;;CAOP"}