@transloadit/node 4.1.9 → 4.3.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 (105) hide show
  1. package/README.md +81 -1
  2. package/dist/Transloadit.d.ts +36 -5
  3. package/dist/Transloadit.d.ts.map +1 -1
  4. package/dist/Transloadit.js +228 -39
  5. package/dist/Transloadit.js.map +1 -1
  6. package/dist/alphalib/assembly-linter.d.ts +123 -0
  7. package/dist/alphalib/assembly-linter.d.ts.map +1 -0
  8. package/dist/alphalib/assembly-linter.js +1142 -0
  9. package/dist/alphalib/assembly-linter.js.map +1 -0
  10. package/dist/alphalib/assembly-linter.lang.en.d.ts +87 -0
  11. package/dist/alphalib/assembly-linter.lang.en.d.ts.map +1 -0
  12. package/dist/alphalib/assembly-linter.lang.en.js +326 -0
  13. package/dist/alphalib/assembly-linter.lang.en.js.map +1 -0
  14. package/dist/alphalib/mcache.d.ts.map +1 -1
  15. package/dist/alphalib/mcache.js +22 -7
  16. package/dist/alphalib/mcache.js.map +1 -1
  17. package/dist/alphalib/object.d.ts +20 -0
  18. package/dist/alphalib/object.d.ts.map +1 -0
  19. package/dist/alphalib/object.js +23 -0
  20. package/dist/alphalib/object.js.map +1 -0
  21. package/dist/alphalib/stepParsing.d.ts +93 -0
  22. package/dist/alphalib/stepParsing.d.ts.map +1 -0
  23. package/dist/alphalib/stepParsing.js +1154 -0
  24. package/dist/alphalib/stepParsing.js.map +1 -0
  25. package/dist/alphalib/templateMerge.d.ts +4 -0
  26. package/dist/alphalib/templateMerge.d.ts.map +1 -0
  27. package/dist/alphalib/templateMerge.js +22 -0
  28. package/dist/alphalib/templateMerge.js.map +1 -0
  29. package/dist/alphalib/types/assemblyReplay.d.ts +56 -0
  30. package/dist/alphalib/types/assemblyReplay.d.ts.map +1 -1
  31. package/dist/alphalib/types/assemblyReplayNotification.d.ts +56 -0
  32. package/dist/alphalib/types/assemblyReplayNotification.d.ts.map +1 -1
  33. package/dist/alphalib/types/assemblyStatus.d.ts +63 -57
  34. package/dist/alphalib/types/assemblyStatus.d.ts.map +1 -1
  35. package/dist/alphalib/types/assemblyStatus.js +9 -1
  36. package/dist/alphalib/types/assemblyStatus.js.map +1 -1
  37. package/dist/alphalib/types/assemblyUrls.d.ts +1 -1
  38. package/dist/alphalib/types/assemblyUrls.d.ts.map +1 -1
  39. package/dist/alphalib/types/assemblyUrls.js.map +1 -1
  40. package/dist/alphalib/types/robots/_index.d.ts +608 -81
  41. package/dist/alphalib/types/robots/_index.d.ts.map +1 -1
  42. package/dist/alphalib/types/robots/_index.js +4 -0
  43. package/dist/alphalib/types/robots/_index.js.map +1 -1
  44. package/dist/alphalib/types/robots/_instructions-primitives.d.ts +4 -4
  45. package/dist/alphalib/types/robots/_instructions-primitives.d.ts.map +1 -1
  46. package/dist/alphalib/types/robots/_instructions-primitives.js +1 -0
  47. package/dist/alphalib/types/robots/_instructions-primitives.js.map +1 -1
  48. package/dist/alphalib/types/robots/document-optimize.d.ts +489 -0
  49. package/dist/alphalib/types/robots/document-optimize.d.ts.map +1 -0
  50. package/dist/alphalib/types/robots/document-optimize.js +151 -0
  51. package/dist/alphalib/types/robots/document-optimize.js.map +1 -0
  52. package/dist/alphalib/types/template.d.ts +1050 -174
  53. package/dist/alphalib/types/template.d.ts.map +1 -1
  54. package/dist/cli/commands/assemblies.d.ts +20 -1
  55. package/dist/cli/commands/assemblies.d.ts.map +1 -1
  56. package/dist/cli/commands/assemblies.js +137 -2
  57. package/dist/cli/commands/assemblies.js.map +1 -1
  58. package/dist/cli/commands/auth.d.ts.map +1 -1
  59. package/dist/cli/commands/auth.js +19 -19
  60. package/dist/cli/commands/auth.js.map +1 -1
  61. package/dist/cli/commands/index.d.ts.map +1 -1
  62. package/dist/cli/commands/index.js +2 -1
  63. package/dist/cli/commands/index.js.map +1 -1
  64. package/dist/cli/docs/assemblyLintingExamples.d.ts +2 -0
  65. package/dist/cli/docs/assemblyLintingExamples.d.ts.map +1 -0
  66. package/dist/cli/docs/assemblyLintingExamples.js +10 -0
  67. package/dist/cli/docs/assemblyLintingExamples.js.map +1 -0
  68. package/dist/cli/helpers.d.ts +11 -0
  69. package/dist/cli/helpers.d.ts.map +1 -1
  70. package/dist/cli/helpers.js +29 -0
  71. package/dist/cli/helpers.js.map +1 -1
  72. package/dist/lintAssemblyInput.d.ts +10 -0
  73. package/dist/lintAssemblyInput.d.ts.map +1 -0
  74. package/dist/lintAssemblyInput.js +73 -0
  75. package/dist/lintAssemblyInput.js.map +1 -0
  76. package/dist/lintAssemblyInstructions.d.ts +29 -0
  77. package/dist/lintAssemblyInstructions.d.ts.map +1 -0
  78. package/dist/lintAssemblyInstructions.js +33 -0
  79. package/dist/lintAssemblyInstructions.js.map +1 -0
  80. package/dist/tus.d.ts +2 -1
  81. package/dist/tus.d.ts.map +1 -1
  82. package/dist/tus.js +2 -1
  83. package/dist/tus.js.map +1 -1
  84. package/package.json +5 -2
  85. package/src/Transloadit.ts +318 -49
  86. package/src/alphalib/assembly-linter.lang.en.ts +393 -0
  87. package/src/alphalib/assembly-linter.ts +1475 -0
  88. package/src/alphalib/mcache.ts +26 -7
  89. package/src/alphalib/object.ts +27 -0
  90. package/src/alphalib/stepParsing.ts +1465 -0
  91. package/src/alphalib/templateMerge.ts +32 -0
  92. package/src/alphalib/types/assemblyStatus.ts +9 -1
  93. package/src/alphalib/types/assemblyUrls.ts +2 -5
  94. package/src/alphalib/types/robots/_index.ts +14 -0
  95. package/src/alphalib/types/robots/_instructions-primitives.ts +1 -0
  96. package/src/alphalib/types/robots/document-optimize.ts +180 -0
  97. package/src/alphalib/typings/json-to-ast.d.ts +34 -0
  98. package/src/cli/commands/assemblies.ts +161 -2
  99. package/src/cli/commands/auth.ts +19 -22
  100. package/src/cli/commands/index.ts +2 -0
  101. package/src/cli/docs/assemblyLintingExamples.ts +9 -0
  102. package/src/cli/helpers.ts +50 -0
  103. package/src/lintAssemblyInput.ts +89 -0
  104. package/src/lintAssemblyInstructions.ts +72 -0
  105. package/src/tus.ts +3 -0
