@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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +96 -0
  3. package/dist/admin.d.ts +34 -0
  4. package/dist/admin.d.ts.map +1 -0
  5. package/dist/admin.js +303 -0
  6. package/dist/admin.js.map +1 -0
  7. package/dist/builders.d.ts +28 -0
  8. package/dist/builders.d.ts.map +1 -0
  9. package/dist/builders.js +103 -0
  10. package/dist/builders.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +244 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/generator.d.ts +14 -0
  16. package/dist/generator.d.ts.map +1 -0
  17. package/dist/generator.js +168 -0
  18. package/dist/generator.js.map +1 -0
  19. package/dist/index.d.ts +11 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +7 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/loader.d.ts +4 -0
  24. package/dist/loader.d.ts.map +1 -0
  25. package/dist/loader.js +20 -0
  26. package/dist/loader.js.map +1 -0
  27. package/dist/migration.d.ts +62 -0
  28. package/dist/migration.d.ts.map +1 -0
  29. package/dist/migration.js +265 -0
  30. package/dist/migration.js.map +1 -0
  31. package/dist/planner.d.ts +60 -0
  32. package/dist/planner.d.ts.map +1 -0
  33. package/dist/planner.js +161 -0
  34. package/dist/planner.js.map +1 -0
  35. package/dist/pull.d.ts +11 -0
  36. package/dist/pull.d.ts.map +1 -0
  37. package/dist/pull.js +133 -0
  38. package/dist/pull.js.map +1 -0
  39. package/dist/schema.d.ts +58 -0
  40. package/dist/schema.d.ts.map +1 -0
  41. package/dist/schema.js +232 -0
  42. package/dist/schema.js.map +1 -0
  43. package/dist/types.d.ts +145 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +4 -0
  46. package/dist/types.js.map +1 -0
  47. package/package.json +46 -0
