@sanity/runtime-cli 14.11.0 → 14.12.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.
@@ -17,8 +17,20 @@ export declare const EVENT_MEDIA_LIBRARY_ASSET_CREATE = "media-library-asset-cre
17
17
  export declare const EVENT_MEDIA_LIBRARY_ASSET_UPDATE = "media-library-asset-update";
18
18
  export declare const EVENT_MEDIA_LIBRARY_ASSET_DELETE = "media-library-asset-delete";
19
19
  export declare const EVENT_SCHEDULED = "scheduled-function";
20
- export declare const FUNCTION_TYPES: readonly ["document-publish", "document-create", "document-update", "document-delete", "media-library-asset-create", "media-library-asset-update", "media-library-asset-delete", "scheduled-function"];
21
- export type ARRAY_OF_FUNCTION_TYPES = (typeof FUNCTION_TYPES)[number][];
20
+ export declare const EVENT_SYNC_TAG_INVALIDATE = "sync-tag-invalidate";
21
+ export declare const MAP_EVENT_TO_FUNCTION_TYPE: {
22
+ readonly "document-publish": "sanity.function.document";
23
+ readonly "document-create": "sanity.function.document";
24
+ readonly "document-delete": "sanity.function.document";
25
+ readonly "document-update": "sanity.function.document";
26
+ readonly "media-library-asset-create": "sanity.function.media-library.asset";
27
+ readonly "media-library-asset-delete": "sanity.function.media-library.asset";
28
+ readonly "media-library-asset-update": "sanity.function.media-library.asset";
29
+ readonly "scheduled-function": "sanity.function.cron";
30
+ readonly "sync-tag-invalidate": "sanity.function.sync-tag-invalidate";
31
+ };
32
+ export declare const FUNCTION_TYPES: (keyof typeof MAP_EVENT_TO_FUNCTION_TYPE)[];
33
+ export type ARRAY_OF_FUNCTION_TYPES = typeof FUNCTION_TYPES;
22
34
  export declare const PROJECT_SCOPED_FUNCTION_TYPES: ReadonlySet<string>;
23
35
  export declare const ORGANIZATION_SCOPED_FUNCTION_TYPES: ReadonlySet<string>;
24
36
  export declare const MAX_ASSET_SIZE = 209715200;
@@ -30,3 +42,4 @@ export declare const LABEL_MEDIA_LIBRARY_ASSET_CREATE = "Media Library Asset Cre
30
42
  export declare const LABEL_MEDIA_LIBRARY_ASSET_UPDATE = "Media Library Asset Update";
31
43
  export declare const LABEL_MEDIA_LIBRARY_ASSET_DELETE = "Media Library Asset Delete";
32
44
  export declare const LABEL_SCHEDULED = "Scheduled";
45
+ export declare const LABEL_SYNC_TAG_INVALIDATE = "Sync Tag Invalidate";
package/dist/constants.js CHANGED
@@ -17,16 +17,19 @@ export const EVENT_MEDIA_LIBRARY_ASSET_CREATE = 'media-library-asset-create';
17
17
  export const EVENT_MEDIA_LIBRARY_ASSET_UPDATE = 'media-library-asset-update';
18
18
  export const EVENT_MEDIA_LIBRARY_ASSET_DELETE = 'media-library-asset-delete';
19
19
  export const EVENT_SCHEDULED = 'scheduled-function';
