pyric-admin 0.1.0-alpha.24 → 0.1.0-alpha.26

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 (128) hide show
  1. package/README.md +1 -1
  2. package/dist/admin.d.ts +64 -12
  3. package/dist/admin.d.ts.map +1 -1
  4. package/dist/admin.js +53 -8
  5. package/dist/admin.js.map +1 -1
  6. package/dist/app/index.d.ts +14 -1
  7. package/dist/app/index.d.ts.map +1 -1
  8. package/dist/app/index.js +58 -16
  9. package/dist/app/index.js.map +1 -1
  10. package/dist/app-check/index.d.ts +13 -1
  11. package/dist/app-check/index.d.ts.map +1 -1
  12. package/dist/app-check/index.js +14 -9
  13. package/dist/app-check/index.js.map +1 -1
  14. package/dist/auth/index.d.ts.map +1 -1
  15. package/dist/auth/index.js +11 -0
  16. package/dist/auth/index.js.map +1 -1
  17. package/dist/data-connect/index.d.ts +23 -1
  18. package/dist/data-connect/index.d.ts.map +1 -1
  19. package/dist/data-connect/index.js +44 -7
  20. package/dist/data-connect/index.js.map +1 -1
  21. package/dist/database/index.d.ts +24 -19
  22. package/dist/database/index.d.ts.map +1 -1
  23. package/dist/database/index.js +133 -99
  24. package/dist/database/index.js.map +1 -1
  25. package/dist/deferred.d.ts +37 -13
  26. package/dist/deferred.d.ts.map +1 -1
  27. package/dist/deferred.js +57 -15
  28. package/dist/deferred.js.map +1 -1
  29. package/dist/eventarc/index.d.ts +13 -1
  30. package/dist/eventarc/index.d.ts.map +1 -1
  31. package/dist/eventarc/index.js +15 -9
  32. package/dist/eventarc/index.js.map +1 -1
  33. package/dist/extensions/index.d.ts +13 -1
  34. package/dist/extensions/index.d.ts.map +1 -1
  35. package/dist/extensions/index.js +15 -9
  36. package/dist/extensions/index.js.map +1 -1
  37. package/dist/firestore/index.d.ts +6 -0
  38. package/dist/firestore/index.d.ts.map +1 -1
  39. package/dist/firestore/index.js +25 -3
  40. package/dist/firestore/index.js.map +1 -1
  41. package/dist/functions/index.d.ts +13 -1
  42. package/dist/functions/index.d.ts.map +1 -1
  43. package/dist/functions/index.js +15 -9
  44. package/dist/functions/index.js.map +1 -1
  45. package/dist/installations/index.d.ts +13 -1
  46. package/dist/installations/index.d.ts.map +1 -1
  47. package/dist/installations/index.js +15 -9
  48. package/dist/installations/index.js.map +1 -1
  49. package/dist/instance-id/index.d.ts +13 -1
  50. package/dist/instance-id/index.d.ts.map +1 -1
  51. package/dist/instance-id/index.js +15 -9
  52. package/dist/instance-id/index.js.map +1 -1
  53. package/dist/machine-learning/index.d.ts +19 -1
  54. package/dist/machine-learning/index.d.ts.map +1 -1
  55. package/dist/machine-learning/index.js +23 -9
  56. package/dist/machine-learning/index.js.map +1 -1
  57. package/dist/messaging/index.d.ts.map +1 -1
  58. package/dist/messaging/index.js +1 -0
  59. package/dist/messaging/index.js.map +1 -1
  60. package/dist/phone-number-verification/index.d.ts +12 -1
  61. package/dist/phone-number-verification/index.d.ts.map +1 -1
  62. package/dist/phone-number-verification/index.js +14 -9
  63. package/dist/phone-number-verification/index.js.map +1 -1
  64. package/dist/project-management/index.d.ts +21 -1
  65. package/dist/project-management/index.d.ts.map +1 -1
  66. package/dist/project-management/index.js +23 -9
  67. package/dist/project-management/index.js.map +1 -1
  68. package/dist/remote-config/index.d.ts +21 -1
  69. package/dist/remote-config/index.d.ts.map +1 -1
  70. package/dist/remote-config/index.js +24 -9
  71. package/dist/remote-config/index.js.map +1 -1
  72. package/dist/security-rules/index.d.ts +23 -1
  73. package/dist/security-rules/index.d.ts.map +1 -1
  74. package/dist/security-rules/index.js +27 -9
  75. package/dist/security-rules/index.js.map +1 -1
  76. package/dist/storage/deferred-members.d.ts +14 -0
  77. package/dist/storage/deferred-members.d.ts.map +1 -0
  78. package/dist/storage/deferred-members.js +55 -0
  79. package/dist/storage/deferred-members.js.map +1 -0
  80. package/dist/storage/delete-files.d.ts +13 -0
  81. package/dist/storage/delete-files.d.ts.map +1 -0
  82. package/dist/storage/delete-files.js +39 -0
  83. package/dist/storage/delete-files.js.map +1 -0
  84. package/dist/storage/file-query.d.ts +52 -0
  85. package/dist/storage/file-query.d.ts.map +1 -0
  86. package/dist/storage/file-query.js +94 -0
  87. package/dist/storage/file-query.js.map +1 -0
  88. package/dist/storage/get-files.d.ts +15 -0
  89. package/dist/storage/get-files.d.ts.map +1 -0
  90. package/dist/storage/get-files.js +33 -0
  91. package/dist/storage/get-files.js.map +1 -0
  92. package/dist/storage/index.d.ts +77 -13
  93. package/dist/storage/index.d.ts.map +1 -1
  94. package/dist/storage/index.js +359 -160
  95. package/dist/storage/index.js.map +1 -1
  96. package/dist/storage/remote-names.d.ts +19 -0
  97. package/dist/storage/remote-names.d.ts.map +1 -0
  98. package/dist/storage/remote-names.js +26 -0
  99. package/dist/storage/remote-names.js.map +1 -0
  100. package/package.json +2 -2
  101. package/src/admin.ts +58 -8
  102. package/src/app/index.ts +71 -19
  103. package/src/app-check/index.ts +27 -9
  104. package/src/auth/auth.test.ts +27 -0
  105. package/src/auth/index.ts +8 -0
  106. package/src/data-connect/index.ts +70 -9
  107. package/src/database/database.test.ts +1 -0
  108. package/src/database/index.ts +182 -108
  109. package/src/deferred.ts +78 -15
  110. package/src/eventarc/index.ts +32 -9
  111. package/src/extensions/index.ts +32 -9
  112. package/src/firestore/index.ts +30 -3
  113. package/src/functions/index.ts +32 -9
  114. package/src/installations/index.ts +33 -10
  115. package/src/instance-id/index.ts +33 -9
  116. package/src/machine-learning/index.ts +46 -9
  117. package/src/messaging/index.ts +1 -0
  118. package/src/phone-number-verification/index.ts +31 -9
  119. package/src/project-management/index.ts +48 -8
  120. package/src/remote-config/index.ts +51 -8
  121. package/src/security-rules/index.ts +54 -9
  122. package/src/storage/deferred-members.ts +67 -0
  123. package/src/storage/delete-files.ts +40 -0
  124. package/src/storage/file-query.ts +135 -0
  125. package/src/storage/get-files.ts +40 -0
  126. package/src/storage/index.ts +484 -180
  127. package/src/storage/remote-names.ts +34 -0
  128. package/src/storage/storage.test.ts +78 -5
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The object listing `@google-cloud/storage`'s `Bucket.getFiles` reads from
3
+ * the JSON API, worked out over a bucket's object names. Both sandbox arms
4
+ * collect the names their own way and page them here, so a query lists the
5
+ * same files on each.
6
+ *
7
+ * - `prefix` matches the start of a name verbatim; it is not a folder, so
8
+ * `users/12` matches `users/123/a.png`. An empty prefix lists the bucket.
9
+ * - `delimiter` rolls each name whose rest after the prefix holds it up to
10
+ * a prefix ending in the delimiter, reported in `apiResponse.prefixes`.
11
+ * - A page holds up to `maxResults` entries, files and prefixes together,
12
+ * in name order (1000 without it), and `pageToken` resumes after the
13
+ * entry the previous page ended on.
14
+ * - `autoPaginate` (the default unless `maxResults` is set or it is
15
+ * `false`) reads every page, as `@google-cloud/paginator` does.
16
+ */
17
+ /** Options for `Bucket.getFiles`. Subset of `@google-cloud/storage`'s `GetFilesOptions`. */
18
+ export interface GetFilesOptions {
19
+ prefix?: string;
20
+ delimiter?: string;
21
+ maxResults?: number;
22
+ pageToken?: string;
23
+ autoPaginate?: boolean;
24
+ }
25
+ /** Options for `Bucket.deleteFiles`. Subset of `@google-cloud/storage`'s `DeleteFilesOptions`. */
26
+ export interface DeleteFilesOptions extends GetFilesOptions {
27
+ /** Delete every file it can, then reject with the array of errors, instead of stopping at the first. */
28
+ force?: boolean;
29
+ }
30
+ /** The JSON API response a page came from. The sandbox leaves out `items`, the objects' full metadata. */
31
+ export interface GetFilesApiResponse {
32
+ kind: 'storage#objects';
33
+ prefixes?: string[];
34
+ nextPageToken?: string;
35
+ }
36
+ /** One page of a listing: file names, rolled-up prefixes, and where the next page starts. */
37
+ export interface ListingPage {
38
+ names: string[];
39
+ prefixes: string[];
40
+ nextPageToken?: string;
41
+ }
42
+ /** Refuse the callback form, which would otherwise never be called. */
43
+ export declare function assertQuery(query: unknown, method: string): void;
44
+ /** Does this query read every page, as `@google-cloud/paginator` decides? */
45
+ export declare function readsEveryPage(query: GetFilesOptions): boolean;
46
+ /** The page of `names` that `query` asks for, `pageSize` entries at most. */
47
+ export declare function listingPage(names: readonly string[], query: GetFilesOptions, pageSize?: number): ListingPage;
48
+ /** Every file name `query` lists from its `pageToken` on, up to `maxResults` of them, across pages. */
49
+ export declare function everyListedName(names: readonly string[], query: GetFilesOptions): string[];
50
+ /** The JSON API response for `page`. */
51
+ export declare function apiResponseOf(page: ListingPage): GetFilesApiResponse;
52
+ //# sourceMappingURL=file-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-query.d.ts","sourceRoot":"","sources":["../../src/storage/file-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,4FAA4F;AAC5F,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,kGAAkG;AAClG,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,wGAAwG;IACxG,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,0GAA0G;AAC1G,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,6FAA6F;AAC7F,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAKD,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAKhE;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAG9D;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,SAAoB,GAAG,WAAW,CAYvH;AAED,uGAAuG;AACvG,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,CAK1F;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,mBAAmB,CAMpE"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The object listing `@google-cloud/storage`'s `Bucket.getFiles` reads from
3
+ * the JSON API, worked out over a bucket's object names. Both sandbox arms
4
+ * collect the names their own way and page them here, so a query lists the
5
+ * same files on each.
6
+ *
7
+ * - `prefix` matches the start of a name verbatim; it is not a folder, so
8
+ * `users/12` matches `users/123/a.png`. An empty prefix lists the bucket.
9
+ * - `delimiter` rolls each name whose rest after the prefix holds it up to
10
+ * a prefix ending in the delimiter, reported in `apiResponse.prefixes`.
11
+ * - A page holds up to `maxResults` entries, files and prefixes together,
12
+ * in name order (1000 without it), and `pageToken` resumes after the
13
+ * entry the previous page ended on.
14
+ * - `autoPaginate` (the default unless `maxResults` is set or it is
15
+ * `false`) reads every page, as `@google-cloud/paginator` does.
16
+ */
17
+ /** The page size the JSON API uses without `maxResults`. */
18
+ const DEFAULT_PAGE_SIZE = 1000;
19
+ /** Refuse the callback form, which would otherwise never be called. */
20
+ export function assertQuery(query, method) {
21
+ const isCallback = typeof query === 'function';
22
+ if (isCallback) {
23
+ throw new TypeError(`pyric-admin/storage: Bucket.${method} returns a promise; the callback form is not supported.`);
24
+ }
25
+ }
26
+ /** Does this query read every page, as `@google-cloud/paginator` decides? */
27
+ export function readsEveryPage(query) {
28
+ const limited = typeof query.maxResults === 'number' && query.maxResults > 0;
29
+ return !limited && query.autoPaginate !== false;
30
+ }
31
+ /** The page of `names` that `query` asks for, `pageSize` entries at most. */
32
+ export function listingPage(names, query, pageSize = pageSizeOf(query)) {
33
+ const entries = entriesOf(names, query);
34
+ const after = query.pageToken === undefined ? undefined : decodeToken(query.pageToken);
35
+ const remaining = after === undefined ? entries : entries.filter(entry => entry.key > after);
36
+ const page = remaining.slice(0, pageSize);
37
+ const more = remaining.length > page.length;
38
+ const last = page[page.length - 1];
39
+ return {
40
+ names: page.filter(entry => !entry.rolledUp).map(entry => entry.key),
41
+ prefixes: page.filter(entry => entry.rolledUp).map(entry => entry.key),
42
+ ...(more && last !== undefined ? { nextPageToken: encodeToken(last.key) } : {}),
43
+ };
44
+ }
45
+ /** Every file name `query` lists from its `pageToken` on, up to `maxResults` of them, across pages. */
46
+ export function everyListedName(names, query) {
47
+ const { maxResults, ...rest } = query;
48
+ const listed = listingPage(names, rest, Number.POSITIVE_INFINITY).names;
49
+ const limited = typeof maxResults === 'number' && maxResults > 0;
50
+ return limited ? listed.slice(0, maxResults) : listed;
51
+ }
52
+ /** The JSON API response for `page`. */
53
+ export function apiResponseOf(page) {
54
+ return {
55
+ kind: 'storage#objects',
56
+ ...(page.prefixes.length > 0 ? { prefixes: page.prefixes } : {}),
57
+ ...(page.nextPageToken !== undefined ? { nextPageToken: page.nextPageToken } : {}),
58
+ };
59
+ }
60
+ function pageSizeOf(query) {
61
+ const limited = typeof query.maxResults === 'number' && query.maxResults > 0;
62
+ return limited ? Math.min(query.maxResults, DEFAULT_PAGE_SIZE) : DEFAULT_PAGE_SIZE;
63
+ }
64
+ /** The names under the prefix, with the delimiter's roll-up applied, in name order. */
65
+ function entriesOf(names, query) {
66
+ const prefix = query.prefix ?? '';
67
+ const delimiter = query.delimiter ?? '';
68
+ const byKey = new Map();
69
+ for (const name of names) {
70
+ if (!name.startsWith(prefix))
71
+ continue;
72
+ const rest = name.slice(prefix.length);
73
+ const cut = delimiter === '' ? -1 : rest.indexOf(delimiter);
74
+ const rolledUp = cut !== -1;
75
+ const key = rolledUp ? prefix + rest.slice(0, cut + delimiter.length) : name;
76
+ byKey.set(key, { key, rolledUp });
77
+ }
78
+ return [...byKey.values()].sort((a, b) => compareKeys(a.key, b.key));
79
+ }
80
+ /** Name order, as the JSON API lists objects. */
81
+ function compareKeys(a, b) {
82
+ if (a < b)
83
+ return -1;
84
+ if (a > b)
85
+ return 1;
86
+ return 0;
87
+ }
88
+ function encodeToken(key) {
89
+ return Buffer.from(key, 'utf8').toString('base64url');
90
+ }
91
+ function decodeToken(token) {
92
+ return Buffer.from(token, 'base64url').toString('utf8');
93
+ }
94
+ //# sourceMappingURL=file-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-query.js","sourceRoot":"","sources":["../../src/storage/file-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `Bucket.getFiles`'s result, as `@google-cloud/storage` resolves it:
3
+ * `[files, nextQuery, apiResponse]`.
4
+ *
5
+ * A single page (`autoPaginate: false`, or `maxResults` set) gives the query
6
+ * for the next page, with its `pageToken`, or `null` on the last page. Reading
7
+ * every page gives a copy of the query the call was made with in that
8
+ * position, as `@google-cloud/paginator` resolves it, and the last page's
9
+ * response.
10
+ */
11
+ import { type GetFilesApiResponse, type GetFilesOptions } from './file-query.js';
12
+ export type GetFilesResponse<F> = [F[], GetFilesOptions | null, GetFilesApiResponse];
13
+ /** The `getFiles` result for `query` over a bucket's object `names`. */
14
+ export declare function getFilesResponse<F>(names: readonly string[], query: GetFilesOptions, fileOf: (name: string) => F): GetFilesResponse<F>;
15
+ //# sourceMappingURL=get-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-files.d.ts","sourceRoot":"","sources":["../../src/storage/get-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE,mBAAmB,CAAC,CAAC;AAErF,wEAAwE;AACxE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAWtI"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * `Bucket.getFiles`'s result, as `@google-cloud/storage` resolves it:
3
+ * `[files, nextQuery, apiResponse]`.
4
+ *
5
+ * A single page (`autoPaginate: false`, or `maxResults` set) gives the query
6
+ * for the next page, with its `pageToken`, or `null` on the last page. Reading
7
+ * every page gives a copy of the query the call was made with in that
8
+ * position, as `@google-cloud/paginator` resolves it, and the last page's
9
+ * response.
10
+ */
11
+ import { apiResponseOf, listingPage, readsEveryPage, } from './file-query.js';
12
+ /** The `getFiles` result for `query` over a bucket's object `names`. */
13
+ export function getFilesResponse(names, query, fileOf) {
14
+ if (!readsEveryPage(query))
15
+ return onePage(names, query, fileOf);
16
+ const files = [];
17
+ let pageQuery = { ...query };
18
+ for (;;) {
19
+ const page = listingPage(names, pageQuery);
20
+ files.push(...page.names.map(fileOf));
21
+ const token = page.nextPageToken;
22
+ if (token === undefined)
23
+ return [files, { ...query }, apiResponseOf(page)];
24
+ pageQuery = { ...pageQuery, pageToken: token };
25
+ }
26
+ }
27
+ function onePage(names, query, fileOf) {
28
+ const page = listingPage(names, query);
29
+ const token = page.nextPageToken;
30
+ const nextQuery = token === undefined ? null : { ...query, pageToken: token };
31
+ return [page.names.map(fileOf), nextQuery, apiResponseOf(page)];
32
+ }
33
+ //# sourceMappingURL=get-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-files.js","sourceRoot":"","sources":["../../src/storage/get-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,GAGf,MAAM,iBAAiB,CAAC;AAIzB,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAAI,KAAwB,EAAE,KAAsB,EAAE,MAA2B;IAC/G,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,IAAI,SAAS,GAAoB,EAAE,GAAG,KAAK,EAAE,CAAC;IAC9C,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,SAAS,GAAG,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAI,KAAwB,EAAE,KAAsB,EAAE,MAA2B;IAC/F,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;IACjC,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9E,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,CAAC"}
@@ -9,8 +9,13 @@
9
9
  * `connectRemoteSandbox()`/`remoteSandbox()` relays every data
