@growth-labs/cms 0.1.0 → 0.1.2
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/README.md +13 -4
- package/dist/engine/publisher.d.ts +14 -3
- package/dist/engine/publisher.d.ts.map +1 -1
- package/dist/engine/publisher.js +11 -5
- package/dist/engine/publisher.js.map +1 -1
- package/dist/routes/content.d.ts +1 -1
- package/dist/routes/content.d.ts.map +1 -1
- package/dist/routes/content.js +30 -23
- package/dist/routes/content.js.map +1 -1
- package/dist/schema/insights-ingest.d.ts +16 -16
- package/dist/schema/migrations.d.ts +5 -3
- package/dist/schema/migrations.d.ts.map +1 -1
- package/dist/schema/migrations.js +148 -4
- package/dist/schema/migrations.js.map +1 -1
- package/dist/schema/types.d.ts +2 -2
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/ui/commands.d.ts +2 -1
- package/dist/ui/commands.d.ts.map +1 -1
- package/dist/ui/commands.js +1 -2
- package/dist/ui/commands.js.map +1 -1
- package/dist/ui/components/SharePickers.d.ts.map +1 -1
- package/dist/ui/components/SharePickers.js +11 -7
- package/dist/ui/components/SharePickers.js.map +1 -1
- package/dist/ui/editor/ContentForm.d.ts +1 -1
- package/dist/ui/editor/ContentForm.d.ts.map +1 -1
- package/dist/ui/editor/ContentForm.js +5 -5
- package/dist/ui/editor/ContentForm.js.map +1 -1
- package/dist/ui/editor/content-payload.js +2 -2
- package/dist/ui/editor/content-payload.js.map +1 -1
- package/dist/ui/preview/draft-page.js +5 -4
- package/dist/ui/preview/draft-page.js.map +1 -1
- package/dist/ui/screens/EditorScreen.d.ts.map +1 -1
- package/dist/ui/screens/EditorScreen.js +4 -1
- package/dist/ui/screens/EditorScreen.js.map +1 -1
- package/dist/ui/screens/LibraryScreen.d.ts.map +1 -1
- package/dist/ui/screens/LibraryScreen.js +6 -3
- package/dist/ui/screens/LibraryScreen.js.map +1 -1
- package/dist/ui/screens/SocialShareScreen.d.ts.map +1 -1
- package/dist/ui/screens/SocialShareScreen.js +4 -3
- package/dist/ui/screens/SocialShareScreen.js.map +1 -1
- package/dist/ui/screens/content-view.d.ts +2 -1
- package/dist/ui/screens/content-view.d.ts.map +1 -1
- package/dist/ui/screens/content-view.js.map +1 -1
- package/dist/ui/screens/public-url.d.ts.map +1 -1
- package/dist/ui/screens/public-url.js +2 -0
- package/dist/ui/screens/public-url.js.map +1 -1
- package/dist/ui/screens/social-share-data.d.ts +2 -2
- package/dist/ui/screens/social-share-data.d.ts.map +1 -1
- package/dist/ui/screens/social-share-data.js +3 -12
- package/dist/ui/screens/social-share-data.js.map +1 -1
- package/migrations/0001_create_cms_tables.sql +4 -4
- package/migrations/0017_content_pages.sql +138 -0
- package/package.json +1 -1
- package/src/engine/publisher.ts +45 -9
- package/src/routes/content.ts +40 -26
- package/src/schema/migrations.ts +148 -4
- package/src/schema/types.ts +2 -2
- package/src/ui/commands.ts +3 -1
- package/src/ui/components/SharePickers.tsx +13 -10
- package/src/ui/editor/ContentForm.tsx +7 -7
- package/src/ui/editor/content-payload.ts +2 -2
- package/src/ui/preview/draft-page.tsx +7 -4
- package/src/ui/screens/EditorScreen.tsx +13 -7
- package/src/ui/screens/LibraryScreen.tsx +6 -3
- package/src/ui/screens/SocialShareScreen.tsx +4 -2
- package/src/ui/screens/content-view.ts +3 -1
- package/src/ui/screens/public-url.ts +2 -0
- package/src/ui/screens/social-share-data.ts +4 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"social-share-data.js","sourceRoot":"","sources":["../../../src/ui/screens/social-share-data.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,qFAAqF;AACrF,EAAE;AACF,kFAAkF;AAClF,kFAAkF;AAClF,wEAAwE;AAIxE,8EAA8E;AAC9E,qEAAqE;AACrE,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,eAAe,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAU,CAAA;AAI9F;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,GAAG;IACH,WAAW;IACX,UAAU;IACV,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;IACR,UAAU;IACV,SAAS;IACT,WAAW;CACF,CAAA;AAIV;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,KAAK;IACL,QAAQ;IACR,aAAa;IACb,IAAI;IACJ,MAAM;IACN,OAAO;IACP,SAAS;CACA,CAAA;AAIV;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAA4B,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAEnG;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,kBAAkB,CAAU,CAAA;AAuF/E,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAe,EAAE,OAA0B;IACxE,MAAM,eAAe,GACpB,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,cAAc;QAClD,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;QACjE,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,IAAI,GAAmB;QAC5B,IAAI;QACJ,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,EAAE;QAC7C,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE;QACvC,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE;QACvC,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QAC7C,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;QAC7B,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,eAAe;QACzB,cAAc,EAAE,EAAE;QAClB,UAAU,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE;QACpE,KAAK,EAAE,EAAE;QACT,UAAU,EAAE,EAAE;QACd,yBAAyB;QACzB,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,KAAK;KACnB,CAAA;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AA2CD,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAqB,EAAE,MAAuB;IAC9E,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,UAAU,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;YACxB,8DAA8D;YAC9D,MAAM,MAAM,GAAG;gBACd,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,+CAA+C;gBAC/C,SAAS,EAAE,SAAkC;gBAC7C,SAAS,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAE,MAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;gBAC1E,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;aAChC,CAAA;YACD,OAAO;gBACN,GAAG,MAAM;gBACT,IAAI;gBACJ,uBAAuB;gBACvB,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC1E,QAAQ,EAAE,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;gBAC3E,UAAU,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpE,cAAc,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBAC9D,KAAK,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;aAC/C,CAAA;QACF,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACxB,MAAM,qBAAqB,GAC1B,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC5F,OAAO;gBACN,GAAG,KAAK;gBACR,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;gBACrE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD,CAAA;QACF,CAAC;QAED,KAAK,WAAW;YACf,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAA;QAElD,KAAK,iBAAiB;YACrB,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;QAEvD,KAAK,eAAe;YACnB,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAA;QAE7C,KAAK,WAAW;YACf,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAA;QAE7C,KAAK,WAAW;YACf,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAA;QAE7C,KAAK,YAAY;YAChB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAA;QAExC,KAAK,YAAY;YAChB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAAA;QAExC,KAAK,0BAA0B,CAAC,CAAC,CAAC;YACjC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;YAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAA;YAChC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,2CAA2C;gBAC3C,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACrC,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAA;YACxE,CAAC;YACD,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,CAAC,GAAG,OAAO,EAAE,SAAS,CAAC,EAAE,CAAA;QACzD,CAAC;QAED;YACC,OAAO,KAAK,CAAA;IACd,CAAC;AACF,CAAC;AAmFD,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAqB;IAC1D,kBAAkB;IAClB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QAClC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAA;IAC5D,CAAC;IAED,yEAAyE;IACzE,yEAAyE;IACzE,SAAS,QAAQ,CAAC,CAAqB;QACtC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACjC,CAAC;IACD,SAAS,aAAa,CAAC,GAA0B;QAChD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,GAAI,GAA+B,CAAC,CAAC,CAAC,CAAA;YAC7C,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,CAAA;QAClD,CAAC,CAAC,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG;QACd,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE;QAC3C,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAA;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,eAAe,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAA;YACvE,CAAC;YACD,MAAM,OAAO,GAA6B;gBACzC,IAAI,EAAE,eAAe;gBACrB,GAAG,MAAM;gBACT,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC/B,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3F,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxF,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;aACpB,CAAA;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QAC7B,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC5B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAA;YACtE,CAAC;YACD,MAAM,OAAO,GAA4B;gBACxC,IAAI,EAAE,cAAc;gBACpB,GAAG,MAAM;gBACT,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAC/B,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3F,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxF,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,2EAA2E;gBAC3E,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAA;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QAC7B,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAA;YAC7D,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4DAA4D,EAAE,CAAA;YAC1F,CAAC;YACD,MAAM,OAAO,GAAwB;gBACpC,IAAI,EAAE,SAAS;gBACf,GAAG,MAAM;gBACT,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE;gBAC3C,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;gBACjC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxF,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAA;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QAC7B,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mCAAmC,EAAE,CAAA;YACjE,CAAC;YACD,MAAM,OAAO,GAA2B;gBACvC,IAAI,EAAE,YAAY;gBAClB,GAAG,MAAM;gBACT,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;gBACzB,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3F,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChE,CAAA;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QAC7B,CAAC;IACF,CAAC;AACF,CAAC;AAqDD,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,oBAAoB,GAAa,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;AAExE;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,SAAiB;IACxC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAA;IACpD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,SAAiB;IACjD,MAAM,EAAE,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IACpC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,aAAa,EAAE,EAAE,CAAA;IAChD,IAAI,IAAI,KAAK,YAAY;QAAE,OAAO,gBAAgB,EAAE,EAAE,CAAA;IACtD,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,kBAAkB,EAAE,EAAE,CAAA;IAC1D,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,mBAAmB,EAAE,EAAE,CAAA;IAC5D,OAAO,GAAG,IAAI,MAAM,EAAE,EAAE,CAAA;AACzB,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAmB,EAAE,IAAwB;IAC9E,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACvB,2EAA2E;IAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAEvC,2EAA2E;IAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;YACpD,MAAM,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;YACpD,6DAA6D;YAC7D,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAA;YACnD,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAA;YACnD,OAAO,EAAE,GAAG,EAAE,CAAA;QACf,CAAC;QACD,OAAO,CAAC,CAAA,CAAC,yCAAyC;IACnD,CAAC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;KACf,CAAC,CAAC,CAAA;IAEH,OAAO,EAAE,KAAK,EAAE,CAAA;AACjB,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC9C,OAAO,MAAM,CAAC,KAAK;SACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC;SACnE,IAAI,CAAC,MAAM,CAAC,CAAA;AACf,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,IAAe;IAC7C,MAAM,MAAM,GAAG,CAAC,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,CAAA;IAEzF,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,eAAe;YACnB,OAAO;gBACN,GAAG,MAAM;gBACT,UAAU;gBACV,UAAU;gBACV,QAAQ;gBACR,QAAQ;gBACR,WAAW;gBACX,WAAW;gBACX,WAAW;aACX,CAAA;QAEF,KAAK,cAAc;YAClB,OAAO;gBACN,GAAG,MAAM;gBACT,UAAU;gBACV,UAAU;gBACV,QAAQ;gBACR,gEAAgE;gBAChE,WAAW;gBACX,WAAW;gBACX,WAAW;aACX,CAAA;QAEF,KAAK,SAAS;YACb,wEAAwE;YACxE,OAAO;gBACN,GAAG,MAAM;gBACT,gBAAgB;gBAChB,YAAY;gBACZ,QAAQ;gBACR,WAAW;gBACX,WAAW;gBACX,WAAW;aACX,CAAA;QAEF,KAAK,YAAY;YAChB,qDAAqD;YACrD,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;IAC3E,CAAC;AACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"social-share-data.js","sourceRoot":"","sources":["../../../src/ui/screens/social-share-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
-- (`publish_tz='Europe/Paris'`, `media_assets.site_id='fronts'`); they are kept
|
|
22
22
|
-- as DEFAULTs only to match prod exactly.
|
|
23
23
|
|
|
24
|
-
-- content_items — core. type CHECK includes 'newsletter'
|
|
25
|
-
-- draft/scheduled/published/archived; visibility free/premium. `channel` and
|
|
24
|
+
-- content_items — core. type CHECK includes 'newsletter' and 'page'; status
|
|
25
|
+
-- draft/scheduled/review/published/archived; visibility free/premium. `channel` and
|
|
26
26
|
-- `primary_topic` are theme-token taxonomy.
|
|
27
27
|
CREATE TABLE content_items (
|
|
28
28
|
id TEXT PRIMARY KEY,
|
|
29
|
-
type TEXT NOT NULL CHECK (type IN ('article','video','podcast','newsletter')),
|
|
30
|
-
status TEXT NOT NULL CHECK (status IN ('draft','scheduled','published','archived')),
|
|
29
|
+
type TEXT NOT NULL CHECK (type IN ('article','video','podcast','newsletter','page')),
|
|
30
|
+
status TEXT NOT NULL CHECK (status IN ('draft','scheduled','review','published','archived')),
|
|
31
31
|
visibility TEXT NOT NULL CHECK (visibility IN ('free','premium')),
|
|
32
32
|
slug TEXT NOT NULL UNIQUE,
|
|
33
33
|
title TEXT NOT NULL,
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
-- 0017_content_pages: rebuild content_items with widened type CHECK for pages.
|
|
2
|
+
PRAGMA defer_foreign_keys = ON;
|
|
3
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_items AS SELECT
|
|
4
|
+
id, type, status, visibility, slug, title, seo_title, description, excerpt,
|
|
5
|
+
byline, channel, primary_topic, featured, author_id, hero_image_id,
|
|
6
|
+
hero_image_alt, hero_image_caption, social_image_id, canonical_url,
|
|
7
|
+
publish_at, published_at, created_at, updated_at, publish_tz,
|
|
8
|
+
ai_locked_fields, published_revision_id, deleted_at, board_position,
|
|
9
|
+
seo_score, seo_focus_keyword, ai_og_image_id
|
|
10
|
+
FROM content_items;
|
|
11
|
+
DROP TABLE IF EXISTS content_items_new;
|
|
12
|
+
CREATE TABLE content_items_new (
|
|
13
|
+
id TEXT PRIMARY KEY,
|
|
14
|
+
type TEXT NOT NULL CHECK (type IN ('article','video','podcast','newsletter','page')),
|
|
15
|
+
status TEXT NOT NULL CHECK (status IN ('draft','scheduled','review','published','archived')),
|
|
16
|
+
visibility TEXT NOT NULL CHECK (visibility IN ('free','premium')),
|
|
17
|
+
slug TEXT NOT NULL UNIQUE,
|
|
18
|
+
title TEXT NOT NULL,
|
|
19
|
+
seo_title TEXT,
|
|
20
|
+
description TEXT,
|
|
21
|
+
excerpt TEXT,
|
|
22
|
+
byline TEXT,
|
|
23
|
+
channel TEXT,
|
|
24
|
+
primary_topic TEXT,
|
|
25
|
+
featured INTEGER NOT NULL DEFAULT 0,
|
|
26
|
+
author_id TEXT,
|
|
27
|
+
hero_image_id TEXT,
|
|
28
|
+
hero_image_alt TEXT,
|
|
29
|
+
hero_image_caption TEXT,
|
|
30
|
+
social_image_id TEXT,
|
|
31
|
+
canonical_url TEXT,
|
|
32
|
+
publish_at INTEGER,
|
|
33
|
+
published_at INTEGER,
|
|
34
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
35
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
36
|
+
publish_tz TEXT NOT NULL DEFAULT 'Europe/Paris',
|
|
37
|
+
ai_locked_fields TEXT NOT NULL DEFAULT '[]',
|
|
38
|
+
published_revision_id TEXT,
|
|
39
|
+
deleted_at INTEGER,
|
|
40
|
+
board_position INTEGER,
|
|
41
|
+
seo_score INTEGER,
|
|
42
|
+
seo_focus_keyword TEXT,
|
|
43
|
+
ai_og_image_id TEXT,
|
|
44
|
+
FOREIGN KEY (author_id) REFERENCES authors(id)
|
|
45
|
+
);
|
|
46
|
+
INSERT INTO content_items_new (
|
|
47
|
+
id, type, status, visibility, slug, title, seo_title, description, excerpt,
|
|
48
|
+
byline, channel, primary_topic, featured, author_id, hero_image_id,
|
|
49
|
+
hero_image_alt, hero_image_caption, social_image_id, canonical_url,
|
|
50
|
+
publish_at, published_at, created_at, updated_at, publish_tz,
|
|
51
|
+
ai_locked_fields, published_revision_id, deleted_at, board_position,
|
|
52
|
+
seo_score, seo_focus_keyword, ai_og_image_id
|
|
53
|
+
) SELECT
|
|
54
|
+
id, type, status, visibility, slug, title, seo_title, description, excerpt,
|
|
55
|
+
byline, channel, primary_topic, featured, author_id, hero_image_id,
|
|
56
|
+
hero_image_alt, hero_image_caption, social_image_id, canonical_url,
|
|
57
|
+
publish_at, published_at, created_at, updated_at, publish_tz,
|
|
58
|
+
ai_locked_fields, published_revision_id, deleted_at, board_position,
|
|
59
|
+
seo_score, seo_focus_keyword, ai_og_image_id
|
|
60
|
+
FROM _cms0017_bk_content_items;
|
|
61
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_article_content AS SELECT * FROM article_content;
|
|
62
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_video_content AS SELECT * FROM video_content;
|
|
63
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_podcast_content AS SELECT * FROM podcast_content;
|
|
64
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_revisions AS SELECT * FROM content_revisions;
|
|
65
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_tag_links AS SELECT * FROM content_tag_links;
|
|
66
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_relations AS SELECT * FROM content_relations;
|
|
67
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_contributors AS SELECT * FROM content_contributors;
|
|
68
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_slug_redirects AS SELECT * FROM content_slug_redirects;
|
|
69
|
+
CREATE TABLE IF NOT EXISTS content_items (
|
|
70
|
+
id TEXT PRIMARY KEY,
|
|
71
|
+
type TEXT NOT NULL CHECK (type IN ('article','video','podcast','newsletter','page')),
|
|
72
|
+
status TEXT NOT NULL CHECK (status IN ('draft','scheduled','review','published','archived')),
|
|
73
|
+
visibility TEXT NOT NULL CHECK (visibility IN ('free','premium')),
|
|
74
|
+
slug TEXT NOT NULL UNIQUE,
|
|
75
|
+
title TEXT NOT NULL,
|
|
76
|
+
seo_title TEXT,
|
|
77
|
+
description TEXT,
|
|
78
|
+
excerpt TEXT,
|
|
79
|
+
byline TEXT,
|
|
80
|
+
channel TEXT,
|
|
81
|
+
primary_topic TEXT,
|
|
82
|
+
featured INTEGER NOT NULL DEFAULT 0,
|
|
83
|
+
author_id TEXT,
|
|
84
|
+
hero_image_id TEXT,
|
|
85
|
+
hero_image_alt TEXT,
|
|
86
|
+
hero_image_caption TEXT,
|
|
87
|
+
social_image_id TEXT,
|
|
88
|
+
canonical_url TEXT,
|
|
89
|
+
publish_at INTEGER,
|
|
90
|
+
published_at INTEGER,
|
|
91
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
92
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
93
|
+
publish_tz TEXT NOT NULL DEFAULT 'Europe/Paris',
|
|
94
|
+
ai_locked_fields TEXT NOT NULL DEFAULT '[]',
|
|
95
|
+
published_revision_id TEXT,
|
|
96
|
+
deleted_at INTEGER,
|
|
97
|
+
board_position INTEGER,
|
|
98
|
+
seo_score INTEGER,
|
|
99
|
+
seo_focus_keyword TEXT,
|
|
100
|
+
ai_og_image_id TEXT,
|
|
101
|
+
FOREIGN KEY (author_id) REFERENCES authors(id)
|
|
102
|
+
);
|
|
103
|
+
DELETE FROM article_content;
|
|
104
|
+
DELETE FROM video_content;
|
|
105
|
+
DELETE FROM podcast_content;
|
|
106
|
+
DELETE FROM content_revisions;
|
|
107
|
+
DELETE FROM content_tag_links;
|
|
108
|
+
DELETE FROM content_relations;
|
|
109
|
+
DELETE FROM content_contributors;
|
|
110
|
+
DELETE FROM content_slug_redirects;
|
|
111
|
+
DROP TABLE IF EXISTS content_items;
|
|
112
|
+
ALTER TABLE content_items_new RENAME TO content_items;
|
|
113
|
+
INSERT INTO article_content SELECT * FROM _cms0017_bk_article_content;
|
|
114
|
+
INSERT INTO video_content SELECT * FROM _cms0017_bk_video_content;
|
|
115
|
+
INSERT INTO podcast_content SELECT * FROM _cms0017_bk_podcast_content;
|
|
116
|
+
INSERT INTO content_revisions SELECT * FROM _cms0017_bk_content_revisions;
|
|
117
|
+
INSERT INTO content_tag_links SELECT * FROM _cms0017_bk_content_tag_links;
|
|
118
|
+
INSERT INTO content_relations SELECT * FROM _cms0017_bk_content_relations;
|
|
119
|
+
INSERT INTO content_contributors SELECT * FROM _cms0017_bk_content_contributors;
|
|
120
|
+
INSERT INTO content_slug_redirects SELECT * FROM _cms0017_bk_content_slug_redirects;
|
|
121
|
+
DROP TABLE _cms0017_bk_article_content;
|
|
122
|
+
DROP TABLE _cms0017_bk_video_content;
|
|
123
|
+
DROP TABLE _cms0017_bk_podcast_content;
|
|
124
|
+
DROP TABLE _cms0017_bk_content_revisions;
|
|
125
|
+
DROP TABLE _cms0017_bk_content_tag_links;
|
|
126
|
+
DROP TABLE _cms0017_bk_content_relations;
|
|
127
|
+
DROP TABLE _cms0017_bk_content_contributors;
|
|
128
|
+
DROP TABLE _cms0017_bk_content_slug_redirects;
|
|
129
|
+
DROP TABLE _cms0017_bk_content_items;
|
|
130
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_status ON content_items(status);
|
|
131
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_type ON content_items(type);
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_publish_at ON content_items(publish_at DESC);
|
|
133
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_channel ON content_items(channel);
|
|
134
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_author_id ON content_items(author_id);
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_topic_status_type_published
|
|
136
|
+
ON content_items(primary_topic, status, type, published_at DESC);
|
|
137
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_published_at ON content_items(published_at DESC);
|
|
138
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_deleted_at ON content_items(deleted_at);
|
package/package.json
CHANGED
package/src/engine/publisher.ts
CHANGED
|
@@ -19,12 +19,17 @@
|
|
|
19
19
|
// timestamps; the video copy hard-codes `processing_state = 'ready'` so a
|
|
20
20
|
// duplicate is NOT re-queued to Foundry. Any future `content_items` column
|
|
21
21
|
// addition requires a matching edit here or the duplicate silently drops it.
|
|
22
|
+
import type { ContentType } from '../schema/types.js'
|
|
22
23
|
import type { D1Database } from './d1.js'
|
|
23
24
|
import { evaluateArticleBody, type PublishGuardOutcome } from './publish-guard.js'
|
|
24
25
|
import { slugify } from './slug.js'
|
|
25
26
|
|
|
26
|
-
type ContentType = 'article' | 'video' | 'podcast' | 'newsletter'
|
|
27
27
|
type ContentVisibility = 'free' | 'premium'
|
|
28
|
+
type BodyBackedContentType = 'article' | 'newsletter' | 'page'
|
|
29
|
+
|
|
30
|
+
function isBodyBackedContentType(type: ContentType): type is BodyBackedContentType {
|
|
31
|
+
return type === 'article' || type === 'newsletter' || type === 'page'
|
|
32
|
+
}
|
|
28
33
|
|
|
29
34
|
/**
|
|
30
35
|
* The processing_state a freshly created video starts in. Mirrors
|
|
@@ -137,10 +142,39 @@ export interface NewsletterInput extends BaseContentInput {
|
|
|
137
142
|
}
|
|
138
143
|
}
|
|
139
144
|
|
|
140
|
-
export
|
|
145
|
+
export interface PageInput extends BaseContentInput {
|
|
146
|
+
type: 'page'
|
|
147
|
+
content: {
|
|
148
|
+
bodyMarkdown: string
|
|
149
|
+
bodyHtml?: string | null
|
|
150
|
+
subtitle?: string | null
|
|
151
|
+
wordCount?: number | null
|
|
152
|
+
readTimeMinutes?: number | null
|
|
153
|
+
editorTakeaways?: string[] | null
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export type CreateContentInput =
|
|
158
|
+
| ArticleInput
|
|
159
|
+
| VideoInput
|
|
160
|
+
| PodcastInput
|
|
161
|
+
| NewsletterInput
|
|
162
|
+
| PageInput
|
|
163
|
+
|
|
164
|
+
type BodyBackedContentInput = ArticleInput | NewsletterInput | PageInput
|
|
165
|
+
|
|
166
|
+
function isBodyBackedContentInput(input: CreateContentInput): input is BodyBackedContentInput {
|
|
167
|
+
return isBodyBackedContentType(input.type)
|
|
168
|
+
}
|
|
141
169
|
|
|
142
170
|
export interface UpdateContentInput extends Partial<BaseContentInput> {
|
|
143
|
-
content?: Partial<
|
|
171
|
+
content?: Partial<
|
|
172
|
+
| ArticleInput['content']
|
|
173
|
+
| VideoInput['content']
|
|
174
|
+
| PodcastInput['content']
|
|
175
|
+
| NewsletterInput['content']
|
|
176
|
+
| PageInput['content']
|
|
177
|
+
>
|
|
144
178
|
relations?: Array<{
|
|
145
179
|
relatedId: string
|
|
146
180
|
rank: number
|
|
@@ -342,7 +376,7 @@ export async function createContent(
|
|
|
342
376
|
)
|
|
343
377
|
.run()
|
|
344
378
|
|
|
345
|
-
if (input
|
|
379
|
+
if (isBodyBackedContentInput(input)) {
|
|
346
380
|
const wc = input.content.wordCount ?? countWords(input.content.bodyMarkdown)
|
|
347
381
|
const rt = input.content.readTimeMinutes ?? estimateReadTime(wc)
|
|
348
382
|
await db
|
|
@@ -530,7 +564,7 @@ export async function updateContentItem(
|
|
|
530
564
|
}
|
|
531
565
|
|
|
532
566
|
if (input.content) {
|
|
533
|
-
if (existing.type
|
|
567
|
+
if (isBodyBackedContentType(existing.type)) {
|
|
534
568
|
const current = await db
|
|
535
569
|
.prepare(
|
|
536
570
|
`
|
|
@@ -551,7 +585,9 @@ export async function updateContentItem(
|
|
|
551
585
|
}>()
|
|
552
586
|
if (!current) return { slug }
|
|
553
587
|
|
|
554
|
-
const articleContent = input.content as Partial<
|
|
588
|
+
const articleContent = input.content as Partial<
|
|
589
|
+
ArticleInput['content'] | NewsletterInput['content'] | PageInput['content']
|
|
590
|
+
>
|
|
555
591
|
const bodyMarkdownProvided = hasOwn(articleContent, 'bodyMarkdown')
|
|
556
592
|
const wordCountProvided = hasOwn(articleContent, 'wordCount')
|
|
557
593
|
const readTimeProvided = hasOwn(articleContent, 'readTimeMinutes')
|
|
@@ -779,7 +815,7 @@ export async function evaluateContentBodyForPublish(
|
|
|
779
815
|
body_html: string | null
|
|
780
816
|
}>()
|
|
781
817
|
|
|
782
|
-
if (!row || (row.type
|
|
818
|
+
if (!row || !isBodyBackedContentType(row.type)) {
|
|
783
819
|
return null
|
|
784
820
|
}
|
|
785
821
|
|
|
@@ -906,7 +942,7 @@ export async function duplicateContentItem(
|
|
|
906
942
|
.bind(newId, newSlug, sourceId)
|
|
907
943
|
.run()
|
|
908
944
|
|
|
909
|
-
if (source.type
|
|
945
|
+
if (isBodyBackedContentType(source.type)) {
|
|
910
946
|
// INSERT…SELECT copy #2 — article_content. Body + editor takeaways + the
|
|
911
947
|
// generated faq_json carry across so the duplicate keeps its SEO/FAQ work.
|
|
912
948
|
await db
|
|
@@ -988,7 +1024,7 @@ export async function getContentSnapshot(
|
|
|
988
1024
|
const type = base.type as ContentType
|
|
989
1025
|
let content: Record<string, unknown> | null = null
|
|
990
1026
|
|
|
991
|
-
if (type
|
|
1027
|
+
if (isBodyBackedContentType(type)) {
|
|
992
1028
|
content = await db
|
|
993
1029
|
.prepare('SELECT * FROM article_content WHERE content_id = ? LIMIT 1')
|
|
994
1030
|
.bind(contentId)
|
package/src/routes/content.ts
CHANGED
|
@@ -126,7 +126,7 @@ export interface ContentRouteConfig extends CmsRouteConfig {
|
|
|
126
126
|
const PUBLISH_TIMEZONE_FALLBACK = 'Europe/Paris'
|
|
127
127
|
const LOCAL_DATE_TIME_RE = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})$/
|
|
128
128
|
|
|
129
|
-
type ContentType = 'article' | 'video' | 'podcast' | 'newsletter'
|
|
129
|
+
type ContentType = 'article' | 'video' | 'podcast' | 'newsletter' | 'page'
|
|
130
130
|
|
|
131
131
|
/**
|
|
132
132
|
* Map a content `action` verb (the ?action= query value) to the capability the
|
|
@@ -157,15 +157,18 @@ function mapActionToCapability(action: string | null, type: ContentType): Conten
|
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
const parseTypes = (
|
|
161
|
-
|
|
162
|
-
|
|
160
|
+
const parseTypes = (
|
|
161
|
+
value: string | null,
|
|
162
|
+
): { ok: true; types: ContentType[] | undefined } | { ok: false; invalidTypes: string[] } => {
|
|
163
|
+
if (!value) return { ok: true, types: undefined }
|
|
164
|
+
const allowed: ContentType[] = ['article', 'video', 'podcast', 'newsletter', 'page']
|
|
163
165
|
const parts = value
|
|
164
166
|
.split(',')
|
|
165
167
|
.map((item) => item.trim())
|
|
166
|
-
.filter(Boolean)
|
|
167
|
-
const
|
|
168
|
-
|
|
168
|
+
.filter(Boolean)
|
|
169
|
+
const invalidTypes = parts.filter((part) => !allowed.includes(part as ContentType))
|
|
170
|
+
if (invalidTypes.length > 0) return { ok: false, invalidTypes }
|
|
171
|
+
return { ok: true, types: parts.length > 0 ? (parts as ContentType[]) : undefined }
|
|
169
172
|
}
|
|
170
173
|
|
|
171
174
|
const parseStatus = (value: string | null): ContentStatus | undefined => {
|
|
@@ -214,6 +217,15 @@ function slugEnum(values: readonly string[] | null) {
|
|
|
214
217
|
: z.string().min(1)
|
|
215
218
|
}
|
|
216
219
|
|
|
220
|
+
const BodyContentCreateSchema = z.object({
|
|
221
|
+
bodyMarkdown: z.string().min(1),
|
|
222
|
+
bodyHtml: z.string().optional().nullable(),
|
|
223
|
+
subtitle: z.string().optional().nullable(),
|
|
224
|
+
wordCount: z.number().int().optional().nullable(),
|
|
225
|
+
readTimeMinutes: z.number().int().optional().nullable(),
|
|
226
|
+
editorTakeaways: z.array(z.string().min(1)).max(4).optional().nullable(),
|
|
227
|
+
})
|
|
228
|
+
|
|
217
229
|
function buildSchemas(resolved: ReturnType<typeof resolveConfig>) {
|
|
218
230
|
const category = slugEnum(resolved.primaryCategorySlugs)
|
|
219
231
|
const topic = slugEnum(resolved.primaryTopicSlugs)
|
|
@@ -241,14 +253,7 @@ function buildSchemas(resolved: ReturnType<typeof resolveConfig>) {
|
|
|
241
253
|
const CreateSchema = z.discriminatedUnion('type', [
|
|
242
254
|
BaseSchema.extend({
|
|
243
255
|
type: z.literal('article'),
|
|
244
|
-
content:
|
|
245
|
-
bodyMarkdown: z.string().min(1),
|
|
246
|
-
bodyHtml: z.string().optional().nullable(),
|
|
247
|
-
subtitle: z.string().optional().nullable(),
|
|
248
|
-
wordCount: z.number().int().optional().nullable(),
|
|
249
|
-
readTimeMinutes: z.number().int().optional().nullable(),
|
|
250
|
-
editorTakeaways: z.array(z.string().min(1)).max(4).optional().nullable(),
|
|
251
|
-
}),
|
|
256
|
+
content: BodyContentCreateSchema,
|
|
252
257
|
}),
|
|
253
258
|
BaseSchema.extend({
|
|
254
259
|
type: z.literal('video'),
|
|
@@ -275,14 +280,11 @@ function buildSchemas(resolved: ReturnType<typeof resolveConfig>) {
|
|
|
275
280
|
}),
|
|
276
281
|
BaseSchema.extend({
|
|
277
282
|
type: z.literal('newsletter'),
|
|
278
|
-
content:
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
readTimeMinutes: z.number().int().optional().nullable(),
|
|
284
|
-
editorTakeaways: z.array(z.string().min(1)).max(4).optional().nullable(),
|
|
285
|
-
}),
|
|
283
|
+
content: BodyContentCreateSchema,
|
|
284
|
+
}),
|
|
285
|
+
BaseSchema.extend({
|
|
286
|
+
type: z.literal('page'),
|
|
287
|
+
content: BodyContentCreateSchema,
|
|
286
288
|
}),
|
|
287
289
|
])
|
|
288
290
|
|
|
@@ -348,6 +350,7 @@ function getContentUpdateSchema(type: string) {
|
|
|
348
350
|
switch (type) {
|
|
349
351
|
case 'article':
|
|
350
352
|
case 'newsletter':
|
|
353
|
+
case 'page':
|
|
351
354
|
return ArticleContentUpdateSchema
|
|
352
355
|
case 'video':
|
|
353
356
|
return VideoContentUpdateSchema
|
|
@@ -521,7 +524,7 @@ function parseLocalDateTimeInZoneToUnixSeconds(value: string, timeZone: string):
|
|
|
521
524
|
// --- read-side payload helpers (ported verbatim) --------------------------
|
|
522
525
|
|
|
523
526
|
async function getContentPayload(ctx: RouteContext, type: string, id: string) {
|
|
524
|
-
if (type === 'article' || type === 'newsletter') {
|
|
527
|
+
if (type === 'article' || type === 'newsletter' || type === 'page') {
|
|
525
528
|
return ctx.db
|
|
526
529
|
.prepare(
|
|
527
530
|
`SELECT body_markdown, body_html, word_count, read_time_minutes, subtitle,
|
|
@@ -760,7 +763,14 @@ export function createContentRoutes(config: ContentRouteConfig): ContentRouteHan
|
|
|
760
763
|
const url = new URL(ctx.request.url)
|
|
761
764
|
const limit = Math.min(Number(url.searchParams.get('limit') || '20'), 50)
|
|
762
765
|
const status = parseStatus(url.searchParams.get('status'))
|
|
763
|
-
const
|
|
766
|
+
const parsedTypes = parseTypes(url.searchParams.get('types'))
|
|
767
|
+
if (!parsedTypes.ok) {
|
|
768
|
+
return json(
|
|
769
|
+
{ error: 'Invalid content type filter', invalidTypes: parsedTypes.invalidTypes },
|
|
770
|
+
400,
|
|
771
|
+
)
|
|
772
|
+
}
|
|
773
|
+
const types = parsedTypes.types
|
|
764
774
|
const cursor = parseCursor(url.searchParams.get('cursor'))
|
|
765
775
|
const q = url.searchParams.get('q') || null
|
|
766
776
|
const author = url.searchParams.get('author') || null
|
|
@@ -1080,7 +1090,11 @@ export function createContentRoutes(config: ContentRouteConfig): ContentRouteHan
|
|
|
1080
1090
|
// the same check but allow empty bodies (the auto-save path needs to
|
|
1081
1091
|
// persist work in progress); publish-time validation rejects empty
|
|
1082
1092
|
// bodies separately.
|
|
1083
|
-
if (
|
|
1093
|
+
if (
|
|
1094
|
+
existing.type === 'article' ||
|
|
1095
|
+
existing.type === 'newsletter' ||
|
|
1096
|
+
existing.type === 'page'
|
|
1097
|
+
) {
|
|
1084
1098
|
const articleContent = contentParsed.data as {
|
|
1085
1099
|
bodyMarkdown?: string
|
|
1086
1100
|
bodyHtml?: string | null
|
package/src/schema/migrations.ts
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
export const CMS_MIGRATION_SQL = `
|
|
23
23
|
CREATE TABLE content_items (
|
|
24
24
|
id TEXT PRIMARY KEY,
|
|
25
|
-
type TEXT NOT NULL CHECK (type IN ('article','video','podcast','newsletter')),
|
|
26
|
-
status TEXT NOT NULL CHECK (status IN ('draft','scheduled','published','archived')),
|
|
25
|
+
type TEXT NOT NULL CHECK (type IN ('article','video','podcast','newsletter','page')),
|
|
26
|
+
status TEXT NOT NULL CHECK (status IN ('draft','scheduled','review','published','archived')),
|
|
27
27
|
visibility TEXT NOT NULL CHECK (visibility IN ('free','premium')),
|
|
28
28
|
slug TEXT NOT NULL UNIQUE,
|
|
29
29
|
title TEXT NOT NULL,
|
|
@@ -216,8 +216,10 @@ interface D1Like {
|
|
|
216
216
|
* the parent rebuild, then restores the children from the stash. The explicit
|
|
217
217
|
* DELETE/restore is the load-bearing, FK-action-independent fix; the prepended
|
|
218
218
|
* `PRAGMA defer_foreign_keys = ON` is defense-in-depth only (it does not reliably
|
|
219
|
-
* span the per-statement exec runner).
|
|
220
|
-
*
|
|
219
|
+
* span the per-statement exec runner). Do not add SQL `BEGIN`/`COMMIT` here:
|
|
220
|
+
* D1's JavaScript API rejects explicit transaction statements and requires its
|
|
221
|
+
* storage transaction API instead. On an empty DB the stash/delete/restore is a
|
|
222
|
+
* no-op and the temp tables are dropped, so the net table set is unchanged.
|
|
221
223
|
*/
|
|
222
224
|
export const CMS_MIGRATIONS_0002_PLUS: { id: string; sql: string }[] = [
|
|
223
225
|
{
|
|
@@ -569,6 +571,148 @@ CREATE TABLE content_insight_dismissals (
|
|
|
569
571
|
dismissed_by TEXT,
|
|
570
572
|
PRIMARY KEY (site_id, intent_key)
|
|
571
573
|
);
|
|
574
|
+
`,
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
id: '0017_content_pages',
|
|
578
|
+
sql: `
|
|
579
|
+
PRAGMA defer_foreign_keys = ON;
|
|
580
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_items AS SELECT
|
|
581
|
+
id, type, status, visibility, slug, title, seo_title, description, excerpt,
|
|
582
|
+
byline, channel, primary_topic, featured, author_id, hero_image_id,
|
|
583
|
+
hero_image_alt, hero_image_caption, social_image_id, canonical_url,
|
|
584
|
+
publish_at, published_at, created_at, updated_at, publish_tz,
|
|
585
|
+
ai_locked_fields, published_revision_id, deleted_at, board_position,
|
|
586
|
+
seo_score, seo_focus_keyword, ai_og_image_id
|
|
587
|
+
FROM content_items;
|
|
588
|
+
DROP TABLE IF EXISTS content_items_new;
|
|
589
|
+
CREATE TABLE content_items_new (
|
|
590
|
+
id TEXT PRIMARY KEY,
|
|
591
|
+
type TEXT NOT NULL CHECK (type IN ('article','video','podcast','newsletter','page')),
|
|
592
|
+
status TEXT NOT NULL CHECK (status IN ('draft','scheduled','review','published','archived')),
|
|
593
|
+
visibility TEXT NOT NULL CHECK (visibility IN ('free','premium')),
|
|
594
|
+
slug TEXT NOT NULL UNIQUE,
|
|
595
|
+
title TEXT NOT NULL,
|
|
596
|
+
seo_title TEXT,
|
|
597
|
+
description TEXT,
|
|
598
|
+
excerpt TEXT,
|
|
599
|
+
byline TEXT,
|
|
600
|
+
channel TEXT,
|
|
601
|
+
primary_topic TEXT,
|
|
602
|
+
featured INTEGER NOT NULL DEFAULT 0,
|
|
603
|
+
author_id TEXT,
|
|
604
|
+
hero_image_id TEXT,
|
|
605
|
+
hero_image_alt TEXT,
|
|
606
|
+
hero_image_caption TEXT,
|
|
607
|
+
social_image_id TEXT,
|
|
608
|
+
canonical_url TEXT,
|
|
609
|
+
publish_at INTEGER,
|
|
610
|
+
published_at INTEGER,
|
|
611
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
612
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
613
|
+
publish_tz TEXT NOT NULL DEFAULT 'Europe/Paris',
|
|
614
|
+
ai_locked_fields TEXT NOT NULL DEFAULT '[]',
|
|
615
|
+
published_revision_id TEXT,
|
|
616
|
+
deleted_at INTEGER,
|
|
617
|
+
board_position INTEGER,
|
|
618
|
+
seo_score INTEGER,
|
|
619
|
+
seo_focus_keyword TEXT,
|
|
620
|
+
ai_og_image_id TEXT,
|
|
621
|
+
FOREIGN KEY (author_id) REFERENCES authors(id)
|
|
622
|
+
);
|
|
623
|
+
INSERT INTO content_items_new (
|
|
624
|
+
id, type, status, visibility, slug, title, seo_title, description, excerpt,
|
|
625
|
+
byline, channel, primary_topic, featured, author_id, hero_image_id,
|
|
626
|
+
hero_image_alt, hero_image_caption, social_image_id, canonical_url,
|
|
627
|
+
publish_at, published_at, created_at, updated_at, publish_tz,
|
|
628
|
+
ai_locked_fields, published_revision_id, deleted_at, board_position,
|
|
629
|
+
seo_score, seo_focus_keyword, ai_og_image_id
|
|
630
|
+
) SELECT
|
|
631
|
+
id, type, status, visibility, slug, title, seo_title, description, excerpt,
|
|
632
|
+
byline, channel, primary_topic, featured, author_id, hero_image_id,
|
|
633
|
+
hero_image_alt, hero_image_caption, social_image_id, canonical_url,
|
|
634
|
+
publish_at, published_at, created_at, updated_at, publish_tz,
|
|
635
|
+
ai_locked_fields, published_revision_id, deleted_at, board_position,
|
|
636
|
+
seo_score, seo_focus_keyword, ai_og_image_id
|
|
637
|
+
FROM _cms0017_bk_content_items;
|
|
638
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_article_content AS SELECT * FROM article_content;
|
|
639
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_video_content AS SELECT * FROM video_content;
|
|
640
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_podcast_content AS SELECT * FROM podcast_content;
|
|
641
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_revisions AS SELECT * FROM content_revisions;
|
|
642
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_tag_links AS SELECT * FROM content_tag_links;
|
|
643
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_relations AS SELECT * FROM content_relations;
|
|
644
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_contributors AS SELECT * FROM content_contributors;
|
|
645
|
+
CREATE TABLE IF NOT EXISTS _cms0017_bk_content_slug_redirects AS SELECT * FROM content_slug_redirects;
|
|
646
|
+
CREATE TABLE IF NOT EXISTS content_items (
|
|
647
|
+
id TEXT PRIMARY KEY,
|
|
648
|
+
type TEXT NOT NULL CHECK (type IN ('article','video','podcast','newsletter','page')),
|
|
649
|
+
status TEXT NOT NULL CHECK (status IN ('draft','scheduled','review','published','archived')),
|
|
650
|
+
visibility TEXT NOT NULL CHECK (visibility IN ('free','premium')),
|
|
651
|
+
slug TEXT NOT NULL UNIQUE,
|
|
652
|
+
title TEXT NOT NULL,
|
|
653
|
+
seo_title TEXT,
|
|
654
|
+
description TEXT,
|
|
655
|
+
excerpt TEXT,
|
|
656
|
+
byline TEXT,
|
|
657
|
+
channel TEXT,
|
|
658
|
+
primary_topic TEXT,
|
|
659
|
+
featured INTEGER NOT NULL DEFAULT 0,
|
|
660
|
+
author_id TEXT,
|
|
661
|
+
hero_image_id TEXT,
|
|
662
|
+
hero_image_alt TEXT,
|
|
663
|
+
hero_image_caption TEXT,
|
|
664
|
+
social_image_id TEXT,
|
|
665
|
+
canonical_url TEXT,
|
|
666
|
+
publish_at INTEGER,
|
|
667
|
+
published_at INTEGER,
|
|
668
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
669
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
670
|
+
publish_tz TEXT NOT NULL DEFAULT 'Europe/Paris',
|
|
671
|
+
ai_locked_fields TEXT NOT NULL DEFAULT '[]',
|
|
672
|
+
published_revision_id TEXT,
|
|
673
|
+
deleted_at INTEGER,
|
|
674
|
+
board_position INTEGER,
|
|
675
|
+
seo_score INTEGER,
|
|
676
|
+
seo_focus_keyword TEXT,
|
|
677
|
+
ai_og_image_id TEXT,
|
|
678
|
+
FOREIGN KEY (author_id) REFERENCES authors(id)
|
|
679
|
+
);
|
|
680
|
+
DELETE FROM article_content;
|
|
681
|
+
DELETE FROM video_content;
|
|
682
|
+
DELETE FROM podcast_content;
|
|
683
|
+
DELETE FROM content_revisions;
|
|
684
|
+
DELETE FROM content_tag_links;
|
|
685
|
+
DELETE FROM content_relations;
|
|
686
|
+
DELETE FROM content_contributors;
|
|
687
|
+
DELETE FROM content_slug_redirects;
|
|
688
|
+
DROP TABLE IF EXISTS content_items;
|
|
689
|
+
ALTER TABLE content_items_new RENAME TO content_items;
|
|
690
|
+
INSERT INTO article_content SELECT * FROM _cms0017_bk_article_content;
|
|
691
|
+
INSERT INTO video_content SELECT * FROM _cms0017_bk_video_content;
|
|
692
|
+
INSERT INTO podcast_content SELECT * FROM _cms0017_bk_podcast_content;
|
|
693
|
+
INSERT INTO content_revisions SELECT * FROM _cms0017_bk_content_revisions;
|
|
694
|
+
INSERT INTO content_tag_links SELECT * FROM _cms0017_bk_content_tag_links;
|
|
695
|
+
INSERT INTO content_relations SELECT * FROM _cms0017_bk_content_relations;
|
|
696
|
+
INSERT INTO content_contributors SELECT * FROM _cms0017_bk_content_contributors;
|
|
697
|
+
INSERT INTO content_slug_redirects SELECT * FROM _cms0017_bk_content_slug_redirects;
|
|
698
|
+
DROP TABLE _cms0017_bk_article_content;
|
|
699
|
+
DROP TABLE _cms0017_bk_video_content;
|
|
700
|
+
DROP TABLE _cms0017_bk_podcast_content;
|
|
701
|
+
DROP TABLE _cms0017_bk_content_revisions;
|
|
702
|
+
DROP TABLE _cms0017_bk_content_tag_links;
|
|
703
|
+
DROP TABLE _cms0017_bk_content_relations;
|
|
704
|
+
DROP TABLE _cms0017_bk_content_contributors;
|
|
705
|
+
DROP TABLE _cms0017_bk_content_slug_redirects;
|
|
706
|
+
DROP TABLE _cms0017_bk_content_items;
|
|
707
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_status ON content_items(status);
|
|
708
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_type ON content_items(type);
|
|
709
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_publish_at ON content_items(publish_at DESC);
|
|
710
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_channel ON content_items(channel);
|
|
711
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_author_id ON content_items(author_id);
|
|
712
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_topic_status_type_published
|
|
713
|
+
ON content_items(primary_topic, status, type, published_at DESC);
|
|
714
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_published_at ON content_items(published_at DESC);
|
|
715
|
+
CREATE INDEX IF NOT EXISTS idx_content_items_deleted_at ON content_items(deleted_at);
|
|
572
716
|
`,
|
|
573
717
|
},
|
|
574
718
|
]
|
package/src/schema/types.ts
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
// Nullability: a column declared NOT NULL maps to a required, non-nullable
|
|
10
10
|
// field; a nullable column maps to `T | null` (D1 returns SQL NULL as JS null).
|
|
11
11
|
|
|
12
|
-
/** content_items.type CHECK domain
|
|
13
|
-
export type ContentType = 'article' | 'video' | 'podcast' | 'newsletter'
|
|
12
|
+
/** content_items.type CHECK domain. */
|
|
13
|
+
export type ContentType = 'article' | 'video' | 'podcast' | 'newsletter' | 'page'
|
|
14
14
|
|
|
15
15
|
/** content_items.status CHECK domain. */
|
|
16
16
|
export type ContentStatus = 'draft' | 'scheduled' | 'review' | 'published' | 'archived'
|