20
- export const FUNCTION_TYPES = [
21
- EVENT_DOCUMENT_PUBLISH,
22
- EVENT_DOCUMENT_CREATE,
23
- EVENT_DOCUMENT_UPDATE,
24
- EVENT_DOCUMENT_DELETE,
25
- EVENT_MEDIA_LIBRARY_ASSET_CREATE,
26
- EVENT_MEDIA_LIBRARY_ASSET_UPDATE,
27
- EVENT_MEDIA_LIBRARY_ASSET_DELETE,
28
- EVENT_SCHEDULED,
29
- ];
20
+ export const EVENT_SYNC_TAG_INVALIDATE = 'sync-tag-invalidate';
21
+ export const MAP_EVENT_TO_FUNCTION_TYPE = {
22
+ [EVENT_DOCUMENT_PUBLISH]: SANITY_FUNCTION_DOCUMENT,
23
+ [EVENT_DOCUMENT_CREATE]: SANITY_FUNCTION_DOCUMENT,
24
+ [EVENT_DOCUMENT_DELETE]: SANITY_FUNCTION_DOCUMENT,
25
+ [EVENT_DOCUMENT_UPDATE]: SANITY_FUNCTION_DOCUMENT,
26
+ [EVENT_MEDIA_LIBRARY_ASSET_CREATE]: SANITY_FUNCTION_MEDIA_LIBRARY_ASSET,
27
+ [EVENT_MEDIA_LIBRARY_ASSET_DELETE]: SANITY_FUNCTION_MEDIA_LIBRARY_ASSET,
28
+ [EVENT_MEDIA_LIBRARY_ASSET_UPDATE]: SANITY_FUNCTION_MEDIA_LIBRARY_ASSET,
29
+ [EVENT_SCHEDULED]: SANITY_FUNCTION_SCHEDULED,
30
+ [EVENT_SYNC_TAG_INVALIDATE]: SANITY_FUNCTION_SYNC_TAG_INVALIDATE,
31
+ };
32
+ export const FUNCTION_TYPES = Object.keys(MAP_EVENT_TO_FUNCTION_TYPE);
30
33
  export const PROJECT_SCOPED_FUNCTION_TYPES = new Set([
31
34
  SANITY_FUNCTION_DOCUMENT,
32
35
  SANITY_FUNCTION_MEDIA_LIBRARY_ASSET,
@@ -44,3 +47,4 @@ export const LABEL_MEDIA_LIBRARY_ASSET_CREATE = 'Media Library Asset Create';
44
47
  export const LABEL_MEDIA_LIBRARY_ASSET_UPDATE = 'Media Library Asset Update';
45
48
  export const LABEL_MEDIA_LIBRARY_ASSET_DELETE = 'Media Library Asset Delete';
46
49
  export const LABEL_SCHEDULED = 'Scheduled';
50
+ export const LABEL_SYNC_TAG_INVALIDATE = 'Sync Tag Invalidate';
@@ -5,26 +5,29 @@ import { checkbox, confirm, input, select } from '@inquirer/prompts';
5
5
  import { highlight } from 'cardinal';
6
6
  import { createFunctionResource } from '../../actions/blueprints/resources.js';
7
7
  import { verifyExampleExists, writeExample } from '../../actions/sanity/examples.js';
8
- import { EVENT_DOCUMENT_CREATE, EVENT_DOCUMENT_DELETE, EVENT_DOCUMENT_UPDATE, EVENT_MEDIA_LIBRARY_ASSET_CREATE, EVENT_MEDIA_LIBRARY_ASSET_DELETE, EVENT_MEDIA_LIBRARY_ASSET_UPDATE,
8
+ import { EVENT_DOCUMENT_CREATE, EVENT_DOCUMENT_DELETE, EVENT_DOCUMENT_UPDATE, EVENT_MEDIA_LIBRARY_ASSET_CREATE, EVENT_MEDIA_LIBRARY_ASSET_DELETE, EVENT_MEDIA_LIBRARY_ASSET_UPDATE, EVENT_SYNC_TAG_INVALIDATE,
9
9
  // EVENT_SCHEDULED,
10
- FUNCTION_TYPES, LABEL_DOCUMENT_CREATE, LABEL_DOCUMENT_DELETE, LABEL_DOCUMENT_UPDATE, LABEL_MEDIA_LIBRARY_ASSET_CREATE, LABEL_MEDIA_LIBRARY_ASSET_DELETE, LABEL_MEDIA_LIBRARY_ASSET_UPDATE, LABEL_SCHEDULED, SANITY_FUNCTION_MEDIA_LIBRARY_ASSET, SANITY_FUNCTION_SCHEDULED, } from '../../constants.js';
10
+ FUNCTION_TYPES, LABEL_DOCUMENT_CREATE, LABEL_DOCUMENT_DELETE, LABEL_DOCUMENT_UPDATE, LABEL_MEDIA_LIBRARY_ASSET_CREATE, LABEL_MEDIA_LIBRARY_ASSET_DELETE, LABEL_MEDIA_LIBRARY_ASSET_UPDATE, LABEL_SCHEDULED, LABEL_SYNC_TAG_INVALIDATE, MAP_EVENT_TO_FUNCTION_TYPE, SANITY_FUNCTION_DOCUMENT, SANITY_FUNCTION_MEDIA_LIBRARY_ASSET, SANITY_FUNCTION_SCHEDULED, SANITY_FUNCTION_SYNC_TAG_INVALIDATE, } from '../../constants.js';
11
11
  import { check, indent, warn } from '../../utils/display/presenters.js';
12
12
  import { styleText } from '../../utils/style-text.js';
13
13
  import { validateFunctionName } from '../../utils/validate/resource.js';
14
14
  export const generateFunctionBlueprintResourceTemplate = (fnName, eventNames) => {
15
- const functionType = eventNames[0].substring(0, eventNames[0].lastIndexOf('-'));
15
+ const functionType = MAP_EVENT_TO_FUNCTION_TYPE[eventNames[0]];
16
16
  let definer = '';
17
17
  const eventOns = eventNames.map((e) => `'${e.substring(e.lastIndexOf('-') + 1)}'`);
18
18
  switch (functionType) {
19
- case 'document':
19
+ case SANITY_FUNCTION_DOCUMENT:
20
20
  definer = `defineDocumentFunction({name: '${fnName}', event: {on: [${eventOns.join(', ')}]}}), // ← add this line`;
21
21
  break;
22
- case 'media-library-asset':
22
+ case SANITY_FUNCTION_MEDIA_LIBRARY_ASSET:
23
23
  definer = `defineMediaLibraryAssetFunction({name: '${fnName}', event: {on: [${eventOns.join(', ')}], resource: {type: 'media-library', id: 'my-media-library-id'}}}), // ← add this line`;
24
24
  break;
25
- case 'scheduled':
25
+ case SANITY_FUNCTION_SCHEDULED:
26
26
  definer = `defineScheduledFunction({name: '${fnName}', event: {expression: '0 0 * * *'}}), // ← add this line`;
27
27
  break;
28
+ case SANITY_FUNCTION_SYNC_TAG_INVALIDATE:
29
+ definer = `defineSyncTagInvalidateFunction({name: '${fnName}'}), // ← add this line`;
30
+ break;
28
31
  }
29
32
  return `
30
33
  export default defineBlueprint({
@@ -154,7 +157,7 @@ export async function functionAddCore(options) {
154
157
  }
155
158
  const eventSources = new Set(fnTypes.map((t) => t.substring(0, t.lastIndexOf('-'))));
156
159
  if (eventSources.size > 1) {
157
- throw new Error('Invalid function type. Cannot mix document-*, media-library-asset-*, and/or scheduled-* types.');
160
+ throw new Error('Invalid function type. Cannot mix document-*, media-library-asset-*, sync-tag-* and/or scheduled-* types.');
158
161
  }
159
162
  let addHelpers;
160
163
  let installCommand;
@@ -238,6 +241,7 @@ async function promptForFunctionType() {
238
241
  { name: LABEL_MEDIA_LIBRARY_ASSET_CREATE, value: EVENT_MEDIA_LIBRARY_ASSET_CREATE },
239
242
  { name: LABEL_MEDIA_LIBRARY_ASSET_UPDATE, value: EVENT_MEDIA_LIBRARY_ASSET_UPDATE },
240
243
  { name: LABEL_MEDIA_LIBRARY_ASSET_DELETE, value: EVENT_MEDIA_LIBRARY_ASSET_DELETE },
244
+ { name: LABEL_SYNC_TAG_INVALIDATE, value: EVENT_SYNC_TAG_INVALIDATE },
241
245
  // {name: LABEL_SCHEDULED, value: EVENT_SCHEDULED},
242
246
  ],
243
247
  validate(choices) {
@@ -43,16 +43,14 @@ class RulePanel extends ApiBaseElement {
43
43
  break
44
44
  }
45
45
 
46
- if (func.event) {
47
- const transaction = rule.state.update({
48
- changes: {
49
- from: 0,
50
- insert: JSON.stringify(func.event, null, 2),
51
- to: rule.state.doc.length,
52
- },
53
- })
54
- rule.dispatch(transaction)
55
- }
46
+ const transaction = rule.state.update({
47
+ changes: {
48
+ from: 0,
49
+ insert: func.event ? JSON.stringify(func.event, null, 2) : '',
50
+ to: rule.state.doc.length,
51
+ },
52
+ })
53
+ rule.dispatch(transaction)
56
54
  }
57
55
 
58
56
  async connectedCallback() {