@@ -37,11 +37,13 @@ interface CacheEntry<T> {
37
37
  */
38
38
  export class Mcache<T> {
39
39
  #cache: Map<string, CacheEntry<T>>
40
+ #pending: Map<string, Promise<T>>
40
41
  #opts: Required<Omit<McacheOpts, 'logger' | 'zodSchema' | 'keyFn'>> &
41
42
  Pick<McacheOpts, 'logger' | 'zodSchema' | 'keyFn'>
42
43
 
43
44
  constructor(opts: McacheOpts = {}) {
44
45
  this.#cache = new Map()
46
+ this.#pending = new Map()
45
47
  this.#opts = {
46
48
  ttlMs: opts.ttlMs ?? Number.POSITIVE_INFINITY,
47
49
  maxSize: opts.maxSize ?? 10_000,
@@ -56,6 +58,8 @@ export class Mcache<T> {
56
58
  * The cache key is generated from the args using JSON.stringify by default,
57
59
  * or using the custom keyFn if provided.
58
60
  */
61
+
62
+ // biome-ignore lint/suspicious/useAwait: @TODO check this out later
59
63
  async get(producer: () => Promise<T> | T, ...args: unknown[]): Promise<T> {
60
64
  const key = this.#opts.keyFn ? this.#opts.keyFn(...args) : JSON.stringify(args)
61
65
  const cached = this.#cache.get(key)
@@ -73,16 +77,31 @@ export class Mcache<T> {
73
77
  this.#cache.delete(key)
74
78
  }
75
79
 
80
+ const pending = this.#pending.get(key)
81
+ if (pending) {
82
+ this.#opts.logger?.debug(`Cache miss for key ${key}, waiting for pending request`)
83
+ return pending
84
+ }
85
+
76
86
  this.#opts.logger?.debug(`Cache miss for key ${key}, computing value`)
77
- const value = await producer()
78
87
 
79
- // Validate if schema provided
80
- if (this.#opts.zodSchema) {
81
- this.#opts.zodSchema.parse(value)
82
- }
88
+ const promise = Promise.resolve().then(async () => {
89
+ const value = await producer()
83
90
 
84
- this.#set(key, value)
85
- return value
91
+ // Validate if schema provided
92
+ if (this.#opts.zodSchema) {
93
+ this.#opts.zodSchema.parse(value)
94
+ }
95
+
96
+ this.#set(key, value)
97
+ return value
98
+ })
99
+
100
+ this.#pending.set(key, promise)
101
+ void promise.finally(() => {
102
+ this.#pending.delete(key)
103
+ })
104
+ return promise
86
105
  }
87
106
 
88
107
  /**
@@ -0,0 +1,27 @@
1
+ import type { Entries } from 'type-fest'
2
+
3
+ /**
4
+ * See https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208 for
5
+ * some background on why this exists and why this isn't in TypeScript by default.
6
+ */
7
+
8
+ /**
9
+ * Returns properly typed entries of an object
10
+ */
11
+ export function entries<T extends { [K in keyof T]: T[K] }>(object: T): Entries<T> {
12
+ return Object.entries(object) as Entries<T>
13
+ }
14
+
15
+ /**
16
+ * Returns properly typed values of an object
17
+ */
18
+ export function values<T extends object>(object: T): T[keyof T][] {
19
+ return Object.values(object)
20
+ }
21
+
22
+ /**
23
+ * Returns properly typed keys of an object
24
+ */
25
+ export function keys<T extends object>(object: T): (keyof T)[] {
26
+ return Object.keys(object) as (keyof T)[]
27
+ }