@notambourine/metafields 0.0.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.
- package/LICENSE +21 -0
- package/README.md +96 -0
- package/dist/admin.d.ts +34 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +303 -0
- package/dist/admin.js.map +1 -0
- package/dist/builders.d.ts +28 -0
- package/dist/builders.d.ts.map +1 -0
- package/dist/builders.js +103 -0
- package/dist/builders.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +244 -0
- package/dist/cli.js.map +1 -0
- package/dist/generator.d.ts +14 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +168 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +4 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +20 -0
- package/dist/loader.js.map +1 -0
- package/dist/migration.d.ts +62 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +265 -0
- package/dist/migration.js.map +1 -0
- package/dist/planner.d.ts +60 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +161 -0
- package/dist/planner.js.map +1 -0
- package/dist/pull.d.ts +11 -0
- package/dist/pull.d.ts.map +1 -0
- package/dist/pull.js +133 -0
- package/dist/pull.js.map +1 -0
- package/dist/schema.d.ts +58 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +232 -0
- package/dist/schema.js.map +1 -0
- package/dist/types.d.ts +145 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/package.json +46 -0
package/dist/pull.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { isReservedNamespace, OWNER_TYPES } from './schema.js';
|
|
2
|
+
export async function pullSchema(client, options) {
|
|
3
|
+
const metafields = [];
|
|
4
|
+
const excluded = [];
|
|
5
|
+
const seen = new Set();
|
|
6
|
+
for (const owner of options.owners) {
|
|
7
|
+
const namespaces = options.allNamespaces ? [undefined] : options.namespaces;
|
|
8
|
+
for (const namespace of namespaces) {
|
|
9
|
+
let after = null;
|
|
10
|
+
do {
|
|
11
|
+
const data = await client.request(METAFIELD_DEFINITIONS_QUERY, { ownerType: OWNER_TYPES[owner], namespace: namespace ?? null, after });
|
|
12
|
+
for (const raw of data.metafieldDefinitions.nodes) {
|
|
13
|
+
const identity = `${owner}:${raw.namespace}.${raw.key}`;
|
|
14
|
+
if (seen.has(identity))
|
|
15
|
+
continue;
|
|
16
|
+
seen.add(identity);
|
|
17
|
+
if (isReservedNamespace(raw.namespace)) {
|
|
18
|
+
excluded.push(identity);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
metafields.push({ owner, ...mapMetafield(raw) });
|
|
22
|
+
}
|
|
23
|
+
after = data.metafieldDefinitions.pageInfo.hasNextPage
|
|
24
|
+
? data.metafieldDefinitions.pageInfo.endCursor
|
|
25
|
+
: null;
|
|
26
|
+
} while (after);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const hasMetaobjectReferences = metafields.some((field) => {
|
|
30
|
+
const type = typeof field.type === 'string' ? field.type : field.type.name;
|
|
31
|
+
return type.endsWith('metaobject_reference') || type.endsWith('mixed_reference');
|
|
32
|
+
});
|
|
33
|
+
if (hasMetaobjectReferences && !options.metaobjects) {
|
|
34
|
+
throw new Error('selected metafields contain metaobject references; rerun pull with --metaobjects');
|
|
35
|
+
}
|
|
36
|
+
const metaobjects = [];
|
|
37
|
+
if (options.metaobjects) {
|
|
38
|
+
let after = null;
|
|
39
|
+
do {
|
|
40
|
+
const data = await client.request(METAOBJECT_DEFINITIONS_QUERY, { after });
|
|
41
|
+
for (const raw of data.metaobjectDefinitions.nodes) {
|
|
42
|
+
if (/^(app|shopify)--/i.test(raw.type)) {
|
|
43
|
+
excluded.push(`metaobject:${raw.type}`);
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
metaobjects.push(mapMetaobject(raw));
|
|
47
|
+
}
|
|
48
|
+
after = data.metaobjectDefinitions.pageInfo.hasNextPage
|
|
49
|
+
? data.metaobjectDefinitions.pageInfo.endCursor
|
|
50
|
+
: null;
|
|
51
|
+
} while (after);
|
|
52
|
+
}
|
|
53
|
+
return { metaobjects, metafields, excluded };
|
|
54
|
+
}
|
|
55
|
+
function mapField(value) {
|
|
56
|
+
return {
|
|
57
|
+
key: value.key,
|
|
58
|
+
name: value.name,
|
|
59
|
+
description: value.description,
|
|
60
|
+
type: value.type,
|
|
61
|
+
required: value.required,
|
|
62
|
+
validations: value.validations,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function mapMetafield(value) {
|
|
66
|
+
return {
|
|
67
|
+
...mapField(value),
|
|
68
|
+
namespace: value.namespace,
|
|
69
|
+
ownerType: value.ownerType,
|
|
70
|
+
access: value.access,
|
|
71
|
+
capabilities: Object.fromEntries(Object.entries(value.capabilities).map(([key, item]) => [key, item.enabled])),
|
|
72
|
+
constraints: value.constraints
|
|
73
|
+
? { key: value.constraints.key, values: value.constraints.values.nodes.map((item) => item.value) }
|
|
74
|
+
: null,
|
|
75
|
+
validationStatus: value.validationStatus,
|
|
76
|
+
invalidCount: value.invalidCount,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function mapMetaobject(value) {
|
|
80
|
+
return {
|
|
81
|
+
id: value.id,
|
|
82
|
+
type: value.type,
|
|
83
|
+
name: value.name,
|
|
84
|
+
description: value.description,
|
|
85
|
+
displayNameKey: value.displayNameKey,
|
|
86
|
+
access: value.access,
|
|
87
|
+
capabilities: {
|
|
88
|
+
publishable: value.capabilities.publishable.enabled,
|
|
89
|
+
translatable: value.capabilities.translatable.enabled,
|
|
90
|
+
},
|
|
91
|
+
fields: value.fieldDefinitions.map(mapField),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const METAFIELD_DEFINITIONS_QUERY = `
|
|
95
|
+
query PullMetafieldDefinitions(
|
|
96
|
+
$ownerType: MetafieldOwnerType!
|
|
97
|
+
$namespace: String
|
|
98
|
+
$after: String
|
|
99
|
+
) {
|
|
100
|
+
metafieldDefinitions(ownerType: $ownerType, namespace: $namespace, first: 100, after: $after) {
|
|
101
|
+
nodes {
|
|
102
|
+
namespace key ownerType name description type { name }
|
|
103
|
+
validations { name value }
|
|
104
|
+
access { admin storefront customerAccount }
|
|
105
|
+
capabilities {
|
|
106
|
+
adminFilterable { enabled }
|
|
107
|
+
analyticsQueryable { enabled }
|
|
108
|
+
cartToOrderCopyable { enabled }
|
|
109
|
+
smartCollectionCondition { enabled }
|
|
110
|
+
uniqueValues { enabled }
|
|
111
|
+
}
|
|
112
|
+
constraints { key values(first: 250) { nodes { value } } }
|
|
113
|
+
validationStatus
|
|
114
|
+
invalidCount: metafieldsCount(validationStatus: INVALID)
|
|
115
|
+
}
|
|
116
|
+
pageInfo { hasNextPage endCursor }
|
|
117
|
+
}
|
|
118
|
+
}`;
|
|
119
|
+
const METAOBJECT_DEFINITIONS_QUERY = `
|
|
120
|
+
query PullMetaobjectDefinitions($after: String) {
|
|
121
|
+
metaobjectDefinitions(first: 100, after: $after) {
|
|
122
|
+
nodes {
|
|
123
|
+
id type name description displayNameKey
|
|
124
|
+
access { admin storefront }
|
|
125
|
+
capabilities { publishable { enabled } translatable { enabled } }
|
|
126
|
+
fieldDefinitions {
|
|
127
|
+
key name description type { name } required validations { name value }
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
pageInfo { hasNextPage endCursor }
|
|
131
|
+
}
|
|
132
|
+
}`;
|
|
133
|
+
//# sourceMappingURL=pull.js.map
|
package/dist/pull.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../src/pull.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type Validation } from './types.js';
|
|
2
|
+
export { SCHEMA_MARKER } from './types.js';
|
|
3
|
+
export declare const OWNER_TYPES: {
|
|
4
|
+
readonly article: "ARTICLE";
|
|
5
|
+
readonly blog: "BLOG";
|
|
6
|
+
readonly collection: "COLLECTION";
|
|
7
|
+
readonly company: "COMPANY";
|
|
8
|
+
readonly company_location: "COMPANY_LOCATION";
|
|
9
|
+
readonly customer: "CUSTOMER";
|
|
10
|
+
readonly draft_order: "DRAFTORDER";
|
|
11
|
+
readonly location: "LOCATION";
|
|
12
|
+
readonly order: "ORDER";
|
|
13
|
+
readonly page: "PAGE";
|
|
14
|
+
readonly product: "PRODUCT";
|
|
15
|
+
readonly product_variant: "PRODUCTVARIANT";
|
|
16
|
+
readonly shop: "SHOP";
|
|
17
|
+
};
|
|
18
|
+
export type Owner = keyof typeof OWNER_TYPES;
|
|
19
|
+
export interface CanonicalField {
|
|
20
|
+
key: string;
|
|
21
|
+
name: string;
|
|
22
|
+
type: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
required?: boolean;
|
|
25
|
+
validations: Validation[];
|
|
26
|
+
access?: Record<string, string>;
|
|
27
|
+
capabilities?: Record<string, boolean>;
|
|
28
|
+
constraints?: {
|
|
29
|
+
key: string;
|
|
30
|
+
values: string[];
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export interface CanonicalMetaobject {
|
|
34
|
+
kind: 'metaobject';
|
|
35
|
+
type: string;
|
|
36
|
+
name: string;
|
|
37
|
+
description?: string;
|
|
38
|
+
displayNameKey?: string;
|
|
39
|
+
access?: Record<string, string>;
|
|
40
|
+
capabilities?: Record<string, boolean>;
|
|
41
|
+
fields: CanonicalField[];
|
|
42
|
+
}
|
|
43
|
+
export interface CanonicalMetafield extends CanonicalField {
|
|
44
|
+
kind: 'metafield';
|
|
45
|
+
owner: Owner;
|
|
46
|
+
ownerType: string;
|
|
47
|
+
namespace: string;
|
|
48
|
+
}
|
|
49
|
+
export interface CompiledSchema {
|
|
50
|
+
format: '@notambourine/metafields/schema-v1';
|
|
51
|
+
metaobjects: CanonicalMetaobject[];
|
|
52
|
+
metafields: CanonicalMetafield[];
|
|
53
|
+
}
|
|
54
|
+
export declare function isReservedNamespace(namespace: string): boolean;
|
|
55
|
+
export declare function compileSchema(value: unknown): CompiledSchema;
|
|
56
|
+
export declare function assertCompiledSchema(value: unknown): asserts value is CompiledSchema;
|
|
57
|
+
export declare function stringifyCanonical(value: unknown): string;
|
|
58
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;CAcd,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,MAAM,OAAO,WAAW,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACjD;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,oCAAoC,CAAC;IAC7C,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAsBD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAI9D;AAmED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAqF5D;AAuBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAKpF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEzD"}
|
package/dist/schema.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { FIELD_MARKER, METAOBJECT_MARKER, SCHEMA_MARKER, } from './types.js';
|
|
2
|
+
export { SCHEMA_MARKER } from './types.js';
|
|
3
|
+
export const OWNER_TYPES = {
|
|
4
|
+
article: 'ARTICLE',
|
|
5
|
+
blog: 'BLOG',
|
|
6
|
+
collection: 'COLLECTION',
|
|
7
|
+
company: 'COMPANY',
|
|
8
|
+
company_location: 'COMPANY_LOCATION',
|
|
9
|
+
customer: 'CUSTOMER',
|
|
10
|
+
draft_order: 'DRAFTORDER',
|
|
11
|
+
location: 'LOCATION',
|
|
12
|
+
order: 'ORDER',
|
|
13
|
+
page: 'PAGE',
|
|
14
|
+
product: 'PRODUCT',
|
|
15
|
+
product_variant: 'PRODUCTVARIANT',
|
|
16
|
+
shop: 'SHOP',
|
|
17
|
+
};
|
|
18
|
+
const keyPattern = /^[A-Za-z0-9_-]+$/;
|
|
19
|
+
function fail(path, message) {
|
|
20
|
+
throw new Error(`${path}: ${message}`);
|
|
21
|
+
}
|
|
22
|
+
function record(value) {
|
|
23
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
24
|
+
}
|
|
25
|
+
function humanize(key) {
|
|
26
|
+
return key.replaceAll('_', ' ').replaceAll('-', ' ').replace(/^./, (value) => value.toUpperCase());
|
|
27
|
+
}
|
|
28
|
+
function validateKey(key, path, min, max) {
|
|
29
|
+
if (key.length < min || key.length > max || !keyPattern.test(key)) {
|
|
30
|
+
fail(path, `must be ${min}-${max} alphanumeric, hyphen, or underscore characters`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function isReservedNamespace(namespace) {
|
|
34
|
+
const value = namespace.toLowerCase();
|
|
35
|
+
return value === 'app' || value === '$app' || value.startsWith('app--') ||
|
|
36
|
+
value === 'shopify' || value.startsWith('shopify--');
|
|
37
|
+
}
|
|
38
|
+
function normalizeAccess(value, path) {
|
|
39
|
+
if (value === undefined)
|
|
40
|
+
return undefined;
|
|
41
|
+
if (!record(value))
|
|
42
|
+
fail(path, 'must be an object');
|
|
43
|
+
const result = {};
|
|
44
|
+
for (const [key, setting] of Object.entries(value)) {
|
|
45
|
+
if (typeof setting !== 'string')
|
|
46
|
+
fail(`${path}.${key}`, 'must be a string');
|
|
47
|
+
result[key] = setting.toUpperCase();
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
function normalizeCapabilities(value, path) {
|
|
52
|
+
if (value === undefined)
|
|
53
|
+
return undefined;
|
|
54
|
+
if (!record(value))
|
|
55
|
+
fail(path, 'must be an object');
|
|
56
|
+
const result = {};
|
|
57
|
+
for (const [key, setting] of Object.entries(value)) {
|
|
58
|
+
if (typeof setting !== 'boolean')
|
|
59
|
+
fail(`${path}.${key}`, 'must be a boolean');
|
|
60
|
+
result[key] = setting;
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
function normalizeField(field, key, path) {
|
|
65
|
+
if (!record(field) || field.__kind !== FIELD_MARKER)
|
|
66
|
+
fail(path, 'must be created with field.*()');
|
|
67
|
+
if (typeof field.type !== 'string')
|
|
68
|
+
fail(`${path}.type`, 'must be a string');
|
|
69
|
+
if (!record(field.options))
|
|
70
|
+
fail(`${path}.options`, 'must be an object');
|
|
71
|
+
if (!Array.isArray(field.validations))
|
|
72
|
+
fail(`${path}.validations`, 'must be an array');
|
|
73
|
+
validateKey(key, path, 2, 64);
|
|
74
|
+
const options = field.options;
|
|
75
|
+
const normalized = {
|
|
76
|
+
key,
|
|
77
|
+
name: typeof options.name === 'string' ? options.name : humanize(key),
|
|
78
|
+
type: field.type,
|
|
79
|
+
validations: field.validations.map((item, index) => {
|
|
80
|
+
if (!record(item) || typeof item.name !== 'string' || typeof item.value !== 'string') {
|
|
81
|
+
fail(`${path}.validations[${index}]`, 'must contain string name and value');
|
|
82
|
+
}
|
|
83
|
+
return { name: item.name, value: item.value };
|
|
84
|
+
}),
|
|
85
|
+
};
|
|
86
|
+
if (typeof options.description === 'string')
|
|
87
|
+
normalized.description = options.description;
|
|
88
|
+
if (options.required === true)
|
|
89
|
+
normalized.required = true;
|
|
90
|
+
const access = normalizeAccess(options.access, `${path}.access`);
|
|
91
|
+
if (access)
|
|
92
|
+
normalized.access = access;
|
|
93
|
+
const capabilities = {};
|
|
94
|
+
for (const key of [
|
|
95
|
+
'adminFilterable', 'analyticsQueryable', 'cartToOrderCopyable', 'smartCollectionCondition', 'uniqueValues',
|
|
96
|
+
]) {
|
|
97
|
+
if (typeof options[key] === 'boolean')
|
|
98
|
+
capabilities[key] = options[key];
|
|
99
|
+
}
|
|
100
|
+
if (Object.keys(capabilities).length > 0)
|
|
101
|
+
normalized.capabilities = capabilities;
|
|
102
|
+
if (options.constraints !== undefined) {
|
|
103
|
+
if (!record(options.constraints) || typeof options.constraints.key !== 'string' ||
|
|
104
|
+
!Array.isArray(options.constraints.values) ||
|
|
105
|
+
!options.constraints.values.every((item) => typeof item === 'string')) {
|
|
106
|
+
fail(`${path}.constraints`, 'must contain a string key and string values');
|
|
107
|
+
}
|
|
108
|
+
normalized.constraints = {
|
|
109
|
+
key: options.constraints.key,
|
|
110
|
+
values: [...options.constraints.values].sort(),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
return normalized;
|
|
114
|
+
}
|
|
115
|
+
export function compileSchema(value) {
|
|
116
|
+
if (!record(value) || value.__kind !== SCHEMA_MARKER) {
|
|
117
|
+
fail('default export', 'must be a schema created with defineSchema()');
|
|
118
|
+
}
|
|
119
|
+
if (!record(value.metaobjects))
|
|
120
|
+
fail('schema.metaobjects', 'must be an object');
|
|
121
|
+
if (!record(value.metafields))
|
|
122
|
+
fail('schema.metafields', 'must be an object');
|
|
123
|
+
const metaobjectKeys = new Set(Object.keys(value.metaobjects));
|
|
124
|
+
const metaobjects = [];
|
|
125
|
+
const metaobjectDependencies = new Map();
|
|
126
|
+
for (const [type, rawDefinition] of Object.entries(value.metaobjects).sort(([a], [b]) => a.localeCompare(b))) {
|
|
127
|
+
const path = `schema.metaobjects.${type}`;
|
|
128
|
+
validateKey(type, path, 3, 255);
|
|
129
|
+
if (!record(rawDefinition) || rawDefinition.__kind !== METAOBJECT_MARKER) {
|
|
130
|
+
fail(path, 'must be created with metaobject()');
|
|
131
|
+
}
|
|
132
|
+
if (typeof rawDefinition.name !== 'string' || rawDefinition.name.length === 0) {
|
|
133
|
+
fail(`${path}.name`, 'must be a non-empty string');
|
|
134
|
+
}
|
|
135
|
+
if (!record(rawDefinition.fields) || Object.keys(rawDefinition.fields).length === 0) {
|
|
136
|
+
fail(`${path}.fields`, 'must contain at least one field');
|
|
137
|
+
}
|
|
138
|
+
if (rawDefinition.displayNameKey !== undefined &&
|
|
139
|
+
(typeof rawDefinition.displayNameKey !== 'string' || !(rawDefinition.displayNameKey in rawDefinition.fields))) {
|
|
140
|
+
fail(`${path}.displayNameKey`, 'must name a declared field');
|
|
141
|
+
}
|
|
142
|
+
const dependencies = new Set();
|
|
143
|
+
for (const [fieldKey, rawField] of Object.entries(rawDefinition.fields)) {
|
|
144
|
+
if (record(rawField) && Array.isArray(rawField.targets)) {
|
|
145
|
+
for (const target of rawField.targets) {
|
|
146
|
+
if (typeof target !== 'string' || !metaobjectKeys.has(target)) {
|
|
147
|
+
fail(`${path}.fields.${fieldKey}`, `references undeclared metaobject ${String(target)}`);
|
|
148
|
+
}
|
|
149
|
+
dependencies.add(target);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
metaobjectDependencies.set(type, dependencies);
|
|
154
|
+
const definition = {
|
|
155
|
+
kind: 'metaobject',
|
|
156
|
+
type,
|
|
157
|
+
name: rawDefinition.name,
|
|
158
|
+
fields: Object.entries(rawDefinition.fields)
|
|
159
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
160
|
+
.map(([key, field]) => normalizeField(field, key, `${path}.fields.${key}`)),
|
|
161
|
+
};
|
|
162
|
+
if (typeof rawDefinition.description === 'string')
|
|
163
|
+
definition.description = rawDefinition.description;
|
|
164
|
+
if (typeof rawDefinition.displayNameKey === 'string')
|
|
165
|
+
definition.displayNameKey = rawDefinition.displayNameKey;
|
|
166
|
+
const access = normalizeAccess(rawDefinition.access, `${path}.access`);
|
|
167
|
+
if (access)
|
|
168
|
+
definition.access = access;
|
|
169
|
+
const capabilities = normalizeCapabilities(rawDefinition.capabilities, `${path}.capabilities`);
|
|
170
|
+
if (capabilities)
|
|
171
|
+
definition.capabilities = capabilities;
|
|
172
|
+
metaobjects.push(definition);
|
|
173
|
+
}
|
|
174
|
+
const orderedMetaobjects = dependencyOrder(metaobjects, metaobjectDependencies);
|
|
175
|
+
const metafields = [];
|
|
176
|
+
for (const [owner, rawNamespaces] of Object.entries(value.metafields).sort(([a], [b]) => a.localeCompare(b))) {
|
|
177
|
+
if (!(owner in OWNER_TYPES))
|
|
178
|
+
fail(`schema.metafields.${owner}`, 'uses an unsupported owner type');
|
|
179
|
+
if (!record(rawNamespaces))
|
|
180
|
+
fail(`schema.metafields.${owner}`, 'must be an object');
|
|
181
|
+
for (const [namespace, rawFields] of Object.entries(rawNamespaces).sort(([a], [b]) => a.localeCompare(b))) {
|
|
182
|
+
const namespacePath = `schema.metafields.${owner}.${namespace}`;
|
|
183
|
+
validateKey(namespace, namespacePath, 3, 255);
|
|
184
|
+
if (isReservedNamespace(namespace))
|
|
185
|
+
fail(namespacePath, 'uses a reserved namespace');
|
|
186
|
+
if (!record(rawFields))
|
|
187
|
+
fail(namespacePath, 'must be an object');
|
|
188
|
+
for (const [key, field] of Object.entries(rawFields).sort(([a], [b]) => a.localeCompare(b))) {
|
|
189
|
+
const normalized = normalizeField(field, key, `${namespacePath}.${key}`);
|
|
190
|
+
const targets = record(field) && Array.isArray(field.targets) ? field.targets : [];
|
|
191
|
+
for (const target of targets) {
|
|
192
|
+
if (typeof target !== 'string' || !metaobjectKeys.has(target)) {
|
|
193
|
+
fail(`${namespacePath}.${key}`, `references undeclared metaobject ${String(target)}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
metafields.push({
|
|
197
|
+
kind: 'metafield',
|
|
198
|
+
owner: owner,
|
|
199
|
+
ownerType: OWNER_TYPES[owner],
|
|
200
|
+
namespace,
|
|
201
|
+
...normalized,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return { format: '@notambourine/metafields/schema-v1', metaobjects: orderedMetaobjects, metafields };
|
|
207
|
+
}
|
|
208
|
+
function dependencyOrder(definitions, dependencies) {
|
|
209
|
+
const remaining = new Map(definitions.map((definition) => [definition.type, definition]));
|
|
210
|
+
const result = [];
|
|
211
|
+
while (remaining.size > 0) {
|
|
212
|
+
const ready = [...remaining.keys()].filter((type) => [...(dependencies.get(type) ?? [])].every((target) => !remaining.has(target))).sort();
|
|
213
|
+
if (ready.length === 0) {
|
|
214
|
+
throw new Error(`metaobject references contain a creation cycle: ${[...remaining.keys()].sort().join(', ')}`);
|
|
215
|
+
}
|
|
216
|
+
for (const type of ready) {
|
|
217
|
+
result.push(remaining.get(type));
|
|
218
|
+
remaining.delete(type);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
export function assertCompiledSchema(value) {
|
|
224
|
+
if (!record(value) || value.format !== '@notambourine/metafields/schema-v1' ||
|
|
225
|
+
!Array.isArray(value.metaobjects) || !Array.isArray(value.metafields)) {
|
|
226
|
+
throw new Error('compiled input is not a @notambourine/metafields schema-v1 artifact');
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
export function stringifyCanonical(value) {
|
|
230
|
+
return `${JSON.stringify(value, null, 2)}\n`;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export declare const FIELD_MARKER: "@notambourine/metafields/field";
|
|
2
|
+
export declare const METAOBJECT_MARKER: "@notambourine/metafields/metaobject";
|
|
3
|
+
export declare const SCHEMA_MARKER: "@notambourine/metafields/schema";
|
|
4
|
+
declare const brand: unique symbol;
|
|
5
|
+
export type Decimal = string & {
|
|
6
|
+
readonly [brand]: 'Decimal';
|
|
7
|
+
};
|
|
8
|
+
export type Url = string & {
|
|
9
|
+
readonly [brand]: 'Url';
|
|
10
|
+
};
|
|
11
|
+
export type RichText = object & {
|
|
12
|
+
readonly [brand]: 'RichText';
|
|
13
|
+
};
|
|
14
|
+
export type ProductReference = string & {
|
|
15
|
+
readonly [brand]: 'ProductReference';
|
|
16
|
+
};
|
|
17
|
+
export type VariantReference = string & {
|
|
18
|
+
readonly [brand]: 'VariantReference';
|
|
19
|
+
};
|
|
20
|
+
export type CollectionReference = string & {
|
|
21
|
+
readonly [brand]: 'CollectionReference';
|
|
22
|
+
};
|
|
23
|
+
export type FileReference = string & {
|
|
24
|
+
readonly [brand]: 'FileReference';
|
|
25
|
+
};
|
|
26
|
+
export type MetaobjectReference<Key extends string> = string & {
|
|
27
|
+
readonly [brand]: 'MetaobjectReference';
|
|
28
|
+
readonly __metaobjectType?: Key;
|
|
29
|
+
};
|
|
30
|
+
export interface Validation {
|
|
31
|
+
readonly name: string;
|
|
32
|
+
readonly value: string;
|
|
33
|
+
}
|
|
34
|
+
export interface FieldOptions {
|
|
35
|
+
readonly name?: string;
|
|
36
|
+
readonly description?: string;
|
|
37
|
+
readonly required?: boolean;
|
|
38
|
+
readonly access?: {
|
|
39
|
+
readonly admin?: 'merchant_read' | 'merchant_read_write';
|
|
40
|
+
readonly storefront?: 'none' | 'public_read';
|
|
41
|
+
};
|
|
42
|
+
readonly adminFilterable?: boolean;
|
|
43
|
+
readonly analyticsQueryable?: boolean;
|
|
44
|
+
readonly cartToOrderCopyable?: boolean;
|
|
45
|
+
readonly smartCollectionCondition?: boolean;
|
|
46
|
+
readonly uniqueValues?: boolean;
|
|
47
|
+
readonly constraints?: {
|
|
48
|
+
readonly key: string;
|
|
49
|
+
readonly values: readonly string[];
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export interface TextOptions extends FieldOptions {
|
|
53
|
+
readonly min?: number;
|
|
54
|
+
readonly max?: number;
|
|
55
|
+
readonly regex?: string;
|
|
56
|
+
readonly choices?: readonly string[];
|
|
57
|
+
}
|
|
58
|
+
export interface NumberOptions extends FieldOptions {
|
|
59
|
+
readonly min?: number | string;
|
|
60
|
+
readonly max?: number | string;
|
|
61
|
+
}
|
|
62
|
+
export interface JsonOptions extends FieldOptions {
|
|
63
|
+
readonly schema?: object;
|
|
64
|
+
}
|
|
65
|
+
export interface ListOptions extends FieldOptions {
|
|
66
|
+
readonly min?: number;
|
|
67
|
+
readonly max?: number;
|
|
68
|
+
}
|
|
69
|
+
export interface FieldDefinition<Value = unknown, Required extends boolean = boolean, Targets extends string = never> {
|
|
70
|
+
readonly __kind: typeof FIELD_MARKER;
|
|
71
|
+
readonly type: string;
|
|
72
|
+
readonly options: FieldOptions;
|
|
73
|
+
readonly validations: readonly Validation[];
|
|
74
|
+
readonly targets: readonly Targets[];
|
|
75
|
+
readonly identity?: {
|
|
76
|
+
readonly owner: string;
|
|
77
|
+
readonly namespace: string;
|
|
78
|
+
readonly key: string;
|
|
79
|
+
};
|
|
80
|
+
readonly __value?: Value;
|
|
81
|
+
readonly __required?: Required;
|
|
82
|
+
}
|
|
83
|
+
export type Fields = Readonly<Record<string, FieldDefinition<any, any, any>>>;
|
|
84
|
+
export interface MetaobjectOptions<F extends Fields = Fields> {
|
|
85
|
+
readonly name: string;
|
|
86
|
+
readonly description?: string;
|
|
87
|
+
readonly displayNameKey?: keyof F & string;
|
|
88
|
+
readonly access?: {
|
|
89
|
+
readonly admin?: 'merchant_read' | 'merchant_read_write';
|
|
90
|
+
readonly storefront?: 'none' | 'public_read';
|
|
91
|
+
};
|
|
92
|
+
readonly capabilities?: {
|
|
93
|
+
readonly publishable?: boolean;
|
|
94
|
+
readonly translatable?: boolean;
|
|
95
|
+
};
|
|
96
|
+
readonly fields: F;
|
|
97
|
+
}
|
|
98
|
+
export interface MetaobjectDefinition<F extends Fields = Fields> extends MetaobjectOptions<F> {
|
|
99
|
+
readonly __kind: typeof METAOBJECT_MARKER;
|
|
100
|
+
}
|
|
101
|
+
export type Metaobjects = Readonly<Record<string, MetaobjectDefinition<any>>>;
|
|
102
|
+
export type Metafields = Readonly<Record<string, Readonly<Record<string, Readonly<Record<string, FieldDefinition<any, any, any>>>>>>>;
|
|
103
|
+
export interface SchemaDefinition<M extends Metaobjects = Metaobjects, F extends Metafields = Metafields> {
|
|
104
|
+
readonly __kind: typeof SCHEMA_MARKER;
|
|
105
|
+
readonly metaobjects: M;
|
|
106
|
+
readonly metafields: F;
|
|
107
|
+
}
|
|
108
|
+
type FieldValue<F> = F extends FieldDefinition<infer V, infer _R, infer _T> ? V : never;
|
|
109
|
+
type IsRequired<F> = F extends FieldDefinition<infer _V, infer R, infer _T> ? R : false;
|
|
110
|
+
type RequiredKeys<F extends Fields> = {
|
|
111
|
+
[K in keyof F]-?: IsRequired<F[K]> extends true ? K : never;
|
|
112
|
+
}[keyof F];
|
|
113
|
+
type OptionalKeys<F extends Fields> = Exclude<keyof F, RequiredKeys<F>>;
|
|
114
|
+
export type InferFields<F extends Fields> = {
|
|
115
|
+
[K in RequiredKeys<F>]: FieldValue<F[K]>;
|
|
116
|
+
} & {
|
|
117
|
+
[K in OptionalKeys<F>]?: FieldValue<F[K]>;
|
|
118
|
+
};
|
|
119
|
+
export type InferMetaobjects<S extends SchemaDefinition> = {
|
|
120
|
+
[K in keyof S['metaobjects']]: InferFields<S['metaobjects'][K]['fields']>;
|
|
121
|
+
};
|
|
122
|
+
export type InferMetafields<S extends SchemaDefinition> = {
|
|
123
|
+
[O in keyof S['metafields']]: {
|
|
124
|
+
[N in keyof S['metafields'][O]]: {
|
|
125
|
+
[K in keyof S['metafields'][O][N]]?: FieldValue<S['metafields'][O][N][K]>;
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
type ValidReference<F, Keys extends PropertyKey> = F extends FieldDefinition<infer _V, infer _R, infer Targets> ? Exclude<Targets, Keys> extends never ? F : never : never;
|
|
130
|
+
export type ValidMetafields<F extends Metafields, Keys extends PropertyKey> = {
|
|
131
|
+
[O in keyof F]: {
|
|
132
|
+
[N in keyof F[O]]: {
|
|
133
|
+
[K in keyof F[O][N]]: ValidReference<F[O][N][K], Keys>;
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
export type ValidMetaobjects<M extends Metaobjects, Keys extends PropertyKey> = {
|
|
138
|
+
[K in keyof M]: Omit<M[K], 'fields'> & {
|
|
139
|
+
readonly fields: {
|
|
140
|
+
[F in keyof M[K]['fields']]: ValidReference<M[K]['fields'][F], Keys>;
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
export {};
|
|
145
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,gCAAyC,CAAC;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,qCAA8C,CAAC;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,iCAA0C,CAAC"}
|