@ocfl/ocfl 0.3.0 → 1.0.0-beta.1

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 (138) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +24 -9
  3. package/dist/constants.d.ts +15 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/constants.js +14 -0
  6. package/dist/constants.js.map +1 -0
  7. package/dist/digest.d.ts +58 -0
  8. package/dist/digest.d.ts.map +1 -0
  9. package/dist/digest.js +204 -0
  10. package/dist/digest.js.map +1 -0
  11. package/dist/error.d.ts +5 -0
  12. package/dist/error.d.ts.map +1 -0
  13. package/dist/error.js +9 -0
  14. package/dist/error.js.map +1 -0
  15. package/dist/extension.d.ts +83 -0
  16. package/dist/extension.d.ts.map +1 -0
  17. package/dist/extension.js +170 -0
  18. package/dist/extension.js.map +1 -0
  19. package/dist/extensions/0002-flat-direct-storage-layout.d.ts +12 -0
  20. package/dist/extensions/0002-flat-direct-storage-layout.d.ts.map +1 -0
  21. package/dist/extensions/0002-flat-direct-storage-layout.js +34 -0
  22. package/dist/extensions/0002-flat-direct-storage-layout.js.map +1 -0
  23. package/dist/extensions/0003-hash-and-id-n-tuple-storage-layout.d.ts +15 -0
  24. package/dist/extensions/0003-hash-and-id-n-tuple-storage-layout.d.ts.map +1 -0
  25. package/dist/extensions/0003-hash-and-id-n-tuple-storage-layout.js +49 -0
  26. package/dist/extensions/0003-hash-and-id-n-tuple-storage-layout.js.map +1 -0
  27. package/dist/extensions/0004-hashed-n-tuple-storage-layout.d.ts +17 -0
  28. package/dist/extensions/0004-hashed-n-tuple-storage-layout.d.ts.map +1 -0
  29. package/dist/extensions/0004-hashed-n-tuple-storage-layout.js +54 -0
  30. package/dist/extensions/0004-hashed-n-tuple-storage-layout.js.map +1 -0
  31. package/dist/extensions/0006-flat-omit-prefix-storage-layout.d.ts +6 -0
  32. package/dist/extensions/0006-flat-omit-prefix-storage-layout.d.ts.map +1 -0
  33. package/dist/extensions/0006-flat-omit-prefix-storage-layout.js +8 -0
  34. package/dist/extensions/0006-flat-omit-prefix-storage-layout.js.map +1 -0
  35. package/dist/extensions/0007-n-tuple-omit-prefix-storage-layout.d.ts +6 -0
  36. package/dist/extensions/0007-n-tuple-omit-prefix-storage-layout.d.ts.map +1 -0
  37. package/dist/extensions/0007-n-tuple-omit-prefix-storage-layout.js +8 -0
  38. package/dist/extensions/0007-n-tuple-omit-prefix-storage-layout.js.map +1 -0
  39. package/dist/extensions/0009-digest-algorithms.d.ts +9 -0
  40. package/dist/extensions/0009-digest-algorithms.d.ts.map +1 -0
  41. package/dist/extensions/0009-digest-algorithms.js +11 -0
  42. package/dist/extensions/0009-digest-algorithms.js.map +1 -0
  43. package/dist/extensions/000N-path-direct-storage-layout.d.ts +16 -0
  44. package/dist/extensions/000N-path-direct-storage-layout.d.ts.map +1 -0
  45. package/dist/extensions/000N-path-direct-storage-layout.js +46 -0
  46. package/dist/extensions/000N-path-direct-storage-layout.js.map +1 -0
  47. package/dist/extensions/index.d.ts +23 -0
  48. package/dist/extensions/index.d.ts.map +1 -0
  49. package/dist/extensions/index.js +8 -0
  50. package/dist/extensions/index.js.map +1 -0
  51. package/dist/file.d.ts +87 -0
  52. package/dist/file.d.ts.map +1 -0
  53. package/dist/file.js +118 -0
  54. package/dist/file.js.map +1 -0
  55. package/dist/index.d.ts +61 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +73 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/inventory.d.ts +155 -0
  60. package/dist/inventory.d.ts.map +1 -0
  61. package/dist/inventory.js +591 -0
  62. package/dist/inventory.js.map +1 -0
  63. package/dist/object.d.ts +188 -0
  64. package/dist/object.d.ts.map +1 -0
  65. package/dist/object.js +425 -0
  66. package/dist/object.js.map +1 -0
  67. package/dist/storage.d.ts +94 -0
  68. package/dist/storage.d.ts.map +1 -0
  69. package/dist/storage.js +302 -0
  70. package/dist/storage.js.map +1 -0
  71. package/dist/store.d.ts +100 -0
  72. package/dist/store.d.ts.map +1 -0
  73. package/dist/store.js +157 -0
  74. package/dist/store.js.map +1 -0
  75. package/dist/transaction.d.ts +155 -0
  76. package/dist/transaction.d.ts.map +1 -0
  77. package/dist/transaction.js +395 -0
  78. package/dist/transaction.js.map +1 -0
  79. package/dist/types.d.ts +107 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +2 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/utils.d.ts +24 -0
  84. package/dist/utils.d.ts.map +1 -0
  85. package/dist/utils.js +85 -0
  86. package/dist/utils.js.map +1 -0
  87. package/dist/validation.d.ts +32 -0
  88. package/dist/validation.d.ts.map +1 -0
  89. package/dist/validation.js +31 -0
  90. package/dist/validation.js.map +1 -0
  91. package/package.json +31 -50
  92. package/src/constants.ts +16 -0
  93. package/src/digest.ts +258 -0
  94. package/src/error.ts +9 -0
  95. package/src/extension.ts +206 -0
  96. package/{lib/extensions/0002-flat-direct-storage-layout.js → src/extensions/0002-flat-direct-storage-layout.ts} +15 -22
  97. package/src/extensions/0003-hash-and-id-n-tuple-storage-layout.ts +56 -0
  98. package/src/extensions/0004-hashed-n-tuple-storage-layout.ts +59 -0
  99. package/src/extensions/0006-flat-omit-prefix-storage-layout.ts +9 -0
  100. package/src/extensions/0007-n-tuple-omit-prefix-storage-layout.ts +9 -0
  101. package/src/extensions/0009-digest-algorithms.ts +12 -0
  102. package/src/extensions/000N-path-direct-storage-layout.ts +51 -0
  103. package/src/extensions/index.ts +24 -0
  104. package/src/file.ts +161 -0
  105. package/src/index.ts +92 -0
  106. package/src/inventory.ts +634 -0
  107. package/src/object.ts +473 -0
  108. package/src/storage.ts +342 -0
  109. package/src/store.ts +199 -0
  110. package/src/transaction.ts +456 -0
  111. package/{lib/types.d.ts → src/types.ts} +28 -74
  112. package/src/utils.ts +94 -0
  113. package/src/validation.ts +46 -0
  114. package/index.js +0 -129
  115. package/index.mjs +0 -18
  116. package/lib/constants.js +0 -24
  117. package/lib/digest.js +0 -307
  118. package/lib/enum.js +0 -90
  119. package/lib/error.js +0 -19
  120. package/lib/extension.js +0 -194
  121. package/lib/extensions/0003-hash-and-id-n-tuple-storage-layout.js +0 -60
  122. package/lib/extensions/0004-hashed-n-tuple-storage-layout.js +0 -63
  123. package/lib/extensions/0005-mutable-head.js +0 -0
  124. package/lib/extensions/0006-flat-omit-prefix-storage-layout.js +0 -7
  125. package/lib/extensions/0007-n-tuple-omit-prefix-storage-layout.js +0 -7
  126. package/lib/extensions/0008-schema-registry.js +0 -0
  127. package/lib/extensions/0009-digest-algorithms.js +0 -18
  128. package/lib/extensions/000N-path-direct-storage-layout.js +0 -61
  129. package/lib/extensions/index.js +0 -13
  130. package/lib/file.js +0 -129
  131. package/lib/index.js +0 -13
  132. package/lib/inventory.js +0 -564
  133. package/lib/object.js +0 -451
  134. package/lib/storage.js +0 -338
  135. package/lib/store.js +0 -191
  136. package/lib/transaction.js +0 -448
  137. package/lib/utils.js +0 -123
  138. package/lib/validation.js +0 -174
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @module ocfl
3
+ */
4
+ import { OcflStorageLayout } from './extension.ts';
5
+ import * as extensions from './extensions/index.ts';
6
+ import { OcflObject } from './object.ts';
7
+ import { type OcflStorage } from './storage.ts';
8
+ import type { OcflStore } from './store.ts';
9
+ import type { OcflExtensionConfig, OcflObjectConfig, OcflStorageConfig } from './types.ts';
10
+ export { OcflConstants } from './constants.ts';
11
+ export { OcflDigest } from './digest.ts';
12
+ export { OcflExtension, OcflStorageLayout } from './extension.ts';
13
+ export type { PathDirectStorageLayoutConfig } from './extensions/000N-path-direct-storage-layout.ts';
14
+ export type { HashedNTupleStorageLayoutConfig } from './extensions/0004-hashed-n-tuple-storage-layout.ts';
15
+ export type { StorageLayout } from './extensions/index.ts';
16
+ export type { FileRef, FileStat, OcflObjectFile } from './file.ts';
17
+ export type { InventoryFile, OcflObjectInventoryMut, VersionNumber } from './inventory.ts';
18
+ export { OcflObjectInventory } from './inventory.ts';
19
+ export type { UpdateMode } from './object.ts';
20
+ export { OcflObject } from './object.ts';
21
+ export { OcflStorage, OcflStorageImpl } from './storage.ts';
22
+ export type { ListedFile, ListOptions, WriteFileData } from './store.ts';
23
+ export { OcflStore } from './store.ts';
24
+ export type { CommitOptions, RemoveOptions } from './transaction.ts';
25
+ export { OcflObjectTransaction, OcflObjectTransactionImpl } from './transaction.ts';
26
+ export type * from './types.ts';
27
+ export { extensions };
28
+ /**
29
+ * Creates a new OCFL core API with a specific backend store.
30
+ * Any backend store implementation module must return the result of this method.
31
+ * @returns Top level OCFL API interface that provides storage and object creation.
32
+ */
33
+ export declare function implementOcfl<SO extends object>(store: {
34
+ getInstance(options?: SO): OcflStore;
35
+ }, defaultOptions?: SO): {
36
+ OCFL_VERSIONS: readonly ["1.1", "1.0"];
37
+ /** Built-in storage layout classes */
38
+ StorageLayout: extensions.StorageLayout;
39
+ /**
40
+ * Instantiate a storage layout from extension name or config
41
+ * @param config - Layout name or config
42
+ */
43
+ storageLayout(config: string | OcflExtensionConfig): OcflStorageLayout;
44
+ /**
45
+ * Instantiate an OCFL Object
46
+ */
47
+ object(config: OcflObjectConfig, storeOptions?: SO | undefined): OcflObject;
48
+ /**
49
+ * Instantiate an OCFL Storage root
50
+ */
51
+ storage(config: OcflStorageConfig, storeOptions?: SO | undefined): OcflStorage;
52
+ /**
53
+ * Create a new OCFL Storage
54
+ */
55
+ createStorage(config: OcflStorageConfig, storeOptions?: SO | undefined): Promise<OcflStorage>;
56
+ /**
57
+ * Load an existing OCFL Storage
58
+ */
59
+ loadStorage(config: OcflStorageConfig, storeOptions?: SO | undefined): Promise<OcflStorage>;
60
+ };
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAgB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAClE,YAAY,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AACrG,YAAY,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAC1G,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACnE,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACpF,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE;IAAE,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,SAAS,CAAA;CAAE,EAAE,cAAc,CAAC,EAAE,EAAE;IAEjH,aAAa;IAEb,sCAAsC;IACtC,aAAa;IAEb;;;OAGG;IACH,aAAa,SAAS,MAAM,GAAG,mBAAmB,GAAG,iBAAiB;IAYtE;;OAEG;IACH,MAAM,SAAS,gBAAgB,iBAAgB,EAAE,GAAG,SAAS,GAAoB,UAAU;IAI3F;;OAEG;IACH,OAAO,SAAS,iBAAiB,iBAAgB,EAAE,GAAG,SAAS,GAAoB,WAAW;IAI9F;;OAEG;IACG,aAAa,SAAS,iBAAiB,iBAAgB,EAAE,GAAG,SAAS,GAAoB,OAAO,CAAC,WAAW,CAAC;IAInH;;OAEG;IACG,WAAW,SAAS,iBAAiB,iBAAgB,EAAE,GAAG,SAAS,GAAoB,OAAO,CAAC,WAAW,CAAC;EAIpH"}
package/dist/index.js ADDED
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @module ocfl
3
+ */
4
+ import { OcflConstants } from './constants.js';
5
+ import { createByName, OcflStorageLayout } from './extension.js';
6
+ import * as extensions from './extensions/index.js';
7
+ import { OcflObject } from './object.js';
8
+ import { OcflStorageImpl } from './storage.js';
9
+ export { OcflConstants } from './constants.js';
10
+ export { OcflDigest } from './digest.js';
11
+ export { OcflExtension, OcflStorageLayout } from './extension.js';
12
+ export { OcflObjectInventory } from './inventory.js';
13
+ export { OcflObject } from './object.js';
14
+ export { OcflStorage, OcflStorageImpl } from './storage.js';
15
+ export { OcflStore } from './store.js';
16
+ export { OcflObjectTransaction, OcflObjectTransactionImpl } from './transaction.js';
17
+ export { extensions };
18
+ /**
19
+ * Creates a new OCFL core API with a specific backend store.
20
+ * Any backend store implementation module must return the result of this method.
21
+ * @returns Top level OCFL API interface that provides storage and object creation.
22
+ */
23
+ export function implementOcfl(store, defaultOptions) {
24
+ return {
25
+ OCFL_VERSIONS: OcflConstants.OCFL_VERSIONS,
26
+ /** Built-in storage layout classes */
27
+ StorageLayout: OcflStorageLayout.layout,
28
+ /**
29
+ * Instantiate a storage layout from extension name or config
30
+ * @param config - Layout name or config
31
+ */
32
+ storageLayout(config) {
33
+ let name;
34
+ let c;
35
+ if (typeof config === 'string') {
36
+ name = config;
37
+ }
38
+ else {
39
+ name = config.extensionName;
40
+ c = config;
41
+ }
42
+ return createByName(OcflStorageLayout, 'Layout', name, c);
43
+ },
44
+ /**
45
+ * Instantiate an OCFL Object
46
+ */
47
+ object(config, storeOptions = defaultOptions) {
48
+ return new OcflObject(config, store.getInstance(storeOptions));
49
+ },
50
+ /**
51
+ * Instantiate an OCFL Storage root
52
+ */
53
+ storage(config, storeOptions = defaultOptions) {
54
+ return new OcflStorageImpl(config, store.getInstance(storeOptions));
55
+ },
56
+ /**
57
+ * Create a new OCFL Storage
58
+ */
59
+ async createStorage(config, storeOptions = defaultOptions) {
60
+ return new OcflStorageImpl(config, store.getInstance(storeOptions)).create();
61
+ },
62
+ /**
63
+ * Load an existing OCFL Storage
64
+ */
65
+ async loadStorage(config, storeOptions = defaultOptions) {
66
+ return new OcflStorageImpl(config, store.getInstance(storeOptions)).load();
67
+ },
68
+ };
69
+ }
70
+ for (const ext of Object.values(extensions)) {
71
+ ext.register();
72
+ }
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAoB,eAAe,EAAE,MAAM,cAAc,CAAC;AAIjE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAoB,KAA+C,EAAE,cAAmB;IACnH,OAAO;QACL,aAAa,EAAE,aAAa,CAAC,aAAa;QAE1C,sCAAsC;QACtC,aAAa,EAAE,iBAAiB,CAAC,MAAM;QAEvC;;;WAGG;QACH,aAAa,CAAC,MAAoC;YAChD,IAAI,IAAwB,CAAC;YAC7B,IAAI,CAAkC,CAAC;YACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,GAAG,MAAM,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC;gBAC5B,CAAC,GAAG,MAAM,CAAC;YACb,CAAC;YACD,OAAO,YAAY,CAAoB,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QAED;;WAEG;QACH,MAAM,CAAC,MAAwB,EAAE,YAAY,GAAmB,cAAc;YAC5E,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;QACjE,CAAC;QAED;;WAEG;QACH,OAAO,CAAC,MAAyB,EAAE,YAAY,GAAmB,cAAc;YAC9E,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;QACtE,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,aAAa,CAAC,MAAyB,EAAE,YAAY,GAAmB,cAAc;YAC1F,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC/E,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,WAAW,CAAC,MAAyB,EAAE,YAAY,GAAmB,cAAc;YACxF,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;IAC5C,GAAG,CAAC,QAAQ,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,155 @@
1
+ import type { Inventory, InventoryDigests, InventoryVersion } from './types.ts';
2
+ /** Digest values keyed by algorithm name */
3
+ type Digests = {
4
+ [algorithm: string]: string;
5
+ };
6
+ export interface InventoryFile {
7
+ logicalPath: string;
8
+ version: string;
9
+ digest: string;
10
+ contentPath: string;
11
+ fixity: Digests;
12
+ size?: number;
13
+ lastModified?: number;
14
+ }
15
+ declare class VersionNumber {
16
+ value: number;
17
+ zeroPaddingLength: number | undefined;
18
+ constructor(num: number, zeroPaddingLength?: number);
19
+ valueOf(): number;
20
+ toString(): string;
21
+ next(): VersionNumber;
22
+ previous(): VersionNumber | undefined;
23
+ static fromInt(num: number, zeroPaddingLength: number): VersionNumber;
24
+ static fromString(versionLabel: string): VersionNumber;
25
+ static next(versionLabel: string): VersionNumber;
26
+ static previous(versionLabel: string): VersionNumber | undefined;
27
+ }
28
+ /**
29
+ * Wrapper class for inventory data
30
+ */
31
+ declare class OcflObjectInventory {
32
+ #private;
33
+ metadata: {
34
+ [contentPath: string]: {
35
+ size: number;
36
+ lastModified: number;
37
+ };
38
+ } | undefined;
39
+ /**
40
+ * Helper function to find the digest by logical file path and cached it by indexing
41
+ */
42
+ _indexGet(logicalPath: string, version: string, onlyUsecache?: boolean): Digests | undefined;
43
+ _indexAdd(logicalPath: string, version: string, digests: Digests): void;
44
+ _indexRemove(logicalPath: string, version?: string): Digests | undefined;
45
+ _indexBuild(): void;
46
+ _indexFindPaths(prefix: string, version?: string): string[];
47
+ /**
48
+ * Create a new mutable OcflObjectInventory from the object config or clone an existing inventory,
49
+ * and increase the inventory version number. If data.head is undefined, starts from v1.
50
+ */
51
+ static newVersion(data: Partial<Inventory> | OcflObjectInventory, cleanState?: boolean): OcflObjectInventoryMut;
52
+ /**
53
+ * Create a new inventory model
54
+ * @param data - Initial data of the inventory
55
+ * @param version - Set the version, default to data.head
56
+ */
57
+ constructor(data: Inventory, _version?: string);
58
+ get id(): string;
59
+ get type(): "https://ocfl.io/1.0/spec/#inventory" | "https://ocfl.io/1.1/spec/#inventory";
60
+ get digestAlgorithm(): "sha256" | "sha512";
61
+ get head(): string;
62
+ /** The version number of the current head */
63
+ get versionNumber(): VersionNumber;
64
+ get contentDirectory(): string;
65
+ get manifest(): InventoryDigests;
66
+ get versions(): {
67
+ [key: string]: InventoryVersion;
68
+ };
69
+ /** The current head version. Throws if the head is not in versions. */
70
+ get version(): InventoryVersion;
71
+ get fixity(): Inventory['fixity'];
72
+ set fixity(val: NonNullable<Inventory['fixity']>);
73
+ /** The state of the current version */
74
+ get state(): InventoryDigests;
75
+ get created(): string;
76
+ get message(): InventoryVersion['message'];
77
+ get user(): InventoryVersion['user'];
78
+ /** Return true if there has been actual change to the state of current version compared to the previous version */
79
+ get isChanged(): boolean;
80
+ set created(val: string);
81
+ set message(val: NonNullable<InventoryVersion['message']>);
82
+ set user(val: NonNullable<InventoryVersion['user']>);
83
+ /**
84
+ * Return the state of the specified version
85
+ * @param version - The inventory version, default to the latest
86
+ */
87
+ versionState(version?: string): InventoryDigests | undefined;
88
+ toString(): string;
89
+ toJSON(): Inventory;
90
+ /**
91
+ * @param version - The version name
92
+ */
93
+ files(version?: string): Generator<InventoryFile>;
94
+ find(fn: (file: InventoryFile) => boolean, version?: string): Generator<InventoryFile, void, unknown>;
95
+ clone(): OcflObjectInventory;
96
+ /**
97
+ * Get the first content path found with the given digest from the manifest.
98
+ * Also can be used to check the existance of an entry with the specified digest in the manifest.
99
+ * @returns The first content path found in the array
100
+ */
101
+ getContentPath(digest: string): string | undefined;
102
+ /**
103
+ * Get the digest of a content represented by the logicalPath of the specified version
104
+ */
105
+ getDigest(logicalPath: string, versionName?: string): string | undefined;
106
+ /**
107
+ * Get the file information by the logicalPath of the specified version
108
+ */
109
+ getFile(logicalPath: string, versionName?: string): InventoryFile | undefined;
110
+ getFileByDigest(digest: string, versionName?: string): InventoryFile | undefined;
111
+ getFileByContentPath(contentPath: string, versionName?: string): InventoryFile | undefined;
112
+ /**
113
+ * Get the fixity of a content represented by the logicalPath of the specified version
114
+ */
115
+ getFixity(logicalPath: string, versionName?: string): Digests;
116
+ /**
117
+ * Compare the differences between the state of two versions
118
+ * @returns A tuple of [A, B] where A contains files
119
+ * that are in `version0` but not in `version1` and B contains files
120
+ * that are in `version1` but not in `version0`
121
+ */
122
+ diffState(version0: string, version1: string): [InventoryDigests, InventoryDigests];
123
+ }
124
+ /**
125
+ * Wrapper class with mutable methods for inventory data
126
+ */
127
+ declare class OcflObjectInventoryMut extends OcflObjectInventory {
128
+ #private;
129
+ /**
130
+ * Add a new file to the inventory or update the digest of an existing file
131
+ * @returns true if the state is changed
132
+ */
133
+ add(logicalPath: string, digest: string, fixity?: {
134
+ [x: string]: string;
135
+ }): boolean;
136
+ /**
137
+ * Low-level method to add a set of digest entries associated to file into the fixity block
138
+ */
139
+ addFixity(contentPath: string, digestName: string, digestValue: string): void;
140
+ /**
141
+ * Rename a logical path. This will overwrite dest if exists
142
+ */
143
+ rename(srcLogicalPath: string, destLogicalPath: string): void;
144
+ /**
145
+ * Create an alias or reference of a logical path
146
+ */
147
+ copy(srcLogicalPath: string, destLogicalPath: string): void;
148
+ /**
149
+ * Delete a file
150
+ */
151
+ delete(logicalPath: string, version?: string): number;
152
+ reinstate(logicalPath: string, versionName: string): number;
153
+ }
154
+ export { OcflObjectInventory, OcflObjectInventoryMut, VersionNumber };
155
+ //# sourceMappingURL=inventory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../src/inventory.ts"],"names":[],"mappings":"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"}