10
10
  * operation to the sandbox's host (admin lens pinned — rules bypass).
11
11
  * Bytes move over the host's HTTP byte route when it has one, and as
12
- * frames when it does not (a browser tab's SharedWorker). Single bucket;
13
- * `getSignedUrl` stays the local stub. See the remote arm section below.
12
+ * frames when it does not (a browser tab's SharedWorker). Each bucket
13
+ * name is its own bucket on the host; the default bucket is the host's
14
+ * default one. `createResumableUpload` gives a session URL on the byte
15
+ * route. `getSignedUrl` stays the local stub. See the remote arm section below.
16
+ *
17
+ * - **Default bucket**: `bucket()` is the bucket the app's `storageBucket`
18
+ * option names, or `'pyric-default'` without one, on both paths.
14
19
  *
15
20
  * - **Sandbox path** — returns an in-process {@link Storage} backed
16
21
  * by an in-memory `Map<bucketName, Map<path, FileEntry>>`. State
@@ -26,6 +31,9 @@
26
31
  * - `file.download(options?)` → `[Buffer]`, whole or `start..end`
27
32
  * - `file.createReadStream(options?)`, whole or `start..end`
28
33
  * - `file.createWriteStream(options?)`
34
+ * - `save` and `createWriteStream` take `firebaseStorageDownloadTokens`
35
+ * under `metadata.metadata` as the file's download tokens, which grant
36
+ * its download URL as `getDownloadURL` mints them
29
37
  * - `file.getMetadata()` / `file.setMetadata(metadata)`: settable fields
30
38
  * and custom metadata; a custom key set to `null` is removed
31
39
  * - `getDownloadURL(file)`: mints a token into
@@ -34,14 +42,24 @@
34
42
  * - `file.delete()` — idempotent
35
43
  * - `file.exists()` → `[boolean]`
36
44
  * - `file.getSignedUrl(options)` → `['pyric-sandbox-storage://…']`
45
+ * - `file.copy(destination, options?)`, within a bucket or across buckets
46
+ * - `bucket.getFiles(query?)` → `[files, nextQuery, apiResponse]`, with
47
+ * `prefix`, `delimiter`, `maxResults`, `pageToken`, `autoPaginate`
48
+ * - `bucket.deleteFiles(query?)`, honoring `force`
37
49
  *
38
50
  * **Deferred in the sandbox backend** (throws `"not implemented in
39
- * pyric-admin/storage sandbox backend"`): resumable uploads, signed
40
- * cookies, IAM policies, lifecycle rules, ACLs, copy/move,
41
- * notifications.
51
+ * pyric-admin/storage sandbox backend"`): `file.createResumableUpload`
52
+ * upload sessions, which need an HTTP host, signed cookies, IAM
53
+ * policies, lifecycle rules, ACLs, move, notifications. Every other
54
+ * `Bucket` and `File` method is a deferred member listed in
55
+ * `deferred-members.ts`.
42
56
  */
43
57
  import { Readable, Writable } from 'node:stream';
44
58
  import { type PyricAdminApp } from '../app/index.js';
59
+ import { type DeleteFilesOptions, type GetFilesOptions } from './file-query.js';
60
+ import { type GetFilesResponse } from './get-files.js';
61
+ export type { DeleteFilesOptions, GetFilesApiResponse, GetFilesOptions } from './file-query.js';
62
+ export type { GetFilesResponse } from './get-files.js';
45
63
  /**
46
64
  * `pyric-admin/storage`'s sandbox `Storage` handle. It exposes the subset
47
65
  * documented in the module header.
@@ -65,6 +83,18 @@ export interface Bucket {
65
83
  readonly name: string;
66
84
  /** Get a {@link File} handle for `path`. The file may or may not exist. */
67
85
  file(path: string): File;
86
+ /**
87
+ * List the bucket's files, as `@google-cloud/storage` does: names starting
88
+ * with `prefix`, rolled up at `delimiter`, paged by `maxResults` and
89
+ * `pageToken`. Resolves `[files, nextQuery, apiResponse]`; see `get-files.ts`.
90
+ */
91
+ getFiles(query?: GetFilesOptions): Promise<GetFilesResponse<File>>;
92
+ /**
93
+ * Delete every file `getFiles(query)` would list across its pages. With
94
+ * `force`, a failed delete does not stop the others, and the call rejects
95
+ * with the array of errors.
96
+ */
97
+ deleteFiles(query?: DeleteFilesOptions): Promise<void>;
68
98
  }
69
99
  /**
70
100
  * A file handle within a bucket. Method shapes mirror
@@ -106,6 +136,23 @@ export interface File {
106
136
  * stream finishes, as {@link File.save} does.
107
137
  */
108
138
  createWriteStream(options?: CreateWriteStreamOptions): Writable;
139
+ /**
140
+ * `@google-cloud/storage`'s resumable upload session: a URL that takes the
141
+ * object's bytes from a browser, and creates the object with
142
+ * `options.metadata` when the last byte arrives. A remote sandbox whose host
143
+ * serves HTTP (the hosted dev server) gives one. In process, and on a
144
+ * browser tab's SharedWorker host, there is no HTTP host to take the bytes,
145
+ * so this rejects with a not-implemented error there.
146
+ */
147
+ createResumableUpload(options?: CreateResumableUploadOptions): Promise<[string]>;
148
+ /**
149
+ * Copy the object, with its content type, custom metadata and download
150
+ * tokens, to `destination`: a path in this bucket, a `gs://` URL, another
151
+ * {@link Bucket} (same path), or another {@link File}. `options` change the
152
+ * copy's metadata; a custom key set to `null` is left off the copy.
153
+ * Resolves `[copy, copyMetadata]`.
154
+ */
155
+ copy(destination: CopyDestination, options?: CopyOptions): Promise<[File, FileMetadata]>;
109
156
  /** The file's metadata, as a `[metadata]` tuple. Throws if the file does not exist. */
110
157
  getMetadata(): Promise<[FileMetadata]>;
111
158
  /**
@@ -134,10 +181,10 @@ export interface File {
134
181
  /** Options bag for {@link File.save}. Subset of `@google-cloud/storage`'s `SaveOptions`. */
135
182
  export interface SaveOptions {
136
183
  /**
137
- * Arbitrary metadata stored alongside the file. The sandbox stores
138
- * it verbatim; consumers that need to round-trip `contentType`,
139
- * `metadata.custom`, etc. get it back via internal admin tooling
140
- * (not exposed on `File` itself yet).
184
+ * Metadata stored alongside the file: the settable fields `setMetadata`
185
+ * takes, and custom keys under `metadata`. A
186
+ * `firebaseStorageDownloadTokens` custom key sets the file's download
187
+ * tokens. Other fields are ignored. Read it back with {@link File.getMetadata}.
141
188
  */
142
189
  metadata?: Record<string, unknown>;
143
190
  /**
@@ -146,9 +193,8 @@ export interface SaveOptions {
146
193
  */
147
194
  contentType?: string;
148
195
  /**
149
- * `resumable: false` is the only mode the sandbox models (single-
150
- * shot writes). The sandbox throws when set to `true` since resumable
151
- * uploads are deferred.
196
+ * How `@google-cloud/storage` sends the bytes. The sandbox stores the
197
+ * object in one write either way, so the stored object is the same.
152
198
  */
153
199
  resumable?: boolean;
154
200
  }
@@ -170,6 +216,25 @@ export interface CreateWriteStreamOptions {
170
216
  /** Content type stored on the file. */
171
217
  contentType?: string;
172
218
  }
219
+ /** Options bag for {@link File.createResumableUpload}. Subset of `@google-cloud/storage`'s `CreateResumableUploadOptions`. */
220
+ export interface CreateResumableUploadOptions {
221
+ /** The object's metadata, as {@link SaveOptions.metadata} takes it. */
222
+ metadata?: Record<string, unknown>;
223
+ /** The page origin whose cross-origin requests the session URL answers. */
224
+ origin?: string;
225
+ }
226
+ /** Where {@link File.copy} copies to. */
227
+ export type CopyDestination = string | Bucket | File;
228
+ /** Options bag for {@link File.copy}. Subset of `@google-cloud/storage`'s `CopyOptions`. */
229
+ export interface CopyOptions {
230
+ contentType?: string;
231
+ cacheControl?: string;
232
+ contentDisposition?: string;
233
+ contentEncoding?: string;
234
+ contentLanguage?: string;
235
+ /** Custom keys for the copy, merged over the source's; `null` leaves a key off. */
236
+ metadata?: Record<string, string | number | boolean | null>;
237
+ }
173
238
  /** Settable fields the sandbox keeps, besides custom metadata. */
174
239
  declare const SETTABLE_FIELDS: readonly ["contentType", "cacheControl", "contentDisposition", "contentEncoding", "contentLanguage"];
175
240
  type SettableField = (typeof SETTABLE_FIELDS)[number];
@@ -232,5 +297,4 @@ export declare function getStorage(app?: StorageApp): Storage;
232
297
  * carries the bytes.
233
298
  */
234
299
  export declare function getDownloadURL(file: File): Promise<string>;
235
- export {};
236
300
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}