package/dist/cli.js ADDED
@@ -0,0 +1,244 @@
1
+ #!/usr/bin/env node
2
+ import { open, readFile } from 'node:fs/promises';
3
+ import { resolve } from 'node:path';
4
+ import { AdminClient, DEFAULT_API_VERSION, synchronize } from './admin.js';
5
+ import { generateSchemaModule } from './generator.js';
6
+ import { loadDefault, loadSchema } from './loader.js';
7
+ import { assertCompiledMigration, compileMigration, migrationExitCode, MIGRATION_MARKER, runMigration, } from './migration.js';
8
+ import { exitCodeForPlan } from './planner.js';
9
+ import { pullSchema } from './pull.js';
10
+ import { compileSchema, OWNER_TYPES, SCHEMA_MARKER, stringifyCanonical } from './schema.js';
11
+ const valueOptions = new Set(['store', 'api-version', 'owner', 'namespace', 'out']);
12
+ const booleanOptions = new Set([
13
+ 'apply', 'check', 'json', 'validate', 'metaobjects', 'all-owners', 'all-namespaces', 'help', 'version',
14
+ ]);
15
+ async function main(argv) {
16
+ const args = parseArguments(argv);
17
+ if (args.command === 'help' || args.flags.has('help')) {
18
+ process.stdout.write(HELP);
19
+ return 0;
20
+ }
21
+ if (args.command === 'version' || args.flags.has('version')) {
22
+ process.stdout.write('0.0.1\n');
23
+ return 0;
24
+ }
25
+ if (args.flags.has('apply') && args.flags.has('check')) {
26
+ throw new Error('--apply and --check are mutually exclusive');
27
+ }
28
+ if (args.command === 'compile')
29
+ return compileCommand(args);
30
+ if (args.command === 'pull')
31
+ return pullCommand(args);
32
+ if (args.command === 'migrate')
33
+ return migrateCommand(args);
34
+ return syncCommand(args);
35
+ }
36
+ async function syncCommand(args) {
37
+ const path = onlyPositional(args, 'schema module');
38
+ const schema = await loadSchema(path);
39
+ if (args.flags.has('validate')) {
40
+ output(args, { status: 'valid', metaobjects: schema.metaobjects.length, metafields: schema.metafields.length }, `VALID ${schema.metaobjects.length} metaobject definition(s), ${schema.metafields.length} metafield definition(s)\n`);
41
+ return 0;
42
+ }
43
+ const mode = modeFrom(args);
44
+ const client = clientFrom(args);
45
+ const result = await synchronize(client, schema, mode);
46
+ const code = exitCodeForPlan(result.plan, mode);
47
+ output(args, { mode, ...result }, renderPlan(result.plan, result.applied));
48
+ return code;
49
+ }
50
+ async function pullCommand(args) {
51
+ if (args.positional.length > 0)
52
+ throw new Error('pull accepts no positional arguments');
53
+ const allOwners = args.flags.has('all-owners');
54
+ const ownerValues = values(args, 'owner');
55
+ if (allOwners && ownerValues.length > 0)
56
+ throw new Error('--all-owners and --owner are mutually exclusive');
57
+ if (!allOwners && ownerValues.length === 0)
58
+ throw new Error('pull requires --owner or --all-owners');
59
+ const owners = (allOwners ? Object.keys(OWNER_TYPES) : ownerValues);
60
+ for (const owner of owners)
61
+ if (!(owner in OWNER_TYPES))
62
+ throw new Error(`unsupported owner: ${owner}`);
63
+ const allNamespaces = args.flags.has('all-namespaces');
64
+ const namespaces = values(args, 'namespace');
65
+ if (allNamespaces && namespaces.length > 0)
66
+ throw new Error('--all-namespaces and --namespace are mutually exclusive');
67
+ if (!allNamespaces && namespaces.length === 0)
68
+ throw new Error('pull requires --namespace or --all-namespaces');
69
+ const pulled = await pullSchema(clientFrom(args), {
70
+ owners,
71
+ namespaces,
72
+ allNamespaces,
73
+ metaobjects: args.flags.has('metaobjects'),
74
+ });
75
+ const generated = generateSchemaModule(pulled);
76
+ const out = oneValue(args, 'out', false);
77
+ if (out) {
78
+ const handle = await open(resolve(process.cwd(), out), 'wx');
79
+ await handle.writeFile(generated);
80
+ await handle.close();
81
+ output(args, { status: 'written', out, excluded: pulled.excluded }, `WROTE ${out}\n`);
82
+ }
83
+ else if (args.flags.has('json')) {
84
+ output(args, { schema: generated, excluded: pulled.excluded }, '');
85
+ }
86
+ else {
87
+ process.stdout.write(generated);
88
+ for (const identity of pulled.excluded)
89
+ process.stderr.write(`EXCLUDED ${identity}\n`);
90
+ }
91
+ return 0;
92
+ }
93
+ async function compileCommand(args) {
94
+ const path = onlyPositional(args, 'schema or migration module');
95
+ const value = await loadDefault(path);
96
+ let compiled;
97
+ if (isRecord(value) && value.__kind === SCHEMA_MARKER)
98
+ compiled = compileSchema(value);
99
+ else if (isRecord(value) && value.__kind === MIGRATION_MARKER)
100
+ compiled = compileMigration(value);
101
+ else
102
+ throw new Error('default export is neither a schema nor a migration declaration');
103
+ const text = stringifyCanonical(compiled);
104
+ const out = oneValue(args, 'out', false);
105
+ if (out) {
106
+ const handle = await open(resolve(process.cwd(), out), 'wx');
107
+ await handle.writeFile(text);
108
+ await handle.close();
109
+ process.stdout.write(`WROTE ${out}\n`);
110
+ }
111
+ else {
112
+ process.stdout.write(text);
113
+ }
114
+ return 0;
115
+ }
116
+ async function migrateCommand(args) {
117
+ const path = onlyPositional(args, 'compiled migration');
118
+ const migration = JSON.parse(await readFile(resolve(process.cwd(), path), 'utf8'));
119
+ assertCompiledMigration(migration);
120
+ const mode = modeFrom(args);
121
+ const result = await runMigration(clientFrom(args), migration, mode);
122
+ output(args, { mode, ...result }, [
123
+ `MIGRATION ${result.id}`,
124
+ `source=${result.source} pending=${result.pending} equal=${result.equal}`,
125
+ `invalid=${result.invalid} conflicts=${result.conflicts} applied=${result.applied}`,
126
+ '',
127
+ ].join('\n'));
128
+ return migrationExitCode(result, mode);
129
+ }
130
+ function parseArguments(argv) {
131
+ const values = new Map();
132
+ const flags = new Set();
133
+ const positional = [];
134
+ let command = 'sync';
135
+ const rest = [...argv];
136
+ const first = rest[0];
137
+ if (first && ['sync', 'pull', 'compile', 'migrate', 'help', 'version'].includes(first)) {
138
+ command = rest.shift();
139
+ }
140
+ while (rest.length > 0) {
141
+ const argument = rest.shift();
142
+ if (!argument)
143
+ break;
144
+ if (!argument.startsWith('--')) {
145
+ positional.push(argument);
146
+ continue;
147
+ }
148
+ const [rawName, inline] = argument.slice(2).split('=', 2);
149
+ if (!rawName)
150
+ throw new Error(`invalid option: ${argument}`);
151
+ if (valueOptions.has(rawName)) {
152
+ const value = inline ?? rest.shift();
153
+ if (!value || value.startsWith('--'))
154
+ throw new Error(`--${rawName} requires a value`);
155
+ values.set(rawName, [...(values.get(rawName) ?? []), value]);
156
+ }
157
+ else if (booleanOptions.has(rawName)) {
158
+ if (inline !== undefined)
159
+ throw new Error(`--${rawName} does not accept a value`);
160
+ flags.add(rawName);
161
+ }
162
+ else {
163
+ throw new Error(`unknown option: --${rawName}`);
164
+ }
165
+ }
166
+ return { command, positional, values, flags };
167
+ }
168
+ function modeFrom(args) {
169
+ if (args.flags.has('apply'))
170
+ return 'apply';
171
+ if (args.flags.has('check'))
172
+ return 'check';
173
+ return 'dry-run';
174
+ }
175
+ function clientFrom(args) {
176
+ const store = oneValue(args, 'store', true);
177
+ const token = process.env.SHOPIFY_ADMIN_ACCESS_TOKEN ?? '';
178
+ return new AdminClient({
179
+ store,
180
+ token,
181
+ apiVersion: oneValue(args, 'api-version', false) ?? DEFAULT_API_VERSION,
182
+ });
183
+ }
184
+ function values(args, name) {
185
+ return args.values.get(name) ?? [];
186
+ }
187
+ function oneValue(args, name, required) {
188
+ const found = values(args, name);
189
+ if (found.length > 1)
190
+ throw new Error(`--${name} may be specified only once`);
191
+ if (required && found.length === 0)
192
+ throw new Error(`--${name} is required`);
193
+ return found[0];
194
+ }
195
+ function onlyPositional(args, label) {
196
+ if (args.positional.length !== 1)
197
+ throw new Error(`${args.command} requires exactly one ${label}`);
198
+ return args.positional[0];
199
+ }
200
+ function output(args, json, text) {
201
+ process.stdout.write(args.flags.has('json') ? stringifyCanonical(json) : text);
202
+ }
203
+ function renderPlan(plan, applied) {
204
+ const lines = [];
205
+ for (const item of plan.items) {
206
+ lines.push(`${item.status} ${item.identity}`);
207
+ for (const reason of item.reasons)
208
+ lines.push(` ${reason}`);
209
+ for (const notice of item.notices)
210
+ lines.push(`NOTICE ${notice}`);
211
+ }
212
+ for (const identity of applied)
213
+ lines.push(`APPLIED ${identity}`);
214
+ lines.push('');
215
+ return lines.join('\n');
216
+ }
217
+ function isRecord(value) {
218
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
219
+ }
220
+ const HELP = `@notambourine/metafields 0.0.1
221
+
222
+ Usage:
223
+ metafields <schema.ts> --validate
224
+ metafields <schema.ts> --store <store.myshopify.com> [--apply | --check] [--json]
225
+ metafields pull --store <store.myshopify.com> --owner <owner> --namespace <namespace>
226
+ [--metaobjects] [--out <schema.ts>]
227
+ metafields compile <schema-or-migration.ts> [--out <compiled.json>]
228
+ metafields migrate <compiled-migration.json> --store <store.myshopify.com>
229
+ [--apply | --check] [--json]
230
+
231
+ Options:
232
+ --api-version <YYYY-MM> Shopify Admin API version (default: ${DEFAULT_API_VERSION})
233
+ --all-owners Pull every supported owner type
234
+ --all-namespaces Pull every merchant-owned namespace
235
+ --help Show help
236
+ --version Show version
237
+ `;
238
+ main(process.argv.slice(2)).then((code) => {
239
+ process.exitCode = code;
240
+ }).catch((error) => {
241
+ process.stderr.write(`ERROR ${error instanceof Error ? error.message : String(error)}\n`);
242
+ process.exitCode = 2;
243
+ });
244
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ExistingMetafield, ExistingMetaobject } from './planner.js';
2
+ import { type Owner } from './schema.js';
3
+ export interface PulledSchema {
4
+ metaobjects: ExistingMetaobject[];
5
+ metafields: (ExistingMetafield & {
6
+ owner: Owner;
7
+ })[];
8
+ excluded: string[];
9
+ }
10
+ export declare function generateSchemaModule(pulled: PulledSchema): string;
11
+ export declare function filterPulledMetafields(fields: (ExistingMetafield & {
12
+ owner: Owner;
13
+ })[]): PulledSchema['metafields'];
14
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAuB,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,UAAU,EAAE,CAAC,iBAAiB,GAAG;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC,EAAE,CAAC;IACrD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2FD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA8CjE;AAaD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,CAAC,iBAAiB,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC,EAAE,GAC/C,YAAY,CAAC,YAAY,CAAC,CAE5B"}
@@ -0,0 +1,168 @@
1
+ import { isReservedNamespace } from './schema.js';
2
+ function quote(value) {
3
+ return JSON.stringify(value);
4
+ }
5
+ function property(key) {
6
+ return /^[A-Za-z_$][\w$]*$/.test(key) ? key : quote(key);
7
+ }
8
+ function options(field, metaobjectField = false) {
9
+ const result = [];
10
+ if (field.name)
11
+ result.push(`name: ${quote(field.name)}`);
12
+ if (field.description)
13
+ result.push(`description: ${quote(field.description)}`);
14
+ if (field.required === true)
15
+ result.push('required: true');
16
+ const validationMap = new Map(field.validations?.map((item) => [item.name, item.value]));
17
+ for (const name of ['min', 'max']) {
18
+ const value = validationMap.get(name);
19
+ if (value !== undefined)
20
+ result.push(`${name}: ${JSON.stringify(Number.isNaN(Number(value)) ? value : Number(value))}`);
21
+ }
22
+ const regex = validationMap.get('regex');
23
+ if (regex !== undefined)
24
+ result.push(`regex: ${quote(regex)}`);
25
+ const choices = validationMap.get('choices');
26
+ if (choices !== undefined)
27
+ result.push(`choices: ${choices}`);
28
+ const jsonSchema = validationMap.get('json_schema');
29
+ if (jsonSchema !== undefined)
30
+ result.push(`schema: ${jsonSchema}`);
31
+ if (!metaobjectField && 'access' in field && field.access) {
32
+ const access = Object.entries(field.access)
33
+ .filter(([key]) => key === 'admin' || key === 'storefront')
34
+ .filter(([, value]) => value !== null)
35
+ .map(([key, value]) => `${key}: ${quote(String(value).toLowerCase())}`);
36
+ if (access.length > 0)
37
+ result.push(`access: { ${access.join(', ')} }`);
38
+ }
39
+ if (!metaobjectField && 'capabilities' in field && field.capabilities) {
40
+ for (const key of [
41
+ 'adminFilterable', 'analyticsQueryable', 'cartToOrderCopyable', 'smartCollectionCondition', 'uniqueValues',
42
+ ]) {
43
+ if (field.capabilities[key] !== undefined)
44
+ result.push(`${key}: ${String(field.capabilities[key])}`);
45
+ }
46
+ }
47
+ if (!metaobjectField && 'constraints' in field && field.constraints?.key) {
48
+ result.push(`constraints: { key: ${quote(field.constraints.key)}, values: ${JSON.stringify([...field.constraints.values].sort())} }`);
49
+ }
50
+ return result.length > 0 ? `{ ${result.join(', ')} }` : '';
51
+ }
52
+ const builders = {
53
+ single_line_text_field: 'string',
54
+ multi_line_text_field: 'text',
55
+ rich_text_field: 'richText',
56
+ number_integer: 'integer',
57
+ number_decimal: 'decimal',
58
+ boolean: 'boolean',
59
+ url: 'url',
60
+ json: 'json<unknown>',
61
+ product_reference: 'product',
62
+ variant_reference: 'variant',
63
+ collection_reference: 'collection',
64
+ file_reference: 'file',
65
+ };
66
+ function fieldExpression(field, metaobjectField = false) {
67
+ const rawType = typeof field.type === 'string' ? field.type : field.type.name;
68
+ const list = rawType.startsWith('list.');
69
+ const type = list ? rawType.slice(5) : rawType;
70
+ const validations = new Map(field.validations?.map((item) => [item.name, item.value]));
71
+ let expression;
72
+ if (type === 'metaobject_reference') {
73
+ const target = validations.get('metaobject_definition_type');
74
+ if (!target)
75
+ throw new Error(`${field.key}: metaobject reference has no portable type validation`);
76
+ expression = `field.metaobject(${quote(target)})`;
77
+ }
78
+ else if (type === 'mixed_reference') {
79
+ const value = validations.get('metaobject_definition_types');
80
+ if (!value)
81
+ throw new Error(`${field.key}: mixed reference has no portable type validation`);
82
+ expression = `field.mixedMetaobject(${value})`;
83
+ }
84
+ else {
85
+ const builder = builders[type];
86
+ if (!builder)
87
+ throw new Error(`${field.key}: unsupported Shopify type ${rawType}`);
88
+ expression = `field.${builder}()`;
89
+ }
90
+ const fieldOptions = options(field, metaobjectField);
91
+ if (fieldOptions && !list)
92
+ expression = expression.replace(/\(\)$/, `(${fieldOptions})`);
93
+ if (list) {
94
+ const listValues = new Map(field.validations?.filter((item) => item.name.startsWith('list.'))
95
+ .map((item) => [item.name.slice(5), item.value]));
96
+ const listOptions = options({ ...field, validations: [...listValues].map(([name, value]) => ({ name, value })) }, metaobjectField);
97
+ expression = `field.list(${expression}${listOptions ? `, ${listOptions}` : ''})`;
98
+ }
99
+ return expression;
100
+ }
101
+ export function generateSchemaModule(pulled) {
102
+ const lines = [
103
+ "import { defineSchema, field, metaobject } from '@notambourine/metafields';",
104
+ '',
105
+ 'export default defineSchema({',
106
+ ' metaobjects: {',
107
+ ];
108
+ for (const definition of [...pulled.metaobjects].sort((a, b) => a.type.localeCompare(b.type))) {
109
+ const metaOptions = [`name: ${quote(definition.name)}`];
110
+ if (definition.description)
111
+ metaOptions.push(`description: ${quote(definition.description)}`);
112
+ if (definition.displayNameKey)
113
+ metaOptions.push(`displayNameKey: ${quote(definition.displayNameKey)}`);
114
+ if (definition.access) {
115
+ const values = Object.entries(definition.access)
116
+ .filter(([key]) => key === 'admin' || key === 'storefront')
117
+ .filter(([, value]) => value !== null)
118
+ .map(([key, value]) => `${key}: ${quote(String(value).toLowerCase())}`);
119
+ if (values.length > 0)
120
+ metaOptions.push(`access: { ${values.join(', ')} }`);
121
+ }
122
+ if (definition.capabilities) {
123
+ const values = Object.entries(definition.capabilities).map(([key, value]) => `${key}: ${String(value)}`);
124
+ if (values.length > 0)
125
+ metaOptions.push(`capabilities: { ${values.join(', ')} }`);
126
+ }
127
+ lines.push(` ${property(definition.type)}: metaobject({`);
128
+ for (const option of metaOptions)
129
+ lines.push(` ${option},`);
130
+ lines.push(' fields: {');
131
+ for (const field of [...definition.fields].sort((a, b) => a.key.localeCompare(b.key))) {
132
+ lines.push(` ${property(field.key)}: ${fieldExpression(field, true)},`);
133
+ }
134
+ lines.push(' },', ' }),');
135
+ }
136
+ lines.push(' },', ' metafields: {');
137
+ const owners = groupBy(pulled.metafields, (field) => field.owner);
138
+ for (const [owner, ownerFields] of [...owners].sort(([a], [b]) => a.localeCompare(b))) {
139
+ lines.push(` ${property(owner)}: {`);
140
+ const namespaces = groupBy(ownerFields, (field) => field.namespace);
141
+ for (const [namespace, fields] of [...namespaces].sort(([a], [b]) => a.localeCompare(b))) {
142
+ lines.push(` ${property(namespace)}: {`);
143
+ for (const field of [...fields].sort((a, b) => a.key.localeCompare(b.key))) {
144
+ lines.push(` ${property(field.key)}: ${fieldExpression(field)},`);
145
+ }
146
+ lines.push(' },');
147
+ }
148
+ lines.push(' },');
149
+ }
150
+ lines.push(' },', '});', '');
151
+ return lines.join('\n');
152
+ }
153
+ function groupBy(values, key) {
154
+ const groups = new Map();
155
+ for (const value of values) {
156
+ const group = key(value);
157
+ const existing = groups.get(group);
158
+ if (existing)
159
+ existing.push(value);
160
+ else
161
+ groups.set(group, [value]);
162
+ }
163
+ return groups;
164
+ }
165
+ export function filterPulledMetafields(fields) {
166
+ return fields.filter((field) => !isReservedNamespace(field.namespace));
167
+ }
168
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export { defineSchema, field, metaobject } from './builders.js';
2
+ export { defineMigration, transforms } from './migration.js';
3
+ export { compileSchema, stringifyCanonical } from './schema.js';
4
+ export { compileMigration } from './migration.js';
5
+ export { planSchema, exitCodeForPlan } from './planner.js';
6
+ export { AdminClient, DEFAULT_API_VERSION, synchronize } from './admin.js';
7
+ export type { CollectionReference, Decimal, FileReference, InferMetafields, InferMetaobjects, MetaobjectReference, ProductReference, RichText, Url, VariantReference, } from './types.js';
8
+ export type { CompiledSchema, Owner } from './schema.js';
9
+ export type { CompiledMigration, MigrationResult } from './migration.js';
10
+ export type { ExistingSchema, Plan, PlanItem } from './planner.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,OAAO,EACP,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,GAAG,EACH,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { defineSchema, field, metaobject } from './builders.js';
2
+ export { defineMigration, transforms } from './migration.js';
3
+ export { compileSchema, stringifyCanonical } from './schema.js';
4
+ export { compileMigration } from './migration.js';
5
+ export { planSchema, exitCodeForPlan } from './planner.js';
6
+ export { AdminClient, DEFAULT_API_VERSION, synchronize } from './admin.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type CompiledSchema } from './schema.js';
2
+ export declare function loadDefault(path: string): Promise<unknown>;
3
+ export declare function loadSchema(path: string): Promise<CompiledSchema>;
4
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUhE;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAEtE"}
package/dist/loader.js ADDED
@@ -0,0 +1,20 @@
1
+ import { resolve } from 'node:path';
2
+ import { pathToFileURL } from 'node:url';
3
+ import { compileSchema } from './schema.js';
4
+ export async function loadDefault(path) {
5
+ const absolute = resolve(process.cwd(), path);
6
+ let module;
7
+ try {
8
+ module = await import(pathToFileURL(absolute).href);
9
+ }
10
+ catch (error) {
11
+ throw new Error(`could not load ${path}: ${error instanceof Error ? error.message : String(error)}`);
12
+ }
13
+ if (!('default' in module))
14
+ throw new Error(`${path}: module has no default export`);
15
+ return module.default;
16
+ }
17
+ export async function loadSchema(path) {
18
+ return compileSchema(await loadDefault(path));
19
+ }
20
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAA4B,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC;IACrF,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,OAAO,aAAa,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { AdminClient } from './admin.js';
2
+ import { type Owner } from './schema.js';
3
+ import { type FieldDefinition } from './types.js';
4
+ export declare const MIGRATION_MARKER: "@notambourine/metafields/migration";
5
+ export interface UrlTransform {
6
+ readonly kind: 'url';
7
+ readonly allowedSchemes: readonly ('http' | 'https' | 'mailto' | 'sms' | 'tel')[];
8
+ readonly bareHost: 'reject';
9
+ readonly trim: boolean;
10
+ }
11
+ export interface MigrationDefinition {
12
+ readonly __kind: typeof MIGRATION_MARKER;
13
+ readonly id: string;
14
+ readonly from: FieldDefinition;
15
+ readonly to: FieldDefinition;
16
+ readonly mode: 'copy';
17
+ readonly transform: UrlTransform;
18
+ readonly onInvalid: 'fail';
19
+ readonly onTargetConflict: 'fail';
20
+ }
21
+ export interface CompiledMigration {
22
+ format: '@notambourine/metafields/migration-v1';
23
+ id: string;
24
+ source: FieldIdentity & {
25
+ type: string;
26
+ };
27
+ target: FieldIdentity & {
28
+ type: string;
29
+ };
30
+ mode: 'copy';
31
+ transform: UrlTransform;
32
+ onInvalid: 'fail';
33
+ onTargetConflict: 'fail';
34
+ checksum: string;
35
+ }
36
+ interface FieldIdentity {
37
+ owner: Owner;
38
+ namespace: string;
39
+ key: string;
40
+ }
41
+ export declare const transforms: {
42
+ url(options: Omit<UrlTransform, "kind">): UrlTransform;
43
+ };
44
+ export declare function defineMigration<const M extends Omit<MigrationDefinition, '__kind'>>(definition: M): M & {
45
+ readonly __kind: typeof MIGRATION_MARKER;
46
+ };
47
+ export declare function compileMigration(value: unknown): CompiledMigration;
48
+ export declare function assertCompiledMigration(value: unknown): asserts value is CompiledMigration;
49
+ export interface MigrationResult {
50
+ id: string;
51
+ checksum: string;
52
+ source: number;
53
+ pending: number;
54
+ equal: number;
55
+ invalid: number;
56
+ conflicts: number;
57
+ applied: number;
58
+ }
59
+ export declare function runMigration(client: AdminClient, migration: CompiledMigration, mode: 'dry-run' | 'check' | 'apply'): Promise<MigrationResult>;
60
+ export declare function migrationExitCode(result: MigrationResult, mode: 'dry-run' | 'check' | 'apply'): number;
61
+ export {};
62
+ //# sourceMappingURL=migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"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"}